Ł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