diff options
author | obscuren <geffobscura@gmail.com> | 2015-02-17 20:10:18 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-02-17 20:26:21 +0800 |
commit | 2c454863f2f41fb232778a4cbd4cf135a58c4118 (patch) | |
tree | 2e6b3dbb0d5294eecf100456d5755df64c35a52b /state | |
parent | c934222a8089b19587242a3b0bc71ea0aec1d5ef (diff) | |
download | go-tangerine-2c454863f2f41fb232778a4cbd4cf135a58c4118.tar.gz go-tangerine-2c454863f2f41fb232778a4cbd4cf135a58c4118.tar.zst go-tangerine-2c454863f2f41fb232778a4cbd4cf135a58c4118.zip |
Use new rlp (TODO requires some refactoring)
Diffstat (limited to 'state')
-rw-r--r-- | state/state_object.go | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/state/state_object.go b/state/state_object.go index 340939a5d..0c157403c 100644 --- a/state/state_object.go +++ b/state/state_object.go @@ -1,11 +1,13 @@ package state import ( + "bytes" "fmt" "math/big" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/ethutil" + "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/trie" ) @@ -71,8 +73,28 @@ func NewStateObject(addr []byte, db ethutil.Database) *StateObject { } func NewStateObjectFromBytes(address, data []byte, db ethutil.Database) *StateObject { + // TODO clean me up + var extobject struct { + Nonce uint64 + Balance *big.Int + Root []byte + CodeHash []byte + } + err := rlp.Decode(bytes.NewReader(data), &extobject) + if err != nil { + fmt.Println(err) + return nil + } + object := &StateObject{address: address, db: db} - object.RlpDecode(data) + //object.RlpDecode(data) + object.Nonce = extobject.Nonce + object.balance = extobject.Balance + object.codeHash = extobject.CodeHash + object.State = New(extobject.Root, db) + object.storage = make(map[string]*ethutil.Value) + object.gasPool = new(big.Int) + object.Code, _ = db.Get(extobject.CodeHash) return object } @@ -271,7 +293,6 @@ func (c *StateObject) CodeHash() ethutil.Bytes { func (c *StateObject) RlpDecode(data []byte) { decoder := ethutil.NewValueFromBytes(data) - c.Nonce = decoder.Get(0).Uint() c.balance = decoder.Get(1).BigInt() c.State = New(decoder.Get(2).Bytes(), c.db) //New(trie.New(ethutil.Config.Db, decoder.Get(2).Interface())) |