Works around a flaw in the upgrade logic of the system contracts. Since
they are updated directly, without first being self-destructed and then
re-created, the usual incarnation logic does not get activated, and all
historical records of the code of these contracts are retrieved as the
most recent version. This problem will not exist in erigon3, but until
then, a workaround will be used to access code of such contracts through
a special structure, `SystemContractCodeLookup`
Fixes https://github.com/ledgerwatch/erigon/issues/5865
Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>
* Add eth_getBalanceChangesInBlock RPC endpoint
* Fix lints
* added assertion for one test
* moved balance change api from eth to erigon
Co-authored-by: fatemebagherii <fa.bagheri.a@gmail.com>
* initial
* binary search through blocks
* snapshot
* returning highest block
* oldest block is now 0
* multiple test written for getBlockByTimeStamp
* retrieved picked block time stamp
* added into erigon_api
* returning pointer
* reverting c37b99b2d7ebc2250b103393378cc4a4f94a6c21
* deleted print
* proper rpc block response
* fixing test
* returning lowest block
* lint
* typo
* fixed test
* returning lowest-1
* skip while loop for times too big or small
* added to readme
* using sort.Search