mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-02-26 02:45:29 +00:00
switch back to InputStream
This commit is contained in:
parent
323204d939
commit
73c487fdb0
@ -27,27 +27,29 @@ proc isValidBranch(branch: openArray[seq[byte]], rootHash: KeccakHash, key, valu
|
|||||||
proc testGetBranch(tester: Tester, rootHash: KeccakHash, testStatusIMPL: var TestStatus) =
|
proc testGetBranch(tester: Tester, rootHash: KeccakHash, testStatusIMPL: var TestStatus) =
|
||||||
var trie = initHexaryTrie(tester.memdb, rootHash)
|
var trie = initHexaryTrie(tester.memdb, rootHash)
|
||||||
|
|
||||||
try:
|
#try:
|
||||||
for address in tester.address:
|
for address in tester.address:
|
||||||
var wb = initWitnessBuilder(tester.memdb, rootHash)
|
var wb = initWitnessBuilder(tester.memdb, rootHash)
|
||||||
var witness = wb.getBranchRecurse(address)
|
var witness = wb.getBranchRecurse(address)
|
||||||
|
|
||||||
var db = newMemoryDB()
|
var db = newMemoryDB()
|
||||||
var tb = initTreeBuilder(witness, db)
|
var input = memoryInput(witness)
|
||||||
var root = tb.treeNode()
|
var tb = initTreeBuilder(input, db)
|
||||||
check root.data == rootHash.data
|
var root = tb.treeNode()
|
||||||
#echo "ROOT: ", root.data.toHex
|
check root.data == rootHash.data
|
||||||
#echo "rootHash: ", rootHash.data.toHex
|
|
||||||
|
#echo "ROOT: ", root.data.toHex
|
||||||
#var stackBranch = wb.getBranchStack(address)
|
#echo "rootHash: ", rootHash.data.toHex
|
||||||
#check recurseBranch == stackBranch
|
|
||||||
#
|
#var stackBranch = wb.getBranchStack(address)
|
||||||
#var branch = wb.getBranch(address)
|
#check recurseBranch == stackBranch
|
||||||
#let account = trie.get(address)
|
#
|
||||||
#check isValidBranch(branch, trie.rootHash, address, account)
|
#var branch = wb.getBranch(address)
|
||||||
except:
|
#let account = trie.get(address)
|
||||||
debugEcho "MSG: ", getCurrentExceptionMsg()
|
#check isValidBranch(branch, trie.rootHash, address, account)
|
||||||
quit(1)
|
#except:
|
||||||
|
#debugEcho "MSG: ", getCurrentExceptionMsg()
|
||||||
|
#quit(1)
|
||||||
|
|
||||||
func parseHash256(n: JsonNode, name: string): Hash256 =
|
func parseHash256(n: JsonNode, name: string): Hash256 =
|
||||||
hexToByteArray(n[name].getStr(), result.data)
|
hexToByteArray(n[name].getStr(), result.data)
|
||||||
@ -95,8 +97,8 @@ proc testFixtureGST(node: JsonNode, testStatusIMPL: var TestStatus) =
|
|||||||
|
|
||||||
fixture["pre"].testBlockWitness(emptyRlpHash, testStatusIMPL)
|
fixture["pre"].testBlockWitness(emptyRlpHash, testStatusIMPL)
|
||||||
|
|
||||||
suite "Block Witness":
|
#suite "Block Witness":
|
||||||
jsonTest("newBlockChainTests", "witnessBuilderBC", testFixtureBC)
|
#jsonTest("newBlockChainTests", "witnessBuilderBC", testFixtureBC)
|
||||||
|
|
||||||
suite "Block Witness":
|
suite "Block Witness":
|
||||||
jsonTest("GeneralStateTests", "witnessBuilderGST", testFixtureGST)
|
jsonTest("GeneralStateTests", "witnessBuilderGST", testFixtureGST)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import
|
import
|
||||||
randutils, stew/byteutils, random,
|
randutils, stew/byteutils, random,
|
||||||
eth/[common, rlp], eth/trie/[hexary, db, trie_defs],
|
eth/[common, rlp], eth/trie/[hexary, db, trie_defs],
|
||||||
|
faststreams/input_stream,
|
||||||
../stateless/[witness_from_tree, tree_from_witness]
|
../stateless/[witness_from_tree, tree_from_witness]
|
||||||
|
|
||||||
proc runTest(keyBytes: int, valBytes: int, numPairs: int) =
|
proc runTest(keyBytes: int, valBytes: int, numPairs: int) =
|
||||||
@ -20,9 +21,10 @@ proc runTest(keyBytes: int, valBytes: int, numPairs: int) =
|
|||||||
|
|
||||||
var wb = initWitnessBuilder(memDB, rootHash)
|
var wb = initWitnessBuilder(memDB, rootHash)
|
||||||
var witness = wb.getBranchRecurse(keys[0])
|
var witness = wb.getBranchRecurse(keys[0])
|
||||||
|
var input = memoryInput(witness)
|
||||||
|
|
||||||
var db = newMemoryDB()
|
var db = newMemoryDB()
|
||||||
var tb = initTreeBuilder(witness, db)
|
var tb = initTreeBuilder(input, db)
|
||||||
var root = tb.treeNode()
|
var root = tb.treeNode()
|
||||||
debugEcho "root: ", root.data.toHex
|
debugEcho "root: ", root.data.toHex
|
||||||
debugEcho "rootHash: ", rootHash.data.toHex
|
debugEcho "rootHash: ", rootHash.data.toHex
|
||||||
|
@ -11,23 +11,23 @@ type
|
|||||||
data*: array[32, byte]
|
data*: array[32, byte]
|
||||||
|
|
||||||
TreeBuilder = object
|
TreeBuilder = object
|
||||||
data: seq[byte]
|
#data: seq[byte]
|
||||||
pos: int
|
#pos: int
|
||||||
#input: InputStream
|
input: InputStream
|
||||||
db: DB
|
db: DB
|
||||||
root: KeccakHash
|
root: KeccakHash
|
||||||
|
|
||||||
# InputStream is unstable, so we hack our own inputstream
|
# InputStream is unstable, so we hack our own inputstream
|
||||||
#proc initTreeBuilder*(input: InputStream, db: DB): TreeBuilder =
|
proc initTreeBuilder*(input: InputStream, db: DB): TreeBuilder =
|
||||||
#result.input = input
|
result.input = input
|
||||||
#result.db = db
|
|
||||||
#result.root = emptyRlpHash
|
|
||||||
|
|
||||||
proc initTreeBuilder*(input: openArray[byte], db: DB): TreeBuilder =
|
|
||||||
result.data = @input
|
|
||||||
result.db = db
|
result.db = db
|
||||||
result.root = emptyRlpHash
|
result.root = emptyRlpHash
|
||||||
|
|
||||||
|
#proc initTreeBuilder*(input: openArray[byte], db: DB): TreeBuilder =
|
||||||
|
# result.data = @input
|
||||||
|
# result.db = db
|
||||||
|
# result.root = emptyRlpHash
|
||||||
|
|
||||||
func rootHash*(t: TreeBuilder): KeccakHash {.inline.} =
|
func rootHash*(t: TreeBuilder): KeccakHash {.inline.} =
|
||||||
t.root
|
t.root
|
||||||
|
|
||||||
@ -35,7 +35,19 @@ proc writeNode(t: var TreeBuilder, n: openArray[byte]): KeccakHash =
|
|||||||
result = keccak(n)
|
result = keccak(n)
|
||||||
t.db.put(result.data, n)
|
t.db.put(result.data, n)
|
||||||
|
|
||||||
proc readByte(t: var TreeBuilder): byte =
|
template readByte(t: var TreeBuilder): byte =
|
||||||
|
t.input.read
|
||||||
|
|
||||||
|
template len(t: TreeBuilder): int =
|
||||||
|
t.input.len
|
||||||
|
|
||||||
|
template peek(t: TreeBuilder): byte =
|
||||||
|
t.input.peek
|
||||||
|
|
||||||
|
template read(t: var TreeBuilder, len: int): auto =
|
||||||
|
t.input.read(len)
|
||||||
|
|
||||||
|
#[proc readByte(t: var TreeBuilder): byte =
|
||||||
if t.pos < t.data.len:
|
if t.pos < t.data.len:
|
||||||
result = t.data[t.pos]
|
result = t.data[t.pos]
|
||||||
inc t.pos
|
inc t.pos
|
||||||
@ -51,6 +63,7 @@ template read(t: var TreeBuilder, len: int): auto =
|
|||||||
let pos = t.pos
|
let pos = t.pos
|
||||||
inc(t.pos, len)
|
inc(t.pos, len)
|
||||||
toOpenArray(t.data, pos, pos + len - 1)
|
toOpenArray(t.data, pos, pos + len - 1)
|
||||||
|
]#
|
||||||
|
|
||||||
proc readU32(t: var TreeBuilder): int =
|
proc readU32(t: var TreeBuilder): int =
|
||||||
# TODO: what if the value overflow int32.high?
|
# TODO: what if the value overflow int32.high?
|
||||||
|
Loading…
x
Reference in New Issue
Block a user