Bamboo is a programming language for Ethereum contracts. Bamboo makes state transition explicit and avoids reentrance problems by default. See manifest for the motivation, or tutorial if you want to deploy something first, or semantics if you need something resembling a definition.
The Bamboo compiler sometimes produces bytecode, which needs to be tested.
As preparation,
- install opam with OCaml 4.04.1
opam install bamboo
should installbamboo
.
When you check out this repository,
bamboo < src/parse/examples/006auction_first_case.bbo
produces a bytecode. Do not trust the output as the compiler still contains bugs probably.
bamboo --abi < src/parse/examples/006auction_first_case.bbo
prints ABI.
[{"type": "constructor", "inputs":[{"name": "_beneficiary", "type": "address"},{"name": "_bidding_time", "type": "uint256"},{"name": "_highest_bid", "type": "uint256"}], "name": "auction", "outputs":[], "payable": true},{"type":"fallback","inputs": [],"outputs": [],"payable": true}]
When you modify the OCaml source of Bamboo, you can try your version by
$ make
$ ./bamboo.native < src/parse/examples/006auction_first_case.bbo
- notice problems and point them out. create issues.
- test the bytecode like this, but using other examples. You might find bugs in the compiler.
- write new Bamboo code and test the compiler.
- join the Gitter channel.
- spread a rumor to your friends who are into programming languages.
Linden Scripting Language has similar organization of code according to state
s.