65 Commits

Author SHA1 Message Date
jangko
5159ad7aac
preparation for London hard fork
This preparation is needed for subsequent
EIPs included in London.

- Add London to Fork enum
- Block number to fork
- Parsing London fork in chain config
- Prepare gas costs table for London
- Prepare EVM opcode dispatcher for London
- Block rewards for London
- Prepare hive script for London
2021-06-29 07:34:45 +07:00
Jordan Hrycaj
a49a812879
Jordan/fix some failing nohive tests (#727)
* continue importing rlp blocks

why:
  a chain of blocks to be imported might have legit blocks
  after rejected blocks

details:
  import loop only stops if the import list is exhausted or if there
  was a decoding error. this adds another four to the count of successful
  no-hive tests.

* verify DAO marked extra data field in block header

why:
  was ignored, scores another two no-hive tests

* verify minimum required difficulty in header validator

why:
  two more nohive tests to succeed

details:
  * subsumed extended header tests under validateKinship() and renamed it
    more appropriately validateHeaderAndKinship()
  * enhanced readability of p2p/chain.nim
  * cleaned up test_blockchain_json.nim

* verify positive gasUsed unless no transactions

why:
  solves another to nohive tests

details:
  straightened test_blockchain_json chech so there is no unconditional
  rejection anymore (based on the input test  scenario)
2021-06-24 16:29:21 +01:00
Jordan Hrycaj
2d6bf34175
Re-adjust canonical head to parent of block to be inserted (#726)
* Re-adjust canonical head to parent of block to be inserted

why:
  of the failing tests that remain to be solved, 30 of those will succeed
  if the canonical database chain head is cleverly adjusted -- yes, it
  looks like a hack, indeed.

details:
  at the moment, this hack works for the non-hive tests only and is
  triggered by a boolean argument passed on to the chain.persistBlocks()
  method.

* Use parent instead of canonical head for block to be inserted

why:
  side chains need to be inserted typically somewhere before the
  canonical head.

details:
  the previous _hack_ was unnecessary and removed, it was inspired by
  some verification in persistBlocks() which explicitly referenced the
  canonical head (which now might or might not refer to the newly inserted
  header.)

* remove unnecessary code + comment
2021-06-22 17:52:31 +01:00
Jamie Lokier
5e718bcbe2
EVM: Remove most unused imports of vm_* files
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-06-01 16:54:38 +01:00
jangko
5fc57e4093
add validateKinship in persistBlocks of nimbus/p2p/chain.nim
put jordan's work #668 into effect, and this bring down
failing consensus test cases from 59 to 44
2021-05-27 16:28:26 +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
f6a0e4bcbd
fixes wrong usage of chainId in places where it should be networkId
fixes #643
2021-05-12 09:45:09 +07:00
Jordan Hrycaj
827b8c9c81
reset explicit import paths for local modules
why:
  it was convenient to have relocatable source modules when writing the
  vm interface wrappers. this patch moves it back to the standard.

also:
  there are no deep links into the vm folder anymore which leaves some
  room for manoeuvring inside
2021-04-01 12:53:22 +01:00
Jordan Hrycaj
00ba7a2718
merge vm_forks and vm_opcode_values => vm_type2
why:
  all types, but they cannot be merged int vm_types because of a circular
  dependency.
2021-03-31 17:53:15 +01:00
Jordan Hrycaj
eee24de450
provide vm_message as import/export wrapper
details:
  moved original vm/message.nim => vm/nvm_message.nim
2021-03-31 16:47:02 +01:00
Jordan Hrycaj
cf3a356d76
provide vm_computation as import/export wrapper
details:
  moved original vm/computation.nim => vm/nvm_computation.nim
2021-03-31 16:38:10 +01:00
Jordan Hrycaj
3a3e4d5707
provide vm_forks as import/export wrapper
details:
  moved original vm/interpreter/vm_forks.nim => vm/interpreter/nvm_forks.nim
2021-03-31 16:03:34 +01:00
jangko
c68aa47464
fixes fork comparison related code 2020-11-19 11:59:53 +07:00
jangko
648cc77f80
add berlin hf enum 2020-11-19 10:58:37 +07:00
jangko
c9802edfce
setup block and state env for more complex eth rpc tests 2020-07-28 23:48:45 +07:00
jangko
336efdb0c3
implement web3, net, and some eth namespace rpc 2020-07-22 23:57:55 +07:00
jangko
04dcec03a3
fix missing import when chronicles enabled 2020-07-21 15:12:59 +07:00
jangko
e37cacd8f1
implement forkid calculation and tests for each supported network 2020-07-04 13:23:09 +07:00
jangko
f401622782
cache miner address instead of recalculation 2020-06-22 07:48:23 +07:00
Jacek Sieka
4ade5797ee
rlp: don't use ranges / experimental features (#495) 2020-04-20 20:12:44 +02:00
andri lim
c4dcf5da30
reduce compiler warnings 2019-11-13 21:49:39 +07:00
kdeme
973ea96e1a
Add txRoot check to avoid assertions in tracer + don't throw exception 2019-07-15 13:26:33 +02:00
kdeme
f50d3f84f9
Add bounds check on getSuccessorHeader and getAncestorHeader 2019-07-09 15:52:41 +02:00
kdeme
739f36c640
Add skip parameter in getSuccessorHeader + add getAncestorHeader 2019-07-08 17:10:59 +02:00
Jacek Sieka
2763bd0dd5
std_shims -> stew 2019-07-07 12:12:01 +02:00
Ștefan Talpalaru
721f6e9c14
cosmetic change 2019-03-31 22:34:11 +02:00
Ștefan Talpalaru
3c6ea4ac9c
Merge branch 'cleanups' of https://github.com/jangko/nimbus into jangko-cleanups 2019-03-21 15:25:40 +01:00
andri lim
0b87151195
remove head from processBlock 2019-03-21 09:44:53 +07:00
andri lim
be79bc8740
remove opCodeExec, use executeOpcodes 2019-03-21 09:32:48 +07:00
Ștefan Talpalaru
c0272c6f94
AbstractChainDB.getStateDb() renamed to getTrieDB() 2019-03-13 21:41:52 +01:00
Ștefan Talpalaru
0c2d7638eb
add missing Chain.getStateDB() method
that's actually called from getStorageNode()
2019-03-13 01:20:34 +01:00
andri lim
fdc34a4cf6 fixes vmState construction 2019-02-15 17:20:51 +02:00
andri lim
817bce3555 premix report page: modify header section to display block summary 2019-02-06 18:42:03 +01:00
Yuriy Glukhov
481c6cf4ed Use nim-eth (#224) 2019-02-05 20:15:50 +01:00
Ștefan Talpalaru
ede45648e7 Premix-related changes
- build all tools using the Makefile and place them in ./build
- add copyright header to Makefile
- premix/readme.md edited to fix some errors, improve descriptions and
  document Makefile usage
- link the Premix documentation in the main README.md
- also build `hunter` in the nimble tests
- refactored the file and directory search so all debugging tools can be run
  from the top-level dir like this: `./build/<tool> ...`
- write all JSON debugging data in the current directory
- add JSON files generated in the top-level dir to .gitignore
- Nimbus now exits with an exception after dumping debug data and
  running `premix` on it
2019-01-28 12:38:23 +02:00
Ștefan Talpalaru
a431ceed11 add "--threads:on" to tests and main binary
- some "funcs" were no longer considered side-effect free, so I made
  them procs
- added {.base.} to some base methods to avoid a deprecation warning
2019-01-15 18:59:24 +02:00
andri lim
78367bf10a fix debug tool 2019-01-15 15:30:25 +02:00
andri lim
729686ff57 add debug tool 2019-01-15 15:30:25 +02:00
andri lim
3a10f99694 add persistblock test 2019-01-06 11:43:38 +02:00
andri lim
5cf43c2909 implement dumpDebuggingMetaData 2019-01-06 11:43:38 +02:00
andri lim
3b5562d85b rebase 2019-01-06 11:43:38 +02:00
andri lim
a6bf970b1b some cleanup 2019-01-06 11:43:38 +02:00
andri lim
890e8e11a4 dumpDebuggingMetaData stub 2019-01-06 11:43:38 +02:00
andri lim
6dc4b0be9a implement dumpBlockState 2019-01-06 11:43:38 +02:00
andri lim
35c1c7e075 move block processing to executor 2019-01-06 11:43:38 +02:00
Ștefan Talpalaru
048a43b2f1
better error handling
- added some useful `chronicles` defines in the top-level nim.cfg
- converted some assert() calls to error codes to avoid a reported
  segfault with -d:release
- the recoverable errors are being recovered from, in persistWorkItem()
- the only case that's a show stopper raises an exception
2018-12-17 23:36:38 +01:00
andri lim
ff08a6ad95 fix some typo 2018-12-16 15:38:51 +02:00
andri lim
d3380f6cf0 fix test 2018-12-16 15:38:51 +02:00
andri lim
9c0bb70ba7 working makeReceipt 2018-12-16 15:38:51 +02:00
andri lim
ad1202f98a initial make_receipt 2018-12-16 15:38:51 +02:00