Smart Contracts
Note that most example smart contracts only show the concepts involved in
creating them but should not be taken as fully functional code yet.
Sample smart contracts:
-
dividend
Allows for setting up automatic dividend dispersal to a number of recipients
according to distribution factors per recipient. Any tokens sent to this
contract will automatically be divided accordingly over these recipients.
-
donatewithfeedback
Allows for donations and registers feedback associated with the donation. The
contract owner can at any point decide to withdraw donated funds from the
contract.
-
erc20
Experimental implementation of an ERC20 smart contract as first introduced by
Ethereum.
-
fairauction
Allows an auctioneer to auction a number of tokens. The contract owner takes a
small fee. The contract guarantees that the tokens will be sent to the highest
bidder, and that the losing bidders will be completely refunded. Everyone
involved stakes their tokens, so there is no possibility for anyone to cheat.
-
fairroulette
A simple betting contract. Betters can bet on a random color and after a
predefined time period the contract will automatically pay the total bet
amount proportionally to the bet size of the winners.
-
helloworld
ISCP version of the ubiquitous "Hello, world!" program.
-
inccounter
A simple test contract. All it does is increment a counter value. It is also
used to test basic ISCP capabilities, like persisting state, batching
requests, and sending (time-locked) requests from a contract.
-
testcore
Helper smart contract to test the ISCP core functionality.
-
testwasmlib
Helper smart contract to test the WasmLib functionality.
-
tokenregistry
Mints and registers colored tokens in a token registry.
How to create your own Rust smart contracts
Prerequisites:
- install the latest Rust tools, you can
find them here.
- When installing under Windows the Rust installation program may tell you that
you need the Visual Studio C++ Build Tools, which you can
download here.
Note that you only need to install the C++ build tools, which is the top-left
selection.
- install Wasm-pack, which can be
downloaded here.
Building a Rust smart contract is very simple when using the Rust plugin in any
IntelliJ based development environment. Open the contracts/rust sub folder in
your IntelliJ, which then provides you with the Rust workspace.
The easiest way to create a new contract is to copy the helloworld folder to a
properly named new folder within the rust sub folder. Next, change the fields
in the first section of the new folder's cargo.toml file to match your
preferences. Make sure the package name equals the folder name. Finally, add the
new folder to the workspace in the cargo.toml in the contracts/rust folder.
To build the new smart contract select Run->Edit Configurations. Add a new
configuration based on the wasmpack template, type the name of the new
configuration, type the command build
, and select the new folder as the
working directory. You can now run this configuration to compile the smart
contract directly to Wasm. Once compilation is successful you will find the
resulting Wasm file in the pkg sub folder of the new folder.