Jordan Hrycaj
7b72109afa
Use sorted RLP serialisation for LRU cache
...
why:
previously, table data were stored with the table iterator. while
loading a table with permuted entries will always reconstruct equivalent
tables (in the sense of `==`), serialisation data are not comparable.
this patch produces always the same serialised data for equivalent
tables.
2021-05-26 07:58:12 +01:00
Jordan Hrycaj
b83b47e541
LRU cache tests makeover
...
why:
source-local unit tests would hardly be triggered by github CI as rightly
criticised with the last patch.
details:
source-local unit tests have been moved to tests folder.
this version also contains rlp serialisation code so rlp encode/decode
will apply tranparently. this is not needed in p2p/validate but will be
useful with the clique protocol.
2021-05-26 07:58:12 +01:00
jangko
396f3e9909
add missing poaEngine configuration in config.nim
...
later we will use real engine configuration it if become available to us
2021-05-24 14:35:47 +07:00
Jordan Hrycaj
179cc75c32
Update LRU complexity comment
...
why:
hash tables might worst-case degrade into linear mode, so it is not
strictly O(1)
2021-05-24 07:57:21 +01:00
Jordan Hrycaj
1965ea027b
updated LRU cache to run with complexity O(1)
...
why:
to be used in Clique consensus protocol which suggests 4k cache entries.
the previous implementation used OrderTable[] which has complexity O(n)
for deleting entries.
2021-05-24 07:57:21 +01:00
Jordan Hrycaj
a5e0bb6139
use general lru_cache for EpochHashCache
...
why:
generic implementation will be also be used elsewhere
2021-05-24 07:57:21 +01:00
Jordan Hrycaj
3663b1603f
pulled out cache logic into separate file
...
why:
handy to re-use, eg. for upcoming clique implementation
2021-05-24 07:57:21 +01:00
Jordan Hrycaj
d6a5cecb98
re-wrote validation with exceptionless functions
...
why:
exceptions were from test code should be avoided in production code
2021-05-24 07:57:21 +01:00
Jordan Hrycaj
40c7bdfc06
update lookup cache management
...
details:
enable fifo behaviour, using cache as argument
2021-05-24 07:57:21 +01:00
Jordan Hrycaj
ce8e5511e3
backport from test_blockchain_json, see issue #666
2021-05-24 07:57:21 +01:00
jangko
cbed4a368b
hive: update current state of the tests
...
from: ethereum/sync: 0 pass, 1 fail, 1 total
to : ethereum/sync: 2 pass, 2 fail, 4 total
2021-05-20 18:47:11 +07:00
jangko
19f343b979
hive: use HIVE_NETWORK_ID to initialize networkId if available
...
devp2p/eth simulator is using this HIVE_NETWORK_ID to configure client
2021-05-20 14:04:17 +07:00
jangko
b82061bf46
don't mix customBootNodes and bootNodes usage
2021-05-20 14:04:17 +07:00
jangko
a0d10f5728
drop PublicNetwork enum usage and replace it with NetworkId
...
we cannot limit the `--networkid` switch to values available in
`PublicNetwork` enum. it should able to accept very wide range of
custom NetworkId.
2021-05-20 14:04:16 +07:00
jangko
d12e7d22bf
update hive stat
...
additional simulators can run:
- `devp2p/discv4`
- `devp2p/eth`
from:
devp2p/discv4: 0 pass, 14 fail, 14 total
devp2p/eth: 0 pass, 1 fail, 1 total
to:
devp2p/discv4: 3 pass, 11 fail, 14 total
devp2p/eth: 1 pass, 8 fail, 9 total
2021-05-19 17:51:13 +07:00
jangko
2fd2665026
update hive client script
...
add enode.sh
use HIVE_BOOTNODES flag in nimbus.sh
2021-05-19 17:51:12 +07:00
jangko
ec1af91370
implement "net_nodeInfo" rpc
...
fixes #569
2021-05-19 16:35:13 +07:00
Ștefan Talpalaru
82f99dc3c0
Windows: support more Mingw-w64 versions
...
This reverts commit 295c1409f6
.
2021-05-19 00:42:56 +02:00
Jordan Hrycaj
91e24e3581
collected wisdom after working with hive/docker ( #669 )
2021-05-18 16:38:35 +01:00
jangko
18553156b1
hive: update hive flags usage checklist in nimbus.sh
...
additional flags we use:
- [x] HIVE_NETWORK_ID network ID number to use for the eth protocol
- [x] HIVE_LOGLEVEL client loglevel (0-5)
- [x] HIVE_GRAPHQL_ENABLED enables graphql on port 8545
2021-05-18 09:31:11 +07:00
jangko
cc1034aecf
hive: fixes mapper.jq related to DAO fork
...
hive always set 'HIVE_FORK_DAO_VOTE' to '1'.
set 'daoForkSupport' to 'true' if only 'HIVE_FORK_DAO_BLOCK'
is set by hive, not depends only on 'HIVE_FORK_DAO_VOTE'.
This is because 'nimbus-eth1' internal is different compared to 'geth'.
2021-05-18 09:23:12 +07:00
jangko
b02095a45a
hive: update current state of the tests
...
additional simulators can be run:
- `ethereum/rpc`
- `smoke/network`
- `smoke/genesis`
number of passess and fails:
from: ethereum/consensus: 27353 pass, 892 fail, 28245 total
to : ethereum/consensus: 28186 pass, 59 fail, 28245 total
new:
- smoke/genesis: 3 pass, 0 fail, 3 total
- smoke/network: 1 pass, 0 fail, 1 total
- smoke/clique: 0 pass, 1 fail, 1 total
2021-05-18 09:01:11 +07:00
jangko
0ecf9fe1af
add more query fields and resolvers to graphql api
...
after EIP2718/EIP2930, we have additional fields:
type AccessTuple {
address: Address!
storageKeys : [Bytes32!]
}
type Transaction {
r: BigInt!
s: BigInt!
v: BigInt!
# Envelope transaction support
type: Int
accessList: [AccessTuple!]
}
close #606
2021-05-18 07:32:03 +07:00
jangko
af1537fcab
fixes and add hive simulators written in nim
...
now we have hive simulators written in nim:
- ethereum/consensus
- ethereum/graphql
Using these simulators, we can debug test cases without have to run
hive or docker.
2021-05-17 20:48:22 +07:00
jangko
d2b47139e1
fixes `importRlpBlocks` in conf_utils.nim
...
now we are importing block one by one to satisfy
some of hive test cases.
we also catch exception instead of letting it terminate the
process.
2021-05-17 18:43:44 +07:00
jangko
43bc010c9c
remove test_vm_json
...
reason:
- they already covered by test_blockchain_json
and test_generalstate_json.
- new ethereum/tests already remove them,
nothing to tests anymore
2021-05-17 11:14:34 +07:00
jangko
6055e0bd0f
update tests logs
...
recent EIP2718 and EIP2930 inclusion and ethereum/tests update
add and remove many entries
2021-05-17 11:14:33 +07:00
jangko
77272544c0
fixes test_helper's jsonTestImpl
...
when a skipped test case not in the skip list
but skipped using `testStatusIMPL`, the generated
markdown file list it as failed.
now that bug is fixed.
2021-05-17 11:14:33 +07:00
jangko
df9bae3517
bump nim-eth submodule
...
eip2718: protect against malformed rlp in tx sequence decoder
2021-05-17 11:14:33 +07:00
jangko
224b1e833b
bump ethereum/tests submodule
...
reason: allow EIP-2930 test cases to participate in test
2021-05-17 01:30:44 +07:00
jangko
79a52b11fd
fixes test_blockchain_json: better error message
...
also remove local EthBlock type and use EthBlock from nim-eth/common
2021-05-17 01:29:03 +07:00
jangko
76543da456
disable EIP-2537: Precompile for BLS12-381 curve operations
...
reason: not included in berlin hard fork
but we keep the code around, for future inclusion
2021-05-17 01:29:03 +07:00
jangko
3ccc4642f2
disable EIP-2315: Simple Subroutines for the EVM
...
reason: not included in berlin hard fork
2021-05-17 01:29:03 +07:00
jangko
6fc3df637c
reenable EIP-2565: modExp gas cost
...
now it's officially included in berlin hard fork
2021-05-17 01:28:31 +07:00
jangko
01a27ff328
EIP-2930: optional access list
...
the new AccessListTx contains address and storage keys
that will go into global access list. and this come with
prices.... in ether
2021-05-16 19:54:48 +07:00
jangko
a2712c5c7a
eip2718: fixes test_rpc.nim
2021-05-15 18:09:36 +07:00
jangko
a2f77e8627
eip2718: rename vm2 ChainId op code to ChainIdOp
...
this is to avoid clash with ChainId type
imported from eth/common
2021-05-15 18:09:36 +07:00
jangko
96d1969017
bump nim-eth: eip2718 typed transaction envelope
...
these series of commits labelled eip2718 will pave the way for
eip2930: optional access lists
2021-05-15 18:09:36 +07:00
jangko
87c6ec7309
eip2718: add tx validate for AccessListTx
2021-05-15 18:09:36 +07:00
jangko
77f080c8c2
eip2718: nimbus is compileable
2021-05-15 18:09:36 +07:00
jangko
79044f1e92
eip2718: test_blockchain_json pass test
2021-05-15 18:09:35 +07:00
jangko
2a9c3982d9
remove code duplication from test_blockchain_json
...
now test_blockchain_json is using block validation code
from p2p/executor.nim instead of using it's own
block validation code.
this will reduce maintenance cost and fixes #592 .
2021-05-14 15:37:30 +07:00
jangko
db65f92e66
refactor vmConfiguration in test_blockchain_json
...
instead of using it's own blockNumber to Fork calculation,
we switch to ChainConfig to Fork to ensure smooth transition
when using common block validator.
2021-05-14 15:37:29 +07:00
jangko
beb274d98c
remove unnecessary codes from test_blockchain_json
...
except for genesis block, we are not parsing block header from json
node anymore.
we parse block headers from block RLP, it is the same thing.
2021-05-14 15:37:29 +07:00
Jordan Hrycaj
d1348824f8
update conversion to start option argument inside hive container ( #658 )
...
why:
not overloading genesis.json by converted version, using new file
with edited contents
2021-05-14 08:56:21 +01:00
jangko
fe92942fa2
update hive/ethereum/consensus stat
...
from: ethereum/consensus: 16556 pass, 11643 fail, 28199 total
to : ethereum/consensus: 27353 pass, 892 fail, 28245 total
2021-05-14 08:18:54 +07:00
jangko
911bc0b1c3
update mapper.jq in hive_integration/nimbus
...
this changes is required due to recent #654 .
custom genesis and chain config parser are fixed
and the genesis fields are grouped into "genesis"
field, similar with chain config fields,
they are grouped in "config" field.
2021-05-13 18:09:28 +07:00
jangko
f2491e6307
fixes crappy custom genesis and chain config parser
...
instead of using stdlib/json, now we switch to json_serialization
the result is much tidier code and more robust when parsing
optional fields.
fixes #635
2021-05-13 16:04:08 +07:00
jangko
6966324f3b
add our own hive/graphql simulator into hive_integration
...
now we can run hive/graphql test without using hive or docker.
it's useful for debugging session. but lacking nice result report
like real hive.
2021-05-12 21:21:53 +07:00
jangko
a57ac65c8c
fixes --customnetwork parser
...
now it can ignore an optional fork e.g. MuirGlacier
2021-05-12 19:05:32 +07:00