Commit Graph

1081 Commits

Author SHA1 Message Date
jangko 3f79588a74
EIP2537 part 3 2020-11-29 08:01:17 +07:00
jangko 0799b4534c
EIP2537 part 2 2020-11-28 23:13:10 +07:00
jangko c1b7ae5b02
EIP2537 part 1 2020-11-27 21:42:17 +07:00
andri lim 360b74327e
Merge pull request #544 from status-im/precompiles_test_rework
Precompiles test rework
2020-11-26 10:34:26 +07:00
jangko 971e00e580
precompile contracts test rework 2020-11-25 20:42:15 +07:00
jangko 56bc1205e5
returnStack: use seq[int] instead of Uint256 Stack 2020-11-25 19:09:16 +07:00
jangko a263e6b1a6
implement EIP2315 tests 2020-11-25 18:23:02 +07:00
jangko a38882a9a0
implement EIP 2315 opcodes 2020-11-25 17:09:10 +07:00
jangko 5a78b8a5a7
stubbing berlin opcodes 2020-11-25 16:43:34 +07:00
jangko e2cd9b20fa
add returnStack to Computation 2020-11-25 16:26:24 +07:00
jangko 5bb6418bcb
implement EIP2565 2020-11-24 16:19:02 +07:00
jangko 97f73fd03d
implement EIP 2046 2020-11-19 14:23:07 +07: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
andri lim 676ce3aedb
Merge pull request #528 from narimiran/parse-enum-2
write `Fork` enum in a "modern way"
2020-09-04 15:09:01 +07:00
narimiran 36a75197d2 write `Fork` enum in a "modern way"
This provides the same functionality as `$` proc, but it keeps working
with Nim 1.3+, where `parseEnum` implementation has been changed to be
able to work with enums with holes (after a bugfix for them).

Note that the first character is case-sensitive and "Constantinople" !=
"constantinople".
Since the tests (`test_op_arith` and `test_op_bit`) use lower-case first
letter, the string representation is also changed to the lower-case.
2020-09-03 10:03:20 +02:00
jangko f987e86562
implement more eth rpc 2020-07-30 14:21:11 +07:00
jangko 9c38266ba7
implement eth_estimateGas 2020-07-29 12:42:32 +07:00
jangko c9802edfce
setup block and state env for more complex eth rpc tests 2020-07-28 23:48:45 +07:00
jangko bb89a296dd
implement eth_signTransaction, eth_sendTransaction, eth_sendRawTransaction, eth_call 2020-07-24 19:44:36 +07:00
jangko 7819dae7ce
implement eth_signTransaction 2020-07-23 22:30:42 +07:00
jangko d200a98a68
fix compilation error 2020-07-23 16:01:19 +07:00
jangko f82dff64fa
implement more eth rpc and keystore management 2020-07-23 14:54:32 +07:00
jangko 336efdb0c3
implement web3, net, and some eth namespace rpc 2020-07-22 23:57:55 +07:00
jangko 032c29288a
fix git revision string in config.nim 2020-07-22 18:40:12 +07:00
jangko 6ffb33ccac
cleanup sstore gasCost 2020-07-21 20:13:58 +07:00
jangko 2f3a22d840
fix evmc_host.set_storage 2020-07-21 19:58:17 +07:00
jangko 04dcec03a3
fix missing import when chronicles enabled 2020-07-21 15:12:59 +07:00
jangko 207065746c
reduce more warnings 2020-07-21 13:25:27 +07:00
jangko 165f9fea2e
reduce warnings 2020-07-21 13:15:06 +07:00
jangko ab5c763a84
move rng to configuration 2020-07-21 00:16:59 +07:00
jangko 9ee04efca4
fix random_keys crash 2020-07-20 15:16:34 +07:00
jangko 845671bf0a
fix compilation error following breaking changes in nim-eth 2020-07-20 13:50:05 +07:00
jangko e37cacd8f1
implement forkid calculation and tests for each supported network 2020-07-04 13:23:09 +07:00
jangko 12ddfee675
fix compilation error related to lib-secp256k1 changes 2020-06-24 17:07:33 +07:00
jangko 438ad832cc
fix rpc/p2p.nim 2020-06-22 10:59:24 +07:00
jangko f401622782
cache miner address instead of recalculation 2020-06-22 07:48:23 +07:00
jangko 9d0b399213
fix accounts_cache: move overlayStorage to originalStorage when not clearCache 2020-06-20 18:45:09 +07:00
jangko 2385df7bae
miner address calculation for PoA consensus engine 2020-06-19 20:24:09 +07:00
jangko 3931c1ff5c
fix tracer to support testnet 2020-06-19 17:51:53 +07:00
jangko bd7e1fe2e5
reuse VMState and AccountsCache for better performance 2020-06-18 13:16:38 +07:00
jangko 49460b6b1e
move buildWitness from test_blockchain_json to vm_state 2020-06-18 13:16:38 +07:00
jangko eabacb0a33
allow nimbus to read geth database 2020-06-18 13:16:25 +07:00
jangko 7c026e1b48
modify VMState to enable witness data collection 2020-06-06 10:05:11 +07:00
jangko 50816f2ebb
implement block witness data collection in accounts_cache 2020-06-03 20:50:13 +07:00
jangko 844071033a
fix at various places related to missing accounts_cache.persist call 2020-06-01 13:45:32 +07:00
jangko 8a4c8c6273
fix buggy isAlive from accounts_cache 2020-06-01 10:54:25 +07:00
jangko 71514a0a66
replace state_db with accounts_cache 2020-05-30 10:14:59 +07:00
Ștefan Talpalaru cf2a6fb621
small NimbusState refactoring 2020-05-21 03:33:11 +02:00
kdeme 769228418e Remove wakunode and waku rpc code from repository 2020-05-07 20:49:14 +03:00
andri lim c9e49bf68a
fix accounts cache init API 2020-04-29 12:00:44 +07:00
Jacek Sieka ed7dbab70f db: use kvstore from nim-eth 2020-04-27 18:40:45 +03:00
Jacek Sieka 4ade5797ee
rlp: don't use ranges / experimental features (#495) 2020-04-20 20:12:44 +02:00
andri lim 5b7742d09b
Merge pull request #490 from status-im/reduce_warning
reduce unused import warnings
2020-04-16 10:05:18 +07:00
Ștefan Talpalaru a783b096fe
bump vendor/nimbus-build-system (#491)
* bump vendor/nimbus-build-system

- add the Nim compiler header to the Nimbus header
- also support the USE_LIBBACKTRACE env var

* "go-checks" target no longer available
2020-04-16 00:21:58 +02:00
andri lim af02a3b1b2
reduce unused import warnings 2020-04-15 19:05:57 +07:00
andri lim 860d8e9705
fix rpc/p2p 2020-04-13 09:41:18 +07:00
andri lim d2b0ca62b2
fix GlacierMuir to MuirGlacier typo 2020-04-12 18:13:22 +07:00
andri lim 87bae2bb78
switch to new toFork 2020-04-12 18:02:59 +07:00
andri lim e324a7342d
move toFork to config.nim 2020-04-12 17:07:09 +07:00
andri lim a864967c4f
more to update chain config [skip ci] 2020-04-11 16:59:46 +07:00
andri lim 6591893158
change FkGlacierMuir to FkMuirGlacier [skip ci] 2020-04-11 16:02:15 +07:00
andri lim d69ede6060 add goerli testnet genesis data[skip ci] 2020-04-09 19:13:17 +03:00
andri lim 03eb7a3c2a
Merge pull request #485 from status-im/fix_testnet_config
fix testnet config, disable 'daoForkSupport' for 'Ropsten' and 'Rinkeby'
2020-04-09 10:53:22 +07:00
Ștefan Talpalaru af89b51503
Merge branch 'master' into nim-1.2 2020-04-08 20:16:37 +02:00
andri lim 1ad0dcd586
fix testnet config 2020-04-08 16:53:26 +07:00
Jacek Sieka c1899711c9
keep up with nim-eth (#483)
* keep up with nim-eth
2020-04-07 11:53:50 +02:00
Jacek Sieka 1d472cf090
Eth keys (#482)
* bump nim-eth, fix deprecated calls
2020-04-05 15:12:48 +02:00
Zahary Karadjov 3fc3ba925e
Compile Nimbus with Nim 1.2 2020-04-03 22:09:14 +03:00
jangko 32f5fd9b90
fix evmc sstore gas cost related to EIP 1283 2020-03-24 17:21:18 +07:00
jangko b5850ca748
fix evmc compilation issue 2020-03-24 17:21:18 +07:00
andri lim 266e0ddb1e
room for EIP-1283 2020-03-24 17:21:13 +07:00
andri lim edc19076e3 accounts cache: read-only operations should not create new account 2020-02-27 14:38:42 +02:00
andri lim 40a7b7da1b fixes glacier muir block reward 2020-02-20 09:21:35 +02:00
andri lim 6b6584c4d0 Glacier Muir update 2020-02-20 09:21:35 +02:00
andri lim 2fbabd25a4 implement aleth/geth/parity compatibility mode -- 100% pass test 2020-02-20 09:08:44 +02:00
andri lim 15c9fa54ec fixes modexp gasFee bug 2020-02-18 20:11:36 +02:00
kdeme 55fb1294ed
Check all subscribed topics in quicksim + bump vendor/nim-eth 2020-02-14 11:36:37 +01:00
andri lim deb09f40f0 less explicit 'copyMem' 2020-02-12 17:53:26 +02:00
andri lim 7c9f6b48d6 unify Nimbus 'call' and EVMC 'call' 2020-02-12 17:53:26 +02:00
andri lim 0686bb4b6e remove legacy unused code 2020-02-12 17:53:26 +02:00
andri lim 3ef2969583 clear picture on EIP 716 issue 2020-02-12 17:53:26 +02:00
andri lim dc3a897851 implement evmc call 2020-02-12 17:53:26 +02:00
andri lim 9477990897 simplify CALL family impl 2020-02-12 17:53:26 +02:00
andri lim fff35ab01d implement evmc create/create2 2020-02-12 17:53:26 +02:00
andri lim 270854a5aa simplify 'gasUsed' and 'refundGas' 2020-02-12 17:53:26 +02:00
andri lim d9991b1e8b simplify cash 2020-02-12 17:53:26 +02:00
andri lim 109f841a9e simplify returnData logic 2020-02-12 17:53:26 +02:00
andri lim 22dff9ff88 remove 'startGas' from 'gasMeter' 2020-02-12 17:53:26 +02:00
andri lim 1cd9353faa simplify computation 2020-02-12 17:53:26 +02:00
andri lim 8564e9532b change 'rawOutput' to 'output' 2020-02-12 17:53:26 +02:00
andri lim f850c4a37b put 'sstoreEvmc' behind 'when evmc_enabled' 2020-02-12 17:53:26 +02:00
kdeme b959b14109
Update to use waku topic-interest 2020-02-07 08:59:19 +01:00
andri lim 55494f06e5
move 'validateTransaction' from GST into 'processTransaction' 2020-01-24 19:52:55 +07:00
Kim De Mey a2478baeff
Merge pull request #446 from status-im/waku-queue-fixes
Bump vendor/nim-eth for waku/whisper queue fixes
2020-01-23 22:50:12 +01:00
andri lim 95edc54b46 fixes gcsafe overrides and reduce unnecessary evmc conversion 2020-01-23 18:07:44 +02:00
andri lim 18eb255758 convert 'block' into 'if-else' in evmc 'setStorage' 2020-01-23 18:07:44 +02:00
andri lim 9b1f8e2f65 change 'registerAccountForDeletion' to 'execSelfDestruct' 2020-01-23 18:07:44 +02:00
andri lim d656f7f701 rename 'txContext' to 'setupTxContext' 2020-01-23 18:07:44 +02:00
andri lim 933b2dad78 remove code from EVM Message and load code in 'Computation' 2020-01-23 18:07:44 +02:00
andri lim 577c7ca5aa simplify 'execComputation' 2020-01-23 18:07:44 +02:00
andri lim 83e9debb62 move contract address creation to 'Computation' 2020-01-23 18:07:44 +02:00
andri lim ea4f851f80 move create contract incNonce to 'applyMessage' 2020-01-23 18:07:44 +02:00
andri lim ec8abf40e4 move 'tx.getRecipient' into 'setupComputation' 2020-01-23 18:07:44 +02:00
andri lim 37c282f1b9 fixes evmc 'gasRefund' 2020-01-23 18:07:44 +02:00
andri lim c459879647 only import evmc files when 'evmc_enabled' defined 2020-01-23 18:07:44 +02:00
andri lim 4aa209113a integrate evmc 'setStorage' 2020-01-23 18:07:44 +02:00
andri lim 62f96e9bd4 integrate evmc 'emitLog' 2020-01-23 18:07:44 +02:00
andri lim bf7b4c7273 fixes evmc 'selfDestruct' definition 2020-01-23 18:07:44 +02:00
andri lim 3e384f764d fixes evmc 'accountExists' definition 2020-01-23 18:07:44 +02:00
andri lim 64f0e59487 evmc_enabled compile time flags 2020-01-23 18:07:44 +02:00
andri lim 295d2c180b integrate evmc 'selfDestruct' and 'copyCode' 2020-01-23 18:07:44 +02:00
andri lim 8a9d9114e7 integrate evmc 'getCodeHash' 2020-01-23 18:07:44 +02:00
andri lim 5507e80b63 integrate evmc 'getCodeSize' 2020-01-23 18:07:44 +02:00
andri lim 8c53371c49 integrate evmc 'getBalance' 2020-01-23 18:07:44 +02:00
andri lim fdbc888840 integrate evmc 'getStorage' 2020-01-23 18:07:44 +02:00
andri lim a4a1148a45 integrate evmc 'accountExists' 2020-01-23 18:07:44 +02:00
andri lim 1813579bc4 integrate evmc 'getBlockHash' 2020-01-23 18:07:44 +02:00
andri lim 319e5d8ae9 integrate evmc 'getTxContext' 2020-01-23 18:07:44 +02:00
andri lim e25f2bb82f evmc host implementation 2020-01-23 18:07:44 +02:00
kdeme 4ec126afaf
More cosmetic changes 2020-01-23 15:40:41 +01:00
andri lim e8ec1706ed fixes rpc compilation error 2020-01-23 12:39:36 +02:00
Zahary Karadjov d23a33a80c Cosmetic improvements 2020-01-23 12:39:36 +02:00
kdeme ca6890b026 Change Waku RPC methods prefix 2020-01-23 12:39:36 +02:00
kdeme d56655d278 Move WhisperKeys to KeyStorage 2020-01-23 12:39:36 +02:00
kdeme 776f924e39 Small fixes/improvements 2020-01-23 12:39:36 +02:00
kdeme 56f46357e6 Generate and use random topics in waku simulation 2020-01-23 12:39:36 +02:00
kdeme ed79c4dfdc Add quick waku simulation with hardcoded network 2020-01-23 12:39:36 +02:00
kdeme 8c3595ff94 Bump vendor/nim-eth and fix changes 2020-01-23 12:39:36 +02:00
kdeme 6e4b73b562 Fix bloom filter of a new Waku/Whisper filter and update automatically for light node 2020-01-23 12:39:36 +02:00
kdeme c3aeb15ce5 Introduce WakuMode 2020-01-23 12:39:36 +02:00
kdeme 7b80b313e4 Start implementation of waku node 2020-01-23 12:39:36 +02:00
andri lim c1ef8632b2 move fork and gasCosts from Computation to vmState 2020-01-20 18:36:58 +02:00
andri lim bab359cabf move origin and gasPrice from Message to vmState 2020-01-20 18:36:58 +02:00
andri lim d300bc352d fixes balance transfer for CALL and CALLCODE 2020-01-20 18:36:58 +02:00
andri lim 73c60fe694 unifying contract collision detection 2020-01-20 18:36:58 +02:00
andri lim 16a938d3fa fixes clearStorage bug 2020-01-20 18:36:58 +02:00
andri lim 89d1834d52 consistent evm depth call check 2020-01-20 18:36:58 +02:00
andri lim 009aa35dfb remove unused eraseReturnData 2020-01-20 18:36:58 +02:00
andri lim 52fffa6e25 fixes long standing bug create2nocash 2020-01-20 18:36:58 +02:00
andri lim 63e886655b fixes coinbase suicide bugs 2020-01-20 18:36:58 +02:00
andri lim 0b99b76cd1 change 'BaseComputation' to 'Computation' 2020-01-20 18:36:58 +02:00
andri lim 79df931234 simplifies computation.getFork 2020-01-20 18:36:58 +02:00
acolytec3 45cda8bab0 Add support for custom genesis blocks 2020-01-20 06:35:35 -05:00
andri lim 5f24757cd7 use 'withValue' when retrieving account's storage 2020-01-19 19:17:37 +02:00
andri lim 6066028d06 remove duplicate line 2020-01-19 19:17:37 +02:00
andri lim e4db21272c fixes rpc/p2p.nim compilation error 2020-01-19 19:17:37 +02:00
andri lim d30f434f03 get rid of computation child after execution 2020-01-19 19:17:37 +02:00
andri lim ed62d1e217 [skip ci] more collectTouchAccounts reduction 2020-01-19 19:17:37 +02:00
andri lim 5e6018b20b [skip ci] collectTouchedAccounts reduction 2020-01-19 19:17:37 +02:00
andri lim 20a138c270 [skip ci] change 'accountsToDelete' to 'touchedAccounts' 2020-01-19 19:17:37 +02:00
andri lim 2472662057 [skip ci] simplify rootHash usage 2020-01-19 19:17:37 +02:00
andri lim d37e37e5f3 [skip ci] simplify collectTouchedAccounts logic 2020-01-19 19:17:37 +02:00
andri lim cf0d4481f3 [skip ci] rename 'isExists' to 'exists' 2020-01-19 19:17:37 +02:00
andri lim 8f7597e23b [skip ci] add evmc CallKind to EVM Message 2020-01-19 19:17:37 +02:00
andri lim 836e087984 [skip ci] change storageAddress to contractAddres 2020-01-19 19:17:37 +02:00
andri lim 40ddbca1ee [skip ci] simplify EVM message creation 2020-01-19 19:17:37 +02:00
andri lim 727b477fca [skip ci] add accounts cache test 2020-01-19 19:17:37 +02:00
andri lim 5795bf52e0 [skip ci] implement accounts_cache 2020-01-19 19:17:37 +02:00
andri lim 3c33678949 add comment about evmc and touched accounts 2019-12-20 16:46:03 +02:00
andri lim 7be6a4ea63 gather suicides from child to parent computation 2019-12-20 16:46:03 +02:00
andri lim 9cb98d69ba accumulate refundGas after child computation done 2019-12-20 16:46:03 +02:00
andri lim 9dbcc7bb69 improve comment in 'processBlock' 2019-12-10 12:34:48 +02:00
andri lim 1ffb992674 multi root state trie implementation 2019-12-10 12:34:48 +02:00
kdeme 9aae2f9463 No more blind except 2019-12-05 13:02:21 +01:00
kdeme 9964a55772 Replace getCurrentException 2019-12-05 13:02:21 +01:00
andri lim 93f6b99087
fixes #424 2019-11-23 20:41:10 +07:00
andri lim 0d743dc468
fixes 'collectTouchedAccounts' for Istanbul 2019-11-19 16:14:36 +07:00
andri lim 28514dbb28
fixes EIP2200 sentry gas comparison 2019-11-18 20:48:30 +07:00
andri lim 11f67f87fd
fixes EIP2200 gas cost and refund 2019-11-18 20:33:10 +07:00
andri lim d61bb49a40
fixes gas_costs for istanbul 2019-11-14 22:27:24 +07:00
andri lim 97e89b3afe implement 'getCommittedStorage' 2019-11-14 10:11:35 +00:00
andri lim c4dcf5da30
reduce compiler warnings 2019-11-13 21:49:39 +07:00
andri lim 61f340ae87 implement EIP2200's SSTORE and gas cost 2019-11-12 15:51:48 +00:00
andri lim c0c62b94b8 implement EIP-2200 stub 2019-11-12 15:51:48 +00:00
andri lim b5e8a8d61b implement 'chainId' opcode 2019-11-12 15:51:48 +00:00
andri lim 1e4f290cc6 implement 'selfBalance' opcode and gas cost 2019-11-12 15:51:48 +00:00
andri lim 4fbc9727d8 revert accidentally changed GasQuadDivisor 2019-11-12 15:51:48 +00:00
andri lim 1937fd700d implement EIP-2028 2019-11-12 15:51:48 +00:00
andri lim 4cf3931f34 add istanbul block reward 2019-11-12 15:51:48 +00:00
andri lim 078375061b implement EIP 1884 stub 2019-11-12 15:51:48 +00:00
andri lim 0bb6c73bdb implement EIP 1344 stub 2019-11-12 15:51:48 +00:00
andri lim cda3e2811f implement EIP 1108 2019-11-12 15:51:48 +00:00
andri lim b3cbf620d6 implement EIP-152 2019-11-12 15:51:48 +00:00
andri lim 3dbf41aac8 adding FkIstanbul to vm_forks gas_costs 2019-11-12 15:51:48 +00:00
Ștefan Talpalaru 5a18227562
add Git revision to NimbusHeader 2019-11-10 18:44:40 +01:00
Ștefan Talpalaru c1621a518b
bump vendor/nim-metrics 2019-11-10 18:28:55 +01:00
andri lim dec3c7baee
fixes 32bit problem 2019-10-28 22:21:41 +07:00
Ștefan Talpalaru 70bcce2132
a couple of Nim 1.0.2-related fixes 2019-10-28 22:21:20 +07:00
andri lim 26ee138ea5 fixes GST regression 2019-09-26 12:33:43 +03:00
andri lim a65ab2763e fixes generateHeaderFromParentHeader 2019-09-26 12:33:43 +03:00
andri lim 12960c27ce fixes coinBase suicide 2019-09-26 12:33:43 +03:00
andri lim e63a43ee9f fixes getAncestorHash 2019-09-26 12:33:43 +03:00
andri lim b189e1604f fixes gasLimitBounds 2019-09-26 12:33:43 +03:00
andri lim 9cba2c9cc0 fix validateGasLimit 2019-09-26 12:33:43 +03:00
andri lim 3ad465d169 implement block validation and friends 2019-09-26 12:33:43 +03:00
andri lim 12ea5247d6 execute transactions 2019-09-26 12:33:43 +03:00
andri lim 45059957d0 completing generateHeaderFromParentHeader implementation 2019-09-04 19:05:21 +02:00
andri lim a1c21722dd more flexible calcDifficulty 2019-09-04 19:05:21 +02:00
andri lim 31ed8fcf83
refine transaction validation 2019-08-29 20:44:54 +07:00
andri lim 230fb4b06d
activates test 2019-08-29 19:57:01 +07:00
andri lim 54b56ca722
fixes intrinsicGas 2019-08-29 19:54:52 +07:00
andri lim 7c094a2a3e
initial implementation of transaction test 2019-08-29 19:54:38 +07:00
andri lim 5a92f1faf1
less DRY 2019-08-26 21:39:41 +07:00
andri lim 0bad132387
add diffficulty test 2019-08-26 21:26:57 +07:00
andri lim 60b3ac15d6
simplify 'calldataload' implementation 2019-08-20 16:26:27 +07:00
andri lim e675182506 fixes 32 bit problem in test_helpers.nim and transaction_tracer.nim 2019-08-19 20:41:27 +03:00
kdeme 1e716a960a Refactor bootnodes and whispernodes 2019-08-16 08:51:40 +02:00
Yuriy Glukhov 4f0404fa2d Reuse transaction utils from eth-common 2019-08-13 17:52:41 +03:00
andri lim 6ac750551e 'SAR' opcode uses new 'shr' from stint 2019-08-13 17:51:10 +03:00
andri lim 74d68ea425 fixes #72, simplify SDIV implementation 2019-08-13 17:48:25 +03:00
Ștefan Talpalaru 1d7e14dc1b
refactor the C and Go wrapper build system
- moved "nimbus/api" to "wrappers"
- renamed files
- replaced the build scripts with Makefile targets
- set the rpath relative to the test binary's location so it can look
  for libnimbus.so there at runtime
- libnimbus.so.0 required on Linux, apparently
- compiled all the Nimbus code with `--app:lib`, not just one file (this
  required skipping a proc in "nimbus/config.nim" because it uses an API
  that's unavailable in libraries)
- removed static linking from the Go wrapper. It doesn't make sense at a
  global level, when using a shared Nimbus library. To selectively link
  static libraries, we should probably be specifying them as *.a. I did
  build a static libnimbus.a, as a test, but it insisted on dlopen-ing a
  shared version of itself which looked too ugly to continue.
2019-08-02 18:13:47 +02:00
Jacek Sieka 3c2daa8b80
Expose simple whisper api to C / go (#331)
* dummy c lib

* go stuffz

* Compile secp

* Compile as shared library

* Build with debug info

* Prelude exposed fns with setupForeignThreadGc() (naive)

To avoid GC/thread issues causing segmentation fault when running from Go.

* Add logging, fix lib path and gomaxprocs to make debuggable

* lock to os thread

* Address basic feedback and mark TODOs

* Use normal secp (shared lib flow now)

* api: cleanup, move to api folder
2019-07-31 10:05:22 +02:00
kdeme f2f2f57040 Add new bootnodes (#353)
* Add new bootnodes and remove legacy bootnodes

* Clean-up network selection
2019-07-30 11:00:55 +02:00
Ștefan Talpalaru 356a7cad84
show a message on Ctrl+C 2019-07-20 01:40:31 +02:00
kdeme 1a3a29c419 Make EVMError Catchable and only catch CatchableError in the execPrecompiles 2019-07-19 15:18:25 +03:00
kdeme f6d784c8b0 Rework the getSignature of ecrecover 2019-07-19 15:18:25 +03:00
kdeme 26bc048fea Fix possible IndexError in ecrecover 2019-07-19 15:18:25 +03:00
Ștefan Talpalaru 409d771a50 metrics: put the HTTP server under -d:insecure
- also fix an option parsing bug
- bump vendor/nim-eth and vendor/nim-metrics
2019-07-19 15:17:51 +03:00
Ștefan Talpalaru 0f3d05bf68 metrics: HTTP server disabled by default
- metric logging added
- new Nimbus options: --metricsServer, --metricsServerPort:<value>,
  --logMetrics, --logMetricsInterval:<value>
2019-07-19 15:17:51 +03:00
Ștefan Talpalaru 2d9f62530b metrics HTTP server replacing the periodic "stats" logging
and example prometheus.yml file to use it as a scraping target
2019-07-19 15:17:51 +03:00
kdeme 973ea96e1a
Add txRoot check to avoid assertions in tracer + don't throw exception 2019-07-15 13:26:33 +02:00
Ștefan Talpalaru bfeb649892
Merge branch 'devel' of github.com:status-im/nimbus into devel 2019-07-11 14:02:29 +02:00
Ștefan Talpalaru 50095ae22f
macOS fix 2019-07-11 00:38:25 +02:00
Ștefan Talpalaru 06ab21e8c5
Ctrl+C handling for a graceful stop
addSignal() doesn't seem to work, which is probably why it was commented
out. I'm using setControlCHook() instead, moved at an earlier point in the
start-up process, but its handler can only change global variables, so I
had to make "nimbus" global.
2019-07-10 23:23:11 +02:00
kdeme f62816c4f3 Use of BlockNumber to be able to switch between UInt256 and int64 2019-07-10 20:56:05 +02:00
Ștefan Talpalaru 5ee668516a
add nim-metrics 2019-07-10 16:32:44 +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 b71ce17ac3
periodically log internal statistics
and bump submodules
2019-06-26 16:32:01 +02:00
kdeme 46a9d8e79d Forward maxPeers config to EthereumNode minPeers 2019-06-24 19:33:52 +03:00
kdeme e94c2f7c15 Fix fromJson checks for uint256 2019-06-20 10:50:29 +03:00
kdeme 529fda3e3e Fix uint256 rpc overload to show correct hex value. #338 2019-06-19 15:49:47 +03:00
Ștefan Talpalaru ef319483be
log CatchableError in poll() 2019-05-28 12:49:36 +02:00
andri lim 8e921072af fix constantinople's block reward 2019-05-14 12:45:25 +03:00
andri lim 7d74d38530 countLeadingZero become leadingZeros 2019-05-13 10:26:28 +03:00
andri lim 929b28b133 use ashr from nim-stint/#76 2019-05-13 10:26:28 +03:00
andri lim 58c4e16365 add some comments 2019-05-13 10:26:28 +03:00
andri lim 15f3a7fe37 remove unused .child from computation 2019-05-13 10:26:28 +03:00
andri lim 077fbe6b73 modexp cleanup 2019-05-13 10:26:28 +03:00
andri lim b7a1431c33 fix modexp gasFee 2019-05-13 10:26:28 +03:00
andri lim cd7143e9af fix modexp 2019-05-13 10:26:28 +03:00
andri lim a86979eaa3 fix create2 gasCost 2019-05-13 10:26:28 +03:00
andri lim e51725d13b fix extCodeHash 2019-05-13 10:26:28 +03:00
andri lim f08eedbce3 fix create2 nonce increment 2019-05-13 10:26:28 +03:00
andri lim 51edbe6390 fix shr and shl gasCost 2019-05-13 10:26:28 +03:00
andri lim 5f2be4231e implement EIP1014: Create2 opcode 2019-05-13 10:26:28 +03:00
andri lim 4a7f58c7dc implement constantinople bitwise opcode 2019-05-13 10:26:28 +03:00
andri lim 2f08a6bc0e fix byzantium contract creation OOG 2019-05-13 10:26:28 +03:00
andri lim fd8a649df3 fix RevertInCreateInInit problem 2019-05-13 10:26:28 +03:00
andri lim b34ad8b507 fix collectTouchedAccounts 2019-05-13 10:26:28 +03:00
andri lim f809a864b1 fix calcMemSize bug 2019-05-13 10:26:28 +03:00
andri lim 213fb3b971 constantinople's skeletal implementation 2019-05-13 10:26:28 +03:00
Ștefan Talpalaru b45e9d5493
don't close stdout when using a log file
also bump vendor/nim-chronicles and vendor/nim-eth
2019-05-08 02:25:04 +02:00
Bruno Škvorc 023b90fde8
Merge pull request #286 from kdeme/feature/whisper-rpc
[WIP] Initial implementation of Whisper RPC
2019-05-01 23:00:54 +02:00
Ștefan Talpalaru 631f3ca29f
fix for Nim HEAD 2019-05-01 19:56:23 +02:00
kdeme 9de9741e3c
Fix more return values + minor improvements 2019-04-26 13:40:28 +02:00
kdeme 28dfaad588 Fix web3_sha3 2019-04-26 13:38:50 +02:00
kdeme e8a997cf11 Fix return values (raise errors) for most of the calls + some minor TODOs 2019-04-26 13:38:50 +02:00
kdeme ce523550c0 Use directly the Whisper types instead of distinct strings, we test for string in fromJson anyhow 2019-04-26 13:38:50 +02:00
kdeme 1df3c7202b Fix & add Whisper RPC tests + add isValidHexData with length check 2019-04-26 13:38:50 +02:00
kdeme 65908d5359 Add shh_generateSymKeyFromPassword implementation 2019-04-26 13:38:50 +02:00
kdeme d43f20c65a Initial implementation of Whisper RPC 2019-04-26 13:38:50 +02:00
andri lim cee0a38278
add some comment 2019-04-26 07:31:18 +07:00
andri lim 376957bea4
clean up unused code 2019-04-26 07:31:18 +07:00
andri lim 3ccd1b1ee9
fix rangeToPadded, GST +5 2019-04-26 07:31:17 +07:00
andri lim fd7c447f18
fix modexp output, GST +53 2019-04-26 07:31:16 +07:00
andri lim 89402af114
fix modexp gasCost, GST +6 2019-04-26 07:31:16 +07:00
andri lim 03ea1c5a85
fix ecRecover precompiles, GST +1 2019-04-26 07:31:15 +07:00
andri lim ba47d3c997
fix returnDataCopy gasCost, GST +11 2019-04-26 07:31:14 +07:00
andri lim 7b47cb6b24
various fixes, GST +6 2019-04-26 07:31:14 +07:00
andri lim 90e3a4320a
fix revert opcode at first level computation 2019-04-26 07:31:13 +07:00
andri lim c57295da0b
fix precompiles error handling, GST +262 2019-04-26 07:31:13 +07:00
andri lim ceb159f5fe
fix static context check in Call and Create, GST +52 2019-04-26 07:31:12 +07:00
andri lim 605618d9ee
add static context check, GST +94 -28 2019-04-26 07:31:12 +07:00
andri lim 6295e6a7e4
fix touched miner problem, GST +25 2019-04-26 07:31:11 +07:00
andri lim be5cce6c71
fix static call addr, GST +93 -16 2019-04-26 07:31:11 +07:00
andri lim b3a3814f6a
implement EIP649: reduce block reward from 5 to 3 ether 2019-04-26 07:31:10 +07:00
andri lim 7940d443e9
implement EIP214: staticCall opcode 2019-04-26 07:31:10 +07:00
andri lim 52caf0c248
implement EIP211: returnDataCopy and returnDataSize opcode 2019-04-26 07:31:10 +07:00
andri lim dd89af6d3d
implement EIP658: receipt status field 2019-04-26 07:31:09 +07:00
andri lim d8284f9330
fix revert opcode 2019-04-26 07:31:09 +07:00
andri lim 13cd54a382
implement byzantium opcode dispatch 2019-04-26 07:31:03 +07:00
Ștefan Talpalaru 29a226da1e
more gcsafe pragmas for Nim HEAD 2019-04-26 00:18:51 +02:00
kdeme 46fb9dc1b2 Add staticnodes, protocols, and whisper config options (#319) 2019-04-23 07:49:49 -06:00
Ștefan Talpalaru 9011b06037
Merge branch 'fix_spurious_dragon' of github.com:jangko/nimbus into jangko-fix_spurious_dragon 2019-04-19 13:03:05 +02:00
andri lim f3c740498c
implement EIP155 tx.getSender 2019-04-18 15:33:17 +07:00
andri lim 2b7d89fa9d
make test green 2019-04-18 15:26:09 +07:00
andri lim ec918602bc
fix accountsForDeletion iterator, GST +2 2019-04-18 13:23:04 +07:00
andri lim 1883472104
fix evm msg contract creation, GST +3 2019-04-18 12:42:37 +07:00
andri lim f7338b7d76
include miner address in touchedAccounts, GST +7 2019-04-18 11:12:21 +07:00
andri lim c07f01a74d
fix collectTouchedAccounts: msg.destination -> msg.storageAddress, GST +4 2019-04-18 10:22:48 +07:00
andri lim 7c134b481e
split state clearing in execComputation to processTransaction, GST +5 2019-04-18 08:27:55 +07:00
andri lim 03435c7beb
gst and processTransaction unification 2019-04-18 07:56:57 +07:00
Ștefan Talpalaru aa29e25c3a
clarify comment 2019-04-18 01:17:06 +02:00
andri lim 6cf0cdf23a
implement EIP161 nonce incrementation, GST +65 2019-04-17 12:15:15 +07:00
andri lim 85d9bd3958
implement EIP158, GST -4 +81 2019-04-17 11:03:52 +07:00
andri lim 23d084da68
add SpuriousGasCosts table into forkToSchedule 2019-04-17 09:46:33 +07:00
Ștefan Talpalaru d4aff04cbd
NAT port mapping 2019-04-17 03:56:28 +02:00
Ștefan Talpalaru 8800cb5fe5
Merge branch 'fix_244' of github.com:jangko/nimbus into jangko-fix_244 2019-04-15 14:05:18 +02:00
andri lim 79630611c0
fixes #244 2019-04-15 11:34:41 +07:00
andri lim 69c1d9e357
fix block 2.463.413 problem 2019-04-15 11:10:40 +07:00
andri lim 34fd831d6f
fix block 2283416 problem 2019-04-15 10:11:09 +07:00
Ștefan Talpalaru 60c57995c5
enable Chronicles colors on Windows 2019-04-12 14:58:12 +02:00
andri lim d039b88f48
activates Tangerine GST, GST +12 2019-04-08 08:06:40 +07:00
andri lim 7eafd75d17
separate tangerine whistle and spurious dragon opcode dispatcher 2019-04-08 08:06:40 +07:00
andri lim 6f51cf9103
implement EIP150 and EIP161 SelfDestruct OpCode 2019-04-08 08:06:39 +07:00
andri lim 77e9c18f91
implement Tangerine fork gas cost changes 2019-04-08 08:06:34 +07:00
andri lim a8d0a13856
fix fork comparison at postExecuteVM bug 2019-04-07 06:53:40 +07:00
andri lim 8a9e4aba80
apply dao fork changes 2019-04-07 06:53:26 +07:00
andri lim f2f92f5608
fix block 1.487.668 problem: getScore int overflow 2019-04-05 16:29:05 +07:00
andri lim d37d7fa6a5
remove computedGoto pragma 2019-04-04 17:23:28 +07:00
andri lim fb97d8d0ce
move exception handler to executeOpcodes 2019-04-04 15:26:12 +07:00
andri lim 039256de6a
more on continuation passsing 2019-04-04 15:21:24 +07:00
andri lim 60df7ea5e2
update test data 2019-04-04 12:13:33 +07:00
andri lim e5cca19e7f
tail call recursion with continuation passing 2019-04-04 11:44:35 +07:00
andri lim 4c0ba876ef
move exception handler deeper in the EVM 2019-04-04 10:50:25 +07:00
andri lim 07ac4620d9
remove 'var' modifier from 'computation: var BaseComputation' 2019-04-04 10:20:00 +07:00
andri lim 26b40f41e3
fix precompiles selection, GST +5 2019-04-02 13:11:00 +07:00
andri lim 112d2219df
reduce indirect call in EVM 2019-04-02 13:11:00 +07:00
andri lim 0f8affb7c9
remove explicit return value from VM 2019-04-02 13:11:00 +07:00
Ștefan Talpalaru 721f6e9c14
cosmetic change 2019-03-31 22:34:11 +02:00
Ștefan Talpalaru 54b0242169
Merge branch 'fix_evm' of github.com:jangko/nimbus into jangko-fix_evm 2019-03-28 15:21:28 +01:00
Ștefan Talpalaru 348782ac6a
Merge branch 'fix_gaspricelimit' of github.com:jangko/nimbus into jangko-fix_gaspricelimit 2019-03-28 15:14:39 +01:00
Ștefan Talpalaru b16aba391a
Merge branch 'fix_maxcalldepth' of github.com:jangko/nimbus into jangko-fix_maxcalldepth 2019-03-28 15:09:51 +01:00
andri lim da88d498e3
fix MaxCallDepth comparison 2019-03-28 19:08:54 +07:00
andri lim 1ad4e256b2
fix self destruct refund gas problem 2019-03-28 19:07:30 +07:00
andri lim d9a9459d95
reduce stack usage 2019-03-28 19:06:38 +07:00
andri lim 527891cdb8
integrate snapshot with computation 2019-03-28 19:06:31 +07:00
andri lim 62c1e668a9
fix tx_e1c174e2 problem, GST +1 2019-03-28 19:05:07 +07:00
Ștefan Talpalaru ea73005c0d textblocks -> textlines 2019-03-26 13:20:01 +02:00
Ștefan Talpalaru 50504cf553 Nimbus: runtime log level selection and logfile option 2019-03-26 13:20:01 +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 a02cbdd91b
turn getAccountsForDeletion into interator 2019-03-21 09:50:51 +07:00
andri lim b6587bddfd
execComputation and applyMessage unification 2019-03-21 09:47:46 +07: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
andri lim 4aaa6e6c94
computation simplification 2019-03-21 09:31:55 +07:00
andri lim 9cc5db73c2
processTransaction simplification 2019-03-21 09:27:26 +07:00
andri lim b73a1238e0
interpreter dispatch simplification 2019-03-21 09:27:14 +07:00
Ștefan Talpalaru f62601e844
Merge branch 'non_recursive_evm' of github.com:jangko/nimbus into jangko-non_recursive_evm 2019-03-20 14:43:50 +01:00
andri lim 268695003b
fix writePaddedResult regression 2019-03-19 16:43:38 +07:00
andri lim 6c891d08e6
put doAssert(false) at nimbus configuration cmdEnd 2019-03-19 08:55:30 +07:00
andri lim f518de20fc
fix miner suicide problem, GST +2 2019-03-18 20:29:07 +07:00
andri lim 7198ce2d05
fix ecrecover bad V, GST +1 2019-03-18 19:28:42 +07:00
andri lim aed0db2d03
fix DelegateCall sender address, GST +37 2019-03-18 18:45:43 +07:00
andri lim 36fb75d042
fix DelegateCall gasCost, GST +6 2019-03-18 17:24:25 +07:00
andri lim a7c6531f08
fix block gaslimit problem, GST +70 2019-03-18 14:35:52 +07:00
andri lim 739e20253a
fix invalid opcodes bug, GST +1 2019-03-18 13:44:22 +07:00