Official Golang implementation of the IoTeX protocol.
Welcome to the official Go implementation of IoTeX protocol! IoTeX is building the next generation of the decentralized blockchain protocol for powering real-world information marketplace in a decentralized-yet-scalable way. Refer to IoTeX whitepaper for details.
Please visit https://iotex.io official website or IoTeX onboard pack to learn more about IoTeX network.
Please visit IoTeX Delegate Manual for detailed setup process.
Components | Version | Description |
---|---|---|
Golang | ≥ 1.18.5 | Go programming language |
Protoc | ≥ 3.6.0 | Protocol buffers, required only when you rebuild protobuf messages |
Download the code to your desired local location (doesn't have to be under $GOPATH/src
)
git clone git@github.com:iotexproject/iotex-core.git
cd iotex-core
If you put the project code under your $GOPATH\src
, you will need to set up an environment variable
export GO111MODULE=on
set GO111MODULE=on (for windows)
Build the project for general purpose (server, ioctl) by
make
Build the project for broader purpose (server, ioctl, injector...) by
make all
If the dependency needs to be updated, run
go get -u
go mod tidy
If you want learn more advanced usage about go mod
, you can find out here.
Run unit tests only by
make test
Build the docker image by
make docker
Start (or resume) a standalone server to operate on an blockchain by
make run
Restart the server from a clean state by
make reboot
If "make run" fails due to corrupted or missing state database while block database is in normal condition, e.g., failing to get factory's height from underlying DB, please try to recover state database by
make recover
Then, "make run" again.
Users could interact with iotex blockchain by
ioctl [command]
Refer to CLI document for more details.
We are glad to have contributors out of the core team; contributions, including (but not limited to) style/bug fixes, implementation of features, proposals of schemes/algorithms, and thorough documentation, are welcomed. Please refer to our contribution guideline for more information. Development guide documentation is here.
For any major protocol level changes, we use IIP to track the proposal, decision and etc.
Thank you for considering contributing to the IoTeX framework!
This project is licensed under the Apache License 2.0.