-
Notifications
You must be signed in to change notification settings - Fork 490
DApp Development
You can easily create a sample working DApp with the following:
$ embark demo
$ cd embark_demoTo run the ethereum node for development purposes simply run:
$ embark blockchainBy default embark blockchain will mine a minimum amount of ether and will only mine when new transactions come in. This is quite usefull to keep a low CPU. The option can be configured at config/blockchain.yml
Then, in another command line:
$ embark runThis will automatically deploy the contracts, update their JS bindings and deploy your DApp to a local server at http://localhost:8000
Note that if you update your code it will automatically be re-deployed, contracts included. There is no need to restart embark, refreshing the page on the browser will do.
$ embark new AppName
$ cd AppName app/
|___ contracts/ #solidity contracts
|___ html/
|___ css/
|___ js/
config/
|___ blockchain.yml #environments configuration
|___ contracts.yml #contracts configuration
|___ server.yml #server configuration
spec/
|___ contracts/ #contracts testsSolidity files in the contracts directory will automatically be deployed with embark run. Changes in any files will automatically be reflected in app, changes to contracts will result in a redeployment and update of their JS Bindings
Embark will automatically take care of deployment for you and set all needed JS bindings. For example, the contract below:
# app/contracts/simple_storage.sol
contract SimpleStorage {
uint storedData;
function set(uint x) {
storedData = x;
}
function get() constant returns (uint retVal) {
return storedData;
}
}Will automatically be available in Javascript as:
# app/js/index.js
SimpleStorage.set(100);
SimpleStorage.get();You can specify for each contract and environment its gas costs and arguments:
# config/contracts.yml
development:
SimpleStorage:
gas_limit: 500000
gas_price: 10000000000000
args:
- 100
...If you are using multiple contracts, you can pass a reference to another contract as $ContractName, Embark will automatically replace this with the correct address for the contract.
# config/contracts.yml
development:
SimpleStorage:
args:
- 100
- $MyStorage
MyStorage:
args:
- "initial string"
MyMainContract:
args:
- $SimpleStorage
...