The Counter Contract

โ€‹๐Ÿ“ The Code

Smart contracts are put at the contracts folder. Create the contract folder using:

mkdir contracts

Placing smart contracts in the contracts folder is a convention of truffle. You can specify a different directory by modifying truffle configuration. Checkout the conracts_directory section in truffles document.

Once created the contracts folder , create the Counter.sol file with contents below:

Counter.sol
pragma solidity >=0.5.0 <0.7.0;
โ€‹
contract Counter {
uint32 public current_value;
โ€‹
function inc() public {
require(current_value < 10000, "Counter: max value");
current_value = current_value + 1;
}
โ€‹
function dec() public {
require(current_value > 0, "Counter: min value");
current_value = current_value - 1;
}
}

โ€‹๐ŸŒŸ Explain

The contract code is quite self explain:

  • A state variable current_value which is an unsigned integer.

  • inc() method, which increase the current_value by one.

  • dec() method, which decrease the current_value by one.

  • current_value has a bound of [0, 10000] which was checked in inc and dec methods.

โ€‹๐Ÿš— Test out

Run command truffle compile, it will find and compiles the Counter contract. you should looks outputs like:

Compiling your contracts...
===========================
> Compiling ./contracts/Counter.sol
> Artifacts written to ~/counter-dapp/build/contracts
> Compiled successfully using:
- solc: 0.5.2+commit.1df8f40c.Emscripten.clang

Truffle command will download solidity compiler at the first time. There could be some messages related to the compiler setup. It's normal.

โ€‹