Commit Graph

782 Commits

Author SHA1 Message Date
Steven Allen
73a2b4152b
feat: eth: Avoid StateCompute in EthTxnReceipt lookup (#10460)
Instead:

1. Use the receipt from the message search.
2. Re-compute the gas fees that would have been charged.

fixes #10418

Co-authored-by: raulk <raul.kripalani@gmail.com>
2023-03-13 11:44:59 -07:00
raulk
75c279ab97
Merge pull request #10456 from filecoin-project/raulk/fix-eth-net_version 2023-03-13 11:25:19 +00:00
Raúl Kripalani
2e56237898 Merge branch 'master' into asr/fix-eth-api-gateway 2023-03-12 15:56:55 +00:00
Raúl Kripalani
e65a5988e1 Eth API: make eth_getTransactionByBlock* ops return ErrUnsupported. 2023-03-12 15:53:56 +00:00
Raúl Kripalani
5a4b5ff97e remove superfluous filter. 2023-03-12 00:44:49 +00:00
Raúl Kripalani
7ce92f1422 Eth API: make net_version return the chain ID. 2023-03-11 23:26:26 +00:00
Raúl Kripalani
9412753ba3 Eth API: drop support for 'pending' block parameter.
After transitioning from using StateCompute to loading receipts,
we can no longer handle the 'pending' block without forcing
computation. Eth Core Devs are evaluating a proposal to remove
support on their end too.
2023-03-11 23:03:21 +00:00
Raúl Kripalani
f7a979d825 eth_feeHistory: migrate to using TipSetState. 2023-03-11 17:25:00 +00:00
Steven Allen
eba270d1e2 feat: api: optimize ChainGetParentReceipts
Read the receipts all at once instead of fetching them one-by-one.
2023-03-10 16:01:34 -08:00
Steven Allen
1cf57ffe2d feat: eth: optimize receipt reading
This optimizes the eth APIs (except the fee history one) to lookup the
tipset state/receipts instead of computing the state.
2023-03-10 15:33:45 -08:00
Jiaying Wang
1096ead73e
Merge pull request #10427 from filecoin-project/raulk/fix-eth-parseBlkParam
fix: Eth API: make block parameter parsing sounder.
2023-03-09 14:21:24 -05:00
Raúl Kripalani
fce0813821 switch to ChainAPI#ChainGetTipSetByHeight. 2023-03-09 18:51:38 +00:00
Aayush Rajasekaran
9fa81673da
Merge pull request #10411 from filecoin-project/asr/simplity-new-eth-tx-rct
refactor: EthAPI: Drop unnecessary param from newEthTxReceipt
2023-03-09 12:44:44 -05:00
Raúl Kripalani
941ef84b71 Merge branch 'master' into raulk/fix-eth-parseBlkParam 2023-03-09 12:16:23 +00:00
Aayush Rajasekaran
ab91ab100f
fix: eth API: return correct txIdx around null blocks (#10419) 2023-03-09 12:14:57 +00:00
ychiao
0a0df61d77
fix: EthAPI: use StateCompute for feeHistory; apply minimum gas premium (#10413) 2023-03-09 00:28:17 +00:00
Raúl Kripalani
28d8b4cd65 Eth API: fail when requesting future epochs. 2023-03-08 20:49:36 +00:00
Raúl Kripalani
cef416e2b0 Eth API: make block parameter parsing sounder. 2023-03-08 20:38:09 +00:00
Aayush
f1b1eb8b36 refactor: EthAPI: Drop unnecessary param from newEthTxReceipt 2023-03-07 13:40:39 -05:00
Aayush
8b5bc45fcf fix: eth API: correct gateway restrictions, drop unimplemented methods 2023-03-07 12:53:04 -05:00
Łukasz Magiera
64b9b532c0
Merge pull request #10387 from filecoin-project/feat/lotus-badger-gc
feat:splitstore:Badger GC of hotstore command
2023-03-07 08:52:15 +01:00
Aayush Rajasekaran
12496e5631
Merge pull request #10389 from filecoin-project/asr/fix-eth-api-genesis
fix: EthAPI: Correctly get parent hash
2023-03-06 09:15:48 -05:00
Aayush
920fdfdf85 fix: EthAPI: Correctly get parent hash 2023-03-03 16:42:57 -05:00
zenground0
71b21db0d9 chain prune hot -- hotstore online gc 2023-03-03 11:14:52 -05:00
Aayush
cfb5eac015 fix: EthAPI: Make newEthBlockFromFilecoinTipSet faster and correct 2023-03-02 12:34:09 -05:00
Aayush
19f1ad2762 Merge branch 'releases' into asr/merge-release-into-master 2023-03-01 14:18:35 -05:00
Aayush
17e680ea3c fix: EthGetBalance: lookup balance at correct state 2023-02-27 14:43:57 -05:00
Aayush Rajasekaran
9fba14b6b1
Merge pull request #10333 from filecoin-project/asr/overestimate
feat: gas: overestimate around the Hygge upgrade
2023-02-27 10:55:09 -05:00
Aayush Rajasekaran
8975f0b753
feat: EthAPI: Add FilecoinAddressToEthAddress (#10343) 2023-02-24 14:19:52 -05:00
Aayush
35c90d34d6 feat: gas: overestimate around the Hygge upgrade 2023-02-23 09:35:01 -05:00
Łukasz Magiera
ea57a1aec3 Merge remote-tracking branch 'origin/master' into hsanjuan/chain-export-range-rebased 2023-02-23 13:08:14 +01:00
Aayush Rajasekaran
e3e78f1dc9
Merge pull request #10306 from filecoin-project/steb/error-cleanup
fix: eth: cleanup error cases
2023-02-17 15:22:07 -05:00
Steven Allen
bad41c247a fix: eth: cleanup error cases
1. Return an error on gas estimation failure instead of logging.
2. Return early when processing signed messages on failure instead of
continuing.
2023-02-17 12:04:01 -08:00
Aayush Rajasekaran
efcdec6517
Merge pull request #10300 from filecoin-project/steb/fix-eth-nonce
fix: eth: return the correct nonce from EthGetTransactionCount
2023-02-17 14:45:45 -05:00
Aayush Rajasekaran
258df7691f
Merge pull request #10305 from filecoin-project/asr/bump-go-libipfs-for-release
chore: deps: bump go-libipfs to v0.4.1
2023-02-17 14:34:12 -05:00
Steven Allen
6c0f4cbd74 nit: actually, don't use blocks 2023-02-17 11:18:51 -08:00
Steven Allen
49cd428c43 nit: put evm case in a block 2023-02-17 11:17:35 -08:00
Steven Allen
a3bc65ba05 fix: eth: return the correct nonce from EthGetTransactionCount
EVM contracts track this number internally.

fixes https://github.com/filecoin-project/lotus/issues/10255
2023-02-17 10:51:42 -08:00
Steven Allen
30615a4ed6
feat: eth: return revert data on failed gas estimation (#10298)
Unfortunately, we need to execute the message twice to get this (unless
we want to change some APIs). But it's unlikely to be a performance
issue and will definitely help people debug failures.
2023-02-17 10:36:30 -08:00
Jorropo
2d3065ae8e 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

(cherry picked from commit f572852d06)
2023-02-17 18:46:11 +01:00
Steven Allen
00b6d06041
feat: eth: parse revert data (#10295)
We don't really want to do this in the FVM because it's Ethereum
specific, but this makes sense to do in the Ethereum API.

See:

See https://docs.soliditylang.org/en/latest/control-structures.html#panic-via-assert-and-error-via-require
2023-02-17 01:18:03 +00:00
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