Created
June 12, 2018 19:40
-
-
Save travs/7891326d6240a44f599926e67b102a78 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* eslint-disable */ | |
import {deployContract, retrieveContract} from "./utils/lib/contracts"; | |
import {getSignatureParameters, getTermsSignatureParameters} from "./utils/lib/signing"; | |
import api from "./utils/lib/api"; | |
import unlock from "./utils/lib/unlockAccount"; | |
import {updateCanonicalPriceFeed} from "./utils/lib/updatePriceFeed"; | |
import governanceAction from "./utils/lib/governanceAction"; | |
const fs = require("fs"); | |
const addressBook = require("./addressBook.json"); | |
const BigNumber = require("bignumber.js"); | |
const masterConfig = require("./utils/config/environment.js"); | |
const tokenInfo = require("./utils/info/tokenInfo.js"); | |
const exchangeInfo = require("./utils/info/exchangeInfo.js"); | |
const environment = process.env.CHAIN_ENV; | |
const config = masterConfig[environment]; | |
BigNumber.config({ ERRORS: false }); | |
let requestId; | |
let gasPrice; | |
let orderId; | |
let opts; | |
let exchange; | |
let receipt; | |
let runningGasTotal; | |
let fund; | |
let version; | |
let txid; | |
let fundAddress; | |
let fundAbi; | |
let asset; | |
let accounts; | |
let deployer; | |
let deployerPassword; | |
let investor; | |
let investorPassword; | |
let manager; | |
let managerPassword; | |
let authority; | |
let authorityPassword; | |
let mlnAddress; | |
let ethAddress; | |
let eurAddress; | |
let makeOrderSignature; | |
let takeOrderSignature; | |
let cancelOrderSignature; | |
let deployed = {}; | |
const addresses = addressBook[environment]; | |
const offeredValue = 10 ** 18; | |
const wantedShares = 10 ** 18; | |
const initialTokenAmount = 10 ** 10; | |
async function configure() { | |
// define order signatures | |
makeOrderSignature = api.util.abiSignature('makeOrder', [ | |
'address', 'address[5]', 'uint256[8]', 'bytes32', 'uint8', 'bytes32', 'bytes32' | |
]).slice(0,10); | |
takeOrderSignature = api.util.abiSignature('takeOrder', [ | |
'address', 'address[5]', 'uint256[8]', 'bytes32', 'uint8', 'bytes32', 'bytes32' | |
]).slice(0,10); | |
cancelOrderSignature = api.util.abiSignature('cancelOrder', [ | |
'address', 'address[5]', 'uint256[8]', 'bytes32', 'uint8', 'bytes32', 'bytes32' | |
]).slice(0,10); | |
// get contract instances | |
version = await retrieveContract('version/Version', addresses.Version); | |
const assetAbi = JSON.parse(fs.readFileSync('./out/assets/ERC20Interface.abi')); | |
if(environment === 'development') { | |
deployer = accounts[0]; | |
mlnAddress = addresses.MlnToken; | |
ethAddress = addresses.EthToken; | |
exchange = await retrieveContract('exchange/thirdparty/MatchingMarket', addresses.MatchingMarket); | |
} else if (environment === 'kovan') { | |
deployer = accounts[0]; | |
mlnAddress = tokenInfo.kovan['MLN-T'].address; | |
ethAddress = tokenInfo.kovan['WETH-T'].address; | |
eurAddress = tokenInfo.kovan['EUR-T'].address; | |
exchange = await retrieveContract('exchange/thirdparty/MatchingMarket', addresses.MatchingMarket); | |
deployed.ZeroExTokenTransferProxy = await retrieveContract( | |
'exchange/thirdparty/0x/TokenTransferProxy', addresses.ZeroExTokenTransferProxy | |
); | |
deployed.ZeroExExchange = await retrieveContract( | |
'exchange/thirdparty/0x/Exchange', addresses.ZeroExExchange | |
); | |
deployed.Governance = await retrieveContract('system/Governance', addresses.Governance); | |
deployed.CanonicalPriceFeed = await retrieveContract('pricefeeds/CanonicalPriceFeed', addresses.CanonicalPriceFeed); | |
// deployed.StakingPriceFeed = await retrieveContract('pricefeeds/StakingPriceFeed', addresses.StakingPriceFeed); | |
} else if (environment === 'live') { | |
manager = '0x6d1fe54730E0338a0929f5C5D6B652929A4981C9'; | |
managerPassword = '/home/travis/prg/keys/mainnet/account_mainnet'; | |
deployer = '0xC11149e320C31179195Fe2C25105b98A9d4e045e'; | |
deployerPassword = '/home/travis/prg/keys/mainnet/account_datafeed'; | |
authority = '0x00b5d2D3DB5CBAb9c2eb3ED3642A0c289008425B'; | |
authorityPassword = '/home/travis/prg/keys/mainnet/authority_password'; | |
mlnAddress = tokenInfo.live['MLN'].address; | |
ethAddress = tokenInfo.live['WETH'].address; | |
exchange = exchangeInfo.live['OasisDex'].address; | |
} | |
deployed.MlnToken = await api.newContract(assetAbi, mlnAddress); | |
deployed.EthToken = await api.newContract(assetAbi, ethAddress); | |
deployed.EurToken = await api.newContract(assetAbi, eurAddress); | |
} | |
async function take0xOrder () { | |
const fund = await retrieveContract('Fund', '0xb6f3FC16eA306DE2b027Dc1F453500c5ee51a72f'); | |
const oxExchange = await retrieveContract('exchange/thirdparty/0x/Exchange', '0x90fe2af704b34e0224bf2299c838e04d4dcf1364'); | |
const takerToken = await retrieveContract('assets/Asset', '0xa27af8713623fcc239d49108b1a7b187c133e88b'); | |
console.log('user takes 0x order'); | |
await takerToken.instance.approve.postTransaction( | |
{from: deployer}, | |
['0x087eed4bc1ee3de49befbd66c662b434b15d49d4', new BigNumber('10000000000000000000')] | |
); | |
txid = await oxExchange.instance.fillOrder.postTransaction({from: deployer}, | |
[ | |
[ | |
'0x000f93dd15be2fd9aa56100e81dc1fd580e8cef3', '0x0000000000000000000000000000000000000000', | |
'0xdc5fc5dab642f688bc5bb58bef6e0d452d7ae123', '0xa27af8713623fcc239d49108b1a7b187c133e88b', | |
'0x0000000000000000000000000000000000000000' | |
], | |
[ | |
new BigNumber('142039160839160399000'), new BigNumber('10000000000000000000'), | |
0, 0, 1528902776, | |
new BigNumber('4230445532108321671873022264693598160644043639637778626104502092312085016840') | |
], | |
new BigNumber('10000000000000000000'), | |
false, | |
28, | |
'0x30105d49462f7b884c0eacfd22478a4d552636320ad0482a16218c08a79d4a74', | |
'0x1281c21998a9eca0acb15e48f2b971423fc64478d7490c760a381e3bf7579abd' | |
] | |
); | |
console.log(txid); | |
} | |
async function main() { | |
accounts = await api.eth.accounts(); | |
await configure(); | |
await take0xOrder(); | |
} | |
if (require.main === module) { | |
if (process.argv.length < 2) { | |
throw new Error(`Please specify a deployment environment`); | |
} else { | |
main() | |
.then(() => process.exit()) | |
.catch(err => {console.error(err.stack); process.exit()}) | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment