Dutch X
Collection of smart contracts for the Gnosis DutchX.
Install
Install requirements with npm:
npm install
Testing
Start the TestRPC with bigger funding than usual, which is required for the tests:
npm run rpc
Please install at least node version >=7 for async/await
for a correct execution
Run all tests
truffle test -s
The flag -s runs the tests in a silence mode. Additionally the flag -g can be added to plot the gas costs per test.
Compile and Deploy
These commands apply to the RPC provider running on port 8545. You may want to have TestRPC running in the background. They are really wrappers around the corresponding Truffle commands.
Compile all contracts to obtain ABI and bytecode:
truffle compile --all
Migrate all contracts:
truffle migrate --network NETWORK-NAME
Network Artifacts
Get network artifacts from the networks.json file:
node scripts/inject_artifacts.js
node scripts/extract_artifacts.js
Documentation
There is a copy version hosted online at https://drive.google.com/file/d/1OojAb6ogvQKVolkGDNVY1Pu74DbTNET6/view
You may want to download the pdf for external hyperlinks to work.
Auction state-diagram overview:
There is a copy version hosted online at https://drive.google.com/file/d/1hWHtf2_GnBhtb85Yj7I7Xe3mF6jPe08U/view
PriceOracle
All variables of the smart contracts are public and can easily be access from other smartcontracts. This allows other smartcontracts to calculate specific prices. But the smartcontracts can also call:
getPriceInPastAuction(address token1, address token2, uint auctionIndex)
getPriceInPastAuction() gives a good estimate for market price [token1]/[token2] by averaging the the prices of [token1]:[token2] and [token2]:[token1] of the auctions with auctionIndex.
Contributors