Skip to content

Instantly share code, notes, and snippets.

@travs
Created June 12, 2018 19:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save travs/7891326d6240a44f599926e67b102a78 to your computer and use it in GitHub Desktop.
Save travs/7891326d6240a44f599926e67b102a78 to your computer and use it in GitHub Desktop.
/* 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