Exemple #1
0
// Manifest will handle both creating notifications and generating bloom bin data
func (sm *StateManager) createBloomFilter(state *ethstate.State) *BloomFilter {
	bloomf := NewBloomFilter(nil)

	/*
		for addr, stateObject := range state.Manifest().ObjectChanges {
			// Set the bloom filter's bin
			bloomf.Set([]byte(addr))

			sm.Ethereum.Reactor().Post("object:"+addr, stateObject)
		}
	*/
	for _, msg := range state.Manifest().Messages {
		bloomf.Set(msg.To)
		bloomf.Set(msg.From)
	}

	sm.Ethereum.Reactor().Post("messages", state.Manifest().Messages)

	/*
		for stateObjectAddr, mappedObjects := range state.Manifest().StorageChanges {
			for addr, value := range mappedObjects {
				// Set the bloom filter's bin
				bloomf.Set(ethcrypto.Sha3Bin([]byte(stateObjectAddr + addr)))

				sm.Ethereum.Reactor().Post("storage:"+stateObjectAddr+":"+addr, &ethstate.StorageState{[]byte(stateObjectAddr), []byte(addr), value})
			}
		}
	*/

	return bloomf
}