diff options
author | Alex Browne <stephenalexbrowne@gmail.com> | 2018-06-07 04:43:29 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-07 04:43:29 +0800 |
commit | 785b9811f30869f01242ce9ff81c282bf7f5352f (patch) | |
tree | fe1615f0db90f76627bfb88874c19634321105bc /packages/devnet/README.md | |
parent | da3f783a9ff69b059b1a98f502d980660d6bacab (diff) | |
parent | 643c77ded08d3082aff7ae47063d40c9c1fdb677 (diff) | |
download | dexon-sol-tools-785b9811f30869f01242ce9ff81c282bf7f5352f.tar dexon-sol-tools-785b9811f30869f01242ce9ff81c282bf7f5352f.tar.gz dexon-sol-tools-785b9811f30869f01242ce9ff81c282bf7f5352f.tar.bz2 dexon-sol-tools-785b9811f30869f01242ce9ff81c282bf7f5352f.tar.lz dexon-sol-tools-785b9811f30869f01242ce9ff81c282bf7f5352f.tar.xz dexon-sol-tools-785b9811f30869f01242ce9ff81c282bf7f5352f.tar.zst dexon-sol-tools-785b9811f30869f01242ce9ff81c282bf7f5352f.zip |
Merge pull request #622 from 0xProject/geth-devnet-rebase-on-v2
Run contract tests against private Geth network
Diffstat (limited to 'packages/devnet/README.md')
-rw-r--r-- | packages/devnet/README.md | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/packages/devnet/README.md b/packages/devnet/README.md new file mode 100644 index 000000000..f0b165cbd --- /dev/null +++ b/packages/devnet/README.md @@ -0,0 +1,110 @@ +## 0x Devnet + +A private, single-node PoA Ethereum network for testing purposes only. It uses +Geth and the PoA implementation called "Clique". + +## Installation + +The devnet requires Docker to run (the latest version is recommended). + +In the package root directory, run: + +``` +docker build -t 0x-devnet . +``` + +## Usage + +To start the network, run: + +``` +docker run -it --rm -p 8501:8501 0x-devnet +``` + +Depending on your OS and how you installed docker, you may need to prefix any +docker commands with `sudo`. + +The Docker container exposes the JSON RPC API at port 8501, and this is the +primary way you are expected to interact with the devnet. The following +endpoints are supported: `personal,db,eth,net,web3,txpool,miner,debug`. + +You can stop the network with `docker stop` and it will automatically clean up +after itself. (`docker stop` typically requires you to use `docker ps` to find +the name of the currently running container). + +### Configuration + +The devnet network only has a single node and uses PoA instead of PoW. That +means that one node, called the "sealer", is the ultimate authority for +validating transactions and adding new blocks to the chain. Since there is no +PoW it also means that mining does not require significant computational +resources. You can learn more about PoA and the Geth-specific implementation +called "Clique" in [EIP-225](https://github.com/ethereum/EIPs/issues/225). + +The address of the "sealer" is `0xe8816898d851d5b61b7f950627d04d794c07ca37`. The +password associated with the account is "password" and the (encrypted) private +keys are visible in the **node0/keystore** directory. This account is already +"unlocked" in the Geth node by default, so you can do things like sign and send +transactions from this account using the JSON RPC endpoints directly. + +There are also a number of other addresses that have hard-coded starting +balances for testing purposes. You can see the details in the **genesis.json** +file. All of these accounts are also unlocked by default. + +### Additional JSON RPC Methods + +In addition to the +[standard JSON RPC methods](https://github.com/ethereum/wiki/wiki/JSON-RPC) and +the +[Geth Management API](https://github.com/ethereum/go-ethereum/wiki/Management-APIs) +The devnet node supports some additional JSON RPC methods: + +#### debug_increaseTime + +Increases the timestamp of the next mined block. + +##### Parameters + +`Number` - The number of seconds by which to increase the time offset. + +##### Returns + +`Number` - The total number of seconds by which the time offset has been +increased (this includes all calls to `debug_increaseTime`). + +##### Example + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"debug_increaseTime","params":[100],"id":67}' + +// Result +{ + "id":67, + "jsonrpc": "2.0", + "result": "5000" +} +``` + +### Mining + +The node will automatically (nearly instantly) mine a block whenever new +transactions are added to the transaction pool. If there are no transactions in +the pool, it will wait. + +To stop mining, use the +[`miner.stop`](https://github.com/ethereum/go-ethereum/wiki/Management-APIs#miner_stop) +method. + +To start mining again, you can use the +[`miner.start`](https://github.com/ethereum/go-ethereum/wiki/Management-APIs#miner_start) +JSON RPC method. + +## Contributing + +We strongly recommend that the community help us make improvements and determine +the future direction of the protocol. To report bugs within this package, please +create an issue in this repository. + +Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting +started. |