This is an intermediate series for learning Solidity and smart contract development. You will explore technicalities from syntax edgecases, to assembly in the EVM, to smart contract coding conventions, all through test driven development.
“If your mind is empty, it is always ready for anything, it is open to everything. In the beginner’s mind there are many possibilities, but in the expert’s mind there are few.”
Visbility modifiers: public, private, external, etc.
Getter modifiers: view, pure, constant
Transactions details (in progress)
address & how its computed
data types: sender, value, gas, this
async return values
Javascript client (in progress)
events
error handling: require, asserts
free getter functions
constructing send / call fns
Design patterns (in progress)
interfaces
libraries, ERC libs
factory patterns
Security (in progress)
ownership
overflow, underflow
re-entry
tx.origin
delegatecall: scope
storage hacks
Solidity Assembly (in progress)
bytecode & opcodes
Directions
How to Setup
Clone the repo:
git clone https://github.com/nczhu/solidity-koans.git
Install dependencies:
npm install -g truffle ganache-cli
Start Ganache: ganache-cli
In a new tab, check out the /test directory, where each test represents a koan. To get started with the easiest (and first) Koan, run:
truffle test ./test/Test_assert_1.sol
How to Tackle Each Koan
Each test is initially incomplete, e.g.:
function test_should_return_true() public {
Assert.isTrue(__, "should return true");
}
Run each level with: truffle test ./test/Test_FILENAME
Tests will fail with error messages, e.g.:
2) Test_Assert_1
test_should_return_true::
Error: should return true
In your editor, replace __ with the correct values or code, e.g.:
function test_should_return_true() public {
Assert.isTrue(true, "should return true");
}
请发表评论