We’re happy to announce go-filecoin 0.1.4. go-filecoin is the Go implementation of the Filecoin protocol. The up-to-date changelog can always be found at go-filecoin/CHANGELOG.md.
This release contains a better install experience, initial Proof-of-Spacetime integration, more reliable message sending and networking, and many other improvements. Get pumped! π
Install and Setup
π Binary releases
Linux and MacOS binaries for go-filecoin are now available! See Installing from binary for instructions.
π± Precompiled proofs parameters
Running secure proofs requires parameter files that are several GB in size. Previously, these files were generated at install, an extremely memory-intensive process causing slow or impossible builds for many users. Now, you can download pre-generated files during install by running paramfetch
. This step is now included in the Installing from binary instructions.
π¦ Version checking
go-filecoin now checks that it is running the same version (at the same commit) while connecting to a devnet. This is a temporary fix until a model for change is implemented, allowing different versions to interoperate.
Features
π Proof-of-Spacetime Integration
Miners now call rust-fil-proofs
to periodically generate proofs of continued storage. With this major integration in place, you can expect some follow-up (for example, storage mining faults do not yet appear on-chain) and continued optimizations to the underlying Proof-of-Spacetime construction and implementation.
Performance and Reliability
π€ Networking
Weβve upgraded to go-libp2p 6.0.35 which has fixed autorelay reliability issues. Weβve also added a go-filecoin dht
command for interacting with and debugging our dht.
π Better message sending
In the past, if messages failed, they failed silently. go-filecoin would continue to select nonces higher than the sent message, effectively deadlocking message sending. We have now implemented several improvements to message sending: incoming and outgoing queues, better nonce selection logic, and a message timeout after a certain number of blocks. See message status and mpool ls/show/rm commands for more.
π Chain syncing is faster
Chain is now faster due to use of bitswap sessions. Woohoo!
β Context deadline errors fixed
In the past, the context deadline was set artificially low for file transfer. This caused some large file transfers to time out, preventing storage deals from being completed. Thank you to @markwylde, @muronglaowang, @pengxiankaikai, @sandjj, and others for bug reports.
Refactors and Endeavors
π¦ FAST (Filecoin Automation & System Toolkit)
FAST is a common library of go-filecoin code that can be used in daemon testing, devnet initialization, and other applications like network randomization that involve managing nodes, running commands against them, and observing their state.
Using FAST, weβve developed localnet, a new tool to quickly and easily set up a local network for testing, debugging, development, and more. Want to give it a whirl? Check out the localnet README.
πΎ Porcelain/Plumbing refactor for node object
Previously, the node object contained both interfaces and internals for much of the core protocol. It was difficult to unit test due to many dependencies and complicated setup. Following the porcelain and plumbing pattern from Git, we have now decoupled the node object from many of its dependencies. We have also created a separate API for block, storage, and retrieval mining.
Changelog
A full list of all 200 PRs in this release can be found on Github.
Contributors
β€οΈ Huge thank you to everyone that made this release possible! By alphabetical order, here are all the humans who contributed issues and commits in go-filecoin
and rust-fil-proofs
to date:
- @aaronhenshaw
- @aboodman
- @AbelLaker
- @alanshaw
- @acruikshank
- @anacrolix
- @andychen1984
- @anorth
- @Byte-Doctor
- @chenminjuan
- @coderlane
- @comeradekingu
- @danigrant
- @dayou5168
- @dignifiedquire
- @diwufeiwen
- @ebuchman
- @eefahy
- @firmianavan
- @frrist
- @gmasgras
- @haoglehaogle
- @hsanjuan
- @imrehg
- @jaybutera
- @jbenet
- @jimpick
- @karalabe
- @kubuxu
- @lanzafame
- @laser
- @leinue
- @life-i
- @luca8991
- @madper
- @magik6k
- @markwylde
- @mburns
- @michellebrous
- @mikael
- @mishmosh
- @mslipper
- @muronglaowang
- @nanofortress
- @natoboram
- @nicola
- @ognots
- @olizilla
- @pacius
- @pengxiankaikai
- @pooja
- @porcuquine
- @phritz
- @pkrasam
- @pxrxingrui520
- @raulk
- @rafael81
- @richardlitt
- @rkowalick
- @rosalinekarr
- @sandjj
- @schomatis
- @shannonwells
- @sidka
- @stebalien
- @steven004
- @sywyn219
- @tbaut
- @thomas92911
- @travisperson
- @vmx
- @waynewyang
- @whyrusleeping
- @windstore
- @woshihanhaoniao
- @xcshuan
- @yangjian102621
- @yph152
- @zenground0
- @zhangkuicheng
- @zjoooooo
ππ½ Want to contribute?
Would you like to contribute to the Filecoin project and donβt know how? Here are a few places you can get started:
- Check out the Contributing Guidelines
- Look for issues with the
good-first-issue
label in go-filecoin and rust-fil-proofs - Join the community chat on Matrix/Slack, introduce yourself in #_fil-lobby, and let us know where you would like to contribute
π€ Do you have questions?
The best place to ask your questions about go-filecoin, how it works, and what you can do with it is at discuss.filecoin.io. We are also available at the community chat on Matrix/Slack.