All Projects → pirapira → Bamboo

pirapira / Bamboo

Licence: apache-2.0
Bamboo see https://github.com/cornellblockchain/bamboo

Programming Languages

ocaml
1615 projects
language
365 projects

Projects that are alternatives of or similar to Bamboo

Augur
Augur - Prediction Market Protocol and Client
Stars: ✭ 294 (-2%)
Mutual labels:  ethereum, ethereum-contract
Armors Solidity
Armors-solidity is a framework to build secure smart contracts on Ethereum.
Stars: ✭ 184 (-38.67%)
Mutual labels:  ethereum, evm
Angular Truffle Starter Dapp
Angular CLI + Truffle Starter Dapp; write, compile & deploy smart contracts on Ethereum blockchains
Stars: ✭ 174 (-42%)
Mutual labels:  ethereum, ethereum-contract
Tokenbalance
Simple Ethereum API to get your ERC20 Token Balance along with useful information
Stars: ✭ 163 (-45.67%)
Mutual labels:  ethereum, ethereum-contract
Sputnikvm
A Blockchain Virtual Machine
Stars: ✭ 238 (-20.67%)
Mutual labels:  ethereum, evm
Eth Vue
Featured in Awesome Vue [https://github.com/vuejs/awesome-vue], a curated list maintained by vuejs of awesome things related to the Vue.js framework, and Awesome List [https://awesomelists.net/150-Vue.js/3863-Open+Source/18749-DOkwufulueze-eth-vue], this Truffle Box provides everything you need to quickly build Ethereum dApps that have authentication features with vue, including configuration for easy deployment to the Ropsten Network. It's also Gravatar-enabled. Connecting to a running Ganache blockchain network from Truffle is also possible -- for fast development and testing purposes. Built on Truffle 5 and Vue 3, eth-vue uses vuex for state management, vuex-persist for local storage of app state, and vue-router for routing. Authentication functionalities are handled by Smart Contracts running on the Ethereum blockchain.
Stars: ✭ 171 (-43%)
Mutual labels:  ethereum, ethereum-contract
Ethereum Graph Debugger
Ethereum solidity graph plain debugger. To have the whole picture when debugging.
Stars: ✭ 177 (-41%)
Mutual labels:  ethereum, ethereum-contract
Rattle
evm binary static analysis
Stars: ✭ 152 (-49.33%)
Mutual labels:  ethereum, evm
Evm Tools
Ethereum Virtual Machine tools and guide
Stars: ✭ 238 (-20.67%)
Mutual labels:  ethereum, evm
Remix Project
Remix is a browser-based compiler and IDE that enables users to build Ethereum contracts with Solidity language and to debug transactions.
Stars: ✭ 225 (-25%)
Mutual labels:  ethereum, evm
Evmone
Fast Ethereum Virtual Machine implementation
Stars: ✭ 162 (-46%)
Mutual labels:  ethereum, evm
Ruby Ethereum
A Ruby implementation of Ethereum.
Stars: ✭ 270 (-10%)
Mutual labels:  ethereum, evm
Basic Attention Token Crowdsale
Basic Attention Token
Stars: ✭ 160 (-46.67%)
Mutual labels:  ethereum, ethereum-contract
Ethabi
Encode and decode smart contract invocations
Stars: ✭ 172 (-42.67%)
Mutual labels:  ethereum, evm
Ico Contracts
Ethereum smart contracts that have been used during successful ICOs
Stars: ✭ 160 (-46.67%)
Mutual labels:  ethereum, ethereum-contract
Securify
[DEPRECATED] Security Scanner for Ethereum Smart Contracts
Stars: ✭ 177 (-41%)
Mutual labels:  ethereum, evm
Yearn Vaults
Yearn Vault smart contracts
Stars: ✭ 132 (-56%)
Mutual labels:  ethereum, ethereum-contract
Evmc
EVMC – Ethereum Client-VM Connector API
Stars: ✭ 137 (-54.33%)
Mutual labels:  ethereum, evm
Pyquarkchain
Python implementation of QuarkChain
Stars: ✭ 194 (-35.33%)
Mutual labels:  ethereum, evm
Monax
DEPRECATED. To be removed December, 2018 (use monax/bosmarmot)
Stars: ✭ 269 (-10.33%)
Mutual labels:  ethereum, evm

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].