STATUS: This is BETA software. Use it with caution. Please send us feedback using github issues and code contributions using pull requests.
CoMakery Ethereum helps you create and administer collaborative token based projects. It consists of Ethereum Smart Contracts, blockchain deployment scripts, and a Node REST API server using the Truffle Javascript framework. The smart contracts deployed can be used by talking to the CoMakery Ethereum node server, through an Ethereum Wallet, through your own software which communicates with an Ethereum node via RPC, or through the CoMakery.com site.
The DynamicToken smart contract conforms to the Ethereum Solidity ERC 20 Standard Token interface for easy integration with exchanges and other smart contracts. It's the same Token interface used by the Standard DAO.
Each Dynamic Token issued increases the total supply of tokens. This is an alternative to pre-issuing all tokens to a single account.
CoMakery Ethereum is currently Beta software. Use it with caution and at your own risk.
This software currently implements the Dynamic Token, deployment scripts, and a simple REST server that communicates to an Ethereum node (e.g. geth or parity).
Future features planned include:
- Integration with multiple DAO governance approaches such as Backfeed, The Standard DAO, and more classical Access Control DAOs.
- Token exchange smart contracts suitable for integration with token based crowd sale platforms
- Licenses suitable for open innovation
This software is released under an Open Source MIT licensed. It can be extended and used for commercial or non-commercial purposes.
cp truffle-overrides.js.example truffle-overrides.js # edit as desired
# install yarn: https://yarnpkg.com
yarn install
Recommended: run testrpc server for dev and test (fast):
yarn testrpc # run in separate window
yarn test
Test migrations
yarn truffle migrate -- --network development
This starts an express server which receives simple calls and executes contract calls:
yarn dev:server # run in separate window
Add a local api key to your .env
file
API_KEY_WHITELIST='aaa'
Start the server with
bin/server
Post contract with parameters
curl -H "Content-Type: application/json" -X POST -d '{"maxSupply": 101, "apiKey": "aaa" }' http://localhost:3906/project
Returns the {"contractAddress":"0x..."}
When to throw, and when to return success -> false?
- throw if the user does not have access to a function, or other "security violation"
- throw on integer overflow / underflow
- return false for other failures (normal control flow)