This consensus-breaking release of Lotus is designed to test a network upgrade on the space race testnet. The changes that break consensus are:
- Upgrading the Drand network used from the test Drand network to the League of Entropy main drand network. This is the same Drand network that will be used in the Filecoin mainnet.
- Upgrading to specs-actors v0.9.8, which adds a new method to the Multisig actor.
- Fix IsAncestorOf (filecoin-project#3717)
- Update to specs-actors v0.9.8 (filecoin-project#3725)
- Increase chain throughput by 20% (filecoin-project#3732)
- Updare to go-libp2p-pubsub
master
(filecoin-project#3735) - Drand upgrade (filecoin-project#3670)
- Multisig API additions (filecoin-project#3590)
- Increase the number of times precommit2 is attempted before moving back to precommit1 (filecoin-project#3720)
- Relax mpool add strictness checks for local pushes (filecoin-project#3724)
- Fix devnets (filecoin-project#3712)
- Fix(chainwatch): compare prev miner with cur miner (filecoin-project#3715)
- CI: fix statediff build; make optional (filecoin-project#3729)
- Feat: Chaos abort (filecoin-project#3733)
The following contributors had commits go into this release. We are grateful for every contribution!
Contributor | Commits | Lines ± |
---|---|---|
arajasek | 28 | +1144/-239 |
Kubuxu | 19 | +452/-261 |
whyrusleeping | 13 | +456/-87 |
vyzo | 11 | +318/-20 |
raulk | 10 | +1289/-350 |
magik6k | 6 | +188/-55 |
dirkmc | 3 | +31/-8 |
alanshaw | 3 | +176/-37 |
Stebalien | 2 | +9/-12 |
lanzafame | 1 | +1/-1 |
frrist | 1 | +1/-1 |
mishmosh | 1 | +1/-1 |
nonsense | 1 | +1/-0 |
This release introduces some critical fixes to message selection and gas estimation logic. It also adds the ability for nodes to mark a certain tipset as checkpointed, as well as various minor improvements and bugfixes.
- Warn when optimal selection fails to pack a block and we fall back to random selection (filecoin-project#3708)
- Add basic command for printing gas performance of messages in the mpool (filecoin-project#3701)
- Adjust optimal selection to always try to fill blocks (filecoin-project#3685)
- Fix very minor bug in repub baseFeeLowerBound (filecoin-project#3663)
- Add an auto flag to mpool replace (filecoin-project#3676)
- Fix mpool optimal selection packing failure (filecoin-project#3698)
- Don't use latency as initital estimate for blocksync (filecoin-project#3648)
- Add niceSleep 1 second when drand errors (filecoin-project#3664)
- Fix isChainNearSync check in block validator (filecoin-project#3650)
- Add peer to peer manager before fetching the tipset (filecoin-project#3667)
- Add StageFetchingMessages to sync status (filecoin-project#3668)
- Pass tipset through upgrade logic (filecoin-project#3673)
- Allow nodes to mark tipsets as checkpointed (filecoin-project#3680)
- Remove hard-coded late-fee in window PoSt (filecoin-project#3702)
- Gas: Fix median calc (filecoin-project#3686)
- Storage manager: bail out with an error if unsealed cid is undefined (filecoin-project#3655)
- Storage: return true from Sealer.ReadPiece() on success (filecoin-project#3657)
- Resolve lotus, test-vectors, statediff dependency cycle (filecoin-project#3688)
- Paych: add docs on how to use paych status (filecoin-project#3690)
- Initial CODEOWNERS (filecoin-project#3691)
This optional release introduces a minor improvement to the sync process, ensuring nodes don't fall behind and then resync.
- Update
test-vectors
(filecoin-project#3645) - Revert "only subscribe to pubsub topics once we are synced" (filecoin-project#3643)
This consensus-breaking release of Lotus is designed to test a network upgrade on the space race testnet. The changes that break consensus are:
- Tweaking of some cryptoecon parameters in specs-actors 0.9.7 (https://github.com/filecoin-project/specs-actors/releases/tag/v0.9.7)
- Rebalancing FIL distribution to make testnet FIL scarce, which prevents base fee spikes and sets better expectations for mainnet
This release also introduces many improvements to Lotus! Among them are a new version of go-fil-markets that supports non-blocking retrieval, various spam reduction measures in the messagepool and p2p logic, and UX improvements to payment channels, dealmaking, and state inspection.
- Implement faucet funds reallocation logic (filecoin-project#3632)
- Network upgrade: Upgrade to correct fork threshold (filecoin-project#3628)
- Update to specs 0.9.7 and markets 0.6.0 (filecoin-project#3627)
- Network upgrade: Perform base fee tamping (filecoin-project#3623)
- Chain events: if cache best() is nil, return chain head (filecoin-project#3611)
- Update to specs actors v0.9.6 (filecoin-project#3603)
- Temporarily allow negative chains (filecoin-project#3625)
- Improve publish/republish logic (filecoin-project#3592)
- Fix selection bug; priority messages were not included if other chains were negative (filecoin-project#3580)
- Add defensive check for minimum GasFeeCap for inclusion within the next 20 blocks (filecoin-project#3579)
- Add additional info about gas premium (filecoin-project#3578)
- Fix GasPremium capping logic (filecoin-project#3552)
- Get available funds by address or by from/to (filecoin-project#3547)
- Create
lotus paych status
command (filecoin-project#3523) - Rename CLI command from "paych get" to "paych add-funds" (filecoin-project#3520)
- Only subscribe to pubsub topics once we are synced (filecoin-project#3602)
- Reduce mpool add failure log spam (filecoin-project#3562)
- Republish messages even if the chains have negative performance(filecoin-project#3557)
- Adjust gossipsub gossip factor (filecoin-project#3556)
- Integrate pubsub Random Early Drop (filecoin-project#3518)
- Fix panic in OnDealExpiredSlashed (filecoin-project#3553)
- Robustify state manager against holes in actor method numbers (filecoin-project#3538)
- VM: Fix an error message (filecoin-project#3608)
- Documentation: Batch replacement,update lotus-storage-miner to lotus-miner (filecoin-project#3571)
- CLI: Robust actor lookup (filecoin-project#3535)
- Add agent flag to net peers (filecoin-project#3534)
- Add watch option to storage-deals list (filecoin-project#3527)
- Decommission chain-validation (filecoin-project#3606)
- Metrics: add expected height metric (filecoin-project#3586)
- PCR: Use current tipset during refund (filecoin-project#3570)
- Lotus-shed: Add math command (filecoin-project#3568)
- PCR: Add tipset aggergation (filecoin-project#3565 Fix broken paych tests (filecoin-project#3551)
- Make chain export ~1000x times faster (filecoin-project#3533)
- Chainwatch: Stop SyncIncomingBlocks from leaking into chainwatch processing; No panics during processing (filecoin-project#3526)
- Conformance: various changes (filecoin-project#3521)
This patch includes a crucial fix to the message pool selection logic, strongly disfavouring messages that might cause a miner penalty.
- Fix calculation of GasReward in messagepool (filecoin-project#3528)
This patch includes a hotfix to the GasEstimateFeeCap
method, capping the estimated fee to a reasonable level by default.
- Added target height to sync wait (filecoin-project#3502)
- Disable codecov annotations (filecoin-project#3514)
- Cap fees to reasonable level by default (filecoin-project#3516)
- Add APIs and command to inspect bandwidth usage (filecoin-project#3497)
- Track expected nonce in mpool, ignore messages with large nonce gaps (filecoin-project#3450)
This patch includes some bugfixes to the sector sealing process, and updates go-fil-markets. It also improves the performance of blocksync, adds a method to export chain state trees, and improves chainwatch.
- Upgrade markets to v0.5.9 (filecoin-project#3496)
- Improve blocksync to load fewer messages: (filecoin-project#3494)
- Fix a panic in the ffi-wrapper's
ReadPiece
(https://github.com/filecoin-project/lotus/pull/3492/files) - Fix a deadlock in the sealing scheduler (filecoin-project#3489)
- Add test vectors for tipset tests (https://github.com/filecoin-project/lotus/pull/3485/files)
- Improve the advance-block debug command (filecoin-project#3476)
- Add toggle for message processing to Lotus PCR (filecoin-project#3470)
- Allow exporting recent chain state trees (filecoin-project#3463)
- Remove height from chain rand (filecoin-project#3458)
- Disable GC on chain badger datastore (filecoin-project#3457)
- Account for
GasPremium
inGasEstimateFeeCap
(filecoin-project#3456) - Update go-libp2p-pubsub to
master
(filecoin-project#3455) - Chainwatch improvements (filecoin-project#3442)
This patch release includes some bugfixes and enhancements to the sector lifecycle and message pool logic.
- Rebuild unsealed infos on miner restart (filecoin-project#3401)
- CLI to attach storage paths to workers (filecoin-project#3405)
- Do not select negative performing message chains for inclusion (filecoin-project#3392)
- Remove a redundant error-check (filecoin-project#3421)
- Correctly move unsealed sectors in
FinalizeSectors
(filecoin-project#3424) - Improve worker selection logic (filecoin-project#3425)
- Don't use context to close bitswap (filecoin-project#3430)
- Correctly estimate gas premium when there is only one message on chain (filecoin-project#3428)
Hotfix release that fixes a panic in the sealing scheduler (filecoin-project#3389).
This patch release introduces a large number of improvements to the sealing process. It also updates go-fil-markets to version 0.5.8, and go-libp2p-pubsub to v0.3.5.
- Upgrades markets to v0.5.8 (filecoin-project#3384)
- Upgrades go-libp2p-pubsub to v0.3.5 (filecoin-project#3305)
-
The following improvements were introduced in filecoin-project#3350.
- Allow
lotus-miner sectors remove
to remove a sector in any state. - Create a separate state in the storage FSM dedicated to submitting the Commit message.
- Recovery for when the Deal IDs of deals in a sector get changed in a reorg.
- Auto-retry sending Precommit and Commit messages if they run out of gas
- Auto-retry sector remove tasks when they fail
- Compact worker windows, and allow their tasks to be executed in any order
- Allow
-
Don't simply skip PoSt for bad sectors (filecoin-project#3323)
- Spam Protection: Track required funds for pending messages (filecoin-project#3313)
- Add more power and reward metrics (filecoin-project#3367)
- Fix raciness in sector deal table (filecoin-project#3275)
- Parallelize miner processing (filecoin-project#3380)
- Accept Lotus API and token (filecoin-project#3337)
A patch release, containing a few nice bugfixes and improvements:
- Fix parsing of peer ID in
lotus-miner actor set-peer-id
(@whyrusleeping) - Update dependencies, fixing several bugs (@Stebalien)
- Fix remaining linter warnings (@Stebalien)
- Use safe string truncation (@Ingar)
- Allow tweaking of blocksync message window size (@whyrusleeping)
- Add some additional gas stats to metrics (@Kubuxu)
- Fix an edge case bug in message selection, add many tests (@vyzo)
Yet another hotfix release. A lesson for readers, having people who have been awake for 12+ hours review your hotfix PR is not a good idea. Find someone who has enough slept recently enough to give you good code review, otherwise you'll end up quickly bumping versions again.
- Fixed a bug in the mempool that was introduced in v0.5.2
This is a hotfix release.
- Fix message selection to not include messages that are invalid for block inclusion.
- Improve SelectMessage handling of the case where the message pools tipset differs from our mining base.
The Space Race release! This release contains the genesis car file and bootstrap peers for the space race network.
Additionally, we included two small fixes to genesis creation:
- Randomize ticket value in genesis generation
- Correctly set t099 (burnt funds actor) to have valid account actor state
This version of Lotus will be used for the incentivized testnet Space Race competition, and can be considered mainnet-ready code. It includes some protocol changes, upgrades of core dependencies, and various bugfixes and UX/performance improvements.
Among the highlights included in this release are:
- Gas changes: We implemented EIP-1559 and introduced real gas values.
- Deal-making: We now support "Committed Capacity" sectors, "fast-retrieval" deals, and the packing of multiple deals into a single sector.
- Renamed features: We renamed some of the binaries, environment variables, and default paths associated with a Lotus node.
We made some significant changes to the mechanics of gas in this release.
We implemented something similar to
Ethereum's EIP-1559.
The Message
structure had three changes:
- The
GasPrice
field has been removed - A new
GasFeeCap
field has been added, which controls the maximum cost the sender incurs for the message - A new
GasPremium
field has been added, which controls the reward a miner earns for including the message
A sender will never be charged more than GasFeeCap * GasLimit
.
A miner will typically earn GasPremium * GasLimit
as a reward.
The Blockheader
structure has one new field, called ParentBaseFee
.
Informally speaking,the ParentBaseFee
is increased when blocks are densely packed with messages, and decreased otherwise.
The ParentBaseFee
is used when calculating how much a sender burns when executing a message. Burning simply refers to sending attoFIL to a dedicated, unreachable account.
A message causes ParentBaseFee * GasUsed
attoFIL to be burnt.
This release also includes our first "real" gas costs for primitive operations. The costs were designed to account for both the time that message execution takes, as well as the space a message adds to the state tree.
There are three key changes to the deal-making process.
Miners can now pledge "Committed Capacity" (CC) sectors, which are explicitly stated as containing junk data, and must not include any deals. Miners can do this to increase their storage power, and win block rewards from this pledged storage.
They can mark these sectors as "upgradable" with lotus-miner sectors mark-for-upgrade
.
If the miner receives and accepts one or more storage deals, the sector that includes
those deals will replace the CC sector. This is intended to maximize the amount of useful
storage on the Filecoin network.
Clients can now include a fast-retrieval
flag when proposing deals with storage miners.
If set to true, the miner will include an extra copy of the deal data. This
data can be quickly served in a retrieval deal, since it will not need to be unsealed.
Miners can now pack multiple deals into a single sector, so long as all the deals fit into the sector capacity. This should increase the packing efficiency of miners.
To improve the user experience, we updated several names to mainatin standard prefixing, and to better reflect the meaning of the features being referenced.
In particular, the Lotus miner binary is now called lotus-miner
, the default
path for miner data is now ~/.lotusminer
, and the environment variable
that sets the path for miner data is now $LOTUS_MINER_PATH
. A full list of renamed
features can be found here.
- Upgrades markets to v0.5.6 (filecoin-project#3058)
- Upgrades specs-actors to v0.9.3 (filecoin-project#3151)
- Introduces gas values, replacing placeholders (filecoin-project#2343)
- Implements EIP-1559, introducing a network base fee, message gas fee cap, and message gas fee premium (filecoin-project#2874)
- Implements Poisson Sortition for elections (filecoin-project#2084)
- Introduces "Committed Capacity" sectors (filecoin-project#2220)
- Introduces "fast-retrieval" flag for deals (filecoin-project#2323
- Supports packing multiple deals into one sector (filecoin-project/storage-fsm#38)
- Optimized message pool selection logic (filecoin-project#2838)
- Window-based scheduling of sealing tasks (filecoin-project/sector-storage#67)
- Faster window PoSt (https://github.com/filecoin-project/lotus/pull/2209/files)
- Refactors the payment channel manager (filecoin-project#2640)
- Refactors blocksync (https://github.com/filecoin-project/lotus/pull/2715/files)
- Provide status updates for data-transfer (filecoin-project#3162, filecoin-project#3191)
- Miners can customise asks (filecoin-project#2046)
- Miners can toggle auto-acceptance of deals (filecoin-project#1994)
- Miners can maintain a blocklist of piece CIDs (filecoin-project#2069)
The following contributors had 10 or more commits go into this release. We are grateful for every contribution!
Contributor | Commits | Lines ± |
---|---|---|
magik6k | 361 | +13197/-6136 |
Kubuxu | 227 | +5670/-2587 |
arajasek | 120 | +2916/-1264 |
whyrusleeping | 112 | +3979/-1089 |
vyzo | 99 | +3343/-1305 |
dirkmc | 68 | +8732/-3621 |
laser | 45 | +1489/-501 |
hannahhoward | 43 | +2654/-990 |
frrist | 37 | +6630/-4338 |
schomatis | 28 | +3016/-1368 |
placer14 | 27 | +824/-350 |
raulk | 25 | +28718/-29849 |
mrsmkl | 22 | +560/-368 |
travisperson | 18 | +1354/-314 |
nonsense | 16 | +2956/-2842 |
ingar | 13 | +331/-123 |
daviddias | 11 | +311/-11 |
Stebalien | 11 | +1204/-980 |
RobQuistNL | 10 | +69/-74 |
We are very excited to release lotus 0.1.0. This is our testnet release. To install lotus and join the testnet, please visit lotu.sh. Please file bug reports as issues.
A huge thank you to all contributors for this testnet release!