Commit Graph

400 Commits

Author SHA1 Message Date
Łukasz Magiera
6eda53565f Most tests passing 2020-09-17 17:30:24 +02:00
Steven Allen
4cd92d8576 remove final WithStateTree 2020-09-15 10:57:32 -07:00
Steven Allen
02dcb5e182 Merge branch 'master' into refactor/net-upgrade 2020-09-14 14:53:57 -07:00
vyzo
172bfacae0 compute baseFee for check even in null rounds 2020-09-14 22:20:26 +03:00
vyzo
0a5494dd79 use the factor in getBaseFeeLowerBound 2020-09-14 22:13:37 +03:00
vyzo
044202b37f use conservative base fee lower bound factor for strict checks 2020-09-14 22:13:37 +03:00
vyzo
d68ec37942 reenable baseFee lower bound check 2020-09-14 22:13:37 +03:00
Łukasz Magiera
06ec571c20 Merge remote-tracking branch 'origin/master' into refactor/net-upgrade 2020-09-14 15:09:52 +02:00
Raúl Kripalani
6d29d75724 Merge branch 'master' into inmem-journal 2020-09-14 12:17:45 +01:00
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
vyzo
817358f1bb better semantics for mpool clear local argument
local messages should be kept unless the parameter is true
2020-08-21 23:48:35 +03:00
vyzo
087955e927 add localonly option to MpoolClear 2020-08-21 23:32:41 +03:00
vyzo
e33d398c33 remove pending local messages from the datastore when clearing the mpool 2020-08-21 23:32:41 +03:00
vyzo
3027283756 add MpoolClear api 2020-08-21 23:32:41 +03:00
vyzo
161cb32078 recover from errors in head change 2020-08-21 23:32:41 +03:00
Steven Allen
5733c71c50 Lint everything
We were ignoring quite a few error cases, and had one case where we weren't
actually updating state where we wanted to. Unfortunately, if the linter doesn't
pass, nobody has any reason to actually check lint failures in CI.

There are three remaining XXXs marked in the code for lint.
2020-08-20 20:46:36 -07:00
vyzo
6d9707c784 fix OptimalSelection3 test 2020-08-18 22:24:07 +03:00
Jakub Sztandera
e0b72ba049
Reduce number of runs to 1
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-18 21:10:04 +02:00
Jakub Sztandera
4d01cbfb62
Increase precision of output
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-18 21:10:04 +02:00
Jakub Sztandera
8d4427a8bc
add best ticket reward to tests
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-18 21:10:04 +02:00
Jakub Sztandera
8bca545cab
Add test for winnerProba
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-18 21:10:04 +02:00
Jakub Sztandera
9c98cf8bc1
Fix blockProbabilities
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-18 21:10:04 +02:00
Jakub Sztandera
8acd926636
Use conditional probability for noWinners, fix tests
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-18 21:10:04 +02:00
vyzo
4287f76ed4 fix deadlock in mpool.Push 2020-08-18 10:19:46 +03:00
vyzo
3b6e2bdb7b trigger early republish from head changes 2020-08-17 10:03:39 +03:00
vyzo
a5d2ec0df8 appease linter 2020-08-14 10:12:55 +03:00
vyzo
b844f70a3c make competitve selection test parameteric on distribution function, add test for Zipf distribution 2020-08-14 10:09:25 +03:00
Jakub Sztandera
f27a122787
Use Zipf distribution for messages
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 20:22:56 +02:00
vyzo
9aa8791920 make selection2 test less touchy 2020-08-13 20:02:08 +03:00
vyzo
2eff03fa1f small fixes in optimal selection
1. Remove noop updates from the previous dependencies
2. Update subsequent dependencies, which was the intention
2020-08-13 19:49:07 +03:00
Jakub Sztandera
0daed04c07
Don't run the test 50 times
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:11 +02:00
vyzo
09f5a64ce0
use gasPerf for negative performance check
it's the same in actually because effPerf<0 iff gasPerf<0, but we should be consistent

Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:11 +02:00
vyzo
f3eec33bec
make OptimalSelection3 test pass
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:11 +02:00
vyzo
1aa8b6cab2
make OptimalSelection2 test pass
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:11 +02:00
vyzo
0f5598e59b
compute average boost in tests
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:11 +02:00
vyzo
5e8ae7498a
only adjust next chains if they have positve perf
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:11 +02:00
vyzo
7bbf1c7db2
don't mix negative performing chains with their parent, add some comments
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:10 +02:00
Jakub Sztandera
f35555964d
Better "optimal selection
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:10 +02:00
vyzo
d25f386bb5
mixin the previous chain's effective performance to capture effect of dependencies
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:10 +02:00
Steven Allen
3ef3f570fb Fix lint errors an broken tests 2020-08-12 23:16:44 +02:00
Łukasz Magiera
43586ed9a1
Merge pull request #3000 from filecoin-project/feat/mpool-add-semaphore
Add semaphore in push and friends to reduce lock contention
2020-08-12 21:53:59 +02:00
Jakub Sztandera
f7c222e42e
Validate message pool config, validate GasPremium < GasFeeCap
don't use configured RBF for mpool

Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-12 20:31:34 +02:00
vyzo
f2ac17845b relinquish the lock while signing in PushWithNonce 2020-08-12 20:26:58 +03:00
vyzo
7be18df6ea add semaphore in push and friends to reduce lock contention 2020-08-12 10:38:40 +03:00
vyzo
472e502218 fix republishing chain selection to account for edge case of inordinately long chains 2020-08-12 09:41:02 +03:00
vyzo
7b16fe3792 hold ts lock longer 2020-08-12 09:18:04 +03:00
vyzo
47f81f1ad6 increase repub message limit to 30 2020-08-12 09:13:57 +03:00
vyzo
cf34fe5cc3 extend the republish interval to something more reasonable
pubsub timecache duration + 5 blocks + propagation delay
2020-08-12 09:13:57 +03:00
vyzo
7396212c89 slightly increase the replublish interval to include the propagation delay as well 2020-08-12 09:13:57 +03:00
vyzo
e876617c82 new message republishing logic 2020-08-12 09:13:57 +03:00
vyzo
42951d05a5 refactor messagepool provider out of the main messagepool implementation 2020-08-12 09:13:57 +03:00