1 Star 0 Fork 1

gitee_jz / go-filecoin

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

Filecoin (go-filecoin)

CircleCI User Devnet Release Nightly Devnet Release Staging Devnet Release

Filecoin implementation in Go, turning the world’s unused storage into an algorithmic market.

Questions or problems with go-filecoin? Ask the community first. Your problem may already be solved.

Want to connect to a devnet (developer network)? See the Usage section below.

Table of Contents

What is Filecoin?

Filecoin is a decentralized storage network that turns the world’s unused storage into an algorithmic market, creating a permanent, decentralized future for the web. Miners earn the native protocol token (also called “filecoin”) by providing data storage and/or retrieval. Clients pay miners to store or distribute data and to retrieve it. Check out How Filecoin Works for more.

WARNING: go-filecoin is a work in progress and is not ready for production use. See KNOWN_ISSUES for an outline of known vulnerabilities.

Install

👋 Welcome to Go Filecoin!

System Requirements

Filecoin can build and run on most Linux and MacOS systems with at least 8GB of RAM. Windows is not yet supported.

Install from Source

Clone the git repository:

mkdir -p ${GOPATH}/src/github.com/filecoin-project
git clone https://github.com/filecoin-project/go-filecoin.git ${GOPATH}/src/github.com/filecoin-project/go-filecoin

Now install the tools and dependencies listed below. If you have any problems building go-filecoin, see the Troubleshooting & FAQ Wiki page.

Install Go and Rust

The build process for go-filecoin requires:

  • Go >= v1.13
    • Installing Go for the first time? We recommend this tutorial which includes environment setup.
  • Rust >= v1.36.0 and cargo
  • pkg-config - used by go-filecoin to handle generating linker flags
    • Mac OS devs can install through brew brew install pkg-config

Due to our use of cgo, you'll need a C compiler to build go-filecoin whether you're using a prebuilt libsector_builder_ffi (our cgo-compatible rust-fil-proofs library) or building it yourself from source. If you want to use gcc (e.g. export CC=gcc) when building go-filecoin, you will need to use v7.4.0 or higher.

  • You must have libclang on you linker search path in order to build rust-fil-proofs from source. You can satisfy this requirement in most environments by installing Clang using your favorite package manager.

Install Dependencies

go-filecoin depends on some proofs code written in Rust, housed in the rust-fil-proofs repo and consumed as a submodule. You will need to have cargo and jq installed.

First we need to load all the submodules.

git submodule update --init --recursive

To install golangci-lint and other build and test dependencies (with precompiled proofs, recommended), run:

cd ${GOPATH}/src/github.com/filecoin-project/go-filecoin
FILECOIN_USE_PRECOMPILED_RUST_PROOFS=true go run ./build deps

Note: The first time you run deps can be slow as a ~1.6GB parameter file is either downloaded or generated locally in /var/tmp/filecoin-proof-parameters. Have patience; future runs will be faster.

Build, Run Tests, and Install

# First, build the binary
go run ./build build

# Then, run the unit tests.
go run ./build test

# Build and test can be combined!
go run ./build best

Other handy build commands include:

# Check the code for style and correctness issues
go run ./build lint

# Run different categories of tests by toggling their flags
go run ./build test -unit=false -integration=true -functional=true

# Test with a coverage report
go run ./build test -cover

# Test with Go's race-condition instrumentation and warnings (see https://blog.golang.org/race-detector)
go run ./build test -race

# Deps, Lint, Build, Test (any args will be passed to `test`)
go run ./build all

Note: Any flag passed to go run ./build test (e.g. -cover) will be passed on to go test.

If you have problems with the build, please see the Troubleshooting & FAQ Wiki page.

Manage Submodules Manually (optional)

If you're editing rust-fil-proofs, you need to manage the submodule manually. If you're not editing rust-fil-proofs you can relax: deps build (above) will do it for you. You may need to run deps again after pulling master if the submodule is updated by someone else (it will appear modified in git status).

To initialize the submodule:

cd ${GOPATH}/src/github.com/filecoin-project/go-filecoin
git submodule update --init

Later, when the head of the rust-fil-proofs master branch changes, you may want to update go-filecoin to use these changes:

git submodule update --remote

Note that updating the rust-fil-proofs submodule in this way will require a commit to go-filecoin (changing the submodule hash).

Usage

The Getting Started wiki page contains a simple sequence to get your Filecoin node up and running and connected to a devnet.

The Commands page contains further detail about specific commands and environment variables, as well as scripts for for setting up a miner and making a deal.

To see a full list of commands, run go-filecoin --help.

Advanced usage

Setting up a localnet

The localnet FAST binary tool allows users to quickly and easily setup a local network on the users computer. Please refer to the localnet README for more information. The localnet tool is only compatible when built from the same git ref as the targeted go-filecoin binary.

Contributing

We ❤️ all our contributors; this project wouldn’t be what it is without you! If you want to help out, please see CONTRIBUTING.md.

Check out the Go-Filecoin code overview for a brief tour of the code.

Community

Here are a few places to get help and connect with the Filecoin community:

Looking for even more? See the full rundown at filecoin-project/community.

Developer Networks

There are currently 3 developer networks (aka devnets) available for development and testing. These are subject to frequent downtimes and breaking changes. See Devnets in the wiki for a description of these developer networks and instructions for connecting your nodes to them.

License

The Filecoin Project is dual-licensed under Apache 2.0 and MIT terms:

Copyright (c) 2018 Filecoin Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

filecoin-project/go-filecoin 展开 收起
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/gitee_jz/go-filecoin.git
git@gitee.com:gitee_jz/go-filecoin.git
gitee_jz
go-filecoin
go-filecoin
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891