Compare commits
11
Commits
v0.0.2
...
v4.0.0-alpha
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c8813448e9 | ||
|
|
bce89d43da | ||
|
|
54f5f4cd9c | ||
|
|
a42ad0441b | ||
|
|
bd01384525 | ||
|
|
c64a6e59f8 | ||
|
|
8a46648418 | ||
|
|
6e5bfa6bc5 | ||
|
|
e66ac139fa | ||
|
|
5203c506b0 | ||
|
|
0926e1f53f |
+1
-1
@@ -24,7 +24,7 @@ import (
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
|
||||
validator "github.com/vulcanize/eth-ipfs-state-validator/pkg"
|
||||
validator "github.com/vulcanize/eth-ipfs-state-validator/v4/pkg"
|
||||
)
|
||||
|
||||
// validateTrieCmd represents the validateTrie command
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
module github.com/vulcanize/eth-ipfs-state-validator
|
||||
module github.com/vulcanize/eth-ipfs-state-validator/v4
|
||||
|
||||
go 1.13
|
||||
go 1.15
|
||||
|
||||
require (
|
||||
github.com/ethereum/go-ethereum v1.10.9
|
||||
github.com/ethereum/go-ethereum v1.10.17
|
||||
github.com/ipfs/go-blockservice v0.1.7
|
||||
github.com/ipfs/go-cid v0.0.7
|
||||
github.com/ipfs/go-filestore v1.0.0 //indirect
|
||||
github.com/ipfs/go-ipfs v0.10.0
|
||||
github.com/ipfs/go-ipfs-blockstore v1.0.0
|
||||
github.com/ipfs/go-ipfs-blockstore v1.0.1
|
||||
github.com/ipfs/go-ipfs-ds-help v1.0.0
|
||||
github.com/jmoiron/sqlx v1.2.0
|
||||
github.com/lib/pq v1.5.2
|
||||
github.com/mailgun/groupcache/v2 v2.2.1
|
||||
github.com/multiformats/go-multihash v0.0.15
|
||||
github.com/onsi/ginkgo v1.16.4
|
||||
github.com/onsi/gomega v1.13.0
|
||||
github.com/sirupsen/logrus v1.6.0
|
||||
github.com/spf13/cobra v1.0.0
|
||||
github.com/spf13/viper v1.7.0
|
||||
github.com/vulcanize/ipfs-ethdb v0.0.5
|
||||
github.com/jmoiron/sqlx v1.3.5
|
||||
github.com/lib/pq v1.10.5
|
||||
github.com/mailgun/groupcache/v2 v2.3.0
|
||||
github.com/multiformats/go-multihash v0.1.0
|
||||
github.com/onsi/ginkgo v1.16.5
|
||||
github.com/onsi/gomega v1.19.0
|
||||
github.com/sirupsen/logrus v1.8.1
|
||||
github.com/spf13/cobra v1.4.0
|
||||
github.com/spf13/viper v1.11.0
|
||||
github.com/vulcanize/ipfs-ethdb/v4 v4.0.0-alpha
|
||||
)
|
||||
|
||||
@@ -18,7 +18,7 @@ package main
|
||||
import (
|
||||
"github.com/sirupsen/logrus"
|
||||
|
||||
"github.com/vulcanize/eth-ipfs-state-validator/cmd"
|
||||
"github.com/vulcanize/eth-ipfs-state-validator/v4/cmd"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
||||
+2
-2
@@ -29,14 +29,14 @@ import (
|
||||
)
|
||||
|
||||
// PublishRaw derives a cid from raw bytes and provided codec and multihash type, and writes it to the db tx
|
||||
func PublishRaw(tx *sqlx.Tx, codec, mh uint64, raw []byte) (string, error) {
|
||||
func PublishRaw(tx *sqlx.Tx, codec, mh uint64, raw []byte, blockNumber uint64) (string, error) {
|
||||
c, err := RawdataToCid(codec, raw, mh)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
dbKey := dshelp.MultihashToDsKey(c.Hash())
|
||||
prefixedKey := blockstore.BlockPrefix.String() + dbKey.String()
|
||||
_, err = tx.Exec(`INSERT INTO public.blocks (key, data) VALUES ($1, $2) ON CONFLICT (key) DO NOTHING`, prefixedKey, raw)
|
||||
_, err = tx.Exec(`INSERT INTO public.blocks (key, data, block_number) VALUES ($1, $2, $3) ON CONFLICT DO NOTHING`, prefixedKey, raw, blockNumber)
|
||||
return c.String(), err
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -28,8 +28,8 @@ import (
|
||||
"github.com/jmoiron/sqlx"
|
||||
"github.com/mailgun/groupcache/v2"
|
||||
|
||||
ipfsethdb "github.com/vulcanize/ipfs-ethdb"
|
||||
pgipfsethdb "github.com/vulcanize/ipfs-ethdb/postgres"
|
||||
ipfsethdb "github.com/vulcanize/ipfs-ethdb/v4"
|
||||
pgipfsethdb "github.com/vulcanize/ipfs-ethdb/v4/postgres"
|
||||
)
|
||||
|
||||
// Validator is used for validating Ethereum state and storage tries on PG-IPFS
|
||||
@@ -58,7 +58,7 @@ func NewPGIPFSValidator(db *sqlx.DB) *Validator {
|
||||
kvs: kvs,
|
||||
trieDB: trie.NewDatabase(kvs),
|
||||
stateDatabase: state.NewDatabase(database),
|
||||
db: database,
|
||||
db: database.(*pgipfsethdb.Database),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+20
-19
@@ -30,19 +30,20 @@ import (
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
|
||||
validator "github.com/vulcanize/eth-ipfs-state-validator/pkg"
|
||||
pgipfsethdb "github.com/vulcanize/ipfs-ethdb/postgres"
|
||||
validator "github.com/vulcanize/eth-ipfs-state-validator/v4/pkg"
|
||||
pgipfsethdb "github.com/vulcanize/ipfs-ethdb/v4/postgres"
|
||||
)
|
||||
|
||||
var (
|
||||
blockNumber = uint64(1)
|
||||
contractAddr = common.HexToAddress("0xaE9BEa628c4Ce503DcFD7E305CaB4e29E7476592")
|
||||
slot0StorageValue = common.Hex2Bytes("94703c4b2bd70c169f5717101caee543299fc946c7")
|
||||
slot1StorageValue = common.Hex2Bytes("01")
|
||||
nullCodeHash = crypto.Keccak256Hash([]byte{})
|
||||
emptyRootNode, _ = rlp.EncodeToBytes([]byte{})
|
||||
emptyRootNode, _ = rlp.EncodeToBytes(&[]byte{})
|
||||
emptyContractRoot = crypto.Keccak256Hash(emptyRootNode)
|
||||
|
||||
stateBranchRootNode, _ = rlp.EncodeToBytes([]interface{}{
|
||||
stateBranchRootNode, _ = rlp.EncodeToBytes(&[]interface{}{
|
||||
crypto.Keccak256(bankAccountLeafNode),
|
||||
[]byte{},
|
||||
[]byte{},
|
||||
@@ -65,62 +66,62 @@ var (
|
||||
|
||||
mockCode = []byte{1, 2, 3, 4, 5}
|
||||
codeHash = crypto.Keccak256Hash(mockCode)
|
||||
contractAccount, _ = rlp.EncodeToBytes(types.StateAccount{
|
||||
contractAccount, _ = rlp.EncodeToBytes(&types.StateAccount{
|
||||
Nonce: 1,
|
||||
Balance: big.NewInt(0),
|
||||
CodeHash: codeHash.Bytes(),
|
||||
Root: crypto.Keccak256Hash(storageBranchRootNode),
|
||||
})
|
||||
contractAccountLeafNode, _ = rlp.EncodeToBytes([]interface{}{
|
||||
contractAccountLeafNode, _ = rlp.EncodeToBytes(&[]interface{}{
|
||||
common.Hex2Bytes("3114658a74d9cc9f7acf2c5cd696c3494d7c344d78bfec3add0d91ec4e8d1c45"),
|
||||
contractAccount,
|
||||
})
|
||||
|
||||
minerAccount, _ = rlp.EncodeToBytes(types.StateAccount{
|
||||
minerAccount, _ = rlp.EncodeToBytes(&types.StateAccount{
|
||||
Nonce: 0,
|
||||
Balance: big.NewInt(1000),
|
||||
CodeHash: nullCodeHash.Bytes(),
|
||||
Root: emptyContractRoot,
|
||||
})
|
||||
minerAccountLeafNode, _ = rlp.EncodeToBytes([]interface{}{
|
||||
minerAccountLeafNode, _ = rlp.EncodeToBytes(&[]interface{}{
|
||||
common.Hex2Bytes("3380c7b7ae81a58eb98d9c78de4a1fd7fd9535fc953ed2be602daaa41767312a"),
|
||||
minerAccount,
|
||||
})
|
||||
|
||||
account1, _ = rlp.EncodeToBytes(types.StateAccount{
|
||||
account1, _ = rlp.EncodeToBytes(&types.StateAccount{
|
||||
Nonce: 2,
|
||||
Balance: big.NewInt(1000),
|
||||
CodeHash: nullCodeHash.Bytes(),
|
||||
Root: emptyContractRoot,
|
||||
})
|
||||
account1LeafNode, _ = rlp.EncodeToBytes([]interface{}{
|
||||
account1LeafNode, _ = rlp.EncodeToBytes(&[]interface{}{
|
||||
common.Hex2Bytes("3926db69aaced518e9b9f0f434a473e7174109c943548bb8f23be41ca76d9ad2"),
|
||||
account1,
|
||||
})
|
||||
|
||||
account2, _ = rlp.EncodeToBytes(types.StateAccount{
|
||||
account2, _ = rlp.EncodeToBytes(&types.StateAccount{
|
||||
Nonce: 0,
|
||||
Balance: big.NewInt(1000),
|
||||
CodeHash: nullCodeHash.Bytes(),
|
||||
Root: emptyContractRoot,
|
||||
})
|
||||
account2LeafNode, _ = rlp.EncodeToBytes([]interface{}{
|
||||
account2LeafNode, _ = rlp.EncodeToBytes(&[]interface{}{
|
||||
common.Hex2Bytes("3957f3e2f04a0764c3a0491b175f69926da61efbcc8f61fa1455fd2d2b4cdd45"),
|
||||
account2,
|
||||
})
|
||||
|
||||
bankAccount, _ = rlp.EncodeToBytes(types.StateAccount{
|
||||
bankAccount, _ = rlp.EncodeToBytes(&types.StateAccount{
|
||||
Nonce: 2,
|
||||
Balance: big.NewInt(1000),
|
||||
CodeHash: nullCodeHash.Bytes(),
|
||||
Root: emptyContractRoot,
|
||||
})
|
||||
bankAccountLeafNode, _ = rlp.EncodeToBytes([]interface{}{
|
||||
bankAccountLeafNode, _ = rlp.EncodeToBytes(&[]interface{}{
|
||||
common.Hex2Bytes("30bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2a"),
|
||||
bankAccount,
|
||||
})
|
||||
|
||||
storageBranchRootNode, _ = rlp.EncodeToBytes([]interface{}{
|
||||
storageBranchRootNode, _ = rlp.EncodeToBytes(&[]interface{}{
|
||||
[]byte{},
|
||||
[]byte{},
|
||||
crypto.Keccak256(slot0StorageLeafNode),
|
||||
@@ -141,11 +142,11 @@ var (
|
||||
})
|
||||
storageRoot = crypto.Keccak256Hash(storageBranchRootNode)
|
||||
|
||||
slot0StorageLeafNode, _ = rlp.EncodeToBytes([]interface{}{
|
||||
slot0StorageLeafNode, _ = rlp.EncodeToBytes(&[]interface{}{
|
||||
common.Hex2Bytes("390decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563"),
|
||||
slot0StorageValue,
|
||||
})
|
||||
slot1StorageLeafNode, _ = rlp.EncodeToBytes([]interface{}{
|
||||
slot1StorageLeafNode, _ = rlp.EncodeToBytes(&[]interface{}{
|
||||
common.Hex2Bytes("310e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6"),
|
||||
slot1StorageValue,
|
||||
})
|
||||
@@ -302,11 +303,11 @@ func loadTrie(stateNodes, storageNodes [][]byte) {
|
||||
tx, err := db.Beginx()
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
for _, node := range stateNodes {
|
||||
_, err := validator.PublishRaw(tx, cid.EthStateTrie, multihash.KECCAK_256, node)
|
||||
_, err := validator.PublishRaw(tx, cid.EthStateTrie, multihash.KECCAK_256, node, blockNumber)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
}
|
||||
for _, node := range storageNodes {
|
||||
_, err := validator.PublishRaw(tx, cid.EthStorageTrie, multihash.KECCAK_256, node)
|
||||
_, err := validator.PublishRaw(tx, cid.EthStorageTrie, multihash.KECCAK_256, node, blockNumber)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
}
|
||||
err = tx.Commit()
|
||||
|
||||
Reference in New Issue
Block a user