A smart contract is a distributed software agent that stores its state in the UTXO ledger, and evolves with each request sent to the contract. Since the UTXO ledger is immutable, by extension the smart contract state is also immutable.
A committee of an arbitrary number of Wasp nodes runs a chain of smart contracts. The main purpose of the committee is to ensure consistent transition from the previous state to the next, according to the attached program. This ensures that the operation of smart contracts is distributed, fault-tolerant and leaderless.
The articles below explain how to run a Wasp node on the Pollen network, as well as concepts and architecture of ISCP and Wasp.
Disclaimer: Wasp node and articles is a work in progress, and most likely will always be. The software presented in this repository is not ready for use in commercial settings or whenever processing of critical data is involved.
- Go 1.15
- Access to a GoShimmer node for production operation
Note: The Wasp node requires the Goshimmer node to have the TXStream plugin enabled. Being an experimental plugin, it is currently disabled by default and can be enabled via configuration.
If the go install command is telling you it cannot find gcc you will need to install MinGW-w64. When you do make sure to select x86_64 architecture instead of the preselected i686 architecture. After installation make sure to add this folder to your PATH variable:
- Build the
waspbinary (Wasp node):
go build -tags rocksdb
- Build the
wasp-clibinary (CLI client):
go build -tags rocksdb ./tools/wasp-cli
Alternatively, build and install everything with
go install -tags rocksdb ./...
On Windows you will need to use
go install -tags rocksdb -buildmode=exe ./... instead
- Run all tests (including integration tests which may take several minutes):
go test -tags rocksdb -timeout 20m ./...
- Run only unit tests:
go test -tags rocksdb -short ./...
Note: integration tests require the
in the system path (i.e. you need to run
go install ./... before running
- Exploring IOTA Smart Contracts
- UTXO ledger and digital assets
- Core types
- On-chain accounts
- Wasp Publisher