Programming on blockchains.
WHAT IT IS
A statically typed language for writing contracts executed on a blockchain.
WHAT MAKES IT UNUSUAL
Code, once deployed, frequently cannot be changed Every operation costs a fee paid by the caller Everything is public and inspectable Errors are irreversible and directly financial
WHAT THAT MEANS FOR PRACTICE
Correctness matters more than in almost any other context.
WHAT THE CLASSIC FAULTS ARE
Re-entrancy, where an external call re-enters before state is updated Arithmetic errors Unchecked external calls Access control omissions Reliance on values that can be manipulated
WHAT THE STANDARD DEFENCE IS
Updating internal state before making external calls.
WHAT THE PRACTICE REQUIRES
Extensive testing Established audited libraries rather than custom implementations Independent audit before deployment Careful upgrade patterns where changeability is needed
WHAT NOT TO DO
Deploy code handling value without independent review.
WHAT TO BE CLEAR ABOUT
The regulatory and legal position varies considerably and is changing.
Take advice on your position before building anything handling value.