Commit Graph

341 Commits

Author SHA1 Message Date
Steven Allen
d3594835c4 [WIP] Network upgrade support
This patch starts adding support for network upgrades.

* It adds an actors abstraction layer for loading abstract (cross-version) actors.
* It starts switching over to a shared deadline type.
* It adds an abstraction for ADTs (hamt/amt).
* It removes the callback-based API in the StateManager (difficult to abstract
across actor versions).
* It _does not_ actually add support for actors v2. We can do that in a followup
patch but that should be relatively easy.

This patch is heavily WIP and does not compile. Feel free to push changes
directly to this branch.

Notes:

* State tree access now needs a network version, because the HAMT type will change.
* I haven't figured out a nice way to abstract over changes to the _message_
types. However, many of them will be type aliased to actors v0 in actors v2 so
we can likely continue using the v0 versions (or use the v2 versions
everywhere). I've been renaming imports to `v0*` to make it clear that we're
importing types from a _specific_ actors version.

TODO:

* Consider merging incremental improvements? We'd have to get this compiling
again first but we could merge in the new abstractions, and slowly switch over.
* Finish migrating to the new abstractions.
* Remove all actor state types from the public API. See `miner.State.Info()` for
the planned approach here.
* Fix the tests. This is likely going to be a massive pain.
2020-09-11 20:16:29 -07:00
vyzo
b78fe0b898 fix deadlock 2020-09-11 21:40:25 +03:00
vyzo
bf1036c78f rename priority variable to protected 2020-09-11 21:12:11 +03:00
vyzo
cf9820137c don't prune locally published messages 2020-09-11 20:32:52 +03:00
Łukasz Magiera
4410da98be
Merge pull request #3766 from filecoin-project/fix/mpool-prune
refactor getBaseFeeLowerBound, use it to prune less aggressively
2020-09-11 11:40:26 +02:00
vyzo
3dfb3e641b refactor getBaseFeeLowerBound, use it to prune less aggressively 2020-09-11 12:15:03 +03:00
Jakub Sztandera
2865a0367b
Fix mpool replace --auto
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-09-11 00:59:57 +02:00
vyzo
72c7d4c886 relax mpool add strictness checks for local pushes
So that a node can have more than 1k pending messages for its own local addresses.
2020-09-10 09:55:50 +03:00
vyzo
d369f542c5 warn when optimal selection fails to pack a block and we fall back to random selection 2020-09-09 23:17:09 +03:00
Jakub Sztandera
ef18f93609
Merge pull request #3698 from filecoin-project/fix/mpool-packing-failure
fix mpool optimal selection packing failure
2020-09-09 21:38:26 +02:00
vyzo
cf515bc5ca add selection test with real world messages dumped from a live node mpool 2020-09-09 20:46:26 +03:00
vyzo
97cbfa11b7 fix nasty bug in optimal selection
the sort has to account for negative gasPerf and be stable; go figure.
2020-09-09 20:45:24 +03:00
Łukasz Magiera
1d78ffc04d
Merge pull request #3676 from filecoin-project/feat/mpool-replace-auto
add an auto flag to mpool replace
2020-09-09 19:31:43 +02:00
whyrusleeping
e9b85f5acb ensure replaced message can properly RBF 2020-09-09 10:23:41 -07:00
vyzo
194b6eb9d8 fix issue with gasLimit check for trimming (> instead of >=) 2020-09-09 12:58:51 +03:00
vyzo
0b09082450 adjust optimal selection to always try to fill blocks 2020-09-09 12:37:03 +03:00
vyzo
26ff596983 fix very minor bug in repub baseFeeLowerBound
messages will not be accepted if the GasFeeCap is less than minimumBaseFee, but it doesn't hurt
to be correct.
2020-09-08 19:02:05 +03:00
Jakub Sztandera
46ee2eeded
Upgrade to correct fork treshold
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-09-07 23:07:33 +02:00
Jakub Sztandera
704db225d1
Update the fork point
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-09-07 22:45:06 +02:00
Jakub Sztandera
ce0e9594df
Update to go-state-types
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-09-07 22:44:12 +02:00
Jakub Sztandera
835b7eb6f7
Make allowNegativeChains a function
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-09-07 22:44:12 +02:00
vyzo
172ff846fd
decouple negative chain selection from base fee lower bound validation
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-09-07 22:44:12 +02:00
vyzo
97fddc45d9
temporarily allow negative perfoming chains
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-09-07 22:44:09 +02:00
Aayush Rajasekaran
39755a294a Update to specs v0.9.6 2020-09-07 15:48:41 -04:00
vyzo
2233751668 use the baseFeeLowerBound for computing repub message chains 2020-09-07 21:53:30 +03:00
vyzo
41222792ed add docstring for verifyMsgBeforeAdd 2020-09-07 20:26:51 +03:00
vyzo
5659faf7f0 don't immediately publish messages that cannot be included in the next 20 blocks 2020-09-07 20:20:49 +03:00
vyzo
2e75d9c80a be explicit about republish interval, check against timecache duration 2020-09-07 20:20:49 +03:00
vyzo
0fcf8838cc improve republish logic to only republish messages that can be included in the next 20 blocks 2020-09-07 20:20:49 +03:00
vyzo
ffb2640736 use faster lookup for base fee 2020-09-06 11:55:43 +03:00
vyzo
f9492691a6 don't check baseFee lower bound for local messages 2020-09-06 11:55:43 +03:00
vyzo
1c0e6d76f0 add defensive check for minimum GasFeeCap for inclusion within the next 20 blocks 2020-09-06 11:55:43 +03:00
Łukasz Magiera
f58cbc2594
Merge pull request #3557 from filecoin-project/fix/mpool-repub-negative
republish messages even if the chains have negative performance
2020-09-05 21:48:39 +02:00
Łukasz Magiera
1e190e462a
Merge pull request #3562 from filecoin-project/fix/mpool-log-spam
reduce mpool add failure log spam
2020-09-05 21:47:29 +02:00
vyzo
5037282b98 add test for priority selection with negative chains 2020-09-05 22:15:18 +03:00
vyzo
0b3685e529 fix selection bug; priority messages were not included if other's chains were negative 2020-09-05 21:30:02 +03:00
vyzo
275f071b12 reduce mpool add failure log spam 2020-09-05 00:28:13 +03:00
Łukasz Magiera
f90cfda2e6 wallet: Add interface layer 2020-09-04 22:18:03 +02:00
vyzo
ad8d550d73 remove unused ts argument from Trim, replace it with allowNegative specifier 2020-09-04 22:32:30 +03:00
vyzo
6d53862142 republish messages even if the chains have negative performance 2020-09-04 22:16:10 +03:00
Raúl Kripalani
1ec534d607 Merge branch 'master' into inmem-journal 2020-09-04 10:55:40 +01:00
Raúl Kripalani
905168e72e fix lint errors. 2020-09-04 10:54:56 +01:00
Łukasz Magiera
01449e486c
Merge pull request #3528 from filecoin-project/fix/sele-gas-reward
Fix calculation of GasReward in messagepool
2020-09-03 20:41:28 +02:00
Jakub Sztandera
8111b227c4
Appease the linter
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-09-03 20:19:01 +02:00
Jakub Sztandera
8bb471bccd
Add getGasPerf test
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-09-03 20:19:01 +02:00
Jakub Sztandera
5074b526d0
Fix calculation of GasReward in messagepool
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-09-03 19:36:03 +02:00
vyzo
d20b6adfd2 refuse to add duplicates in the mpool 2020-09-03 15:28:44 +03:00
vyzo
a4c650316a fix test 2020-09-03 15:28:44 +03:00
vyzo
28f57667f0 cap MaxNonceGap to 4, add delay between batch messages during republish 2020-09-03 15:28:44 +03:00
vyzo
f53d2e3a46 cap MaxNonceGap to 16 2020-09-03 15:28:44 +03:00
vyzo
7b76aa2078 warn when adding a nonce-gapped message to the mpool 2020-09-03 15:28:44 +03:00
vyzo
da6d384300 fix tests 2020-09-03 15:28:44 +03:00
vyzo
4c489d18a2 track expected nonce in mpool, refuse messages with large gaps 2020-09-03 15:28:44 +03:00
Raúl Kripalani
3206f92063 Merge branch 'master' into inmem-journal 2020-09-02 19:50:52 +01:00
Aayush Rajasekaran
93814cc85a
Merge pull request #3392 from filecoin-project/fix/mpool-priority-selection
Tweak priority selection to not select negative perfoming chains
2020-08-31 19:22:12 -04:00
刘林欣
0926f95979 remove the unnecessary err check 2020-08-31 15:11:45 +08:00
vyzo
648130eec5 don't include negative performing chains in priority message selection 2020-08-29 15:55:19 +03:00
vyzo
708a8b6543 flag to allow add to skip limit check
essential for correctness in the revert case
2020-08-28 00:04:21 +03:00
vyzo
038e83b647 log error if we trip over too many pending messages for actor 2020-08-26 22:55:39 +03:00
vyzo
82ef0529d8 named error for too many pending messages 2020-08-26 22:48:03 +03:00
vyzo
6abfbbddd5 fix tests 2020-08-26 22:44:47 +03:00
vyzo
ad889a7240 rate limit messages per actor by enforcing maximum pending message limit 2020-08-26 22:40:10 +03:00
vyzo
d3e95d6b77 cast min base fee to uint64 2020-08-26 21:37:32 +03:00
vyzo
8db262c941 check gas fee cap for minimum value 2020-08-26 21:23:28 +03:00
vyzo
793eda986b comment out Value inclusion for required funds tracking
we are not sure whether we want it yet.
2020-08-26 21:10:46 +03:00
vyzo
8848c549a0 move msg serialization outside of lock, consistently use curTs 2020-08-26 19:42:56 +03:00
vyzo
4919a005d3 always verify message min gas 2020-08-26 19:37:27 +03:00
Raúl Kripalani
cb8e105a94 reduce diff noise. 2020-08-26 16:44:06 +01:00
Raúl Kripalani
efdfd3ee3e Merge branch 'master' into inmem-journal 2020-08-26 16:38:23 +01:00
Raúl Kripalani
4e1ef09751 make journal a global var. 2020-08-26 16:09:37 +01:00
vyzo
7a7066896e better code for getRequiredFunds 2020-08-26 15:37:42 +03:00
vyzo
a2c0c10d2a correctly account for message replacement in required funds tracking 2020-08-26 15:27:09 +03:00
vyzo
c473d3c682 rename ErrValidationFailure to ErrSoftValidationFailure
to make it clear to readers that this failure is soft; we might be out of sync.
2020-08-26 15:16:04 +03:00
vyzo
87e6c0973a include message Value only in soft validation failures 2020-08-26 15:13:50 +03:00
vyzo
78876947a4 ErrBroadcastAnyway is now ErrValidationFailure 2020-08-26 15:03:13 +03:00
vyzo
b59f58435c fix tests 2020-08-26 14:58:32 +03:00
vyzo
4adb83eaae check aggregate pending message required funds against balance 2020-08-26 14:58:26 +03:00
vyzo
4ac9828b0c track required funds in message set 2020-08-26 14:38:26 +03:00
vyzo
77f6e0d4f8 refactor balance check, apply it in PushWithNonce 2020-08-26 14:23:34 +03:00
vyzo
835dbfe001 check message before adding in PushWithNonce 2020-08-26 14:13:46 +03:00
vyzo
da9630c561 remove duplicate check
gas limit is checked against block gas limit in ValidForBlockInclusion
2020-08-26 14:02:34 +03:00
vyzo
6b3282150b appease linter 2020-08-25 14:03:49 +03:00
vyzo
58cfac9f67 add test for message republish 2020-08-25 13:57:02 +03:00
vyzo
62b15ecc12 remove bug line 2020-08-25 13:41:20 +03:00
vyzo
6b9d392d0e add another priority selection test 2020-08-25 13:36:03 +03:00
vyzo
9c68123ede add test for Updates, fix behaviour for closed mpool 2020-08-25 13:29:09 +03:00
vyzo
7049b6478c add test for Clear 2020-08-25 13:24:11 +03:00
vyzo
0e6d34c0c9 add test for loadLocal 2020-08-25 13:16:55 +03:00
vyzo
a01fa11a26 exercise debug code, fix deadlock 2020-08-25 13:03:50 +03:00
vyzo
7e81081899 initialize mpool ts _before_ loading local messages 2020-08-25 08:49:15 +03:00
Jakub Sztandera
8cc8a277a1
Remove Println
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-25 04:37:35 +02:00
whyrusleeping
a5c56dde10 add test to verify actor state fix works properly 2020-08-24 19:35:54 -07:00
Jakub Sztandera
7f427b8001
Fix harness weirdness
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-25 04:12:33 +02:00
Jakub Sztandera
33b12782e4
Take into account messages in current tispet by executing it
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-25 04:02:06 +02:00
Jakub Sztandera
b2ff231c48
Fix error fmt string
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-25 03:14:52 +02:00
Jakub Sztandera
d921791c55
Add comment
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-25 03:13:43 +02:00
whyrusleeping
05d65c3f88 slightly better than panicking 2020-08-24 17:40:12 -07:00
whyrusleeping
cf3298cd04 more correctly handle discrepancies between mempools head and the mining base 2020-08-24 17:21:03 -07:00
Jakub Sztandera
aacfcba400
Check ValidForBlockInclusion in mpool
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-25 01:01:16 +02:00
Łukasz Magiera
0806fd651a
Merge pull request #3183 from filecoin-project/steb/lint-all
Lint everything
2020-08-22 21:47:41 +02:00