London: fix test_blockchain_json and test_generalstate_json
new London HF requires update to test code
This commit is contained in:
parent
697b38b844
commit
d47be9047f
|
@ -35,12 +35,6 @@ type
|
|||
|
||||
proc fromJson*(n: JsonNode, name: string, x: var SomeData) =
|
||||
hexToByteArray(n[name].getStr(), x)
|
||||
if x.prefixHex != toLowerAscii(n[name].getStr()):
|
||||
debugEcho "name: ", name
|
||||
debugEcho "A: ", x.prefixHex
|
||||
debugEcho "B: ", toLowerAscii(n[name].getStr())
|
||||
quit(1)
|
||||
|
||||
doAssert(x.prefixHex == toLowerAscii(n[name].getStr()), name)
|
||||
|
||||
proc fromJson*(n: JsonNode, name: string, x: var Hash256) =
|
||||
|
@ -63,6 +57,12 @@ proc fromJson*(n: JsonNode, name: string, x: var EthTime) =
|
|||
x = initTime(hexToInt(n[name].getStr(), int64), 0)
|
||||
doAssert(x.toUnix.prefixHex == toLowerAscii(n[name].getStr()), name)
|
||||
|
||||
proc fromJson*[T](n: JsonNode, name: string, x: var Option[T]) =
|
||||
if name in n:
|
||||
var val: T
|
||||
n.fromJson(name, val)
|
||||
x = some(val)
|
||||
|
||||
proc parseBlockHeader*(n: JsonNode): BlockHeader =
|
||||
n.fromJson "parentHash", result.parentHash
|
||||
n.fromJson "sha3Uncles", result.ommersHash
|
||||
|
@ -79,6 +79,7 @@ proc parseBlockHeader*(n: JsonNode): BlockHeader =
|
|||
n.fromJson "extraData", result.extraData
|
||||
n.fromJson "mixHash", result.mixDigest
|
||||
n.fromJson "nonce", result.nonce
|
||||
n.fromJson "baseFeePerGas", result.fee
|
||||
|
||||
proc parseTransaction*(n: JsonNode): Transaction =
|
||||
var tx = Transaction(txType: TxLegacy)
|
||||
|
|
|
@ -76,7 +76,7 @@ func normalizeBlockHeader(node: JsonNode): JsonNode =
|
|||
of "receiptTrie": node["receiptsRoot"] = v
|
||||
of "transactionsTrie": node["transactionsRoot"] = v
|
||||
of "number", "difficulty", "gasUsed",
|
||||
"gasLimit", "timestamp":
|
||||
"gasLimit", "timestamp", "baseFeePerGas":
|
||||
node[k] = normalizeNumber(v)
|
||||
of "extraData":
|
||||
node[k] = normalizeData(v)
|
||||
|
@ -102,8 +102,14 @@ proc parseBlocks(blocks: JsonNode): seq[TestBlock] =
|
|||
of "transactions", "uncleHeaders",
|
||||
"blocknumber", "chainname", "chainnetwork":
|
||||
discard
|
||||
of "transactionSequence":
|
||||
var noError = true
|
||||
for tx in value:
|
||||
let valid = tx["valid"].getStr == "true"
|
||||
noError = noError and valid
|
||||
doAssert(noError == false, "NOT A VALID TEST CASE")
|
||||
else:
|
||||
doAssert("expectException" in key)
|
||||
doAssert("expectException" in key, key)
|
||||
t.hasException = true
|
||||
|
||||
result.add t
|
||||
|
@ -139,6 +145,7 @@ func vmConfiguration(network: string, c: var ChainConfig) =
|
|||
c.istanbulBlock = number[FkIstanbul]
|
||||
c.muirGlacierBlock = number[FkBerlin]
|
||||
c.berlinBlock = number[FkBerlin]
|
||||
c.londonBlock = number[FkLondon]
|
||||
|
||||
case network
|
||||
of "EIP150":
|
||||
|
@ -172,6 +179,10 @@ func vmConfiguration(network: string, c: var ChainConfig) =
|
|||
c.assignNumber(FkIstanbul, Zero)
|
||||
of "Berlin":
|
||||
c.assignNumber(FkBerlin, Zero)
|
||||
of "London":
|
||||
c.assignNumber(FkLondon, Zero)
|
||||
of "BerlinToLondonAt5":
|
||||
c.assignNumber(FkLondon, Five)
|
||||
else:
|
||||
raise newException(ValueError, "unsupported network " & network)
|
||||
|
||||
|
@ -224,7 +235,8 @@ proc importBlock(tester: var Tester, chainDB: BaseChainDB,
|
|||
preminedBlock.header.coinbase,
|
||||
some(preminedBlock.header.timestamp),
|
||||
some(preminedBlock.header.gasLimit),
|
||||
@[]
|
||||
@[],
|
||||
preminedBlock.header.fee
|
||||
)
|
||||
|
||||
deepCopy(result, preminedBlock)
|
||||
|
|
|
@ -157,6 +157,9 @@ proc testFixture(fixtures: JsonNode, testStatusIMPL: var TestStatus,
|
|||
stateRoot: emptyRlpHash
|
||||
)
|
||||
|
||||
if "currentBaseFee" in fenv:
|
||||
tester.header.baseFee = fromHex(UInt256, fenv{"currentBaseFee"}.getStr)
|
||||
|
||||
let specifyIndex = getConfiguration().index
|
||||
tester.trace = trace
|
||||
tester.debugMode = debugMode
|
||||
|
|
|
@ -29,7 +29,8 @@ const
|
|||
FkConstantinople: "Constantinople",
|
||||
FkPetersburg: "ConstantinopleFix",
|
||||
FkIstanbul: "Istanbul",
|
||||
FkBerlin: "Berlin"
|
||||
FkBerlin: "Berlin",
|
||||
FkLondon: "London"
|
||||
}.toTable
|
||||
|
||||
supportedForks* = {
|
||||
|
@ -41,7 +42,8 @@ const
|
|||
FkConstantinople,
|
||||
FkPetersburg,
|
||||
FkIstanbul,
|
||||
FkBerlin}
|
||||
FkBerlin,
|
||||
FkLondon}
|
||||
|
||||
nameToFork* = revmap(forkNames)
|
||||
|
||||
|
@ -199,8 +201,8 @@ proc parseAccessList(n: JsonNode): AccessList =
|
|||
result.add ap
|
||||
|
||||
proc getFixtureTransaction*(j: JsonNode, dataIndex, gasIndex, valueIndex: int): Transaction =
|
||||
let nonce = j["nonce"].getHexadecimalInt.AccountNonce
|
||||
let gasPrice = j["gasPrice"].getHexadecimalInt
|
||||
let dynamicFeeTx = "gasPrice" notin j
|
||||
let nonce = j["nonce"].getHexadecimalInt.AccountNonce
|
||||
let gasLimit = j["gasLimit"][gasIndex].getHexadecimalInt
|
||||
|
||||
var toAddr: Option[EthAddress]
|
||||
|
@ -223,7 +225,24 @@ proc getFixtureTransaction*(j: JsonNode, dataIndex, gasIndex, valueIndex: int):
|
|||
var secretKey = j["secretKey"].getStr
|
||||
removePrefix(secretKey, "0x")
|
||||
let privateKey = PrivateKey.fromHex(secretKey).tryGet()
|
||||
|
||||
|
||||
if dynamicFeeTx:
|
||||
let accList = j["accessLists"][dataIndex]
|
||||
var tx = Transaction(
|
||||
txType: TxEip1559,
|
||||
nonce: nonce,
|
||||
maxFee: j["maxFeePerGas"].getHexadecimalInt,
|
||||
maxPriorityFee: j["maxPriorityFeePerGas"].getHexadecimalInt,
|
||||
gasLimit: gasLimit,
|
||||
to: toAddr,
|
||||
value: value,
|
||||
payload: payload,
|
||||
accessList: parseAccessList(accList),
|
||||
chainId: ChainId(1)
|
||||
)
|
||||
return signTransaction(tx, privateKey, ChainId(1), false)
|
||||
|
||||
let gasPrice = j["gasPrice"].getHexadecimalInt
|
||||
if j.hasKey("accessLists"):
|
||||
let accList = j["accessLists"][dataIndex]
|
||||
var tx = Transaction(
|
||||
|
|
Loading…
Reference in New Issue