Advertisement
Guest User

Untitled

a guest
Aug 24th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.91 KB | None | 0 0
  1. const sha3 = require('js-sha3').keccak_256
  2. const coder = require('web3/lib/solidity/coder.js')
  3. const blockNumber = require('@aragon/test-helpers/blockNumber')(web3)
  4.  
  5.  
  6. const FundraisingKit = artifacts.require('FundraisingKit')
  7. const TokenMock = artifacts.require('TokenMock')
  8. const Controller = artifacts.require('AragonFundraisingController')
  9. const MarketMaker = artifacts.require('BatchedBancorMarketMaker')
  10.  
  11. const getBuyOrderBatchId = tx => {
  12. const events = tx.receipt.logs.filter(l => {
  13. return l.topics[0] === '0x' + sha3('NewBuyOrder(address,uint256,address,uint256,uint256)')
  14. })
  15. const data = coder.decodeParams(['address', 'uint256'], events[0].data.replace('0x', ''))
  16. return data[1]
  17. }
  18.  
  19. const getSellOrderBatchId = tx => {
  20. const events = tx.receipt.logs.filter(l => {
  21. return l.topics[0] === '0x' + sha3('NewSellOrder(address,uint256,address,uint256)')
  22. })
  23. const data = coder.decodeParams(['address', 'uint256'], events[0].data.replace('0x', ''))
  24. return data[1]
  25. }
  26.  
  27. const createOrder = async (controller, marketMaker, collateral, amount, isBuy, isClaimed) => {
  28. const receipt = isBuy ? await controller.openBuyOrder(collateral.address, amount) : await controller.openSellOrder(collateral.address, amount)
  29. if (isClaimed) {
  30. const batchId = isBuy ? getBuyOrderBatchId(receipt) : getSellOrderBatchId(receipt)
  31. await increaseBlock()
  32. if (isBuy) await controller.claimBuyOrder(batchId, collateral.address)
  33. else await controller.claimSellOrder(batchId, collateral.address)
  34. }
  35. }
  36.  
  37. const increaseBlock = () => {
  38. return new Promise((resolve, reject) => {
  39. web3.currentProvider.sendAsync(
  40. {
  41. jsonrpc: '2.0',
  42. method: 'evm_mine',
  43. id: 12345,
  44. },
  45. (err, result) => {
  46. if (err) reject(err)
  47. resolve(result)
  48. }
  49. )
  50. })
  51. }
  52.  
  53. module.exports = async callback => {
  54. try {
  55. const collateral1 = await TokenMock.new('0xb4124cEB3451635DAcedd11767f004d8a28c6eE7', 1000000000000000000, 'Dai', 'DAI')
  56. const collateral2 = await TokenMock.new('0xb4124cEB3451635DAcedd11767f004d8a28c6eE7', 1000000000000000000, 'Aragon', 'ANT')
  57.  
  58. const kit = await FundraisingKit.at(process.argv[6])
  59.  
  60. const receipt1 = await kit.newTokens('PRO', 'PROJECT')
  61. const receipt2 = await kit.newMultisigInstance(
  62. 'fundraising' + Math.random(),
  63. ['0xb4124cEB3451635DAcedd11767f004d8a28c6eE7', '0x8401Eb5ff34cc943f096A32EF3d5113FEbE8D4Eb '],
  64. 2
  65. )
  66. const receipt3 = await kit.newFundraisingInstance(collateral1.address, collateral2.address)
  67. const dao = receipt2.logs.filter(l => l.event == 'DeployMultisigInstance')[0].args.dao
  68.  
  69. const controllerAddress = receipt3.logs.filter(
  70. l => l.event === 'InstalledApp' && l.args.appId === '0x668ac370eed7e5861234d1c0a1e512686f53594fcb887e5bcecc35675a4becac'
  71. )[0].args.appProxy
  72.  
  73. const marketMakerAddress = receipt3.logs.filter(
  74. l => l.event === 'InstalledApp' && l.args.appId === '0xc2bb88ab974c474221f15f691ed9da38be2f5d37364180cec05403c656981bf0'
  75. )[0].args.appProxy
  76.  
  77. console.log(controllerAddress)
  78. console.log(marketMakerAddress)
  79.  
  80. const controller = await Controller.at(controllerAddress)
  81. const marketMaker = await MarketMaker.at(marketMakerAddress)
  82.  
  83. await collateral1.approve(marketMakerAddress, 1000000000000000000)
  84. await collateral2.approve(marketMakerAddress, 1000000000000000000)
  85.  
  86. console.log('OK')
  87.  
  88. // BATCH 1: one buy, claimed
  89. await createOrder(controller, marketMaker, collateral1, 1000, true, true)
  90.  
  91. // BATCH 2: one sell, claimed
  92. await createOrder(controller, marketMaker, collateral1, 1, false, true)
  93.  
  94. // BATCH 3: one buy, claimed (collateral2)
  95. await createOrder(controller, marketMaker, collateral2, 1000, true, true)
  96.  
  97. // BATCH 4: one buy, cleared and NOT claimed
  98. await createOrder(controller, marketMaker, collateral1, 1000, true, false)
  99.  
  100. console.log('DAO deployed at ' + dao)
  101.  
  102. callback()
  103. } catch (err) {
  104. console.log(err)
  105. callback(undefined, err)
  106. }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement