Version headers
#
Scilla versionOur previous contract had no defined Scilla version and therefore wouldn't be valid if we tried to compile it.
caution
If you tried to compile the contract in it's current state you would be returned the error Scilla version number unspecified
.
To fix this, we declare the current Scilla version using the scilla_version
keyword. The variable appended is the Scilla version we are implementing in our contract.
Currently we are using scilla_version 0
scilla_version 0
contract IncrementingButton( contract_owner: ByStr20)
#
User defined librariesOur previous contract had no user library defined and therefore wouldn't be valid if we tried to compile it.
caution
If you tried to compile the previous contract, you would be returned the error After specifying a Scilla version number, either imports, a library or contract is expected.
To fix this, we declare the current library we are defining using the library
keyword. The variable appended is the library name we are implementing in our contract.
We will use our contract name for easier association, library MyFirstContract
.
In the library section, we will put global variables and functions which define our contract. We can refer to these from another contract.
note
A Scilla file with only a library definition is considered valid Scilla and is referred to as a .scillib
scilla_version 0
library IncrementingButton
contract IncrementingButton( contract_owner: ByStr20)
tip
IncrementingButton
now successfully compiles!
#
Builtin internal librariesThe Scilla standard library contains five libraries: BoolUtils.scilla
, IntUtils.scilla
, ListUtils.scilla
, NatUtils.scilla
and PairUtils.scilla.
As the names suggests these contracts implement utility operations for the Bool, Int, List, Nat and Pair types, respectively.
To use functions from the standard library in a contract, the relevant library file must be imported using the import
keyword followed by the library to be imported. To import more than one library, separate each library with a whitespace character.
Scilla supports deploying both libraries and contract, and each library or contract can import already deployed libraries.
note
We will omit the internal libraries from this IncrementingButton as they are not required.
scilla_version 0
import ListUtils IntUtils
library IncrementingButton
contract IncrementingButton( contract_owner: ByStr20)