GitXplorerGitXplorer
p

bamboo

public
323 stars
40 forks
50 issues

Commits

List of commits on branch master.
Verified
1cca98e0b6d2579fe32885e66aafd0f5e25d9eb5

Update README.md

ppirapira committed 6 years ago
Verified
bd27f8dfdb6f020ab1b24657e8dcb9624604333b

Merge pull request #291 from iurimatias/master

ppirapira committed 7 years ago
Verified
e627559ffd61672e42ccb1dc674a0597bf329d77

Add Embark Plugin instructions to readme

iiurimatias committed 7 years ago
Verified
c2e048b8d29c841193740e8e96cb91607758cb57

Merge pull request #290 from pirapira/remove-parser

ppirapira committed 7 years ago
Verified
33ec3d8885ae75908ceb45a395488762bcad9eda

Remove a parser-generator-generated file

ppirapira committed 7 years ago
Verified
815af821bfbefdc120e1f6ee4b3a1f7fbf568ebe

Merge pull request #287 from pirapira/submitted-opam

ppirapira committed 7 years ago

README

The README file for this repository.

Bamboo: a language for morphing smart contracts

Cornell Blockchain says they can now maintain the Bamboo compiler. https://github.com/CornellBlockchain/bamboo


Join the chat at https://gitter.im/bbo-dev/Lobby

Build Status

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.

Example Bamboo Code

Compiler

The Bamboo compiler sometimes produces bytecode, which needs to be tested.

As preparation,

  • install opam with OCaml 4.04.1
  • opam install bamboo should install bamboo.

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}]

Developing Bamboo

To try Bamboo in your local environment, run make dep from the project folder. That should install all dependencies. Once the installation process is done, run eval $(opam config env) and then you can build all targets using make, and run the tests with make test.

When you modify the OCaml source of Bamboo, you can try your version by

$ make
$ ./lib/bs/native/bamboo.native < src/parse/examples/006auction_first_case.bbo

Embark

An Embark plugin for Bamboo is available. To use it, first install Embark and add then add the plugin to your DApp.

npm install -g embark
embark new AppName
cd AppName
npm install embark-bamboo --save

then add embark-bamboo to the plugins section in embark.json:

  "plugins": {
    "embark-bamboo": {}
  }

Afterwards Embark will recognize .bbo files and compile them with Bamboo.

How to Contribute

  • 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.

Related Work

Linden Scripting Language

Linden Scripting Language has similar organization of code according to states.

Obsidian

Obsidian is another programming language that models smart contracts as state machines. Obsidian even tracks states of the contracts statically.