diff --git a/state/statedb.go b/state/statedb.go index 1b6e274de..af054ff09 100644 --- a/state/statedb.go +++ b/state/statedb.go @@ -31,7 +31,7 @@ type StateDB struct { // Create a new state from a given trie func New(root []byte, db ethutil.Database) *StateDB { - trie := trie.New(root, db) + trie := trie.New(ethutil.CopyBytes(root), db) return &StateDB{db: db, trie: trie, stateObjects: make(map[string]*StateObject), manifest: NewManifest(), refund: make(map[string]*big.Int)} } @@ -234,12 +234,9 @@ func (self *StateDB) Copy() *StateDB { } func (self *StateDB) Set(state *StateDB) { - if state == nil { - panic("Tried setting 'state' to nil through 'Set'") - } - self.trie = state.trie self.stateObjects = state.stateObjects + self.refund = state.refund self.logs = state.logs } diff --git a/whisper/message.go b/whisper/message.go index bbad8e6a3..fa631b2ef 100644 --- a/whisper/message.go +++ b/whisper/message.go @@ -11,6 +11,7 @@ type Message struct { Flags byte Signature []byte Payload []byte + Sent uint64 } func NewMessage(payload []byte) *Message { diff --git a/xeth/whisper.go b/xeth/whisper.go index 32ad1332b..d537f8c54 100644 --- a/xeth/whisper.go +++ b/xeth/whisper.go @@ -99,16 +99,16 @@ type Options struct { type WhisperMessage struct { ref *whisper.Message - Flags int32 `json:"flags"` Payload string `json:"payload"` From string `json:"from"` + Sent uint64 `json:"time"` } func NewWhisperMessage(msg *whisper.Message) WhisperMessage { return WhisperMessage{ ref: msg, - Flags: int32(msg.Flags), Payload: "0x" + ethutil.Bytes2Hex(msg.Payload), From: "0x" + ethutil.Bytes2Hex(crypto.FromECDSAPub(msg.Recover())), + Sent: msg.Sent, } }