Created
January 24, 2019 01:57
-
-
Save cloudonshore/1cca2a423a433009d93f0bc125b200b5 to your computer and use it in GitHub Desktop.
Deploy 2Chainz reserves contract
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
const ethers = require('ethers') | |
// The Contract interface | |
const abi = [ | |
{ | |
constant: true, | |
inputs: [], | |
name: 'owner', | |
outputs: [ | |
{ | |
name: '', | |
type: 'address' | |
} | |
], | |
payable: false, | |
stateMutability: 'view', | |
type: 'function', | |
signature: '0x8da5cb5b' | |
}, | |
{ | |
constant: true, | |
inputs: [], | |
name: 'swapContract', | |
outputs: [ | |
{ | |
name: '', | |
type: 'address' | |
} | |
], | |
payable: false, | |
stateMutability: 'view', | |
type: 'function', | |
signature: '0x8ea83031' | |
}, | |
{ | |
constant: true, | |
inputs: [ | |
{ | |
name: '', | |
type: 'address' | |
}, | |
{ | |
name: '', | |
type: 'address' | |
} | |
], | |
name: 'limitOrders', | |
outputs: [ | |
{ | |
name: 'c', | |
type: 'uint256' | |
}, | |
{ | |
name: 'e', | |
type: 'uint256' | |
}, | |
{ | |
name: 'makerAmount', | |
type: 'uint256' | |
} | |
], | |
payable: false, | |
stateMutability: 'view', | |
type: 'function', | |
signature: '0xd6735d3c' | |
}, | |
{ | |
constant: true, | |
inputs: [], | |
name: 'creationTime', | |
outputs: [ | |
{ | |
name: '', | |
type: 'uint256' | |
} | |
], | |
payable: false, | |
stateMutability: 'view', | |
type: 'function', | |
signature: '0xd8270dce' | |
}, | |
{ | |
inputs: [ | |
{ | |
name: '_swapContract', | |
type: 'address' | |
} | |
], | |
payable: false, | |
stateMutability: 'nonpayable', | |
type: 'constructor', | |
signature: 'constructor' | |
}, | |
{ | |
constant: false, | |
inputs: [ | |
{ | |
name: '_makerToken', | |
type: 'address' | |
}, | |
{ | |
name: '_takerToken', | |
type: 'address' | |
}, | |
{ | |
name: '_c', | |
type: 'uint256' | |
}, | |
{ | |
name: '_e', | |
type: 'uint256' | |
}, | |
{ | |
name: '_makerAmount', | |
type: 'uint256' | |
} | |
], | |
name: 'depositLiquidity', | |
outputs: [], | |
payable: false, | |
stateMutability: 'nonpayable', | |
type: 'function', | |
signature: '0xceb231c0' | |
}, | |
{ | |
constant: false, | |
inputs: [ | |
{ | |
name: '_makerAddress', | |
type: 'address' | |
}, | |
{ | |
name: '_makerAmount', | |
type: 'uint256' | |
}, | |
{ | |
name: '_makerToken', | |
type: 'address' | |
}, | |
{ | |
name: '_takerAddress', | |
type: 'address' | |
}, | |
{ | |
name: '_takerAmount', | |
type: 'uint256' | |
}, | |
{ | |
name: '_takerToken', | |
type: 'address' | |
}, | |
{ | |
name: '_expiration', | |
type: 'uint256' | |
}, | |
{ | |
name: '_nonce', | |
type: 'uint256' | |
}, | |
{ | |
name: '_v', | |
type: 'uint8' | |
}, | |
{ | |
name: '_r', | |
type: 'bytes32' | |
}, | |
{ | |
name: '_s', | |
type: 'bytes32' | |
} | |
], | |
name: 'fill', | |
outputs: [], | |
payable: false, | |
stateMutability: 'nonpayable', | |
type: 'function', | |
signature: '0x1d4d691d' | |
}, | |
{ | |
constant: true, | |
inputs: [ | |
{ | |
name: '_takerToken', | |
type: 'address' | |
}, | |
{ | |
name: '_makerToken', | |
type: 'address' | |
}, | |
{ | |
name: '_takerAmount', | |
type: 'uint256' | |
}, | |
{ | |
name: '_makerAmount', | |
type: 'uint256' | |
} | |
], | |
name: 'getQuote', | |
outputs: [ | |
{ | |
name: 'c', | |
type: 'uint256' | |
}, | |
{ | |
name: 'e', | |
type: 'uint256' | |
}, | |
{ | |
name: 'makerAmount', | |
type: 'uint256' | |
} | |
], | |
payable: false, | |
stateMutability: 'view', | |
type: 'function', | |
signature: '0xf862701f' | |
} | |
] | |
// The bytecode from Solidity, compiling the above source | |
const bytecode = '0x608060405234801561001057600080fd5b50604051602080610ea68339810180604052602081101561003057600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504260028190555050610dcd806100d96000396000f3fe608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631d4d691d146100885780638da5cb5b146101835780638ea83031146101da578063ceb231c014610231578063d6735d3c146102c0578063d8270dce14610353578063f862701f1461037e575b600080fd5b34801561009457600080fd5b5061018160048036036101608110156100ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050610425565b005b34801561018f57600080fd5b506101986107dd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e657600080fd5b506101ef610803565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023d57600080fd5b506102be600480360360a081101561025457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050610828565b005b3480156102cc57600080fd5b5061032f600480360360408110156102e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b90565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561035f57600080fd5b50610368610bc7565b6040518082815260200191505060405180910390f35b34801561038a57600080fd5b50610401600480360360808110156103a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610bcd565b60405180848152602001838152602001828152602001935050505060405180910390f35b6000600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508a8160020154101515156104b857600080fd5b60006104ea8260010154600a0a6104dc84600001548f610cf590919063ffffffff16565b610d3390919063ffffffff16565b905088811415156104fa57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d4d691d8e8e8e8e8e8e8e8e8e8e8e6040518c63ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018460ff1660ff1681526020018381526020018281526020019b505050505050505050505050600060405180830381600087803b15801561069057600080fd5b505af11580156106a4573d6000803e3d6000fd5b5050505060008890508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561077257600080fd5b505af1158015610786573d6000803e3d6000fd5b505050506040513d602081101561079c57600080fd5b8101908080519060200190929190505050506107c58d8460020154610d5d90919063ffffffff16565b83600201819055505050505050505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561088457600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515156108bf57600080fd5b6000859050818173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561099257600080fd5b505afa1580156109a6573d6000803e3d6000fd5b505050506040513d60208110156109bc57600080fd5b81019080805190602001909291905050501115156109d957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610ab057600080fd5b505af1158015610ac4573d6000803e3d6000fd5b505050506040513d6020811015610ada57600080fd5b8101908080519060200190929190505050506000600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905084816000018190555083816001018190555082816002018190555050505050505050565b6003602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154905083565b60025481565b6000806000808514158015610be3575060008414155b151515610bef57600080fd5b610bf7610d7f565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206060604051908101604052908160008201548152602001600182015481526020016002820154815250509050600086141515610cc45780600001518160200151826040015193509350935050610ceb565b600085141515610ce95780600001518160200151826040015193509350935050610ceb565b505b9450945094915050565b600080831415610d085760009050610d2d565b60008284029050828482811515610d1b57fe5b04141515610d2857600080fd5b809150505b92915050565b60008082111515610d4357600080fd5b60008284811515610d5057fe5b0490508091505092915050565b6000828211151515610d6e57600080fd5b600082840390508091505092915050565b606060405190810160405280600081526020016000815260200160008152509056fea165627a7a72305820aae83463685f80ec4ed01e9a0a303d6d08d3e793d4afa037f15ea445c842de1e0029' | |
// Connect to the network | |
const provider = ethers.getDefaultProvider('rinkeby') | |
// Load the wallet to deploy the contract with | |
const privateKey = '[INSERT PRIVATE KEY]' | |
const wallet = new ethers.Wallet(privateKey, provider) | |
// Create an instance of a Contract Factory | |
const factory = new ethers.ContractFactory(abi, bytecode, wallet) | |
// Notice we pass in "Hello World" as the parameter to the constructor | |
factory.deploy('0x07fc7c43d8168a2730344e5cf958aaecc3b42b41').then(async contract => { | |
// The address the Contract WILL have once mined | |
// See: https://ropsten.etherscan.io/address/0x2bd9aaa2953f988153c8629926d22a6a5f69b14e | |
console.log(contract.address) | |
// "0x2bD9aAa2953F988153c8629926D22A6a5F69b14E" | |
// The transaction that was sent to the network to deploy the Contract | |
// See: https://ropsten.etherscan.io/tx/0x159b76843662a15bd67e482dcfbee55e8e44efad26c5a614245e12a00d4b1a51 | |
console.log(contract.deployTransaction.hash) | |
// "0x159b76843662a15bd67e482dcfbee55e8e44efad26c5a614245e12a00d4b1a51" | |
// The contract is NOT deployed yet; we must wait until it is mined | |
await contract.deployed() | |
}) | |
// Done! The contract is deployed. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment