aboutsummaryrefslogtreecommitdiffstats
path: root/ethchain/block.go
diff options
context:
space:
mode:
Diffstat (limited to 'ethchain/block.go')
-rw-r--r--ethchain/block.go33
1 files changed, 28 insertions, 5 deletions
diff --git a/ethchain/block.go b/ethchain/block.go
index a0f9ecd86..447d55f99 100644
--- a/ethchain/block.go
+++ b/ethchain/block.go
@@ -7,7 +7,7 @@ import (
"github.com/ethereum/eth-go/ethtrie"
"github.com/ethereum/eth-go/ethutil"
"math/big"
- "strconv"
+ _ "strconv"
"time"
)
@@ -252,20 +252,43 @@ func (self *Block) SetReceipts(receipts []*Receipt, txs []*Transaction) {
func (block *Block) setTransactions(txs []*Transaction) {
block.transactions = txs
+ /*
+ trie := ethtrie.NewTrie(ethutil.Config.Db, "")
+ for i, tx := range txs {
+ trie.Update(strconv.Itoa(i), string(tx.RlpEncode()))
+ }
+
+ switch trie.Root.(type) {
+ case string:
+ block.TxSha = []byte(trie.Root.(string))
+ case []byte:
+ block.TxSha = trie.Root.([]byte)
+ default:
+ panic(fmt.Sprintf("invalid root type %T", trie.Root))
+ }
+ */
+}
+
+func CreateTxSha(receipts Receipts) (sha []byte) {
trie := ethtrie.NewTrie(ethutil.Config.Db, "")
- for i, tx := range txs {
- trie.Update(strconv.Itoa(i), string(tx.RlpEncode()))
+ for i, receipt := range receipts {
+ trie.Update(string(ethutil.NewValue(i).Encode()), string(ethutil.NewValue(receipt.RlpData()).Encode()))
}
switch trie.Root.(type) {
case string:
- block.TxSha = []byte(trie.Root.(string))
+ sha = []byte(trie.Root.(string))
case []byte:
- block.TxSha = trie.Root.([]byte)
+ sha = trie.Root.([]byte)
default:
panic(fmt.Sprintf("invalid root type %T", trie.Root))
}
+ return sha
+}
+
+func (self *Block) SetTxHash(receipts Receipts) {
+ self.TxSha = CreateTxSha(receipts)
}
func (block *Block) Value() *ethutil.Value {