Advertisement
Guest User

Untitled

a guest
Jul 18th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.89 KB | None | 0 0
  1. /* eslint-disable */
  2. import test from "ava";
  3. import web3 from "../../utils/lib/web3";
  4. import deployEnvironment from "../../utils/deploy/contracts";
  5. import getAllBalances from "../../utils/lib/getAllBalances";
  6. import {getSignatureParameters, getTermsSignatureParameters} from "../../utils/lib/signing";
  7. import {updateCanonicalPriceFeed} from "../../utils/lib/updatePriceFeed";
  8. import {deployContract, retrieveContract} from "../../utils/lib/contracts";
  9. import governanceAction from "../../utils/lib/governanceAction";
  10.  
  11. const environmentConfig = require("../../utils/config/environment.js");
  12. const BigNumber = require("bignumber.js");
  13.  
  14. const environment = "development";
  15. const config = environmentConfig[environment];
  16.  
  17. // hoisted variables
  18. let accounts;
  19. let deployed = {};
  20. let opts;
  21. let minimalRecordResolution = 2;
  22. let maxPerBlockImbalance = 4000;
  23. let validRateDurationInBlocks = 5100;
  24. let precisionUnits = (new BigNumber(10).pow(18));
  25. let ethAddress = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
  26. let maxTotalImbalance = maxPerBlockImbalance * 12;
  27.  
  28. //base buy and sell rates (prices)
  29. let baseBuyRate1 = [];
  30. let baseBuyRate2 = [];
  31. let baseSellRate1 = [];
  32. let baseSellRate2 = [];
  33.  
  34. //compact data.
  35. let sells = [];
  36. let buys = [];
  37. let indices = [];
  38. let compactBuyArr = [];
  39. let compactSellArr = [];
  40.  
  41. //quantity buy steps
  42. let qtyBuyStepX = [0, 150, 350, 700, 1400];
  43. let qtyBuyStepY = [0, 0, -70, -160, -3000];
  44.  
  45. //imbalance buy steps
  46. let imbalanceBuyStepX = [-8500, -2800, -1500, 0, 1500, 2800, 4500];
  47. let imbalanceBuyStepY = [ 1300, 130, 43, 0, 0, -110, -1600];
  48.  
  49. //sell
  50. //sell price will be 1 / buy (assuming no spread) so sell is actually buy price in other direction
  51. let qtySellStepX = [0, 150, 350, 700, 1400];
  52. let qtySellStepY = [0, 0, 120, 170, 3000];
  53.  
  54. //sell imbalance step
  55. let imbalanceSellStepX = [-8500, -2800, -1500, 0, 1500, 2800, 4500];
  56. let imbalanceSellStepY = [-1500, -320, -75, 0, 0, 110, 650];
  57.  
  58. function bytesToHex(byteArray) {
  59. let strNum = toHexString(byteArray);
  60. let num = '0x' + strNum;
  61. return num;
  62. };
  63.  
  64. function toHexString(byteArray) {
  65. return Array.from(byteArray, function(byte) {
  66. return ('0' + (byte & 0xFF).toString(16)).slice(-2);
  67. }).join('')
  68. };
  69.  
  70. test.before(async () => {
  71. accounts = await web3.eth.getAccounts();
  72. opts = { from: accounts[0], gas: config.gas, gasPrice: config.gasPrice };
  73. deployed.ConversionRates = await deployContract(
  74. "ConversionRates",
  75. opts,
  76. [accounts[0]]
  77. );
  78. deployed.TokenA = await deployContract("TestToken", opts, ["Test", "T1", 18]);
  79. deployed.KGTToken = await deployContract("TestToken", opts, ["KGT", "KGT", 18]);
  80. await deployed.ConversionRates.methods.setValidRateDurationInBlocks(validRateDurationInBlocks).send();
  81. await deployed.ConversionRates.methods.addToken(deployed.TokenA.options.address).send();
  82. await deployed.ConversionRates.methods.setTokenControlInfo(deployed.TokenA.options.address, minimalRecordResolution, maxPerBlockImbalance, maxTotalImbalance).send();
  83. await deployed.ConversionRates.methods.enableTokenTrade(deployed.TokenA.options.address).send();
  84. deployed.KyberNetwork = await deployContract(
  85. "KyberNetwork",
  86. opts,
  87. [accounts[0]]
  88. );
  89. deployed.KyberReserve = await deployContract(
  90. "KyberReserve",
  91. opts,
  92. [deployed.KyberNetwork.options.address, deployed.ConversionRates.options.address, accounts[0]]
  93. );
  94. deployed.KyberNetwork.methods.addReserve(deployed.KyberReserve.options.address, true).send();
  95. deployed.KyberReserve.methods.approveWithdrawAddress(deployed.TokenA.options.address, accounts[0], true).send();
  96.  
  97. // Set pricing for Token
  98. deployed.TokenA.methods.transfer(deployed.KyberReserve.options.address, new BigNumber(10 ** 22)).send();
  99. const tokensPerEther = (new BigNumber(precisionUnits.mul(2 * 3)).floor());
  100. const ethersPerToken = (new BigNumber(precisionUnits.div(2 * 3)).floor());
  101. baseBuyRate1.push(tokensPerEther.valueOf());
  102. baseBuyRate2.push(tokensPerEther.valueOf() * 10100 / 10000);
  103. baseSellRate1.push(ethersPerToken.valueOf());
  104. baseSellRate2.push(ethersPerToken.div(1000).mul(980));
  105. const currentBlock = await web3.eth.getBlockNumber();
  106. await deployed.ConversionRates.methods.addOperator(accounts[0]).send();
  107. await deployed.ConversionRates.methods.setBaseRate([deployed.TokenA.options.address], baseBuyRate1, baseSellRate1, buys, sells, currentBlock, indices).send();
  108. /*compactBuyArr = [0, 0, 0, 0, 0, 0o6, 0x07, 0x08, 0x09, 1, 0, 11, 12, 13, 14];
  109. let compactBuyHex = "0x00000000000607080901000b0c0d0e";
  110. console.log(compactBuyHex);
  111. buys.push(compactBuyHex);
  112.  
  113. compactSellArr = [0, 0, 0, 0, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34];
  114. let compactSellHex = "0x00000000001a1b1c1d1e1f202122";
  115. console.log(compactSellHex);
  116. sells.push(compactSellHex);
  117. indices[0] = 0;
  118. await deployed.ConversionRates.methods.setCompactData(buys, sells, currentBlock, indices).send();
  119. */
  120. deployed.KyberWhiteList = await deployContract(
  121. "KyberWhitelist",
  122. opts,
  123. [accounts[0], deployed.KGTToken.options.address]
  124. );
  125. await deployed.KyberWhiteList.methods.addOperator(accounts[0]).send();
  126. await deployed.KyberWhiteList.methods.setCategoryCap(0, 1000).send();
  127. await deployed.KyberWhiteList.methods.setSgdToEthRate(30000).send();
  128.  
  129. deployed.FeeBurner = await deployContract(
  130. "FeeBurner",
  131. opts,
  132. [accounts[0], deployed.TokenA.options.address, deployed.KyberNetwork.options.address]
  133. );
  134. deployed.ExpectedRate = await deployContract(
  135. "ExpectedRate",
  136. opts,
  137. [deployed.KyberNetwork.options.address, accounts[0]]
  138. );
  139.  
  140. await deployed.KyberNetwork.methods.setWhiteList(deployed.KyberWhiteList.options.address).send();
  141. await deployed.KyberNetwork.methods.setExpectedRate(deployed.ExpectedRate.options.address).send();
  142. await deployed.KyberNetwork.methods.setFeeBurner(deployed.FeeBurner.options.address).send();
  143. await deployed.KyberNetwork.methods.setKyberProxy(accounts[0]).send();
  144. await deployed.KyberNetwork.methods.setEnable(true).send();
  145.  
  146. await deployed.KyberNetwork.methods.listPairForReserve(deployed.KyberReserve.options.address, deployed.TokenA.options.address, true, true, true).send();
  147.  
  148. //console.log(await deployed.ConversionRates.methods.getTokenBasicData(deployed.TokenA.options.address).call());
  149. console.log(await deployed.ConversionRates.methods.getRate(deployed.TokenA.options.address, currentBlock, true, new BigNumber(10 ** 19)).call());
  150. //console.log(await deployed.KyberReserve.methods.getBalance(deployed.TokenA.options.address).call());
  151. //console.log(await deployed.KyberReserve.methods.getConversionRate(deployed.TokenA.options.address, ethAddress, new BigNumber(10 ** 19), currentBlock).call());
  152. //console.log(await deployed.KyberNetwork.methods.getExpectedRate(ethAddress, deployed.TokenA.options.address, 100).call());
  153. });
  154.  
  155. test.beforeEach(async () => {
  156.  
  157. });
  158.  
  159. test.serial("test", async t => {
  160. t.true(true);
  161. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement