Skip to content

Commit 0f5c204

Browse files
committed
dummy exchanges
1 parent ff4bb27 commit 0f5c204

11 files changed

+178
-290
lines changed

contracts/KyberNetwork.sol

+1
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ contract KyberNetwork {
254254

255255
function upgrade( address newAddress ) {
256256
// TODO
257+
newAddress; // unused warning
257258
throw;
258259
}
259260

contracts/KyberReserve.abi

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[{"constant":false,"inputs":[{"name":"sourceToken","type":"address"},{"name":"sourceAmount","type":"uint256"},{"name":"destToken","type":"address"},{"name":"destAddress","type":"address"},{"name":"validate","type":"bool"}],"name":"trade","outputs":[{"name":"","type":"bool"}],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"ETH_TOKEN_ADDRESS","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"depositToken","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"source","type":"address"},{"name":"dest","type":"address"}],"name":"getPairInfo","outputs":[{"name":"rate","type":"uint256"},{"name":"expBlock","type":"uint256"},{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"depositEther","outputs":[{"name":"","type":"bool"}],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"enable","type":"bool"}],"name":"enableTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tradeEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"sources","type":"address[]"},{"name":"dests","type":"address[]"},{"name":"conversionRates","type":"uint256[]"},{"name":"expiryBlocks","type":"uint256[]"},{"name":"vaildate","type":"bool"}],"name":"setRate","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_kyberNetwork","type":"address"},{"name":"_reserveOwner","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"origin","type":"address"},{"indexed":false,"name":"error","type":"uint256"},{"indexed":false,"name":"errorInfo","type":"uint256"}],"name":"ErrorReport","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"origin","type":"address"},{"indexed":false,"name":"source","type":"address"},{"indexed":false,"name":"sourceAmount","type":"uint256"},{"indexed":false,"name":"destToken","type":"address"},{"indexed":false,"name":"destAmount","type":"uint256"},{"indexed":false,"name":"destAddress","type":"address"}],"name":"DoTrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"source","type":"address"},{"indexed":false,"name":"dest","type":"address"},{"indexed":false,"name":"rate","type":"uint256"},{"indexed":false,"name":"expiryBlock","type":"uint256"}],"name":"SetRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"enable","type":"bool"}],"name":"EnableTrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"DepositToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"}]
1+
[{"constant":false,"inputs":[{"name":"sourceToken","type":"address"},{"name":"sourceAmount","type":"uint256"},{"name":"destToken","type":"address"},{"name":"destAddress","type":"address"},{"name":"validate","type":"bool"}],"name":"trade","outputs":[{"name":"","type":"bool"}],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"ETH_TOKEN_ADDRESS","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"depositToken","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"source","type":"address"},{"name":"dest","type":"address"}],"name":"getPairInfo","outputs":[{"name":"rate","type":"uint256"},{"name":"expBlock","type":"uint256"},{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"destination","type":"address"}],"name":"withdraw","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"depositEther","outputs":[{"name":"","type":"bool"}],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"kyberNetwork","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"enable","type":"bool"}],"name":"enableTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tradeEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"sources","type":"address[]"},{"name":"dests","type":"address[]"},{"name":"conversionRates","type":"uint256[]"},{"name":"expiryBlocks","type":"uint256[]"},{"name":"vaildate","type":"bool"}],"name":"setRate","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"reserveOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_kyberNetwork","type":"address"},{"name":"_reserveOwner","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"origin","type":"address"},{"indexed":false,"name":"error","type":"uint256"},{"indexed":false,"name":"errorInfo","type":"uint256"}],"name":"ErrorReport","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"origin","type":"address"},{"indexed":false,"name":"source","type":"address"},{"indexed":false,"name":"sourceAmount","type":"uint256"},{"indexed":false,"name":"destToken","type":"address"},{"indexed":false,"name":"destAmount","type":"uint256"},{"indexed":false,"name":"destAddress","type":"address"}],"name":"DoTrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"source","type":"address"},{"indexed":false,"name":"dest","type":"address"},{"indexed":false,"name":"rate","type":"uint256"},{"indexed":false,"name":"expiryBlock","type":"uint256"}],"name":"SetRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"enable","type":"bool"}],"name":"EnableTrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"DepositToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"destination","type":"address"}],"name":"Withdraw","type":"event"}]

contracts/KyberReserve.sol

+14-9
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ pragma solidity ^0.4.8;
33
import "./ERC20Interface.sol";
44

55
contract KyberReserve {
6-
address reserveOwner;
7-
address kyberNetwork;
6+
address public reserveOwner;
7+
address public kyberNetwork;
88
ERC20 constant public ETH_TOKEN_ADDRESS = ERC20(0x00eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee);
99
uint constant PRECISION = (10**18);
1010
bool public tradeEnabled;
@@ -211,15 +211,19 @@ contract KyberReserve {
211211
}
212212

213213
event DepositToken( ERC20 token, uint amount );
214+
function() payable {
215+
DepositToken( ETH_TOKEN_ADDRESS, msg.value );
216+
}
214217
function depositEther( ) payable returns(bool) {
218+
/*
215219
if( msg.sender != reserveOwner ) {
216220
// sender must be reserve owner
217221
ErrorReport( tx.origin, 0x840000000, uint(msg.sender) );
218222
if( msg.value > 0 ) {
219223
if( ! msg.sender.send(msg.value) ) throw;
220224
}
221225
return false;
222-
}
226+
}*/
223227

224228
ErrorReport( tx.origin, 0, 0 );
225229

@@ -228,11 +232,12 @@ contract KyberReserve {
228232
}
229233

230234
function depositToken( ERC20 token, uint amount ) returns(bool) {
235+
/*
231236
if( msg.sender != reserveOwner ) {
232237
// sender must be reserve owner
233238
ErrorReport( tx.origin, 0x850000000, uint(msg.sender) );
234239
return false;
235-
}
240+
}*/
236241

237242
if( token.allowance( msg.sender, this ) < amount ) {
238243
// allowence is smaller then amount
@@ -251,25 +256,25 @@ contract KyberReserve {
251256
}
252257

253258

254-
event Withdraw( ERC20 token, uint amount );
255-
function withdraw( ERC20 token, uint amount ) returns(bool) {
259+
event Withdraw( ERC20 token, uint amount, address destination );
260+
function withdraw( ERC20 token, uint amount, address destination ) returns(bool) {
256261
if( msg.sender != reserveOwner ) {
257262
// sender must be reserve owner
258263
ErrorReport( tx.origin, 0x860000000, uint(msg.sender) );
259264
return false;
260265
}
261266

262267
if( token == ETH_TOKEN_ADDRESS ) {
263-
if( ! reserveOwner.send(amount) ) throw;
268+
if( ! destination.send(amount) ) throw;
264269
}
265-
else if( ! token.transfer(reserveOwner,amount) ) {
270+
else if( ! token.transfer(destination,amount) ) {
266271
// transfer to reserve owner failed
267272
ErrorReport( tx.origin, 0x860000001, uint(token) );
268273
return false;
269274
}
270275

271276
ErrorReport( tx.origin, 0, 0 );
272-
Withdraw( token, amount );
277+
Withdraw( token, amount, destination );
273278
}
274279

275280

contracts/MockCenteralBank.abi

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdrawEther","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"depositEther","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"}]

contracts/MockCenteralBank.sol

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
pragma solidity ^0.4.10;
2+
3+
import "./ERC20Interface.sol";
4+
5+
6+
contract MockCenteralBank {
7+
address public owner;
8+
9+
function MockCenteralBank() {
10+
owner = msg.sender;
11+
}
12+
13+
function withdrawEther( uint amount ) {
14+
if( tx.origin != owner ) throw;
15+
16+
msg.sender.transfer(amount);
17+
}
18+
19+
function withdrawToken( ERC20 token, uint amount ) {
20+
if( tx.origin != owner ) throw;
21+
22+
token.transfer(msg.sender,amount);
23+
}
24+
25+
function() payable {
26+
27+
}
28+
29+
function depositEther() payable {
30+
// just to simplify interaction with testrpc
31+
}
32+
}
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[{"constant":true,"inputs":[],"name":"ETH_TOKEN_ADDRESS","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"srcAmount","type":"uint256"},{"name":"dest","type":"address"},{"name":"destAmount","type":"uint256"}],"name":"convert","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"tokenAmount","type":"uint256"},{"name":"destination","type":"address"}],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"bank","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"exchange","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"inputs":[{"name":"_exchange","type":"string"},{"name":"_bank","type":"address"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"}]
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
pragma solidity ^0.4.10;
2+
3+
import "./ERC20Interface.sol";
4+
5+
import "./MockCenteralBank.sol";
6+
7+
contract MockExchangeDepositAddress {
8+
string public exchange;
9+
MockCenteralBank public bank;
10+
address owner;
11+
ERC20 constant public ETH_TOKEN_ADDRESS = ERC20(0x00eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee);
12+
13+
function MockExchangeDepositAddress( string _exchange, MockCenteralBank _bank ){
14+
exchange = _exchange;
15+
bank = _bank;
16+
owner = msg.sender;
17+
}
18+
19+
function() payable {
20+
21+
}
22+
23+
function convert( ERC20 src, uint srcAmount, ERC20 dest, uint destAmount ) {
24+
if( tx.origin != owner ) throw;
25+
26+
if( src == ETH_TOKEN_ADDRESS ) {
27+
bank.transfer(srcAmount);
28+
}
29+
else {
30+
src.transfer(bank,srcAmount);
31+
}
32+
33+
34+
if( dest == ETH_TOKEN_ADDRESS ) {
35+
bank.withdrawEther(destAmount);
36+
}
37+
else {
38+
bank.withdrawToken(dest,destAmount);
39+
}
40+
}
41+
42+
function withdraw( ERC20 token, uint tokenAmount, address destination ) {
43+
if( tx.origin != owner ) throw;
44+
45+
if( token == ETH_TOKEN_ADDRESS ) {
46+
destination.transfer(tokenAmount);
47+
}
48+
else {
49+
token.transfer(destination, tokenAmount );
50+
}
51+
}
52+
}

migrations/1_initial_migration.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
var Migrations = artifacts.require("./Migrations.sol");
22

33
module.exports = function(deployer) {
4-
deployer.deploy(Migrations);
4+
// deployer.deploy(Migrations);
55
};

migrations/2_deploy_contracts.js

-47
This file was deleted.

0 commit comments

Comments
 (0)