Skip to content

Commit a179e1c

Browse files
authored
Merge pull request #72 from vulcanize/v1.10.3-statediff-0.0.22
V1.10.3 statediff 0.0.22
2 parents 5e7008c + eae8688 commit a179e1c

File tree

10 files changed

+91
-16
lines changed

10 files changed

+91
-16
lines changed

core/types/receipt.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,8 @@ func (r *Receipt) MarshalBinary() ([]byte, error) {
172172
return rlp.EncodeToBytes(r)
173173
}
174174
data := &receiptRLP{r.statusEncoding(), r.CumulativeGasUsed, r.Bloom, r.Logs}
175-
buf := encodeBufferPool.Get().(*bytes.Buffer)
176-
defer encodeBufferPool.Put(buf)
177-
buf.Reset()
178-
err := r.encodeTyped(data, buf)
175+
var buf bytes.Buffer
176+
err := r.encodeTyped(data, &buf)
179177
return buf.Bytes(), err
180178
}
181179

49.4 KB
Binary file not shown.
58.6 KB
Binary file not shown.
37.3 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package ipld
2+
3+
import (
4+
"io/ioutil"
5+
"path/filepath"
6+
"testing"
7+
8+
"github.com/ethereum/go-ethereum/core/types"
9+
"github.com/ethereum/go-ethereum/rlp"
10+
)
11+
12+
type kind string
13+
14+
const (
15+
legacy kind = "legacy"
16+
eip1559 kind = "eip2930"
17+
)
18+
19+
var blockFileNames = []string{
20+
"eth-block-12252078",
21+
"eth-block-12365585",
22+
"eth-block-12365586",
23+
}
24+
25+
var receiptsFileNames = []string{
26+
"eth-receipts-12252078",
27+
"eth-receipts-12365585",
28+
"eth-receipts-12365586",
29+
}
30+
31+
var kinds = []kind{
32+
eip1559,
33+
eip1559,
34+
legacy,
35+
}
36+
37+
type testCase struct {
38+
kind kind
39+
block *types.Block
40+
receipts types.Receipts
41+
}
42+
43+
func loadBlockData(t *testing.T) []testCase {
44+
fileDir := "./eip2930_test_data"
45+
testCases := make([]testCase, len(blockFileNames))
46+
for i, blockFileName := range blockFileNames {
47+
blockRLP, err := ioutil.ReadFile(filepath.Join(fileDir, blockFileName))
48+
if err != nil {
49+
t.Fatalf("failed to load blockRLP from file, err %v", err)
50+
}
51+
block := new(types.Block)
52+
if err := rlp.DecodeBytes(blockRLP, block); err != nil {
53+
t.Fatalf("failed to decode blockRLP, err %v", err)
54+
}
55+
receiptsFileName := receiptsFileNames[i]
56+
receiptsRLP, err := ioutil.ReadFile(filepath.Join(fileDir, receiptsFileName))
57+
if err != nil {
58+
t.Fatalf("failed to load receiptsRLP from file, err %s", err)
59+
}
60+
receipts := make(types.Receipts, 0)
61+
if err := rlp.DecodeBytes(receiptsRLP, &receipts); err != nil {
62+
t.Fatalf("failed to decode receiptsRLP, err %s", err)
63+
}
64+
testCases[i] = testCase{
65+
block: block,
66+
receipts: receipts,
67+
kind: kinds[i],
68+
}
69+
}
70+
return testCases
71+
}
72+
73+
func TestFromBlockAndReceipts(t *testing.T) {
74+
testCases := loadBlockData(t)
75+
for _, tc := range testCases {
76+
_, _, _, _, _, _, err := FromBlockAndReceipts(tc.block, tc.receipts)
77+
if err != nil {
78+
t.Fatalf("error generating IPLDs from block and receipts, err %v, kind %s, block hash %s", err, tc.kind, tc.block.Hash())
79+
}
80+
}
81+
}

statediff/indexer/ipfs/ipld/eth_receipt_trie.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import (
2424
"github.com/multiformats/go-multihash"
2525

2626
"github.com/ethereum/go-ethereum/core/types"
27-
"github.com/ethereum/go-ethereum/rlp"
2827
)
2928

3029
// EthRctTrie (eth-tx-trie codec 0x92) represents
@@ -61,9 +60,8 @@ func DecodeEthRctTrie(c cid.Cid, b []byte) (*EthRctTrie, error) {
6160
// decodeEthRctTrieLeaf parses a eth-rct-trie leaf
6261
//from decoded RLP elements
6362
func decodeEthRctTrieLeaf(i []interface{}) ([]interface{}, error) {
64-
var r types.Receipt
65-
err := rlp.DecodeBytes(i[1].([]byte), &r)
66-
if err != nil {
63+
r := new(types.Receipt)
64+
if err := r.UnmarshalBinary(i[1].([]byte)); err != nil {
6765
return nil, err
6866
}
6967
c, err := RawdataToCid(MEthTxReceipt, i[1].([]byte), multihash.KECCAK_256)
@@ -73,7 +71,7 @@ func decodeEthRctTrieLeaf(i []interface{}) ([]interface{}, error) {
7371
return []interface{}{
7472
i[0].([]byte),
7573
&EthReceipt{
76-
Receipt: &r,
74+
Receipt: r,
7775
cid: c,
7876
rawdata: i[1].([]byte),
7977
},
@@ -135,7 +133,7 @@ func (rt *rctTrie) getNodes() ([]*EthRctTrie, error) {
135133
for _, k := range keys {
136134
rawdata, err := rt.db.Get(k)
137135
if err != nil {
138-
panic(err)
136+
return nil, err
139137
}
140138
c, err := RawdataToCid(MEthTxReceiptTrie, rawdata, multihash.KECCAK_256)
141139
if err != nil {

statediff/indexer/ipfs/ipld/eth_tx_trie.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import (
2424
"github.com/multiformats/go-multihash"
2525

2626
"github.com/ethereum/go-ethereum/core/types"
27-
"github.com/ethereum/go-ethereum/rlp"
2827
)
2928

3029
// EthTxTrie (eth-tx-trie codec 0x92) represents
@@ -61,9 +60,8 @@ func DecodeEthTxTrie(c cid.Cid, b []byte) (*EthTxTrie, error) {
6160
// decodeEthTxTrieLeaf parses a eth-tx-trie leaf
6261
//from decoded RLP elements
6362
func decodeEthTxTrieLeaf(i []interface{}) ([]interface{}, error) {
64-
var t types.Transaction
65-
err := rlp.DecodeBytes(i[1].([]byte), &t)
66-
if err != nil {
63+
t := new(types.Transaction)
64+
if err := t.UnmarshalBinary(i[1].([]byte)); err != nil {
6765
return nil, err
6866
}
6967
c, err := RawdataToCid(MEthTx, i[1].([]byte), multihash.KECCAK_256)
@@ -73,7 +71,7 @@ func decodeEthTxTrieLeaf(i []interface{}) ([]interface{}, error) {
7371
return []interface{}{
7472
i[0].([]byte),
7573
&EthTx{
76-
Transaction: &t,
74+
Transaction: t,
7775
cid: c,
7876
rawdata: i[1].([]byte),
7977
},
@@ -135,7 +133,7 @@ func (tt *txTrie) getNodes() ([]*EthTxTrie, error) {
135133
for _, k := range keys {
136134
rawdata, err := tt.db.Get(k)
137135
if err != nil {
138-
panic(err)
136+
return nil, err
139137
}
140138
c, err := RawdataToCid(MEthTxTrie, rawdata, multihash.KECCAK_256)
141139
if err != nil {

0 commit comments

Comments
 (0)