Boost comes with a client executable, boost
, that can be used to send a deal proposal to a Boost server.
The client is intentionally minimal meant for developer testing. It is not a full featured client and is not intended to be so. It does not require a daemon process, and can be pointed at any public Filecoin API for on-chain operations. This means that users of the client do not need to run a Filecoin node that syncs the chain.
There are a number of public Filecoin APIs ran by a number of organisations, such as Infura, Glif, etc. For test purposes you can try:
export FULLNODE_API_INFO=https://api.node.glif.io
The init
command
Creates a Boost client repository (at ~/.boost-client
by default)
Generates a libp2p peer ID key
Generates a wallet for on-chain operations and outputs the wallet address
To make deals you will need to: a) add funds to the wallet b) add funds to the market actor for that wallet address
Currently, we don't distribute binaries, so you will have to build from source.
When a storage provider accepts the deal, you should see output of the command similar to:
You can check the deal status
with the following command:
If you are already running a standalone markets process, follow the guide at Migrate a Lotus markets service process to Boost
If you are already running a monolith lotus-miner instance, follow the guide at Migrate a monolith lotus-miner to Boost
1. Make sure you have a Lotus node and miner running
2. Create and send funds to two new wallets on the lotus node to be used for Boost
Boost currently uses two wallets for storage deals:
The publish storage deals wallet - This wallet pays the gas cost when Boost sends the PublishStorageDeals
message.
The deal collateral wallet - When the Storage Provider accepts a deal, they must put collateral for the deal into escrow. Boost moves funds from this wallet into escrow with the StorageMarketActor
.
3. Set the publish storage deals wallet as a control wallet.
4. Create and initialize the Boost repository
If you are already running a Lotus markets service process, you should
run boostd migrate
instead of boostd init
See section Migrate a Lotus markets service process to Boost for more details.
Boost keeps all data in a directory called the repository. By default the repository is at ~/.boost
. To use a different location pass the --boost-repo
parameter (must precede any particular command verb, e.g. boostd --boost-repo=/path init
).
Export the environment variables needed for boostd init
to connect to the lotus daemon and lotus miner.
Export environment variables that point to the API endpoints for the sealing and mining processes. They will be used by the boost
node to make JSON-RPC calls to the mining/sealing/proving
node.
Run boostd init
to create and initialize the repository:
--api-sealer
is the API info for the lotus-miner instance that does sealing
--api-sector-index
is the API info for the lotus-miner instance that provides storage
--max-staging-deals-bytes
is the maximum amount of storage to be used for downloaded files (once the limit is reached Boost will reject subsequent incoming deals)
5. Update ulimit
file descriptor limit if necessary. Boost deals will fail if the file descriptor limit for the process is not set high enough. This limit can be raised temporarily before starting the Boost process by running the command ulimit -n 1048576
. We recommend setting it permanently by following the Permanently Setting Your ULIMIT System Value guide.
6. Make sure that the correct <PEER_ID> and <MULTIADDR> for your SP is set on chain, given that boost init
generates a new identity. Use the following commands to update the values on chain:
<MULTIADDR> should be the same as the ListenAddresses
you set in the Libp2p
section of the config.toml of Boost
<PEER_ID> can be found in the output of boostd net id
command
7. Run the boostd
service, which will start:
libp2p listeners for storage and retrieval
the JSON RPC API
the graphql interface (used by the react front-end)
the web server for the react front-end
In your firewall you will need to open the ports that libp2p listens on, so that Boost can receive storage and retrieval deals.
See the Libp2p
section of config.toml
in the Repository
When you build boostd
using make build
the react app is also part of the process. You can skip this section.
Following steps are to be used only in case you are building binary and react app separately.
Build the React frontend
Open the Web UI
Open http://localhost:8080 in your browser.
To access a web UI running on a remote server, you can open an SSH tunnel from your local machine:
Boost API can be accessed by setting the environment variable BOOST_API_INFO
same as LOTUS_MARKET_INFO
.
You can also directly evaluate the boostd auth
command with:
This section details how to get started with Boost if you are a storage provider or as a client
The Boost source code repository is hosted at github.com/filecoin-project/boost
Boost Version | Lotus Version | Golang Version |
---|---|---|
Please make sure you have installed: Go - following https://go.dev/learn/
Rust - following https://www.rust-lang.org/tools/install
Node 16.x
Linux / Ubuntu
MacOS
Depending on your architecture, you will want to export additional environment variables:
Please ignore any output or onscreen instruction during the npm build
unless there is an error.
Please ignore any output or onscreen instruction during the npm build
unless there is an error.
To build boost for calibnet, please complete the above pre-requisites and build using the following commands.
1. Make sure that Boost daemon is not running. Run the below commands to upgrade the binary.
2. Please ignore any onscreen instruction during the npm build
unless there is an error.
3. Start the boost daemon.
1. Make sure that Boost daemon is not running. Run the below commands to upgrade the binary.
2. Please ignore any onscreen instruction during the npm build
unless there is an error.
3. Start the boost daemon.
v1.5.0
v1.18.0
1.18.x
v1.5.1, v1.5.2, v1.5.3
v1.18.0, v1.19.0
1.18.x
v1.6.0, v1.6.1, v1.6.2-rc1
v1.20.x
1.18.x
v1.6.3, v1.6.4
v1.22.x
1.18.x
v1.6.2-rc2, v1.7.0-rc1
v1.21.0-rc1, v1.21.0-rc2
1.20.x
v1.7.0, v1.7.1, v1.7.2
v1.7.3, v1.7.4
v1.23.x
1.20.x