Commit Graph

3508 Commits

Author SHA1 Message Date
Aarsh Shah
d7076778e2
integrate DAG store and CARv2 in deal-making (#6671)
This commit removes badger from the deal-making processes, and
moves to a new architecture with the dagstore as the cental
component on the miner-side, and CARv2s on the client-side.

Every deal that has been handed off to the sealing subsystem becomes
a shard in the dagstore. Shards are mounted via the LotusMount, which
teaches the dagstore how to load the related piece when serving
retrievals.

When the miner starts the Lotus for the first time with this patch,
we will perform a one-time migration of all active deals into the
dagstore. This is a lightweight process, and it consists simply
of registering the shards in the dagstore.

Shards are backed by the unsealed copy of the piece. This is currently
a CARv1. However, the dagstore keeps CARv2 indices for all pieces, so
when it's time to acquire a shard to serve a retrieval, the unsealed
CARv1 is joined with its index (safeguarded by the dagstore), to form
a read-only blockstore, thus taking the place of the monolithic
badger.

Data transfers have been adjusted to interface directly with CARv2 files.
On inbound transfers (client retrievals, miner storage deals), we stream
the received data into a CARv2 ReadWrite blockstore. On outbound transfers
(client storage deals, miner retrievals), we serve the data off a CARv2
ReadOnly blockstore.

Client-side imports are managed by the refactored *imports.Manager
component (when not using IPFS integration). Just like it before, we use
the go-filestore library to avoid duplicating the data from the original
file in the resulting UnixFS DAG (concretely the leaves). However, the
target of those imports are what we call "ref-CARv2s": CARv2 files placed
under the `$LOTUS_PATH/imports` directory, containing the intermediate
nodes in full, and the leaves as positional references to the original file
on disk.

Client-side retrievals are placed into CARv2 files in the location:
`$LOTUS_PATH/retrievals`.

A new set of `Dagstore*` JSON-RPC operations and `lotus-miner dagstore`
subcommands have been introduced on the miner-side to inspect and manage
the dagstore.

Despite moving to a CARv2-backed system, the IPFS integration has been
respected, and it continues to be possible to make storage deals with data
held in an IPFS node, and to perform retrievals directly into an IPFS node.

NOTE: because the "staging" and "client" Badger blockstores are no longer
used, existing imports on the client will be rendered useless. On startup,
Lotus will enumerate all imports and print WARN statements on the log for
each import that needs to be reimported. These log lines contain these
messages:

- import lacks carv2 path; import will not work; please reimport
- import has missing/broken carv2; please reimport

At the end, we will print a "sanity check completed" message indicating
the count of imports found, and how many were deemed broken.

Co-authored-by: Aarsh Shah <aarshkshah1992@gmail.com>
Co-authored-by: Dirk McCormick <dirkmdev@gmail.com>

Co-authored-by: Raúl Kripalani <raul@protocol.ai>
Co-authored-by: Dirk McCormick <dirkmdev@gmail.com>
2021-08-16 23:34:32 +01:00
Steven Allen
3235dbfaee fix genesis for actors v2 2021-08-11 13:30:15 -07:00
Aayush Rajasekaran
a52352b13a PreCommitPolicy: Don't try to align expirations on proving period boundaries 2021-08-11 12:44:12 -04:00
ZenGround0
b914e95f34 revert pricelist by version to pricelist by epoch 2021-08-11 09:49:23 -04:00
Steven Allen
65e3540d03
Merge pull request #7007 from filecoin-project/fix/panic-less
Dont panic if input is bad
2021-08-10 16:22:56 -07:00
ZenGround0
234030218c Fix actor policy codegen 2021-08-10 13:32:00 -04:00
ZenGround0
6da26dcefc Remove network version panic 2021-08-10 13:07:30 -04:00
whyrusleeping
bfd69f5381 WIP: dont panic if input is bad 2021-08-09 12:17:54 +02:00
Steven Allen
5a321f970e fix: vet actors shims
1. Check error in EraseAllUnproven
2. Avoid dead code.
2021-08-06 14:56:29 -07:00
Steven Allen
fe74311209
Merge branch 'master' into feat/print-runtime-send-update 2021-07-28 18:55:38 -07:00
frrist
256d12773b polish(errors): better state tree errors 2021-07-28 17:50:22 -07:00
ZenGround0
e09a25ca68 Remove unnecessary ret log 2021-07-28 18:26:29 -04:00
ZenGround0
a968784908 fix new panics in invoker_test.go 2021-07-28 18:26:29 -04:00
ZenGround0
0202192fc0 Log more call context during errors 2021-07-28 18:26:29 -04:00
Łukasz Magiera
389f71251c Remove townhall 2021-07-28 17:58:46 +02:00
Łukasz Magiera
c57c20c6e4 fix lint 2021-07-27 15:58:18 +02:00
Łukasz Magiera
05a3710288 chainstore: Fix test build 2021-07-27 15:53:47 +02:00
Łukasz Magiera
ae63a4b33b fix lotus-sim build 2021-07-27 15:49:01 +02:00
Łukasz Magiera
ce82f2827b stmgr: Put actor state accessors in actors.go 2021-07-27 15:43:11 +02:00
Łukasz Magiera
e7d73cbe56 vm: Remove unused ActorBalance 2021-07-27 15:34:39 +02:00
Łukasz Magiera
9bd312881d VMSys doesn't belong in chainstore 2021-07-27 15:30:23 +02:00
Łukasz Magiera
ca1cd741c3 stmgr: Split stmgr.go into smaller subfiles 2021-07-27 15:15:50 +02:00
Łukasz Magiera
50b217817e stmgr: Split upgrade code from upgrade runtime 2021-07-27 14:48:30 +02:00
Łukasz Magiera
6ba42e3e6b chainstore: refactor store.go into more subfiles 2021-07-27 14:41:36 +02:00
Peter Rabbitson
ed387b43cc Bump go-multihash, adjust test for supported version 2021-07-26 17:50:19 +02:00
Aayush Rajasekaran
104626acb7 ValidateBlock: Assert that block header height's are greater than their parents 2021-07-26 11:09:23 -04:00
Łukasz Magiera
f9752d8a0a
Merge branch 'master' into feat/compact-sectors-numbers-cmd 2021-07-22 19:00:33 +02:00
Łukasz Magiera
0656b62176 Merge remote-tracking branch 'origin/master' into feat/compact-sectors-numbers-cmd 2021-07-22 16:04:25 +02:00
ZenGround0
d6a8a7aeb8 Remove validation because of sync TestDrandNull test 2021-07-22 09:49:47 -04:00
ZenGround0
4cd05fa39c Lint 2021-07-22 09:49:47 -04:00
ZenGround0
ed844c5283 Use current ntwk version in mpool message check 2021-07-22 09:49:47 -04:00
ZenGround0
9fc4a25bd1 Fix tests with bad network version refs 2021-07-22 09:49:47 -04:00
ZenGround0
cbc07cb939 Add 6.5 to VersionForNetwork commit updated docs 2021-07-22 09:49:47 -04:00
ZenGround0
545cc723e0 Fix test 2021-07-22 09:49:47 -04:00
ZenGround0
47b5afa84b Add version six and a half 2021-07-22 09:49:47 -04:00
ZenGround0
f49a8248f0 PriceListByVersion 2021-07-22 09:49:47 -04:00
Łukasz Magiera
3006dda786
Merge pull request #6760 from ipfs-force-community/feat/cache_blkmsg_events
cache loaded block messages
2021-07-22 13:54:51 +02:00
vyzo
839b00ab40 rename messagepool ProtectMessages to ForEachPendingMessage 2021-07-20 09:23:36 +03:00
vyzo
ebbaf23af8 support out-of-chain reference protection 2021-07-20 09:02:40 +03:00
hunjixin
eef3fd5d7a cache loaded block messages 2021-07-19 15:13:53 +08:00
Steven Allen
cf81c897df test: handle null blocks in TestForkRefuseCall
Otherwise, this fails on rare occasions.
2021-07-14 17:41:24 -07:00
Anton Evangelatov
d89ddb9315 resolve conflicts 2021-07-12 11:34:37 +02:00
Łukasz Magiera
79b0bfb272 policy: Add a docstring to SetProviderCollateralSupplyTarget 2021-07-08 18:56:03 +02:00
Łukasz Magiera
2dc27d6ab4 itests: Fix deal provider collateral flakiness 2021-07-07 19:41:46 +02:00
Anton Evangelatov
6b014f57e5 pass Subsystems to StorageMiner option; add enableLibp2p bool in Settings 2021-07-07 13:56:37 +02:00
Anton Evangelatov
ff2772a58c resolved conflicts 2021-07-06 16:00:41 +02:00
Łukasz Magiera
97207df705
Merge pull request #6639 from filecoin-project/frrist/context-in-statetree-diff
polish(statetree): accept a context in statetree diff for timeouts
2021-07-05 17:30:31 +02:00
Anton Evangelatov
4be0a7a215 resolve conflicts with master 2021-07-05 13:13:32 +02:00
Łukasz Magiera
c094aa82ec commit batch: AggregateAboveBaseFee config 2021-07-01 13:33:54 +02:00
frrist
d02a2a2cfa polish(statetree): accept a context in statetree diff for timeouts
- this operation can take a while, this changes gives users the option
to abort if it takes "too long".
2021-06-30 16:40:43 -07:00
Anton Evangelatov
4f0a96c9c7 resolved conflicts 2021-06-30 13:16:52 +02:00
Anton Evangelatov
9ec7cd7239 enable libp2p options 2021-06-30 12:55:43 +02:00
Łukasz Magiera
c10d99e3fd multiwallet: Don't fail if key is found in any wallet 2021-06-25 12:17:53 +02:00
Łukasz Magiera
ebd746cdec
Merge pull request #6406 from filecoin-project/feat/lotus-sim 2021-06-24 18:20:43 +02:00
Steven Allen
d6abcff63c
fix(lotus-sim): apply code review from magik6k
Co-authored-by: Łukasz Magiera <magik6k@users.noreply.github.com>
2021-06-21 09:05:48 -07:00
Łukasz Magiera
b37a66c7c9 Merge remote-tracking branch 'origin/release/v1.10.0' into chore/merge-1.10 2021-06-21 17:03:03 +02:00
Steven Allen
eb0a15faf0 fix(genesis): set initial balances to 0 2021-06-18 15:44:37 -07:00
Steven Allen
b30b5dd629 fix: move actors changes to template files 2021-06-18 15:44:37 -07:00
Steven Allen
eb2b706156 chore: fix lint errors in simulation 2021-06-18 15:44:37 -07:00
Steven Allen
22267eb45d feat(lotus-sim): split info command file 2021-06-18 15:44:36 -07:00
Steven Allen
8a215df46b fix(statetree): make StateTree.ForEach take layers into account
This likely isn't used anywhere, but this _should_ take layers into
account (and I kind of just assumed it did).
2021-06-18 15:44:36 -07:00
Steven Allen
e7b1e09ade feat(multisig): expose ApproveReturn 2021-06-18 15:44:35 -07:00
Steven Allen
0075abea5e fix(vm): always specify an ActorErr when ApplyMessage fails.
This case shouldn't actually happen, but we might as well be consistent.
2021-06-18 15:44:35 -07:00
Steven Allen
e2f5c494b0 feat: implement lotus-sim 2021-06-18 15:44:34 -07:00
Łukasz Magiera
2c2c37a138 chainstore: Don't take heaviestLk with backlogged reorgCh 2021-06-18 19:18:51 +02:00
Steven Allen
526674cefa fix: pick the correct partitions-per-post limit 2021-06-16 16:56:30 -07:00
Steven Allen
653b1d8231 fix: pick the correct partitions-per-post limit 2021-06-16 16:53:52 -07:00
Aayush Rajasekaran
35f76f58df
Merge pull request #6309 from filecoin-project/feat/better_mining_projection_and_accuracy
Adjust various CLI display ratios to arbitrary precision
2021-06-16 17:48:23 -04:00
Aayush Rajasekaran
b9f864ba9e Expand on Drand change testing 2021-06-16 14:17:55 -04:00
Peter Rabbitson
429419f210 Forgotten deadcode 2021-06-16 13:38:39 -04:00
Peter Rabbitson
3acd846dcd Fix logging around mineOne
- A nil MiningBaseInfo is *NOT* unexpected: it happens when one is in penalty
  https://github.com/filecoin-project/lotus/blob/v1.9.0/chain/stmgr/utils.go#L500-L502

- Remove the log from IsRoundWinner(): all we care about is the randbase epoch
2021-06-16 13:38:35 -04:00
Aayush Rajasekaran
520a0091f5 Merge branch 'releases' into release/v1.10.0 2021-06-15 17:40:36 -04:00
Łukasz Magiera
0514f38dc4 Merge remote-tracking branch 'origin/master' into chore/merge-1.10 2021-06-14 13:27:53 +02:00
Łukasz Magiera
534badad2a mpool: Add more metrics 2021-06-11 13:19:26 +02:00
wangchao
626d482990 correct the change of message size limit 2021-06-09 18:05:16 -04:00
Jakub Sztandera
18043810c0 Create MaxMessageSize constant
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-06-09 14:24:42 -04:00
Jakub Sztandera
0cd0faa6fb Increase message size limit
Add test

Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-06-09 14:24:38 -04:00
Aayush Rajasekaran
dede1b4758 Merge branch 'release/v1.10.0' into asr/merge-release 2021-06-09 14:05:41 -04:00
Aayush Rajasekaran
b0c9dd49f0 Fund miners with the aggregate fee when ProveCommitting 2021-06-09 13:08:54 -04:00
wangchao
4c87818de1 correct the change of message size limit 2021-06-09 15:19:35 +08:00
Jakub Sztandera
39bab148b8
Create MaxMessageSize constant
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-06-08 16:07:43 +02:00
Jakub Sztandera
4c605c349f
Increase message size limit
Add test

Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2021-06-08 15:20:10 +02:00
Łukasz Magiera
c98b6f6408
Merge pull request #6389 from filecoin-project/frrist/execmonitor-interface
polish(stmgr): define ExecMonitor for message application callback
2021-06-08 12:30:52 +02:00
Peter Rabbitson
29d7561dd1 Fix logging of stringified CIDs double-encoded in hex 2021-06-08 00:05:48 +02:00
frrist
0519c77c24 polish(stmgr): define ExecMonitor for message applicaiton callback 2021-06-07 11:03:18 -07:00
Aayush Rajasekaran
c66d66dfcb Fix state manager::Call() 2021-06-03 17:09:42 -04:00
Aayush Rajasekaran
a41a1cbd93 Gate runtime's GetRandomnessFromBeacon on HyperdriveHeight, not network version 2021-06-03 15:47:49 -04:00
Łukasz Magiera
c5797482b2 Revert CallWithGas hack 2021-06-03 18:51:01 +02:00
Łukasz Magiera
78c128f6a3 chain: Better logging in sync tests 2021-06-03 10:42:26 +02:00
Łukasz Magiera
ee21351aa0 statetree: Add missing version defs 2021-06-01 21:16:01 +02:00
Łukasz Magiera
a676da8a7e Merge remote-tracking branch 'origin/master' into feat/nv13-1.11 2021-06-01 21:07:04 +02:00
Łukasz Magiera
dc642d0b7b Merge remote-tracking branch 'origin/feat/nv13' into feat/nv13-1.11 2021-06-01 21:06:58 +02:00
Łukasz Magiera
fa8beeac2b
Merge pull request #6371 from filecoin-project/fix/robustify-commit-batcher
Fix tests
2021-06-01 21:01:03 +02:00
Aayush Rajasekaran
39f2246ae6 Use build.UpgradeHyperDriveHeight directly when sourcing randomness in VM 2021-06-01 14:43:46 -04:00
Aayush Rajasekaran
c8cef1cb7e Fix chain/gen randomness getting (test only) 2021-06-01 13:44:08 -04:00
Łukasz Magiera
66c1554670 vm syscalls: fix typo 2021-06-01 19:23:12 +02:00
Aayush Rajasekaran
49fce48c3e Tweak CallVM to use current epoch, not future epoch 2021-06-01 12:43:16 -04:00
Łukasz Magiera
5a9e6c8142
Merge pull request #6364 from filecoin-project/asr/resolve-messages
Improve address resolution for messages
2021-06-01 14:38:31 +02:00
Aayush Rajasekaran
2ab24b358d Fix supported proof type manipulations for v5 actors 2021-05-31 18:50:29 -04:00
Mimir
ee508120d9
Typo fix in error message: "pubusb" -> "pubsub" 2021-05-31 15:30:10 -07:00