ソースを参照

Fixed issue with Storage()

* Storage() returned encoded values. They are now decode prior to hexing
* Removed old code from state object
* Updated coin
obscuren 10 年 前
コミット
54927dc0e0
3 ファイル変更8 行追加31 行削除
  1. 2 1
      cmd/mist/assets/examples/coin.html
  2. 0 29
      state/state_object.go
  3. 6 1
      xeth/types.go

+ 2 - 1
cmd/mist/assets/examples/coin.html

@@ -65,9 +65,10 @@
     }
 
 	var contract = web3.eth.contract(address, desc);
-	document.querySelector("#balance").innerHTML = contract.call().balance(eth.coinbase);
 
 	function reflesh() {
+        document.querySelector("#balance").innerHTML = contract.call().balance(eth.coinbase);
+
 		var table = document.querySelector("#table");
 		table.innerHTML = ""; // clear
 

+ 0 - 29
state/state_object.go

@@ -121,26 +121,6 @@ func (self *StateObject) SetState(k []byte, value *ethutil.Value) {
 	self.storage[string(key)] = value.Copy()
 }
 
-/*
-// Iterate over each storage address and yield callback
-func (self *StateObject) EachStorage(cb trie.EachCallback) {
-	// First loop over the uncommit/cached values in storage
-	for key, value := range self.storage {
-		// XXX Most iterators Fns as it stands require encoded values
-		encoded := ethutil.NewValue(value.Encode())
-		cb(key, encoded)
-	}
-
-	it := self.State.Trie.NewIterator()
-	it.Each(func(key string, value *ethutil.Value) {
-		// If it's cached don't call the callback.
-		if self.storage[key] == nil {
-			cb(key, value)
-		}
-	})
-}
-*/
-
 func (self *StateObject) Sync() {
 	for key, value := range self.storage {
 		if value.Len() == 0 {
@@ -150,15 +130,6 @@ func (self *StateObject) Sync() {
 
 		self.setAddr([]byte(key), value)
 	}
-
-	/*
-		valid, t2 := trie.ParanoiaCheck(self.State.trie, ethutil.Config.Db)
-		if !valid {
-			statelogger.Infof("Warn: PARANOIA: Different state storage root during copy %x vs %x\n", self.State.Root(), t2.Root())
-
-			self.State.trie = t2
-		}
-	*/
 }
 
 func (c *StateObject) GetInstr(pc *big.Int) *ethutil.Value {

+ 6 - 1
xeth/types.go

@@ -1,6 +1,7 @@
 package xeth
 
 import (
+	"bytes"
 	"fmt"
 	"strings"
 
@@ -9,6 +10,7 @@ import (
 	"github.com/ethereum/go-ethereum/crypto"
 	"github.com/ethereum/go-ethereum/ethutil"
 	"github.com/ethereum/go-ethereum/p2p"
+	"github.com/ethereum/go-ethereum/rlp"
 	"github.com/ethereum/go-ethereum/state"
 )
 
@@ -54,8 +56,11 @@ func (self *Object) Storage() (storage map[string]string) {
 
 	it := self.StateObject.Trie().Iterator()
 	for it.Next() {
-		storage[toHex(it.Key)] = toHex(it.Value)
+		var data []byte
+		rlp.Decode(bytes.NewReader(it.Value), &data)
+		storage[toHex(it.Key)] = toHex(data)
 	}
+	self.StateObject.Trie().PrintRoot()
 
 	return
 }