Commit Graph

791 Commits

Author SHA1 Message Date
Steven Allen
5854d72784
fix: eth: correctly decode EthGetStorageAt output (#10284)
* fix: eth: correctly decode EthGetStorageAt output

We cbor-encode it. Also:

1. Actually use the passed block param.
2. Check if the target actor is an EVM actor to avoid nonsense outputs.

fixes https://github.com/filecoin-project/ref-fvm/issues/1621
2023-02-16 16:36:52 -08:00
Aayush
1d0a524b88 feat: EthAPI: Add EthAddressToFilecoinAddress 2023-02-16 12:24:17 -05:00
Aayush
3f063f7cd7 fix: StorageKey is now fixed-size array 2023-02-14 19:04:43 -05:00
Hector Sanjuan
a2475bca94 range-export: write files to lotus repo path 2023-02-14 21:08:10 +01:00
Hector Sanjuan
be1614a042 range-export: check serverside that head > tail 2023-02-14 21:08:10 +01:00
Hector Sanjuan
ec01036871 Ranged export: remove non-internal ranged export method
Additionally, per feedback:

* Set "admin" permissions
* Remove from v0api
2023-02-14 21:08:10 +01:00
Hector Sanjuan
1bb698619c Ranged-export: Remove CachingBlockstore
The improvements in the range-export code lead to avoid reading most blocks
twice, as well as to allowing some blocks to be written to disk multiple times.

The cache hit-rate went down from being close to 50% to a maximum of 12% at
the very end of the export. The reason is that most CIDs are never read twice
since they are correctly tracked in the CID set.

These numbers do not support the maintenance of the CachingBlockstore
code. Additional testing shows that removing it has similar memory-usage
behaviour and about 5 minute-faster execution (around 10%).

Less code to maintain and less options to mess up with.
2023-02-14 21:08:10 +01:00
Hector Sanjuan
fa93c23813 Chain ranged export: rework and address current shortcomings
This commit moderately refactors the ranged export code. It addresses several
problems:
  * Code does not finish cleanly and things hang on ctrl-c
  * Same block is read multiple times in a row (artificially increasing cached
    blockstore metrics to 50%)
  * It is unclear whether there are additional races (a single worker quits
    when reaching height 0)
  * CARs produced have duplicated blocks (~400k for an 80M-blocks CAR or
    so). Some blocks appear up to 5 times.
  * Using pointers for tasks where it is not necessary.

The changes:

  * Use a FIFO instead of stack: simpler implementation as its own type. This
has not proven to be much more memory-friendly, but it has not made things
worse either.
  * We avoid a probably not small amount of allocations by not using
    unnecessary pointers.
  * Fix duplicated blocks by atomically checking+adding to CID set.
  * Context-termination now works correctly. Worker lifetime is correctly tracked and all channels
  are closed, avoiding any memory leaks and deadlocks.
  * We ensure all work is finished before finishing, something that might have
  been broken in some edge cases previously. In practice, we would not have
  seen this except perhaps in very early snapshots close to genesis.

Initial testing shows the code is currently about 5% faster. Resulting
snapshots do not have duplicates so they are a bit smaller. We have manually
verified that no CID is lost versus previous results, with both old and recent
snapshots.
2023-02-14 21:08:10 +01:00
Łukasz Magiera
7150243cda
feat: ethrpc: Support newPendingTransactions in eth_subscribe (#10269) 2023-02-14 16:15:42 +00:00
frrist
21efd481d8 First efficient ranged-export implementation by @frisst
This first commit contains the first and second implementation stabs (after
primary review by @hsanjuan), using a stack for task buffering.

Known issues: ctrl-c (context cancellation) results in the export code getting
deadlocked. Duplicate blocks in exports. Duplicate block reads from store.

Original commit messages:

works

works against mainnet and calibnet

feat: add internal export api method

- will hopfully make things faster by not streaming the export over the json rpc api

polish: better file nameing

fix: potential race in marking cids as seen

chore: improve logging

feat: front export with cache

fix: give hector a good channel buffer on this shit

docsgen
2023-02-14 15:41:10 +01:00
ychiao
0d92c746bd
Eth JSON-RPC: populate reward in eth_feeHistory (#10245)
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
Co-authored-by: Raúl Kripalani <raul@protocol.ai>
2023-02-14 01:02:37 +00:00
Steven Allen
f427c2b566
fix: eth: correctly convert filecoin message <-> eth txn (#10257)
1. We do allow deploying with empty initcode.
2. Make sure that the encoded "code" is non-empty, if specified.

Basically, this makes everything consistent (and it's how I specified it
in the FIP).
2023-02-13 10:33:59 -08:00
Łukasz Magiera
7486227c27 Merge remote-tracking branch 'origin/release/v1.20.0' into asr/merge-release-into-master 2023-02-13 13:14:09 +01:00
Raúl Kripalani
8ff55c027e Merge branch 'release/v1.20.0' into asr/merge-release-into-master 2023-02-13 11:45:09 +00:00
Steven Allen
b765112896 fix: correctly handle ethGetCode edge-cases
1. If the actor is a non-evm actor, return "nothing".
2. Correctly handle missing actors.
3. Handle self-destructed actors (they'll return "null").

fixes https://github.com/filecoin-project/ref-fvm/issues/1641
2023-02-12 20:38:47 -08:00
Steven Allen
a085eb1593 fix: eth: correctly return empty bytecode after selfdestruct 2023-02-12 19:31:56 -08:00
raulk
37e1ac5d93
eth: FIP-0055: implement final version of transitory delegated signature. (#10239) 2023-02-12 21:08:42 +00:00
Aayush
63b03a48d0 Merge branch 'release/v1.20.0' into asr/merge-release-into-master 2023-02-10 18:39:51 -05:00
Raúl Kripalani
6a76bbb6e3 improve TODO. 2023-02-10 22:46:57 +00:00
ychiao
8cded9f8d2 add todo 2023-02-10 17:34:53 -05:00
Raúl Kripalani
778768dbf7 eth_feeHistory: parse block param correctly. 2023-02-10 22:29:52 +00:00
ychiao
db749b8fc7 Merge branch 'release/v1.20.0' into fix/EthUint64-args 2023-02-10 17:26:38 -05:00
ychiao
3c580403c1 implement itest and handle optional params 2023-02-10 13:33:59 -05:00
Steven Allen
b0d917d542 fix: make gen 2023-02-10 09:32:59 -08:00
Steven Allen
cc302dd68b fix: eth: log on unexpected events
We can remove these later as we add more event types, but this will aid
in debugging.
2023-02-10 07:59:47 -08:00
Steven Allen
ece8f25511 fix: eth: strict event parsing
We now enforce the following rules:

1. No duplicate topics or data.
2. Topics must have 32 byte keys.
3. Topics may not be skipped. (e.g., no t1 & t3 without a t2).
4. Raw codecs.

We _don't_ require that topics/data be emitted in any specific order.

We _skip_ events with unknown keys. We _drop_ events that violate the
above rules.
2023-02-10 07:41:29 -08:00
Steven Allen
f1381ad535 refactor: use EthHash for event topics
This ensures they're always 32 bytes and padded, as required.
2023-02-10 07:41:29 -08:00
Łukasz Magiera
088d231cda fix: Don't call WalletExport in msg signing flows 2023-02-10 02:37:59 +01:00
Jiaying Wang
1c13a591e9
Merge pull request #10223 from filecoin-project/feat/ethtx-fixes
fix: ethrpc: Add missing fields to EthTx
2023-02-09 13:13:26 -05:00
Łukasz Magiera
75f9b7d040
Merge pull request #10119 from filecoin-project/gstuart/tx-hash-on-simport-napshot
feat: eth: populate tx hash database on startup
2023-02-09 19:06:20 +01:00
Łukasz Magiera
a32db5ff69
Merge pull request #10186 from filecoin-project/nonsense-patch-1
LOTUS_FEVM_ENABLEETHRPC: Fix env variable name in error
2023-02-09 17:56:27 +01:00
Aayush Rajasekaran
030b40b2a0
Merge pull request #10211 from filecoin-project/fix/ethsub-noarray
fix: ethrpc: Don't send sub notifs in array
2023-02-09 11:55:46 -05:00
Łukasz Magiera
e321761a72 ethrpc: Add missing fields to EthTx 2023-02-09 14:26:13 +01:00
Łukasz Magiera
9339267e6e
fix: ethrpc: emit correct bloom filters (#10194) 2023-02-08 23:14:53 +00:00
Łukasz Magiera
3516c7674b fix: ethrpc: Don't send sub notifs in array 2023-02-08 15:55:38 +01:00
Steven Allen
89499bfd40 fvm: chore: update FVM
This:

1. Updates the builtin actors bundle (for actors v10).
2. Updates the event entry type to include the codec.
3. Removes the cbor encoding and zero trimming from event data.

I've chose to:

1. _Not_ add codec handling to the event filtering system for now.
2. _Skip_ events with unexpected codecs.

We don't actually _allow_ these events in the FVM right now, and it
simplifies the implementation.

However, I _am_ recording the codecs in the database so we don't have to
migrate it later.
2023-02-07 18:15:40 -08:00
Aayush Rajasekaran
693f230fbb Merge branch 'release/v1.20.0' into asr/merge-release-into-master 2023-02-07 11:03:01 -05:00
Łukasz Magiera
5dc56841ea fix: ethtypes: Correct 'no transactions' hash in NewEthBlock 2023-02-06 17:17:19 +01:00
Anton Evangelatov
ad457202dd LOTUS_FEVM_ENABLEETHRPC: Fix env variable name in error 2023-02-06 15:25:51 +01:00
Łukasz Magiera
6851b6a523 Merge remote-tracking branch 'origin/release/v1.20.0' into fix/eth-orpc-validate 2023-02-06 10:41:52 +01:00
Travis Person
03b419e3d4 feat: compute a better gas limit for recursive external contract calls 2023-02-03 20:40:18 +00:00
Aayush
f291572b4a Merge branch 'release/v1.20.0' into asr/merge-release-into-master 2023-02-03 09:27:04 -05:00
raulk
b46258d0bf
feat: evm: align events implementation with FIP-0049 and FIP-0054. (#10152)
- Event keys are now t1, t2, t3, t4 for topics; and d for data.
- ref-fvm no longer stores events in the blockstore for us. It just
  returns events to the client, who is now responsible for handling
  them as it wishes / according to its configuration.
- Add a flag to VMOpts to have the events AMT be written in the blockstore.
- Add a flag to the ChainStore to advertise to the rest of the system
  if the ChainStore is storing events.
- Enable that flag if the EthRPC is enabled (can also add an explicit
  configuration flag if wanted).
2023-02-02 19:10:30 -08:00
Łukasz Magiera
8ce0b984b7 itests: Fix TestEthFilterAPIDisabledViaConfig 2023-02-02 15:59:55 +01:00
Łukasz Magiera
fe1e0974cb feat: ethrpc: Support filtering by address in subscribe 2023-02-02 14:46:36 +01:00
Łukasz Magiera
a6a2f0dbae gateway: Support all EthModule methods 2023-02-02 13:37:31 +01:00
Ian Davis
d29a244064 Merge remote-tracking branch 'origin/release/v1.20.0' into iand/eth-openrpc-validate 2023-02-01 16:19:17 +00:00
Maciej Witowski
dcbfca53d9 Improve the error message 2023-01-31 18:54:05 +01:00
Maciej Witowski
5f2ef98de6 Move assigning from address to the API level 2023-01-31 18:28:12 +01:00
Łukasz Magiera
ad14d71978 eth rpc: Params are optional in eth_subscribe 2023-01-31 11:08:51 +01:00
Łukasz Magiera
965b1cf03c itests: Fix TestEthSubscribeLogs 2023-01-31 10:28:12 +01:00
Łukasz Magiera
1286d76988 gateway: eth_subscribe support 2023-01-31 10:28:12 +01:00
Łukasz Magiera
6491becbe1 rpc: Switch eth_subscribe to reverse calls 2023-01-31 10:28:12 +01:00
Geoff Stuart
e0326d9d39 Populate transaction hash database if the database has not been set up before 2023-01-30 16:33:04 -05:00
Geoff Stuart
af72e6f6ac
Refactor: Unify EthTx to FilecoinMessage methods v2 (#10095)
* Refactor: Unify EthTx to FilecoinMessage methods

* Filecoin messages can again be converted to Eth Txs

* All BLS messages should calculated tx hash with unsigned message

* Refactor newEthTxReceipt

* fill in from and to for non-eth transactions

* Hoist nil check out of newEthTxFromMessageLookup

---------

Co-authored-by: Aayush <arajasek94@gmail.com>
Co-authored-by: Raúl Kripalani <raul@protocol.ai>
2023-01-30 18:40:14 +00:00
Steven Allen
c93717bf77
fix: don't replace the method in EthSendRawTransaction (#10129)
This will just cause signature validation to fail.
2023-01-26 09:22:06 -08:00
Jorropo
f572852d06 chore: all: bump go-libipfs to replace go-block-format
Includes changes from:
- https://github.com/ipfs/go-block-format/pull/37
- https://github.com/ipfs/go-libipfs/pull/58
2023-01-26 17:03:18 +01:00
Ian Davis
4500c02e49 Merge branch 'release/v1.20.0' into iand/eth-openrpc-validate 2023-01-26 14:23:42 +00:00
Ian Davis
c82dccc76c Merge branch 'release/v1.20.0' into iand/issue-9849-realtime 2023-01-26 12:11:14 +00:00
Ian Davis
7586710395 Fix panic in EthGetCode 2023-01-26 12:10:42 +00:00
Ian Davis
a9cd76907e Merge branch 'release/v1.20.0' into iand/eth-openrpc-validate 2023-01-26 11:35:33 +00:00
Geoff Stuart
c6829a9d0e
Merge pull request #10113 from filecoin-project/feat/web3_clientVersion
Eth JSON-RPC: implement web3_clientVersion
2023-01-25 15:11:30 -05:00
Aayush
7aed7d3fd0 fix: EthAPI: Handle EthCall return correctly 2023-01-25 11:36:59 -05:00
Ian Davis
b38d203e83 Remove debug logging 2023-01-25 09:44:52 +00:00
ychiao
358964d2c8 fix lint 2023-01-24 22:59:46 -05:00
ychiao
ee6af9de61 Eth JSON-RPC: implement web3_clientVersion 2023-01-24 22:56:04 -05:00
Aayush
8864782750 fix: EthAPI: Drop hack in GetStorageAt 2023-01-24 13:18:13 -05:00
Ian Davis
8daf22c3ff Test and fix eth_FeeHistory 2023-01-24 11:27:18 +00:00
Ian Davis
7d1bd1d5ab Use gojsonschema 2023-01-23 16:50:40 +00:00
Ian Davis
c6d279c853 Decode topic values in EthGetTransactionReceipt 2023-01-23 14:43:36 +00:00
Ian Davis
d9261b6e2f itests: validate responses from ethereum json-rpc api 2023-01-23 14:37:51 +00:00
Ian Davis
ddd5ff9c42
fix: event filters use cbor encoding internally (#10085) 2023-01-23 14:14:25 +00:00
Ian Davis
c5ed5dd254 itests: add event matrix tests for realtime eth filters and subscriptions 2023-01-20 14:01:25 +00:00
Raúl Kripalani
21c93f1dc1 Merge branch 'release/v1.20.0' into iand/issue-9849-filters 2023-01-20 01:11:31 +00:00
Shrenuj Bansal
522e96f016
fix: msg signing with delegated keys and send cli changes (#10056)
* fix msg signing with delegated keys and send cli changes

* make gen and docsgen

* address comments
2023-01-19 17:57:48 -05:00
Łukasz Magiera
eaccb571a5
fix: config: Fix eth rpc typo (#10076) 2023-01-19 20:35:19 +00:00
Łukasz Magiera
e194cbc715 impl: Cleanup EthTxHashManager handling 2023-01-19 19:30:18 +01:00
Łukasz Magiera
66f5ee4ae9 config: Fevm.EnableEthPRC 2023-01-19 18:31:17 +01:00
Ian Davis
58587a7956 Remove unused code 2023-01-19 13:06:07 +00:00
Ian Davis
a08b557938
Merge branch 'release/v1.20.0' into iand/issue-9849-filters 2023-01-19 13:01:12 +00:00
Ian Davis
ca5cab4c43 Cleanup and fix eth filter tests 2023-01-19 12:58:23 +00:00
Ian Davis
5569c3971b Fix filters with alternate topic values 2023-01-19 12:22:37 +00:00
Ian Davis
6f66ef595e Add filter block range tests 2023-01-19 11:49:07 +00:00
Geoff Stuart
5133b9da94 Add EthGetMessageCidByTransactionHash, fix EthGetTransactionHashByCid 2023-01-18 17:48:10 -05:00
Ian Davis
061e8cca1f Add itest for EthGetLogs filter combinations 2023-01-18 17:33:54 +00:00
Geoff Stuart
6b0f1116ce Remove maybe unnecessary check 2023-01-16 07:08:22 -05:00
Geoff Stuart
f8121c8f1c Add gc for eth tx database 2023-01-16 07:04:20 -05:00
Geoff Stuart
f8dee0983a review fixes 2023-01-16 01:56:55 -05:00
Geoff Stuart
a8436074a6 Store mapping from hashes for Ethereum transactions to Filecoin Message Cids 2023-01-16 01:17:56 -05:00
Jennifer Wang
51d77d408b add bundle dev/20230114-pre-rc.2 2023-01-14 01:41:46 -05:00
vyzo
859cdca4f7 update go-state-types
use CreateExternal

use CreateExternal in itest evm deployment

add missing import

update gst
2023-01-14 01:11:11 -05:00
raulk
cdf3812e40
NV18: Filecoin EVM runtime + Actor Events + EthAccount + EAM + f4 addressing (#9998)
Co-authored-by: Steven Allen <steven@stebalien.com>
Co-authored-by: Raul Kripalani <raulk@users.noreply.github.com>
Co-authored-by: Kevin Li <ychiaoli18@users.noreply.github.com>
Co-authored-by: vyzo <vyzo@hackzen.org>
Co-authored-by: Ian Davis <nospam@iandavis.com>
Co-authored-by: Aayush Rajasekaran <arajasek94@gmail.com>
Co-authored-by: Jiaying Wang <42981373+jennijuju@users.noreply.github.com>
Co-authored-by: Jennifer Wang <jiayingw703@gmail.com>
Co-authored-by: Geoff Stuart <geoff.vball@gmail.com>
Co-authored-by: Shrenuj Bansal <shrenuj.bansal@protocol.ai>
Co-authored-by: Shrenuj Bansal <108157875+shrenujbansal@users.noreply.github.com>
Co-authored-by: Geoff Stuart <geoffrey.stuart@protocol.ai>
Co-authored-by: Aayush Rajasekaran <aayushrajasekaran@Aayushs-MacBook-Pro.local>
Co-authored-by: ZenGround0 <5515260+ZenGround0@users.noreply.github.com>
Co-authored-by: zenground0 <ZenGround0@users.noreply.github.com>
2023-01-13 19:11:13 +00:00
Geoff Stuart
f95e6602a0 Check for nil returns from StateSectorGetInfo 2022-12-12 10:44:08 -05:00
Aayush
40278cd3c1 Update to go-state-types v0.10.0-alpha-2 2022-11-23 17:36:49 -05:00
Shrenuj Bansal
800d9de4d5 Address comments 2022-11-14 15:46:58 -05:00
Shrenuj Bansal
2fa21ff091 Merge branch 'master' into sbansal/nonce-coordination-and-consensus-for-chain-nodes 2022-11-11 14:41:38 -05:00
simlecode
5284f60e83 fix: add fields to ForkUpgradeParams 2022-10-22 23:41:52 +08:00
simlecode
30f147770c fix: use api.ErrActorNotFound instead of types.ErrActorNotFound 2022-10-22 23:41:51 +08:00
Shrenuj Bansal
ad8b959880 Address more comments and add test for gorpc auth 2022-10-18 15:53:42 -04:00
Shrenuj Bansal
900525f8c2 some cleanup 2022-10-17 16:13:30 -04:00