From ba46a2558d081196f4a9b5e1eb88673be6b50bf8 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Tue, 11 Jul 2017 11:33:18 -0700 Subject: Flatten artifacts --- src/artifacts/Exchange.json | 1002 +++++++++++++++++++++++++++++++ src/artifacts/exchange/Exchange_v1.json | 1002 ------------------------------- 2 files changed, 1002 insertions(+), 1002 deletions(-) create mode 100644 src/artifacts/Exchange.json delete mode 100644 src/artifacts/exchange/Exchange_v1.json (limited to 'src') diff --git a/src/artifacts/Exchange.json b/src/artifacts/Exchange.json new file mode 100644 index 000000000..a9481d13f --- /dev/null +++ b/src/artifacts/Exchange.json @@ -0,0 +1,1002 @@ +{ + "contract_name": "Exchange", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5]" + }, + { + "name": "orderValues", + "type": "uint256[6]" + }, + { + "name": "canceltakerTokenAmount", + "type": "uint256" + } + ], + "name": "cancelOrder", + "outputs": [ + { + "name": "cancelledTakerTokenAmount", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "denominator", + "type": "uint256" + }, + { + "name": "numerator", + "type": "uint256" + }, + { + "name": "target", + "type": "uint256" + } + ], + "name": "isRoundingError", + "outputs": [ + { + "name": "isError", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "name": "filled", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "name": "cancelled", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "numerator", + "type": "uint256" + }, + { + "name": "denominator", + "type": "uint256" + }, + { + "name": "target", + "type": "uint256" + } + ], + "name": "getPartialAmount", + "outputs": [ + { + "name": "partialValue", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5][]" + }, + { + "name": "orderValues", + "type": "uint256[6][]" + }, + { + "name": "cancelTakerTokenAmounts", + "type": "uint256[]" + } + ], + "name": "batchCancelOrders", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5][]" + }, + { + "name": "orderValues", + "type": "uint256[6][]" + }, + { + "name": "fillTakerTokenAmount", + "type": "uint256" + }, + { + "name": "shouldThrowOnInsufficientBalanceOrAllowance", + "type": "bool" + }, + { + "name": "v", + "type": "uint8[]" + }, + { + "name": "r", + "type": "bytes32[]" + }, + { + "name": "s", + "type": "bytes32[]" + } + ], + "name": "fillOrdersUpTo", + "outputs": [ + { + "name": "filledTakerTokenAmount", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "signer", + "type": "address" + }, + { + "name": "hash", + "type": "bytes32" + }, + { + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "type": "bytes32" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "name": "isValid", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5]" + }, + { + "name": "orderValues", + "type": "uint256[6]" + }, + { + "name": "fillTakerTokenAmount", + "type": "uint256" + }, + { + "name": "shouldThrowOnInsufficientBalanceOrAllowance", + "type": "bool" + }, + { + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "type": "bytes32" + } + ], + "name": "fillOrder", + "outputs": [ + { + "name": "filledTakerTokenAmount", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5][]" + }, + { + "name": "orderValues", + "type": "uint256[6][]" + }, + { + "name": "fillTakerTokenAmounts", + "type": "uint256[]" + }, + { + "name": "shouldThrowOnInsufficientBalanceOrAllowance", + "type": "bool" + }, + { + "name": "v", + "type": "uint8[]" + }, + { + "name": "r", + "type": "bytes32[]" + }, + { + "name": "s", + "type": "bytes32[]" + } + ], + "name": "batchFillOrders", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5][]" + }, + { + "name": "orderValues", + "type": "uint256[6][]" + }, + { + "name": "fillTakerTokenAmounts", + "type": "uint256[]" + }, + { + "name": "v", + "type": "uint8[]" + }, + { + "name": "r", + "type": "bytes32[]" + }, + { + "name": "s", + "type": "bytes32[]" + } + ], + "name": "batchFillOrKillOrders", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "PROXY_CONTRACT", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "getUnavailableTakerTokenAmount", + "outputs": [ + { + "name": "unavailableTakerTokenAmount", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5]" + }, + { + "name": "orderValues", + "type": "uint256[6]" + } + ], + "name": "getOrderHash", + "outputs": [ + { + "name": "orderHash", + "type": "bytes32" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ZRX_TOKEN_CONTRACT", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5]" + }, + { + "name": "orderValues", + "type": "uint256[6]" + }, + { + "name": "fillTakerTokenAmount", + "type": "uint256" + }, + { + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "type": "bytes32" + } + ], + "name": "fillOrKillOrder", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "inputs": [ + { + "name": "_ZRX_TOKEN_CONTRACT", + "type": "address" + }, + { + "name": "_PROXY_CONTRACT", + "type": "address" + } + ], + "payable": false, + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "maker", + "type": "address" + }, + { + "indexed": false, + "name": "taker", + "type": "address" + }, + { + "indexed": true, + "name": "feeRecipient", + "type": "address" + }, + { + "indexed": false, + "name": "makerToken", + "type": "address" + }, + { + "indexed": false, + "name": "takerToken", + "type": "address" + }, + { + "indexed": false, + "name": "filledMakerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "filledTakerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "paidMakerFee", + "type": "uint256" + }, + { + "indexed": false, + "name": "paidTakerFee", + "type": "uint256" + }, + { + "indexed": true, + "name": "tokens", + "type": "bytes32" + }, + { + "indexed": false, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogFill", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "maker", + "type": "address" + }, + { + "indexed": true, + "name": "feeRecipient", + "type": "address" + }, + { + "indexed": false, + "name": "makerToken", + "type": "address" + }, + { + "indexed": false, + "name": "takerToken", + "type": "address" + }, + { + "indexed": false, + "name": "cancelledMakerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "cancelledTakerTokenAmount", + "type": "uint256" + }, + { + "indexed": true, + "name": "tokens", + "type": "bytes32" + }, + { + "indexed": false, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogCancel", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "errorId", + "type": "uint8" + }, + { + "indexed": true, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogError", + "type": "event" + } + ], + "unlinked_binary": "0x6060604052341561000c57fe5b604051604080611d6e8339810160405280516020909101515b60008054600160a060020a03808516600160a060020a03199283161790925560018054928416929091169190911790555b50505b611d06806100686000396000f300606060405236156100ca5763ffffffff60e060020a60003504166314df96ee81146100cc578063288cdc91146100f95780632ac126221461011e578063363349be14610143578063394c21e7146103055780633b30ba59146103785780634f063e6c146103a45780634f150787146103d0578063741bcc93146105c55780637e9abb501461064d5780638163681e1461067257806398024a8b146106b1578063b7b2c7d6146106dc578063baa0181d146108d9578063bc61394a14610a26578063cfc4d0ec14610ab3575bfe5b34156100d457fe5b6100e5600435602435604435610b24565b604080519115158252519081900360200190f35b341561010157fe5b61010c600435610b43565b60408051918252519081900360200190f35b341561012657fe5b61010c600435610b55565b60408051918252519081900360200190f35b341561014b57fe5b61010c60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156101bd576040805160a08181019092529080840287019060059083908390808284375050509183525050600190910190602001610181565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610230576040805160c081810190925290808402870190600690839083908082843750505091835250506001909101906020016101f4565b5050604080516020878301358901803582810280850184019095528084529799893599838101351515999198506060019650929450810192829185019084908082843750506040805187358901803560208181028481018201909552818452989a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989a998901989297509082019550935083925085019084908082843750949650610b6795505050505050565b60408051918252519081900360200190f35b341561030d57fe5b6040805160a081810190925261010c9160049160a4918390600590839083908082843750506040805160c08181019092529496958181019594509250600691508390839080828437509395505092359250610c8b915050565b60408051918252519081900360200190f35b341561038057fe5b610388610f34565b60408051600160a060020a039092168252519081900360200190f35b34156103ac57fe5b610388610f43565b60408051600160a060020a039092168252519081900360200190f35b34156103d857fe5b6100e560048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561044a576040805160a0818101909252908084028701906005908390839080828437505050918352505060019091019060200161040e565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156104bd576040805160c08181019092529080840287019060069083908390808284375050509183525050600190910190602001610481565b50505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989a998901989297509082019550935083925085019084908082843750949650610f5295505050505050565b604080519115158252519081900360200190f35b34156105cd57fe5b6040805160a08181019092526100e59160049160a4918390600590839083908082843750506040805160c08181019092529496958181019594509250600691508390839080828437509395505083359360ff602082013516935060408101359250606001359050611018565b604080519115158252519081900360200190f35b341561065557fe5b61010c600435611040565b60408051918252519081900360200190f35b341561067a57fe5b6100e5600160a060020a036004351660243560ff6044351660643560843561106c565b604080519115158252519081900360200190f35b34156106b957fe5b61010c600435602435604435611124565b60408051918252519081900360200190f35b34156106e457fe5b6100e560048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610756576040805160a0818101909252908084028701906005908390839080828437505050918352505060019091019060200161071a565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156107c9576040805160c0818101909252908084028701906006908390839080828437505050918352505060019091019060200161078d565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375050604080516020808901358a01803580830284810184018652818552999b8b3515159b909a950198509296508101945090925082919085019084908082843750506040805187358901803560208181028481018201909552818452989a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061114395505050505050565b604080519115158252519081900360200190f35b34156108e157fe5b6100e560048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610953576040805160a08181019092529080840287019060059083908390808284375050509183525050600190910190602001610917565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156109c6576040805160c0818101909252908084028701906006908390839080828437505050918352505060019091019060200161098a565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061120495505050505050565b604080519115158252519081900360200190f35b3415610a2e57fe5b6040805160a081810190925261010c9160049160a4918390600590839083908082843750506040805160c08181019092529496958181019594509250600691508390839080828437509395505083359360208101351515935060ff60408201351692506060810135915060800135611278565b60408051918252519081900360200190f35b3415610abb57fe5b6040805160a081810190925261010c9160049160a4918390600590839083908082843750506040805160c08181019092529496958181019594509250600691508390839080828437509395506116ed945050505050565b60408051918252519081900360200190f35b60006103e882108015610b3957508284830915155b90505b9392505050565b60026020526000908152604090205481565b60036020526000908152604090205481565b6000805b8851811015610c7e57886000815181101515610b8357fe5b6020908102909101015160035b6020020151600160a060020a03168982815181101515610bac57fe5b6020908102909101015160035b6020020151600160a060020a031614610bd25760006000fd5b610c6682610c618b84815181101515610be757fe5b906020019060200201518b85815181101515610bff57fe5b90602001906020020151610c138c886117e0565b8b8b88815181101515610c2257fe5b906020019060200201518b89815181101515610c3a57fe5b906020019060200201518b8a815181101515610c5257fe5b90602001906020020151611278565b6117f7565b915086821415610c7557610c7e565b5b600101610b6b565b5b50979650505050505050565b6000610c95611c5e565b6040805161016081019091526000908087835b60209081029190910151600160a060020a03168252018760015b60209081029190910151600160a060020a03168252018760025b60209081029190910151600160a060020a03168252018760035b60209081029190910151600160a060020a03168252018760045b60209081029190910151600160a060020a03168252018660005b602090810291909101518252018660015b602090810291909101518252018660025b602090810291909101518252018660035b602090810291909101518252018660045b60200201518152602001610d8288886116ed565b9052805190925033600160a060020a03908116911614610da25760006000fd5b6101208201514210610dd657610140820151604051600090600080516020611cbb833981519152908290a360009250610f2b565b610df18260c00151610dec846101400151611040565b6117e0565b9050610dfd8482611811565b9250821515610e2f57610140820151604051600190600080516020611cbb83398151915290600090a360009250610f2b565b610140820151600090815260036020526040902054610e4e90846117f7565b610140830151600090815260036020526040908190209190915580830180516060850180518451606060020a600160a060020a03948516810282529184169091026014820152935193849003602801909320608086015186519351945160c088015160a0890151939692851695909416937f67d66f160bc93d925d05dae1794c90d2d6d6688b29b84ff069398a9b0458713193610eec918b91611124565b61014089015160408051600160a060020a03958616815293909416602084015282840191909152606082018a9052608082015290519081900360a00190a45b50509392505050565b600054600160a060020a031681565b600154600160a060020a031681565b6000805b875181101561100857610ff78882815181101515610f7057fe5b906020019060200201518883815181101515610f8857fe5b906020019060200201518884815181101515610fa057fe5b906020019060200201518885815181101515610fb857fe5b906020019060200201518886815181101515610fd057fe5b906020019060200201518887815181101515610fe857fe5b90602001906020020151611018565b1515610fff57fe5b5b600101610f56565b600191505b509695505050505050565b60008461102b8888886000898989611278565b1461103257fe5b5060015b9695505050505050565b600081815260026020908152604080832054600390925282205461106491906117f7565b90505b919050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101869052815190819003603c018120600082815260208381018552928401819052835191825260ff8716828401528184018690526060820185905292516001926080808401939192601f1981019281900390910190868661646e5a03f115156110fb57fe5b505060206040510351600160a060020a031686600160a060020a03161490505b95945050505050565b6000610b39611133858461182b565b8461185a565b90505b9392505050565b6000805b88518110156111f3576111e9898281518110151561116157fe5b90602001906020020151898381518110151561117957fe5b90602001906020020151898481518110151561119157fe5b906020019060200201518989868151811015156111aa57fe5b9060200190602002015189878151811015156111c257fe5b906020019060200201518988815181101515610c5257fe5b90602001906020020151611278565b505b600101611147565b600191505b50979650505050505050565b6000805b845181101561126b57611261858281518110151561122257fe5b90602001906020020151858381518110151561123a57fe5b90602001906020020151858481518110151561125257fe5b90602001906020020151610c8b565b505b600101611208565b600191505b509392505050565b6000611282611c5e565b6000600060006000610160604051908101604052808e60006005811015156112a657fe5b60209081029190910151600160a060020a03168252018e60015b60209081029190910151600160a060020a03168252018e60025b60209081029190910151600160a060020a03168252018e60035b60209081029190910151600160a060020a03168252018e60045b60209081029190910151600160a060020a03168252018d60005b602090810291909101518252018d60015b602090810291909101518252018d60025b602090810291909101518252018d60035b602090810291909101518252018d60045b602002015181526020016113808f8f6116ed565b90526020810151909550600160a060020a031615806113b4575033600160a060020a03168560200151600160a060020a0316145b15156113c05760006000fd5b6113d685600001518661014001518b8b8b61106c565b15156113e25760006000fd5b610120850151421061141657610140850151604051600090600080516020611cbb833981519152908290a3600095506116dd565b6114318560c00151610dec876101400151611040565b6117e0565b935061143d8b85611811565b955085151561146f57610140850151604051600190600080516020611cbb83398151915290600090a3600095506116dd565b611482868660c001518760a00151610b24565b156114b057610140850151604051600290600080516020611cbb83398151915290600090a3600095506116dd565b891580156114c557506114c38587611877565b155b156114f357610140850151604051600390600080516020611cbb83398151915290600090a3600095506116dd565b611506868660c001518760a00151611124565b61014086015160009081526002602052604090205490935061152890876117f7565b6101408601516000908152600260205260409081902091909155850151855161155391903386611ad3565b151561155b57fe5b61156f856060015133876000015189611ad3565b151561157757fe5b6080850151600160a060020a0316156116235760008560e0015111156115d5576115aa868660c001518760e00151611124565b600054865160808801519294506115cd92600160a060020a039092169185611ad3565b15156115d557fe5b5b60008561010001511115611623576115f8868660c00151876101000151611124565b600054608087015191925061161b91600160a060020a0390911690339084611ad3565b151561162357fe5b5b5b60408086018051606080890180518551606060020a600160a060020a0395861681028252918516909102601482015285519081900360280181206080808d01518d51975194516101408f0151338916865295881660208601528716848a01529483018b905282018d905260a0820189905260c0820188905260e08201929092529451909491831693909216917f0d0b9391970d9a25552f37d436d2aae2925e2bfe1b2a923754bada030c498cb3918190036101000190a45b5050505050979650505050505050565b60003083825b60200201518460015b60200201518560025b60200201518660035b60200201518760045b60200201518760005b60200201518860015b60200201518960025b60200201518a60035b60200201518b60045b60200201518c60055b602002015160408051606060020a600160a060020a039e8f16810282529c8e168d0260148201529a8d168c0260288c0152988c168b02603c8b0152968b168a0260508a01529490991690970260648701526078860191909152609885015260b884019490945260d883019490945260f8820192909252610118810192909252519081900361013801902090505b92915050565b6000828211156117ec57fe5b508082035b92915050565b60008282018381101561180657fe5b8091505b5092915050565b60008183106118205781611822565b825b90505b92915050565b6000828202831580611847575082848281151561184457fe5b04145b151561180657fe5b8091505b5092915050565b60006000828481151561186957fe5b0490508091505b5092915050565b60006000600060006000600060006000600033975061189f8a8c60c001518d60a00151611124565b60808c0151909750600160a060020a031615611a545760005460408c015160608d015160c08e015160e08f0151600160a060020a0394851693851684149a509390911690911496506118f3918c9190611124565b93506119098a8c60c001518d6101000151611124565b9250856119165783611920565b61192087856117f7565b5b91508461192e5782611938565b6119388a846117f7565b5b6000548c51919250839161195691600160a060020a031690611b62565b108061197b57506000548b51839161197991600160a060020a0390911690611be2565b105b8061199b5750600054819061199990600160a060020a03168a611b62565b105b806119bb575060005481906119b990600160a060020a03168a611be2565b105b156119c95760009850611ac5565b85158015611a015750866119e58c604001518d60000151611b62565b1080611a015750866119ff8c604001518d60000151611be2565b105b5b15611a105760009850611ac5565b84158015611a40575089611a288c606001518a611b62565b1080611a40575089611a3e8c606001518a611be2565b105b5b15611a4f5760009850611ac5565b611abf565b86611a678c604001518d60000151611b62565b1080611a83575086611a818c604001518d60000151611be2565b105b80611a9a575089611a988c606001518a611b62565b105b80611ab1575089611aaf8c606001518a611be2565b105b15611abf5760009850611ac5565b5b600198505b505050505050505092915050565b6001546040805160006020918201819052825160e160020a630aed65f5028152600160a060020a03898116600483015288811660248301528781166044830152606482018790529351919493909316926315dacbea92608480830193919282900301818787803b1515611b4257fe5b6102c65a03f11515611b5057fe5b5050604051519150505b949350505050565b600082600160a060020a03166370a08231836000604051602001526040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b1515611bc457fe5b6102c65a03f11515611bd257fe5b5050604051519150505b92915050565b6001546040805160006020918201819052825160e160020a636eb1769f028152600160a060020a03868116600483015294851660248201529251909386169263dd62ed3e92604480830193919282900301818787803b1515611bc457fe5b6102c65a03f11515611bd257fe5b5050604051519150505b92915050565b6040805161016081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081019190915290560036d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e90a165627a7a72305820ebcefc5e253855f67db0c7e9d7fd4b3b16004c01384ee01564d3091e35c3cc860029", + "networks": { + "42": { + "links": {}, + "events": { + "0x0d0b9391970d9a25552f37d436d2aae2925e2bfe1b2a923754bada030c498cb3": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "maker", + "type": "address" + }, + { + "indexed": false, + "name": "taker", + "type": "address" + }, + { + "indexed": true, + "name": "feeRecipient", + "type": "address" + }, + { + "indexed": false, + "name": "makerToken", + "type": "address" + }, + { + "indexed": false, + "name": "takerToken", + "type": "address" + }, + { + "indexed": false, + "name": "filledMakerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "filledTakerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "paidMakerFee", + "type": "uint256" + }, + { + "indexed": false, + "name": "paidTakerFee", + "type": "uint256" + }, + { + "indexed": true, + "name": "tokens", + "type": "bytes32" + }, + { + "indexed": false, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogFill", + "type": "event" + }, + "0x67d66f160bc93d925d05dae1794c90d2d6d6688b29b84ff069398a9b04587131": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "maker", + "type": "address" + }, + { + "indexed": true, + "name": "feeRecipient", + "type": "address" + }, + { + "indexed": false, + "name": "makerToken", + "type": "address" + }, + { + "indexed": false, + "name": "takerToken", + "type": "address" + }, + { + "indexed": false, + "name": "cancelledMakerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "cancelledTakerTokenAmount", + "type": "uint256" + }, + { + "indexed": true, + "name": "tokens", + "type": "bytes32" + }, + { + "indexed": false, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogCancel", + "type": "event" + }, + "0x36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e90": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "errorId", + "type": "uint8" + }, + { + "indexed": true, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogError", + "type": "event" + } + }, + "updated_at": 1499299724252, + "address": "0x63869171a246622ef8f9234879ce2c06cebd85f6" + }, + "50": { + "links": {}, + "events": { + "0xcf8bd4f6ec4f39997290cf18413805f1f190eebd60e32ffc174b56d07a355beb": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "maker", + "type": "address" + }, + { + "indexed": false, + "name": "taker", + "type": "address" + }, + { + "indexed": true, + "name": "feeRecipient", + "type": "address" + }, + { + "indexed": false, + "name": "makerToken", + "type": "address" + }, + { + "indexed": false, + "name": "takerToken", + "type": "address" + }, + { + "indexed": false, + "name": "filledBy", + "type": "address" + }, + { + "indexed": false, + "name": "makerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "takerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "makerFee", + "type": "uint256" + }, + { + "indexed": false, + "name": "takerFee", + "type": "uint256" + }, + { + "indexed": false, + "name": "expirationTimestampInSec", + "type": "uint256" + }, + { + "indexed": false, + "name": "filledTakerTokenAmount", + "type": "uint256" + }, + { + "indexed": true, + "name": "tokens", + "type": "bytes32" + }, + { + "indexed": false, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogFill", + "type": "event" + }, + "0x4565177cd5184f550db0ab57b1d5bc808f8e8ba0adcb13fb257f1e7cf019a2b6": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "maker", + "type": "address" + }, + { + "indexed": true, + "name": "feeRecipient", + "type": "address" + }, + { + "indexed": false, + "name": "makerToken", + "type": "address" + }, + { + "indexed": false, + "name": "takerToken", + "type": "address" + }, + { + "indexed": false, + "name": "makerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "takerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "makerFee", + "type": "uint256" + }, + { + "indexed": false, + "name": "takerFee", + "type": "uint256" + }, + { + "indexed": false, + "name": "expirationTimestampInSec", + "type": "uint256" + }, + { + "indexed": false, + "name": "cancelledtakerTokenAmount", + "type": "uint256" + }, + { + "indexed": true, + "name": "tokens", + "type": "bytes32" + }, + { + "indexed": false, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogCancel", + "type": "event" + }, + "0x36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e90": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "errorId", + "type": "uint8" + }, + { + "indexed": true, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogError", + "type": "event" + }, + "0x0d0b9391970d9a25552f37d436d2aae2925e2bfe1b2a923754bada030c498cb3": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "maker", + "type": "address" + }, + { + "indexed": false, + "name": "taker", + "type": "address" + }, + { + "indexed": true, + "name": "feeRecipient", + "type": "address" + }, + { + "indexed": false, + "name": "makerToken", + "type": "address" + }, + { + "indexed": false, + "name": "takerToken", + "type": "address" + }, + { + "indexed": false, + "name": "filledMakerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "filledTakerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "paidMakerFee", + "type": "uint256" + }, + { + "indexed": false, + "name": "paidTakerFee", + "type": "uint256" + }, + { + "indexed": true, + "name": "tokens", + "type": "bytes32" + }, + { + "indexed": false, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogFill", + "type": "event" + }, + "0x67d66f160bc93d925d05dae1794c90d2d6d6688b29b84ff069398a9b04587131": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "maker", + "type": "address" + }, + { + "indexed": true, + "name": "feeRecipient", + "type": "address" + }, + { + "indexed": false, + "name": "makerToken", + "type": "address" + }, + { + "indexed": false, + "name": "takerToken", + "type": "address" + }, + { + "indexed": false, + "name": "cancelledMakerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "cancelledTakerTokenAmount", + "type": "uint256" + }, + { + "indexed": true, + "name": "tokens", + "type": "bytes32" + }, + { + "indexed": false, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogCancel", + "type": "event" + } + }, + "updated_at": 1499462280316, + "address": "0xb69e673309512a9d726f87304c6984054f87a93b" + } + }, + "schema_version": "0.0.5", + "updated_at": 1499462280316 +} diff --git a/src/artifacts/exchange/Exchange_v1.json b/src/artifacts/exchange/Exchange_v1.json deleted file mode 100644 index a9481d13f..000000000 --- a/src/artifacts/exchange/Exchange_v1.json +++ /dev/null @@ -1,1002 +0,0 @@ -{ - "contract_name": "Exchange", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5]" - }, - { - "name": "orderValues", - "type": "uint256[6]" - }, - { - "name": "canceltakerTokenAmount", - "type": "uint256" - } - ], - "name": "cancelOrder", - "outputs": [ - { - "name": "cancelledTakerTokenAmount", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "denominator", - "type": "uint256" - }, - { - "name": "numerator", - "type": "uint256" - }, - { - "name": "target", - "type": "uint256" - } - ], - "name": "isRoundingError", - "outputs": [ - { - "name": "isError", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "name": "filled", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "name": "cancelled", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "numerator", - "type": "uint256" - }, - { - "name": "denominator", - "type": "uint256" - }, - { - "name": "target", - "type": "uint256" - } - ], - "name": "getPartialAmount", - "outputs": [ - { - "name": "partialValue", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5][]" - }, - { - "name": "orderValues", - "type": "uint256[6][]" - }, - { - "name": "cancelTakerTokenAmounts", - "type": "uint256[]" - } - ], - "name": "batchCancelOrders", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5][]" - }, - { - "name": "orderValues", - "type": "uint256[6][]" - }, - { - "name": "fillTakerTokenAmount", - "type": "uint256" - }, - { - "name": "shouldThrowOnInsufficientBalanceOrAllowance", - "type": "bool" - }, - { - "name": "v", - "type": "uint8[]" - }, - { - "name": "r", - "type": "bytes32[]" - }, - { - "name": "s", - "type": "bytes32[]" - } - ], - "name": "fillOrdersUpTo", - "outputs": [ - { - "name": "filledTakerTokenAmount", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "signer", - "type": "address" - }, - { - "name": "hash", - "type": "bytes32" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "name": "isValid", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5]" - }, - { - "name": "orderValues", - "type": "uint256[6]" - }, - { - "name": "fillTakerTokenAmount", - "type": "uint256" - }, - { - "name": "shouldThrowOnInsufficientBalanceOrAllowance", - "type": "bool" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "name": "fillOrder", - "outputs": [ - { - "name": "filledTakerTokenAmount", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5][]" - }, - { - "name": "orderValues", - "type": "uint256[6][]" - }, - { - "name": "fillTakerTokenAmounts", - "type": "uint256[]" - }, - { - "name": "shouldThrowOnInsufficientBalanceOrAllowance", - "type": "bool" - }, - { - "name": "v", - "type": "uint8[]" - }, - { - "name": "r", - "type": "bytes32[]" - }, - { - "name": "s", - "type": "bytes32[]" - } - ], - "name": "batchFillOrders", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5][]" - }, - { - "name": "orderValues", - "type": "uint256[6][]" - }, - { - "name": "fillTakerTokenAmounts", - "type": "uint256[]" - }, - { - "name": "v", - "type": "uint8[]" - }, - { - "name": "r", - "type": "bytes32[]" - }, - { - "name": "s", - "type": "bytes32[]" - } - ], - "name": "batchFillOrKillOrders", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "PROXY_CONTRACT", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "getUnavailableTakerTokenAmount", - "outputs": [ - { - "name": "unavailableTakerTokenAmount", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5]" - }, - { - "name": "orderValues", - "type": "uint256[6]" - } - ], - "name": "getOrderHash", - "outputs": [ - { - "name": "orderHash", - "type": "bytes32" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ZRX_TOKEN_CONTRACT", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5]" - }, - { - "name": "orderValues", - "type": "uint256[6]" - }, - { - "name": "fillTakerTokenAmount", - "type": "uint256" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "name": "fillOrKillOrder", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "inputs": [ - { - "name": "_ZRX_TOKEN_CONTRACT", - "type": "address" - }, - { - "name": "_PROXY_CONTRACT", - "type": "address" - } - ], - "payable": false, - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "maker", - "type": "address" - }, - { - "indexed": false, - "name": "taker", - "type": "address" - }, - { - "indexed": true, - "name": "feeRecipient", - "type": "address" - }, - { - "indexed": false, - "name": "makerToken", - "type": "address" - }, - { - "indexed": false, - "name": "takerToken", - "type": "address" - }, - { - "indexed": false, - "name": "filledMakerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "filledTakerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "paidMakerFee", - "type": "uint256" - }, - { - "indexed": false, - "name": "paidTakerFee", - "type": "uint256" - }, - { - "indexed": true, - "name": "tokens", - "type": "bytes32" - }, - { - "indexed": false, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogFill", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "maker", - "type": "address" - }, - { - "indexed": true, - "name": "feeRecipient", - "type": "address" - }, - { - "indexed": false, - "name": "makerToken", - "type": "address" - }, - { - "indexed": false, - "name": "takerToken", - "type": "address" - }, - { - "indexed": false, - "name": "cancelledMakerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "cancelledTakerTokenAmount", - "type": "uint256" - }, - { - "indexed": true, - "name": "tokens", - "type": "bytes32" - }, - { - "indexed": false, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogCancel", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "errorId", - "type": "uint8" - }, - { - "indexed": true, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogError", - "type": "event" - } - ], - "unlinked_binary": "0x6060604052341561000c57fe5b604051604080611d6e8339810160405280516020909101515b60008054600160a060020a03808516600160a060020a03199283161790925560018054928416929091169190911790555b50505b611d06806100686000396000f300606060405236156100ca5763ffffffff60e060020a60003504166314df96ee81146100cc578063288cdc91146100f95780632ac126221461011e578063363349be14610143578063394c21e7146103055780633b30ba59146103785780634f063e6c146103a45780634f150787146103d0578063741bcc93146105c55780637e9abb501461064d5780638163681e1461067257806398024a8b146106b1578063b7b2c7d6146106dc578063baa0181d146108d9578063bc61394a14610a26578063cfc4d0ec14610ab3575bfe5b34156100d457fe5b6100e5600435602435604435610b24565b604080519115158252519081900360200190f35b341561010157fe5b61010c600435610b43565b60408051918252519081900360200190f35b341561012657fe5b61010c600435610b55565b60408051918252519081900360200190f35b341561014b57fe5b61010c60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156101bd576040805160a08181019092529080840287019060059083908390808284375050509183525050600190910190602001610181565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610230576040805160c081810190925290808402870190600690839083908082843750505091835250506001909101906020016101f4565b5050604080516020878301358901803582810280850184019095528084529799893599838101351515999198506060019650929450810192829185019084908082843750506040805187358901803560208181028481018201909552818452989a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989a998901989297509082019550935083925085019084908082843750949650610b6795505050505050565b60408051918252519081900360200190f35b341561030d57fe5b6040805160a081810190925261010c9160049160a4918390600590839083908082843750506040805160c08181019092529496958181019594509250600691508390839080828437509395505092359250610c8b915050565b60408051918252519081900360200190f35b341561038057fe5b610388610f34565b60408051600160a060020a039092168252519081900360200190f35b34156103ac57fe5b610388610f43565b60408051600160a060020a039092168252519081900360200190f35b34156103d857fe5b6100e560048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561044a576040805160a0818101909252908084028701906005908390839080828437505050918352505060019091019060200161040e565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156104bd576040805160c08181019092529080840287019060069083908390808284375050509183525050600190910190602001610481565b50505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989a998901989297509082019550935083925085019084908082843750949650610f5295505050505050565b604080519115158252519081900360200190f35b34156105cd57fe5b6040805160a08181019092526100e59160049160a4918390600590839083908082843750506040805160c08181019092529496958181019594509250600691508390839080828437509395505083359360ff602082013516935060408101359250606001359050611018565b604080519115158252519081900360200190f35b341561065557fe5b61010c600435611040565b60408051918252519081900360200190f35b341561067a57fe5b6100e5600160a060020a036004351660243560ff6044351660643560843561106c565b604080519115158252519081900360200190f35b34156106b957fe5b61010c600435602435604435611124565b60408051918252519081900360200190f35b34156106e457fe5b6100e560048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610756576040805160a0818101909252908084028701906005908390839080828437505050918352505060019091019060200161071a565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156107c9576040805160c0818101909252908084028701906006908390839080828437505050918352505060019091019060200161078d565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375050604080516020808901358a01803580830284810184018652818552999b8b3515159b909a950198509296508101945090925082919085019084908082843750506040805187358901803560208181028481018201909552818452989a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061114395505050505050565b604080519115158252519081900360200190f35b34156108e157fe5b6100e560048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610953576040805160a08181019092529080840287019060059083908390808284375050509183525050600190910190602001610917565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156109c6576040805160c0818101909252908084028701906006908390839080828437505050918352505060019091019060200161098a565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061120495505050505050565b604080519115158252519081900360200190f35b3415610a2e57fe5b6040805160a081810190925261010c9160049160a4918390600590839083908082843750506040805160c08181019092529496958181019594509250600691508390839080828437509395505083359360208101351515935060ff60408201351692506060810135915060800135611278565b60408051918252519081900360200190f35b3415610abb57fe5b6040805160a081810190925261010c9160049160a4918390600590839083908082843750506040805160c08181019092529496958181019594509250600691508390839080828437509395506116ed945050505050565b60408051918252519081900360200190f35b60006103e882108015610b3957508284830915155b90505b9392505050565b60026020526000908152604090205481565b60036020526000908152604090205481565b6000805b8851811015610c7e57886000815181101515610b8357fe5b6020908102909101015160035b6020020151600160a060020a03168982815181101515610bac57fe5b6020908102909101015160035b6020020151600160a060020a031614610bd25760006000fd5b610c6682610c618b84815181101515610be757fe5b906020019060200201518b85815181101515610bff57fe5b90602001906020020151610c138c886117e0565b8b8b88815181101515610c2257fe5b906020019060200201518b89815181101515610c3a57fe5b906020019060200201518b8a815181101515610c5257fe5b90602001906020020151611278565b6117f7565b915086821415610c7557610c7e565b5b600101610b6b565b5b50979650505050505050565b6000610c95611c5e565b6040805161016081019091526000908087835b60209081029190910151600160a060020a03168252018760015b60209081029190910151600160a060020a03168252018760025b60209081029190910151600160a060020a03168252018760035b60209081029190910151600160a060020a03168252018760045b60209081029190910151600160a060020a03168252018660005b602090810291909101518252018660015b602090810291909101518252018660025b602090810291909101518252018660035b602090810291909101518252018660045b60200201518152602001610d8288886116ed565b9052805190925033600160a060020a03908116911614610da25760006000fd5b6101208201514210610dd657610140820151604051600090600080516020611cbb833981519152908290a360009250610f2b565b610df18260c00151610dec846101400151611040565b6117e0565b9050610dfd8482611811565b9250821515610e2f57610140820151604051600190600080516020611cbb83398151915290600090a360009250610f2b565b610140820151600090815260036020526040902054610e4e90846117f7565b610140830151600090815260036020526040908190209190915580830180516060850180518451606060020a600160a060020a03948516810282529184169091026014820152935193849003602801909320608086015186519351945160c088015160a0890151939692851695909416937f67d66f160bc93d925d05dae1794c90d2d6d6688b29b84ff069398a9b0458713193610eec918b91611124565b61014089015160408051600160a060020a03958616815293909416602084015282840191909152606082018a9052608082015290519081900360a00190a45b50509392505050565b600054600160a060020a031681565b600154600160a060020a031681565b6000805b875181101561100857610ff78882815181101515610f7057fe5b906020019060200201518883815181101515610f8857fe5b906020019060200201518884815181101515610fa057fe5b906020019060200201518885815181101515610fb857fe5b906020019060200201518886815181101515610fd057fe5b906020019060200201518887815181101515610fe857fe5b90602001906020020151611018565b1515610fff57fe5b5b600101610f56565b600191505b509695505050505050565b60008461102b8888886000898989611278565b1461103257fe5b5060015b9695505050505050565b600081815260026020908152604080832054600390925282205461106491906117f7565b90505b919050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101869052815190819003603c018120600082815260208381018552928401819052835191825260ff8716828401528184018690526060820185905292516001926080808401939192601f1981019281900390910190868661646e5a03f115156110fb57fe5b505060206040510351600160a060020a031686600160a060020a03161490505b95945050505050565b6000610b39611133858461182b565b8461185a565b90505b9392505050565b6000805b88518110156111f3576111e9898281518110151561116157fe5b90602001906020020151898381518110151561117957fe5b90602001906020020151898481518110151561119157fe5b906020019060200201518989868151811015156111aa57fe5b9060200190602002015189878151811015156111c257fe5b906020019060200201518988815181101515610c5257fe5b90602001906020020151611278565b505b600101611147565b600191505b50979650505050505050565b6000805b845181101561126b57611261858281518110151561122257fe5b90602001906020020151858381518110151561123a57fe5b90602001906020020151858481518110151561125257fe5b90602001906020020151610c8b565b505b600101611208565b600191505b509392505050565b6000611282611c5e565b6000600060006000610160604051908101604052808e60006005811015156112a657fe5b60209081029190910151600160a060020a03168252018e60015b60209081029190910151600160a060020a03168252018e60025b60209081029190910151600160a060020a03168252018e60035b60209081029190910151600160a060020a03168252018e60045b60209081029190910151600160a060020a03168252018d60005b602090810291909101518252018d60015b602090810291909101518252018d60025b602090810291909101518252018d60035b602090810291909101518252018d60045b602002015181526020016113808f8f6116ed565b90526020810151909550600160a060020a031615806113b4575033600160a060020a03168560200151600160a060020a0316145b15156113c05760006000fd5b6113d685600001518661014001518b8b8b61106c565b15156113e25760006000fd5b610120850151421061141657610140850151604051600090600080516020611cbb833981519152908290a3600095506116dd565b6114318560c00151610dec876101400151611040565b6117e0565b935061143d8b85611811565b955085151561146f57610140850151604051600190600080516020611cbb83398151915290600090a3600095506116dd565b611482868660c001518760a00151610b24565b156114b057610140850151604051600290600080516020611cbb83398151915290600090a3600095506116dd565b891580156114c557506114c38587611877565b155b156114f357610140850151604051600390600080516020611cbb83398151915290600090a3600095506116dd565b611506868660c001518760a00151611124565b61014086015160009081526002602052604090205490935061152890876117f7565b6101408601516000908152600260205260409081902091909155850151855161155391903386611ad3565b151561155b57fe5b61156f856060015133876000015189611ad3565b151561157757fe5b6080850151600160a060020a0316156116235760008560e0015111156115d5576115aa868660c001518760e00151611124565b600054865160808801519294506115cd92600160a060020a039092169185611ad3565b15156115d557fe5b5b60008561010001511115611623576115f8868660c00151876101000151611124565b600054608087015191925061161b91600160a060020a0390911690339084611ad3565b151561162357fe5b5b5b60408086018051606080890180518551606060020a600160a060020a0395861681028252918516909102601482015285519081900360280181206080808d01518d51975194516101408f0151338916865295881660208601528716848a01529483018b905282018d905260a0820189905260c0820188905260e08201929092529451909491831693909216917f0d0b9391970d9a25552f37d436d2aae2925e2bfe1b2a923754bada030c498cb3918190036101000190a45b5050505050979650505050505050565b60003083825b60200201518460015b60200201518560025b60200201518660035b60200201518760045b60200201518760005b60200201518860015b60200201518960025b60200201518a60035b60200201518b60045b60200201518c60055b602002015160408051606060020a600160a060020a039e8f16810282529c8e168d0260148201529a8d168c0260288c0152988c168b02603c8b0152968b168a0260508a01529490991690970260648701526078860191909152609885015260b884019490945260d883019490945260f8820192909252610118810192909252519081900361013801902090505b92915050565b6000828211156117ec57fe5b508082035b92915050565b60008282018381101561180657fe5b8091505b5092915050565b60008183106118205781611822565b825b90505b92915050565b6000828202831580611847575082848281151561184457fe5b04145b151561180657fe5b8091505b5092915050565b60006000828481151561186957fe5b0490508091505b5092915050565b60006000600060006000600060006000600033975061189f8a8c60c001518d60a00151611124565b60808c0151909750600160a060020a031615611a545760005460408c015160608d015160c08e015160e08f0151600160a060020a0394851693851684149a509390911690911496506118f3918c9190611124565b93506119098a8c60c001518d6101000151611124565b9250856119165783611920565b61192087856117f7565b5b91508461192e5782611938565b6119388a846117f7565b5b6000548c51919250839161195691600160a060020a031690611b62565b108061197b57506000548b51839161197991600160a060020a0390911690611be2565b105b8061199b5750600054819061199990600160a060020a03168a611b62565b105b806119bb575060005481906119b990600160a060020a03168a611be2565b105b156119c95760009850611ac5565b85158015611a015750866119e58c604001518d60000151611b62565b1080611a015750866119ff8c604001518d60000151611be2565b105b5b15611a105760009850611ac5565b84158015611a40575089611a288c606001518a611b62565b1080611a40575089611a3e8c606001518a611be2565b105b5b15611a4f5760009850611ac5565b611abf565b86611a678c604001518d60000151611b62565b1080611a83575086611a818c604001518d60000151611be2565b105b80611a9a575089611a988c606001518a611b62565b105b80611ab1575089611aaf8c606001518a611be2565b105b15611abf5760009850611ac5565b5b600198505b505050505050505092915050565b6001546040805160006020918201819052825160e160020a630aed65f5028152600160a060020a03898116600483015288811660248301528781166044830152606482018790529351919493909316926315dacbea92608480830193919282900301818787803b1515611b4257fe5b6102c65a03f11515611b5057fe5b5050604051519150505b949350505050565b600082600160a060020a03166370a08231836000604051602001526040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b1515611bc457fe5b6102c65a03f11515611bd257fe5b5050604051519150505b92915050565b6001546040805160006020918201819052825160e160020a636eb1769f028152600160a060020a03868116600483015294851660248201529251909386169263dd62ed3e92604480830193919282900301818787803b1515611bc457fe5b6102c65a03f11515611bd257fe5b5050604051519150505b92915050565b6040805161016081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081019190915290560036d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e90a165627a7a72305820ebcefc5e253855f67db0c7e9d7fd4b3b16004c01384ee01564d3091e35c3cc860029", - "networks": { - "42": { - "links": {}, - "events": { - "0x0d0b9391970d9a25552f37d436d2aae2925e2bfe1b2a923754bada030c498cb3": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "maker", - "type": "address" - }, - { - "indexed": false, - "name": "taker", - "type": "address" - }, - { - "indexed": true, - "name": "feeRecipient", - "type": "address" - }, - { - "indexed": false, - "name": "makerToken", - "type": "address" - }, - { - "indexed": false, - "name": "takerToken", - "type": "address" - }, - { - "indexed": false, - "name": "filledMakerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "filledTakerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "paidMakerFee", - "type": "uint256" - }, - { - "indexed": false, - "name": "paidTakerFee", - "type": "uint256" - }, - { - "indexed": true, - "name": "tokens", - "type": "bytes32" - }, - { - "indexed": false, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogFill", - "type": "event" - }, - "0x67d66f160bc93d925d05dae1794c90d2d6d6688b29b84ff069398a9b04587131": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "maker", - "type": "address" - }, - { - "indexed": true, - "name": "feeRecipient", - "type": "address" - }, - { - "indexed": false, - "name": "makerToken", - "type": "address" - }, - { - "indexed": false, - "name": "takerToken", - "type": "address" - }, - { - "indexed": false, - "name": "cancelledMakerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "cancelledTakerTokenAmount", - "type": "uint256" - }, - { - "indexed": true, - "name": "tokens", - "type": "bytes32" - }, - { - "indexed": false, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogCancel", - "type": "event" - }, - "0x36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e90": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "errorId", - "type": "uint8" - }, - { - "indexed": true, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogError", - "type": "event" - } - }, - "updated_at": 1499299724252, - "address": "0x63869171a246622ef8f9234879ce2c06cebd85f6" - }, - "50": { - "links": {}, - "events": { - "0xcf8bd4f6ec4f39997290cf18413805f1f190eebd60e32ffc174b56d07a355beb": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "maker", - "type": "address" - }, - { - "indexed": false, - "name": "taker", - "type": "address" - }, - { - "indexed": true, - "name": "feeRecipient", - "type": "address" - }, - { - "indexed": false, - "name": "makerToken", - "type": "address" - }, - { - "indexed": false, - "name": "takerToken", - "type": "address" - }, - { - "indexed": false, - "name": "filledBy", - "type": "address" - }, - { - "indexed": false, - "name": "makerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "takerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "makerFee", - "type": "uint256" - }, - { - "indexed": false, - "name": "takerFee", - "type": "uint256" - }, - { - "indexed": false, - "name": "expirationTimestampInSec", - "type": "uint256" - }, - { - "indexed": false, - "name": "filledTakerTokenAmount", - "type": "uint256" - }, - { - "indexed": true, - "name": "tokens", - "type": "bytes32" - }, - { - "indexed": false, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogFill", - "type": "event" - }, - "0x4565177cd5184f550db0ab57b1d5bc808f8e8ba0adcb13fb257f1e7cf019a2b6": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "maker", - "type": "address" - }, - { - "indexed": true, - "name": "feeRecipient", - "type": "address" - }, - { - "indexed": false, - "name": "makerToken", - "type": "address" - }, - { - "indexed": false, - "name": "takerToken", - "type": "address" - }, - { - "indexed": false, - "name": "makerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "takerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "makerFee", - "type": "uint256" - }, - { - "indexed": false, - "name": "takerFee", - "type": "uint256" - }, - { - "indexed": false, - "name": "expirationTimestampInSec", - "type": "uint256" - }, - { - "indexed": false, - "name": "cancelledtakerTokenAmount", - "type": "uint256" - }, - { - "indexed": true, - "name": "tokens", - "type": "bytes32" - }, - { - "indexed": false, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogCancel", - "type": "event" - }, - "0x36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e90": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "errorId", - "type": "uint8" - }, - { - "indexed": true, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogError", - "type": "event" - }, - "0x0d0b9391970d9a25552f37d436d2aae2925e2bfe1b2a923754bada030c498cb3": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "maker", - "type": "address" - }, - { - "indexed": false, - "name": "taker", - "type": "address" - }, - { - "indexed": true, - "name": "feeRecipient", - "type": "address" - }, - { - "indexed": false, - "name": "makerToken", - "type": "address" - }, - { - "indexed": false, - "name": "takerToken", - "type": "address" - }, - { - "indexed": false, - "name": "filledMakerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "filledTakerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "paidMakerFee", - "type": "uint256" - }, - { - "indexed": false, - "name": "paidTakerFee", - "type": "uint256" - }, - { - "indexed": true, - "name": "tokens", - "type": "bytes32" - }, - { - "indexed": false, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogFill", - "type": "event" - }, - "0x67d66f160bc93d925d05dae1794c90d2d6d6688b29b84ff069398a9b04587131": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "maker", - "type": "address" - }, - { - "indexed": true, - "name": "feeRecipient", - "type": "address" - }, - { - "indexed": false, - "name": "makerToken", - "type": "address" - }, - { - "indexed": false, - "name": "takerToken", - "type": "address" - }, - { - "indexed": false, - "name": "cancelledMakerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "cancelledTakerTokenAmount", - "type": "uint256" - }, - { - "indexed": true, - "name": "tokens", - "type": "bytes32" - }, - { - "indexed": false, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogCancel", - "type": "event" - } - }, - "updated_at": 1499462280316, - "address": "0xb69e673309512a9d726f87304c6984054f87a93b" - } - }, - "schema_version": "0.0.5", - "updated_at": 1499462280316 -} -- cgit v1.2.3 From 2787bdc46b1670fb0444578b62ae85e6aa626264 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Tue, 11 Jul 2017 11:33:47 -0700 Subject: Remove exchange artifacts by name --- src/exchange_artifacts_by_name.ts | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 src/exchange_artifacts_by_name.ts (limited to 'src') diff --git a/src/exchange_artifacts_by_name.ts b/src/exchange_artifacts_by_name.ts deleted file mode 100644 index d5ae6e180..000000000 --- a/src/exchange_artifacts_by_name.ts +++ /dev/null @@ -1,6 +0,0 @@ -import {ContractArtifact} from './types'; -import * as Exchange_v1 from './artifacts/exchange/Exchange_v1.json'; - -export const ExchangeArtifactsByName = { - Exchange_v1: Exchange_v1 as any as ContractArtifact, -}; -- cgit v1.2.3 From 8052625e76675fbe8c894e7a58fe8707ee14c5ad Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Tue, 11 Jul 2017 12:53:22 -0700 Subject: Migrate to using a single Exchange contract --- src/0x.ts | 39 ----------- src/contract_wrappers/exchange_wrapper.ts | 108 +++++++++++------------------- src/contract_wrappers/proxy_wrapper.ts | 3 +- 3 files changed, 40 insertions(+), 110 deletions(-) (limited to 'src') diff --git a/src/0x.ts b/src/0x.ts index 92a892336..aeed7b042 100644 --- a/src/0x.ts +++ b/src/0x.ts @@ -21,7 +21,6 @@ import {ECSignature, ZeroExError, Order, SignedOrder, Web3Provider} from './type import {orderHashSchema} from './schemas/order_hash_schema'; import {orderSchema} from './schemas/order_schemas'; import {SchemaValidator} from './utils/schema_validator'; -import {ExchangeArtifactsByName} from './exchange_artifacts_by_name'; // Customize our BigNumber instances bigNumberConfigs.configure(); @@ -245,42 +244,4 @@ export class ZeroEx { throw new Error(ZeroExError.INVALID_SIGNATURE); } - /** - * Returns the ethereum addresses of all available exchange contracts - * supported by this library on the network that the supplied web3 - * provider is connected to - * @return The ethereum addresses of all available exchange contracts. - */ - public async getAvailableExchangeContractAddressesAsync(): Promise { - const networkId = await this._web3Wrapper.getNetworkIdIfExistsAsync(); - if (_.isUndefined(networkId)) { - return []; - } else { - const exchangeArtifacts = _.values(ExchangeArtifactsByName); - const networkSpecificExchangeArtifacts = _.compact(_.map( - exchangeArtifacts, exchangeArtifact => exchangeArtifact.networks[networkId])); - const exchangeAddresses = _.map( - networkSpecificExchangeArtifacts, - networkSpecificExchangeArtifact => networkSpecificExchangeArtifact.address, - ); - return exchangeAddresses; - } - } - /** - * Returns the ethereum addresses of all available exchange contracts - * supported by this library on the network that the supplied web3 - * provider is connected to that are currently authorized by the Proxy contract - * @return The ethereum addresses of all available and authorized exchange contract. - */ - public async getProxyAuthorizedExchangeContractAddressesAsync(): Promise { - const exchangeContractAddresses = await this.getAvailableExchangeContractAddressesAsync(); - const proxyAuthorizedExchangeContractAddresses = []; - for (const exchangeContractAddress of exchangeContractAddresses) { - const isAuthorized = await this.proxy.isAuthorizedAsync(exchangeContractAddress); - if (isAuthorized) { - proxyAuthorizedExchangeContractAddresses.push(exchangeContractAddress); - } - } - return proxyAuthorizedExchangeContractAddresses; - } } diff --git a/src/contract_wrappers/exchange_wrapper.ts b/src/contract_wrappers/exchange_wrapper.ts index c352c782b..50e0f5d3c 100644 --- a/src/contract_wrappers/exchange_wrapper.ts +++ b/src/contract_wrappers/exchange_wrapper.ts @@ -49,7 +49,7 @@ import {signedOrderSchema, orderSchema} from '../schemas/order_schemas'; import {constants} from '../utils/constants'; import {TokenWrapper} from './token_wrapper'; import {decorators} from '../utils/decorators'; -import {ExchangeArtifactsByName} from '../exchange_artifacts_by_name'; +import * as ExchangeArtifacts from '../artifacts/Exchange.json'; /** * This class includes all the functionality related to calling methods and subscribing to @@ -64,7 +64,7 @@ export class ExchangeWrapper extends ContractWrapper { [ExchangeContractErrCodes.ERROR_FILL_TRUNCATION]: ExchangeContractErrs.ORDER_FILL_ROUNDING_ERROR, [ExchangeContractErrCodes.ERROR_FILL_BALANCE_ALLOWANCE]: ExchangeContractErrs.FILL_BALANCE_ALLOWANCE_ERROR, }; - private _exchangeContractByAddress: ExchangeContractByAddress; + private _exchangeContractIfExists?: ExchangeContract; private _exchangeLogEventEmitters: ContractEventEmitter[]; private _tokenWrapper: TokenWrapper; private static _getOrderAddressesAndValues(order: Order): [OrderAddresses, OrderValues] { @@ -89,7 +89,6 @@ export class ExchangeWrapper extends ContractWrapper { super(web3Wrapper); this._tokenWrapper = tokenWrapper; this._exchangeLogEventEmitters = []; - this._exchangeContractByAddress = {}; } /** * Returns the unavailable takerAmount of an order. Unavailable amount is defined as the total @@ -97,14 +96,12 @@ export class ExchangeWrapper extends ContractWrapper { * subtracting the unavailable amount from the total order takerAmount. * @param orderHash The hex encoded orderHash for which you would like to retrieve the * unavailable takerAmount. - * @param exchangeContractAddress The hex encoded address of the Exchange contract to call. * @return The amount of the order (in taker tokens) that has either been filled or canceled. */ - public async getUnavailableTakerAmountAsync(orderHash: string, - exchangeContractAddress: string): Promise { + public async getUnavailableTakerAmountAsync(orderHash: string): Promise { assert.doesConformToSchema('orderHash', orderHash, orderHashSchema); - const exchangeContract = await this._getExchangeContractAsync(exchangeContractAddress); + const exchangeContract = await this._getExchangeContractAsync(); let unavailableTakerTokenAmount = await exchangeContract.getUnavailableTakerTokenAmount.call(orderHash); // Wrap BigNumbers returned from web3 with our own (later) version of BigNumber unavailableTakerTokenAmount = new BigNumber(unavailableTakerTokenAmount); @@ -113,14 +110,12 @@ export class ExchangeWrapper extends ContractWrapper { /** * Retrieve the takerAmount of an order that has already been filled. * @param orderHash The hex encoded orderHash for which you would like to retrieve the filled takerAmount. - * @param exchangeContractAddress The hex encoded address of the Exchange contract to call. * @return The amount of the order (in taker tokens) that has already been filled. */ - public async getFilledTakerAmountAsync(orderHash: string, - exchangeContractAddress: string): Promise { + public async getFilledTakerAmountAsync(orderHash: string): Promise { assert.doesConformToSchema('orderHash', orderHash, orderHashSchema); - const exchangeContract = await this._getExchangeContractAsync(exchangeContractAddress); + const exchangeContract = await this._getExchangeContractAsync(); let fillAmountInBaseUnits = await exchangeContract.filled.call(orderHash); // Wrap BigNumbers returned from web3 with our own (later) version of BigNumber fillAmountInBaseUnits = new BigNumber(fillAmountInBaseUnits); @@ -130,14 +125,12 @@ export class ExchangeWrapper extends ContractWrapper { * Retrieve the takerAmount of an order that has been cancelled. * @param orderHash The hex encoded orderHash for which you would like to retrieve the * cancelled takerAmount. - * @param exchangeContractAddress The hex encoded address of the Exchange contract to call. * @return The amount of the order (in taker tokens) that has been cancelled. */ - public async getCanceledTakerAmountAsync(orderHash: string, - exchangeContractAddress: string): Promise { + public async getCanceledTakerAmountAsync(orderHash: string): Promise { assert.doesConformToSchema('orderHash', orderHash, orderHashSchema); - const exchangeContract = await this._getExchangeContractAsync(exchangeContractAddress); + const exchangeContract = await this._getExchangeContractAsync(); let cancelledAmountInBaseUnits = await exchangeContract.cancelled.call(orderHash); // Wrap BigNumbers returned from web3 with our own (later) version of BigNumber cancelledAmountInBaseUnits = new BigNumber(cancelledAmountInBaseUnits); @@ -169,7 +162,7 @@ export class ExchangeWrapper extends ContractWrapper { assert.isBoolean('shouldThrowOnInsufficientBalanceOrAllowance', shouldThrowOnInsufficientBalanceOrAllowance); await assert.isSenderAddressAsync('takerAddress', takerAddress, this._web3Wrapper); - const exchangeInstance = await this._getExchangeContractAsync(signedOrder.exchangeContractAddress); + const exchangeInstance = await this._getExchangeContractAsync(); await this._validateFillOrderAndThrowIfInvalidAsync(signedOrder, fillTakerTokenAmount, takerAddress); const [orderAddresses, orderValues] = ExchangeWrapper._getOrderAddressesAndValues(signedOrder); @@ -228,9 +221,6 @@ export class ExchangeWrapper extends ContractWrapper { const takerTokenAddresses = _.map(signedOrders, signedOrder => signedOrder.takerTokenAddress); assert.hasAtMostOneUniqueValue(takerTokenAddresses, ExchangeContractErrs.MULTIPLE_TAKER_TOKENS_IN_FILL_UP_TO_DISALLOWED); - const exchangeContractAddresses = _.map(signedOrders, signedOrder => signedOrder.exchangeContractAddress); - assert.hasAtMostOneUniqueValue(exchangeContractAddresses, - ExchangeContractErrs.BATCH_ORDERS_MUST_HAVE_SAME_EXCHANGE_ADDRESS); assert.isBigNumber('fillTakerTokenAmount', fillTakerTokenAmount); assert.isBoolean('shouldThrowOnInsufficientBalanceOrAllowance', shouldThrowOnInsufficientBalanceOrAllowance); await assert.isSenderAddressAsync('takerAddress', takerAddress, this._web3Wrapper); @@ -255,7 +245,7 @@ export class ExchangeWrapper extends ContractWrapper { orderAddressesValuesAndSignatureArray, ); - const exchangeInstance = await this._getExchangeContractAsync(exchangeContractAddresses[0]); + const exchangeInstance = await this._getExchangeContractAsync(); const gas = await exchangeInstance.fillOrdersUpTo.estimateGas( orderAddressesArray, orderValuesArray, @@ -310,12 +300,6 @@ export class ExchangeWrapper extends ContractWrapper { shouldThrowOnInsufficientBalanceOrAllowance: boolean, takerAddress: string): Promise { assert.doesConformToSchema('orderFillRequests', orderFillRequests, orderFillRequestsSchema); - const exchangeContractAddresses = _.map( - orderFillRequests, - orderFillRequest => orderFillRequest.signedOrder.exchangeContractAddress, - ); - assert.hasAtMostOneUniqueValue(exchangeContractAddresses, - ExchangeContractErrs.BATCH_ORDERS_MUST_HAVE_SAME_EXCHANGE_ADDRESS); assert.isBoolean('shouldThrowOnInsufficientBalanceOrAllowance', shouldThrowOnInsufficientBalanceOrAllowance); await assert.isSenderAddressAsync('takerAddress', takerAddress, this._web3Wrapper); for (const orderFillRequest of orderFillRequests) { @@ -340,7 +324,7 @@ export class ExchangeWrapper extends ContractWrapper { orderAddressesValuesAmountsAndSignatureArray, ); - const exchangeInstance = await this._getExchangeContractAsync(exchangeContractAddresses[0]); + const exchangeInstance = await this._getExchangeContractAsync(); const gas = await exchangeInstance.batchFillOrders.estimateGas( orderAddressesArray, orderValuesArray, @@ -384,11 +368,10 @@ export class ExchangeWrapper extends ContractWrapper { assert.isBigNumber('fillTakerTokenAmount', fillTakerTokenAmount); await assert.isSenderAddressAsync('takerAddress', takerAddress, this._web3Wrapper); - const exchangeInstance = await this._getExchangeContractAsync(signedOrder.exchangeContractAddress); + const exchangeInstance = await this._getExchangeContractAsync(); await this._validateFillOrderAndThrowIfInvalidAsync(signedOrder, fillTakerTokenAmount, takerAddress); - await this._validateFillOrKillOrderAndThrowIfInvalidAsync(signedOrder, exchangeInstance.address, - fillTakerTokenAmount); + await this._validateFillOrKillOrderAndThrowIfInvalidAsync(signedOrder, fillTakerTokenAmount); const [orderAddresses, orderValues] = ExchangeWrapper._getOrderAddressesAndValues(signedOrder); @@ -438,10 +421,9 @@ export class ExchangeWrapper extends ContractWrapper { if (_.isEmpty(orderFillOrKillRequests)) { return; // no-op } - const exchangeInstance = await this._getExchangeContractAsync(exchangeContractAddresses[0]); + const exchangeInstance = await this._getExchangeContractAsync(); for (const request of orderFillOrKillRequests) { - await this._validateFillOrKillOrderAndThrowIfInvalidAsync(request.signedOrder, exchangeInstance.address, - request.fillTakerAmount); + await this._validateFillOrKillOrderAndThrowIfInvalidAsync(request.signedOrder, request.fillTakerAmount); } const orderAddressesValuesAndTakerTokenFillAmounts = _.map(orderFillOrKillRequests, request => { @@ -497,7 +479,7 @@ export class ExchangeWrapper extends ContractWrapper { assert.isBigNumber('takerTokenCancelAmount', cancelTakerTokenAmount); await assert.isSenderAddressAsync('order.maker', order.maker, this._web3Wrapper); - const exchangeInstance = await this._getExchangeContractAsync(order.exchangeContractAddress); + const exchangeInstance = await this._getExchangeContractAsync(); await this._validateCancelOrderAndThrowIfInvalidAsync(order, cancelTakerTokenAmount); const [orderAddresses, orderValues] = ExchangeWrapper._getOrderAddressesAndValues(order); @@ -551,7 +533,7 @@ export class ExchangeWrapper extends ContractWrapper { if (_.isEmpty(orderCancellationRequests)) { return; // no-op } - const exchangeInstance = await this._getExchangeContractAsync(exchangeContractAddresses[0]); + const exchangeInstance = await this._getExchangeContractAsync(); const orderAddressesValuesAndTakerTokenCancelAmounts = _.map(orderCancellationRequests, cancellationRequest => { return [ ...ExchangeWrapper._getOrderAddressesAndValues(cancellationRequest.order), @@ -596,7 +578,7 @@ export class ExchangeWrapper extends ContractWrapper { assert.doesBelongToStringEnum('eventName', eventName, ExchangeEvents); assert.doesConformToSchema('subscriptionOpts', subscriptionOpts, subscriptionOptsSchema); assert.doesConformToSchema('indexFilterValues', indexFilterValues, indexFilterValuesSchema); - const exchangeContract = await this._getExchangeContractAsync(exchangeContractAddress); + const exchangeContract = await this._getExchangeContractAsync(); let createLogEvent: CreateContractEvent; switch (eventName) { case ExchangeEvents.LogFill: @@ -626,18 +608,24 @@ export class ExchangeWrapper extends ContractWrapper { await Promise.all(stopWatchingPromises); this._exchangeLogEventEmitters = []; } + /** + * Returns the Ethereum address of the Exchange contract being used. + */ + public async getContractAddressAsync(): Promise { + const exchangeInstance = await this._getExchangeContractAsync(); + return exchangeInstance.address; + } private async _invalidateContractInstancesAsync(): Promise { await this.stopWatchingAllEventsAsync(); - this._exchangeContractByAddress = {}; + delete this._exchangeContractIfExists; } private async _isValidSignatureUsingContractCallAsync(dataHex: string, ecSignature: ECSignature, - signerAddressHex: string, - exchangeContractAddress: string): Promise { + signerAddressHex: string): Promise { assert.isHexString('dataHex', dataHex); assert.doesConformToSchema('ecSignature', ecSignature, ecSignatureSchema); assert.isETHAddressHex('signerAddressHex', signerAddressHex); - const exchangeInstance = await this._getExchangeContractAsync(exchangeContractAddress); + const exchangeInstance = await this._getExchangeContractAsync(); const isValidSignature = await exchangeInstance.isValidSignature.call( signerAddressHex, @@ -649,7 +637,7 @@ export class ExchangeWrapper extends ContractWrapper { return isValidSignature; } private async _getOrderHashHexUsingContractCallAsync(order: Order|SignedOrder): Promise { - const exchangeInstance = await this._getExchangeContractAsync(order.exchangeContractAddress); + const exchangeInstance = await this._getExchangeContractAsync(); const [orderAddresses, orderValues] = ExchangeWrapper._getOrderAddressesAndValues(order); const orderHashHex = await exchangeInstance.getOrderHash.call(orderAddresses, orderValues); return orderHashHex; @@ -673,7 +661,6 @@ export class ExchangeWrapper extends ContractWrapper { const wouldRoundingErrorOccur = await this._isRoundingErrorAsync( signedOrder.takerTokenAmount, fillTakerAmount, signedOrder.makerTokenAmount, - signedOrder.exchangeContractAddress, ); if (wouldRoundingErrorOccur) { throw new Error(ExchangeContractErrs.ORDER_FILL_ROUNDING_ERROR); @@ -685,7 +672,7 @@ export class ExchangeWrapper extends ContractWrapper { throw new Error(ExchangeContractErrs.ORDER_CANCEL_AMOUNT_ZERO); } const orderHash = utils.getOrderHashHex(order); - const unavailableAmount = await this.getUnavailableTakerAmountAsync(orderHash, order.exchangeContractAddress); + const unavailableAmount = await this.getUnavailableTakerAmountAsync(orderHash); if (order.takerTokenAmount.minus(unavailableAmount).eq(0)) { throw new Error(ExchangeContractErrs.ORDER_ALREADY_CANCELLED_OR_FILLED); } @@ -695,11 +682,10 @@ export class ExchangeWrapper extends ContractWrapper { } } private async _validateFillOrKillOrderAndThrowIfInvalidAsync(signedOrder: SignedOrder, - exchangeContractAddress: string, fillTakerAmount: BigNumber.BigNumber) { // Check that fillValue available >= fillTakerAmount const orderHashHex = utils.getOrderHashHex(signedOrder); - const unavailableTakerAmount = await this.getUnavailableTakerAmountAsync(orderHashHex, exchangeContractAddress); + const unavailableTakerAmount = await this.getUnavailableTakerAmountAsync(orderHashHex); const remainingTakerAmount = signedOrder.takerTokenAmount.minus(unavailableTakerAmount); if (remainingTakerAmount < fillTakerAmount) { throw new Error(ExchangeContractErrs.INSUFFICIENT_REMAINING_FILL_AMOUNT); @@ -776,40 +762,24 @@ export class ExchangeWrapper extends ContractWrapper { } private async _isRoundingErrorAsync(numerator: BigNumber.BigNumber, demoninator: BigNumber.BigNumber, - makerTokenAmount: BigNumber.BigNumber, - exchangeContractAddress: string): Promise { + makerTokenAmount: BigNumber.BigNumber): Promise { await assert.isUserAddressAvailableAsync(this._web3Wrapper); - const exchangeInstance = await this._getExchangeContractAsync(exchangeContractAddress); + const exchangeInstance = await this._getExchangeContractAsync(); const isRoundingError = await exchangeInstance.isRoundingError.call( demoninator, numerator, makerTokenAmount, ); return isRoundingError; } - private async _getExchangeContractAsync(exchangeContractAddress: string): Promise { - if (!_.isUndefined(this._exchangeContractByAddress[exchangeContractAddress])) { - return this._exchangeContractByAddress[exchangeContractAddress]; + private async _getExchangeContractAsync(): Promise { + if (!_.isUndefined(this._exchangeContractIfExists)) { + return this._exchangeContractIfExists; } - const ExchangeArtifacts = this._getExchangeArtifactsByAddressOrThrow(exchangeContractAddress); const contractInstance = await this._instantiateContractIfExistsAsync((ExchangeArtifacts as any)); - this._exchangeContractByAddress[exchangeContractAddress] = contractInstance as ExchangeContract; - return this._exchangeContractByAddress[exchangeContractAddress]; - } - private _getExchangeArtifactsByAddressOrThrow(exchangeContractAddress: string): ContractArtifact { - const exchangeArtifacts = _.values(ExchangeArtifactsByName); - for (const exchangeArtifact of exchangeArtifacts) { - const networkSpecificExchangeArtifactValues = _.values(exchangeArtifact.networks); - const exchangeAddressesInArtifact = _.map( - networkSpecificExchangeArtifactValues, - networkSpecificExchangeArtifact => networkSpecificExchangeArtifact.address, - ); - if (_.includes(exchangeAddressesInArtifact, exchangeContractAddress)) { - return exchangeArtifact; - } - } - throw new Error(ZeroExError.EXCHANGE_CONTRACT_DOES_NOT_EXIST); + this._exchangeContractIfExists = contractInstance as ExchangeContract; + return this._exchangeContractIfExists; } private async _getZRXTokenAddressAsync(exchangeContractAddress: string): Promise { - const exchangeInstance = await this._getExchangeContractAsync(exchangeContractAddress); + const exchangeInstance = await this._getExchangeContractAsync(); const ZRXtokenAddress = await exchangeInstance.ZRX_TOKEN_CONTRACT.call(); return ZRXtokenAddress; } diff --git a/src/contract_wrappers/proxy_wrapper.ts b/src/contract_wrappers/proxy_wrapper.ts index 05d4e142c..c247754f8 100644 --- a/src/contract_wrappers/proxy_wrapper.ts +++ b/src/contract_wrappers/proxy_wrapper.ts @@ -21,10 +21,9 @@ export class ProxyWrapper extends ContractWrapper { } /** * Get the list of all Exchange contract addresses authorized by the Proxy contract. - * @param exchangeContractAddress The hex encoded address of the Exchange contract to call. * @return The list of authorized addresses. */ - public async getAuthorizedAddressesAsync(exchangeContractAddress: string): Promise { + public async getAuthorizedAddressesAsync(): Promise { const proxyContractInstance = await this._getProxyContractAsync(); const authorizedAddresses = await proxyContractInstance.getAuthorizedAddresses.call(); return authorizedAddresses; -- cgit v1.2.3 From 4efba2a4bc93f49f1962f1c774c628aea4d19251 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Tue, 11 Jul 2017 17:40:37 -0700 Subject: Fix the comment --- src/contract_wrappers/exchange_wrapper.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/contract_wrappers/exchange_wrapper.ts b/src/contract_wrappers/exchange_wrapper.ts index 50e0f5d3c..a6eab0fa2 100644 --- a/src/contract_wrappers/exchange_wrapper.ts +++ b/src/contract_wrappers/exchange_wrapper.ts @@ -609,7 +609,9 @@ export class ExchangeWrapper extends ContractWrapper { this._exchangeLogEventEmitters = []; } /** - * Returns the Ethereum address of the Exchange contract being used. + * Retrieves the Ethereum address of the Exchange contract deployed on the network + * that the user-passed web3 provider is connected to. + * @returns The Ethereum address of the Exchange contract being used. */ public async getContractAddressAsync(): Promise { const exchangeInstance = await this._getExchangeContractAsync(); -- cgit v1.2.3