Commit Graph

29 Commits

Author SHA1 Message Date
51d20540ff Implement WriteStateDiffAt
Writes state diffs directly to postgres

Adds CLI flags to configure PG

Refactors builder output with callbacks

Copies refactored postgres handling code from ipld-eth-indexer
2020-10-23 21:47:44 +08:00
Ian Norden
9b1e3164ea collect and emit codehash=>code mappings for state objects 2020-10-13 13:32:56 -05:00
Ian Norden
97454eb6fe minor changes/fixes 2020-05-21 15:07:19 -05:00
Ian Norden
7ba6efa59c test for state trie builder 2020-05-19 14:39:25 -05:00
Ian Norden
44aefa849b add endpoint to fetch all state and storage nodes at a given blockheight; useful for generating a recent atate cache/snapshot that we can diff forward from rather than needing to collect all diffs from genesis 2020-05-18 20:44:17 -05:00
Ian Norden
f572e8d716 finish testing known edge cases 2020-05-18 01:27:58 -05:00
Ian Norden
e3b6d3df1c tests for eip-158 account removal and storage value deletions; there is one edge case left to test where we remove 1 account when only two exist such that the remaining account is moved up and replaces the root branch node 2020-05-17 23:04:31 -05:00
Ian Norden
9b6e486799 use new contract in unit tests that has self-destruct ability, so we can test eip-158 since simply moving an account to new path doesn't count as 'touchin' it 2020-05-17 15:14:53 -05:00
Ian Norden
face00ca01 found an account whose creation causes the empty account to be moved to a new path; this should count as 'touching; the empty account and cause it to be removed according to eip-158... but it doesn't 2020-05-15 21:12:17 -05:00
Ian Norden
3c514837f3 adjust chain maker for tests to add an empty account in block1 and switch to EIP-158 afterwards (now we just need to generate enough accounts until one causes the empty account to be touched and removed post-EIP-158 so we can simulate and test that process...); also added 2 new blocks where more contract storage is set and old slots are set to zero so they are removed so we can test that 2020-05-15 20:06:06 -05:00
Ian Norden
859e18aea4 cleanup chain maker 2020-05-14 22:46:21 -05:00
Ian Norden
c4529a1139 storage leafkey filter test 2020-05-14 17:39:51 -05:00
Ian Norden
aa7c5b0869 add ability to watch specific storage slots (leaf keys) only 2020-05-13 14:28:35 -05:00
Ian Norden
347a7ba0e8 update top level tests 2020-05-13 14:03:45 -05:00
Ian Norden
b7c412d303 diff type for representing deleted accounts 2020-05-10 15:44:21 -05:00
Ian Norden
5c3e0d6437 complete tests for early mainnet blocks 2020-05-08 16:41:11 -05:00
Ian Norden
5598d67872 common.BytesToHash(path) => crypto.Keaccak256(hash) in builder; BytesToHash produces same hash for e.g. []byte{} and []byte{\x00} - prefix \x00 steps are inconsequential to the hash result 2020-05-08 11:58:22 -05:00
Ian Norden
b5a9ea52e0 builder test on mainnet blocks 2020-05-07 22:48:55 -05:00
Ian Norden
8c9ac32245 add genesis block to test; handle block 0 in StateDiffAt 2020-05-07 22:48:49 -05:00
Ian Norden
d07dc803d2 adjust statediff builder tests to changes and extend to test intermediate nodes; golint 2020-03-11 13:25:36 -05:00
Ian Norden
c2c80f32d9 fix state diff builder: emit actual leaf nodes instead of value nodes; diff on the leaf not on the value; emit correct path for intermediate nodes 2020-03-11 13:25:27 -05:00
Ian Norden
2364e07975 fixes after rebase 2020-03-05 10:11:31 -06:00
Ian Norden
ad87bad4de review fixes; proper method signature for api; adjust service so that statediff processing is halted/paused until there is at least one subscriber listening for the results 2020-03-05 10:11:31 -06:00
Ian Norden
35538aea05 cli parameter to limit statediffing to select account addresses + test 2020-03-05 10:11:31 -06:00
Ian Norden
19489d3b34 make state diff rlp serializable 2020-03-05 10:11:31 -06:00
Ian Norden
e7487003f2 option to process intermediate nodes 2020-03-05 10:11:31 -06:00
Ian Norden
5c62d0bcb1 make proofs and paths optional + compress service loop into single for loop (may be missing something here) 2020-03-05 10:11:31 -06:00
Ian Norden
71b41b5c77 refactoring state diff service and adding api which allows for streaming state diff payloads over an rpc websocket subscription 2020-03-05 10:11:31 -06:00
Ian Norden
bf5a25478e refactoring statediff builder and types and adjusted to relay proofs and paths (still need to make this optional) 2020-03-05 10:11:31 -06:00