forked from cerc-io/plugeth
Use new rlp (TODO requires some refactoring)
This commit is contained in:
parent
c934222a80
commit
2c454863f2
@ -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()))
|
||||
|
Loading…
Reference in New Issue
Block a user