@gnosis.pm/dutch-exchange-smartcontracts v0.4.9
Dutch X
Collection of smart contracts for the Gnosis DutchX.
Install
Install requirements with npm:
npm installTesting
Start the TestRPC with bigger funding than usual, which is required for the tests:
npm run rpcPlease install at least node version >=7 for async/await for a correct execution
Run all tests
truffle test -sThe 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 --allMigrate all contracts:
truffle migrate --network NETWORK-NAMENetwork Artifacts
Get network artifacts from the networks.json file:
node scripts/inject_artifacts.jsExtracting current network artifacts into networks.json file:
node scripts/extract_artifacts.jsDocumentation
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.
