diff --git a/contracts/abi/PricerRule.abi b/contracts/abi/PricerRule.abi new file mode 100644 index 0000000..2f15893 --- /dev/null +++ b/contracts/abi/PricerRule.abi @@ -0,0 +1 @@ +[{"constant":true,"inputs":[{"name":"","type":"bytes3"}],"name":"baseCurrencyPriceAcceptanceMargins","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"organization","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"eip20Token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes3"}],"name":"baseCurrencyPriceOracles","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"conversionRateFromBaseCurrencyToToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenRules","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"requiredPriceOracleDecimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"conversionRateDecimalsFromBaseCurrencyToToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"baseCurrencyCode","outputs":[{"name":"","type":"bytes3"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_organization","type":"address"},{"name":"_eip20Token","type":"address"},{"name":"_baseCurrencyCode","type":"bytes3"},{"name":"_conversionRate","type":"uint256"},{"name":"_conversionRateDecimals","type":"uint8"},{"name":"_requiredPriceOracleDecimals","type":"uint8"},{"name":"_tokenRules","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_priceOracle","type":"address"}],"name":"PriceOracleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_priceOracle","type":"address"}],"name":"PriceOracleRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_quoteCurrencyCode","type":"bytes3"},{"indexed":false,"name":"_acceptanceMargin","type":"uint256"}],"name":"AcceptanceMarginSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_quoteCurrencyCode","type":"bytes3"}],"name":"AcceptanceMarginRemoved","type":"event"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_toList","type":"address[]"},{"name":"_amountList","type":"uint256[]"},{"name":"_payCurrencyCode","type":"bytes3"},{"name":"_baseCurrencyIntendedPrice","type":"uint256"}],"name":"pay","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_priceOracle","type":"address"}],"name":"addPriceOracle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_payCurrencyCode","type":"bytes3"}],"name":"removePriceOracle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_payCurrencyCode","type":"bytes3"},{"name":"_acceptanceMargin","type":"uint256"}],"name":"setAcceptanceMargin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_payCurrencyCode","type":"bytes3"}],"name":"removeAcceptanceMargin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/contracts/abi/ProxyFactory.abi b/contracts/abi/ProxyFactory.abi new file mode 100644 index 0000000..95f31db --- /dev/null +++ b/contracts/abi/ProxyFactory.abi @@ -0,0 +1 @@ +[{"anonymous":false,"inputs":[{"indexed":false,"name":"_proxy","type":"address"}],"name":"ProxyCreated","type":"event"},{"constant":false,"inputs":[{"name":"_masterCopy","type":"address"},{"name":"_data","type":"bytes"}],"name":"createProxy","outputs":[{"name":"proxy_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/contracts/abi/TokenHolder.abi b/contracts/abi/TokenHolder.abi new file mode 100644 index 0000000..7229dcc --- /dev/null +++ b/contracts/abi/TokenHolder.abi @@ -0,0 +1 @@ +[{"constant":true,"inputs":[],"name":"EXECUTE_RULE_CALLPREFIX","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sessionWindow","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenRules","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EXECUTE_REDEMPTION_CALLPREFIX","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"sessionKeys","outputs":[{"name":"spendingLimit","type":"uint256"},{"name":"expirationHeight","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"session","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_sessionKey","type":"address"}],"name":"SessionAuthorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_sessionKey","type":"address"}],"name":"SessionRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_sessionWindow","type":"uint256"}],"name":"SessionsLoggedOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_messageHash","type":"bytes32"},{"indexed":false,"name":"_status","type":"bool"}],"name":"RuleExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_messageHash","type":"bytes32"},{"indexed":false,"name":"_status","type":"bool"}],"name":"RedemptionExecuted","type":"event"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_tokenRules","type":"address"},{"name":"_owner","type":"address"},{"name":"_sessionKeys","type":"address[]"},{"name":"_sessionKeysSpendingLimits","type":"uint256[]"},{"name":"_sessionKeysExpirationHeights","type":"uint256[]"}],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_sessionKey","type":"address"},{"name":"_spendingLimit","type":"uint256"},{"name":"_expirationHeight","type":"uint256"}],"name":"authorizeSession","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_sessionKey","type":"address"}],"name":"revokeSession","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"logout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_data","type":"bytes"},{"name":"_nonce","type":"uint256"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"},{"name":"_v","type":"uint8"}],"name":"executeRule","outputs":[{"name":"executionStatus_","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_data","type":"bytes"},{"name":"_nonce","type":"uint256"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"},{"name":"_v","type":"uint8"}],"name":"executeRedemption","outputs":[{"name":"executionStatus_","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"}] \ No newline at end of file diff --git a/contracts/abi/TokenRules.abi b/contracts/abi/TokenRules.abi new file mode 100644 index 0000000..7e791c1 --- /dev/null +++ b/contracts/abi/TokenRules.abi @@ -0,0 +1 @@ +[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"rules","outputs":[{"name":"ruleName","type":"string"},{"name":"ruleAddress","type":"address"},{"name":"ruleAbi","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"rulesByNameHash","outputs":[{"name":"index","type":"uint256"},{"name":"exists","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"organization","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"allowedTransfers","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"areDirectTransfersEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"rulesByAddress","outputs":[{"name":"index","type":"uint256"},{"name":"exists","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_organization","type":"address"},{"name":"_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_ruleName","type":"string"},{"indexed":false,"name":"_ruleAddress","type":"address"}],"name":"RuleRegistered","type":"event"},{"constant":false,"inputs":[{"name":"_ruleName","type":"string"},{"name":"_ruleAddress","type":"address"},{"name":"_ruleAbi","type":"string"}],"name":"registerRule","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"allowTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disallowTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_transfersTo","type":"address[]"},{"name":"_transfersAmount","type":"uint256[]"}],"name":"executeTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"enableDirectTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableDirectTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_transfersTo","type":"address[]"},{"name":"_transfersAmount","type":"uint256[]"}],"name":"directTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/contracts/abi/UserWalletFactory.abi b/contracts/abi/UserWalletFactory.abi new file mode 100644 index 0000000..8c4e667 --- /dev/null +++ b/contracts/abi/UserWalletFactory.abi @@ -0,0 +1 @@ +[{"constant":true,"inputs":[],"name":"TOKENHOLDER_SETUP_CALLPREFIX","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_gnosisSafeProxy","type":"address"},{"indexed":false,"name":"_tokenHolderProxy","type":"address"}],"name":"UserWalletCreated","type":"event"},{"constant":false,"inputs":[{"name":"_gnosisSafeMasterCopy","type":"address"},{"name":"_gnosisSafeData","type":"bytes"},{"name":"_tokenHolderMasterCopy","type":"address"},{"name":"_token","type":"address"},{"name":"_tokenRules","type":"address"},{"name":"_sessionKeys","type":"address[]"},{"name":"_sessionKeysSpendingLimits","type":"uint256[]"},{"name":"_sessionKeysExpirationHeights","type":"uint256[]"}],"name":"createUserWallet","outputs":[{"name":"gnosisSafeProxy_","type":"address"},{"name":"tokenHolderProxy_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/contracts/bin/PricerRule.bin b/contracts/bin/PricerRule.bin new file mode 100644 index 0000000..8a34d52 --- /dev/null +++ b/contracts/bin/PricerRule.bin @@ -0,0 +1 @@ +0x608060405234801561001057600080fd5b5060405160e080611874833981018060405260e081101561003057600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949593949293919290919086600160a060020a03811615156100fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4f7267616e697a6174696f6e20636f6e74726163742061646472657373206d7560448201527f7374206e6f74206265207a65726f2e0000000000000000000000000000000000606482015290519081900360840190fd5b60008054600160a060020a031916600160a060020a039283161790558616151561018657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f546f6b656e2061646472657373206973206e756c6c2e00000000000000000000604482015290519081900360640190fd5b7fffffff00000000000000000000000000000000000000000000000000000000008516151561021657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f426173652063757272656e637920636f6465206973206e756c6c2e0000000000604482015290519081900360640190fd5b8315156102aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f436f6e76657273696f6e20726174652066726f6d20746865206261736520637560448201527f7272656e637920746f2074686520746f6b656e20697320302e00000000000000606482015290519081900360840190fd5b600160a060020a038116151561032157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f546f6b656e2072756c65732061646472657373206973206e756c6c2e00000000604482015290519081900360640190fd5b60018054600160a060020a03978816600160a060020a0319909116179055600080547d010000000000000000000000000000000000000000000000000000000000909604740100000000000000000000000000000000000000000260a060020a62ffffff02199096169590951790945560029290925560ff90811660035560048054939094166101000261010060a860020a03199290911660ff1990931692909217161790555061149d806103d76000396000f3fe6080604052600436106100b65763ffffffff60e060020a60003504166306a2768781146100bb5780631e82d63d1461010157806323bd4d7a146101365780635a887047146101675780635a8f940814610256578063612367bf1461026b578063780e2e2e1461029f5780637db547c7146102b45780639c144d5e146102e8578063bb716ef4146102fd578063e5c379d814610337578063f07478af14610362578063f756eb7314610396578063fabdb613146103ab575b600080fd5b3480156100c757600080fd5b506100ef600480360360208110156100de57600080fd5b5035600160e860020a0319166103dd565b60408051918252519081900360200190f35b34801561010d57600080fd5b506101346004803603602081101561012457600080fd5b5035600160a060020a03166103ef565b005b34801561014257600080fd5b5061014b6108eb565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b50610134600480360360a081101561018a57600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156101b557600080fd5b8201836020820111156101c757600080fd5b803590602001918460208302840111640100000000831117156101e957600080fd5b91939092909160208101903564010000000081111561020757600080fd5b82018360208201111561021957600080fd5b8035906020019184602083028401116401000000008311171561023b57600080fd5b9193509150600160e860020a031981351690602001356108fa565b34801561026257600080fd5b5061014b610cb8565b34801561027757600080fd5b5061014b6004803603602081101561028e57600080fd5b5035600160e860020a031916610cc7565b3480156102ab57600080fd5b506100ef610ce2565b3480156102c057600080fd5b50610134600480360360208110156102d757600080fd5b5035600160e860020a031916610ce8565b3480156102f457600080fd5b5061014b610e6f565b34801561030957600080fd5b506101346004803603604081101561032057600080fd5b50600160e860020a03198135169060200135610e83565b34801561034357600080fd5b5061034c611010565b6040805160ff9092168252519081900360200190f35b34801561036e57600080fd5b506101346004803603602081101561038557600080fd5b5035600160e860020a031916611019565b3480156103a257600080fd5b506100ef611201565b3480156103b757600080fd5b506103c0611207565b60408051600160e860020a03199092168252519081900360200190f35b60066020526000908152604090205481565b6000546040805160e060020a63aa1566450281523360048201529051600160a060020a039092169163aa15664591602480820192602092909190829003018186803b15801561043d57600080fd5b505afa158015610451573d6000803e3d6000fd5b505050506040513d602081101561046757600080fd5b505115156104c1576040805160e560020a62461bcd02815260206004820152603960248201526000805160206114528339815191526044820152600080516020611432833981519152606482015290519081900360840190fd5b600160a060020a0381161515610521576040805160e560020a62461bcd02815260206004820152601d60248201527f5072696365206f7261636c652061646472657373206973206e756c6c2e000000604482015290519081900360640190fd5b60048054604080517f313ce567000000000000000000000000000000000000000000000000000000008152905160ff90921692600160a060020a0385169263313ce567928083019260209291829003018186803b15801561058157600080fd5b505afa158015610595573d6000803e3d6000fd5b505050506040513d60208110156105ab57600080fd5b505160ff1614610651576040805160e560020a62461bcd02815260206004820152604160248201527f5072696365206f7261636c6520646563696d616c73206e756d6265722069732060448201527f646966666572656e63652066726f6d20746865207265717569726564206f6e6560648201527f2e00000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600081600160a060020a03166382564bca6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561068f57600080fd5b505afa1580156106a3573d6000803e3d6000fd5b505050506040513d60208110156106b957600080fd5b5051600160e860020a03198116600090815260056020526040902054909150600160a060020a031615610736576040805160e560020a62461bcd02815260206004820152601c60248201527f5072696365206f7261636c6520616c7265616479206578697374732e00000000604482015290519081900360640190fd5b600060149054906101000a90047d010000000000000000000000000000000000000000000000000000000000027cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191682600160a060020a03166392a85fde6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156107bf57600080fd5b505afa1580156107d3573d6000803e3d6000fd5b505050506040513d60208110156107e957600080fd5b5051600160e860020a03191614610870576040805160e560020a62461bcd02815260206004820152603160248201527f5072696365206f7261636c65277320626173652063757272656e637920636f6460448201527f6520646f6573206e6f74206d617463682e000000000000000000000000000000606482015290519081900360840190fd5b600160e860020a03198116600090815260056020908152604091829020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038616908117909155825190815291517facf23cc5480d1d549f783a7bd5430fec8c74f0044e925e78beb6733023a105159281900390910190a15050565b600054600160a060020a031681565b600160a060020a038716151561095a576040805160e560020a62461bcd02815260206004820152601560248201527f46726f6d2061646472657373206973206e756c6c2e0000000000000000000000604482015290519081900360640190fd5b8483146109d7576040805160e560020a62461bcd02815260206004820152603960248201527f27746f2720616e642027616d6f756e7427207472616e7366657220617272617960448201527f7327206c656e6774687320617265206e6f7420657175616c2e00000000000000606482015290519081900360840190fd5b8415156109e357610caf565b60006109ee83611245565b9050801515610a6d576040805160e560020a62461bcd02815260206004820152602960248201527f426173652063757272656e637920707269636520696e2070617920637572726560448201527f6e637920697320302e0000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160e860020a03198316600090815260066020526040902054610a949083908390611354565b1515610b36576040805160e560020a62461bcd02815260206004820152604160248201527f496e74656e646564207072696365206973206e6f7420696e207468652061636360448201527f65707461626c65206d617267696e207772742063757272656e7420707269636560648201527f2e00000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b604080518581526020808702820101909152606090858015610b62578160200160208202803883390190505b50905060005b85811015610bac57610b8c83888884818110610b8057fe5b90506020020135611394565b8282815181101515610b9a57fe5b60209081029091010152600101610b68565b50600480546040517fa6a192da000000000000000000000000000000000000000000000000000000008152600160a060020a038c8116938201938452606060248301908152606483018c9052610100909304169263a6a192da928d928d928d92889260448101906084018660208702808284376000838201819052601f909101601f1916909201858103845286518152865160209182019382890193509102908190849084905b83811015610c6b578181015183820152602001610c53565b505050509050019650505050505050600060405180830381600087803b158015610c9457600080fd5b505af1158015610ca8573d6000803e3d6000fd5b5050505050505b50505050505050565b600154600160a060020a031681565b600560205260009081526040902054600160a060020a031681565b60025481565b6000546040805160e060020a63aa1566450281523360048201529051600160a060020a039092169163aa15664591602480820192602092909190829003018186803b158015610d3657600080fd5b505afa158015610d4a573d6000803e3d6000fd5b505050506040513d6020811015610d6057600080fd5b50511515610dba576040805160e560020a62461bcd02815260206004820152603960248201526000805160206114528339815191526044820152600080516020611432833981519152606482015290519081900360840190fd5b600160e860020a031981161515610e1b576040805160e560020a62461bcd02815260206004820152601a60248201527f5061792063757272656e637920636f6465206973206e756c6c2e000000000000604482015290519081900360640190fd5b600160e860020a03198116600081815260066020908152604080832092909255815192835290517f2c48f41fb0ac91148a38a270c2227239ead8136223f9b12cf603e57c799d5e609281900390910190a150565b6004546101009004600160a060020a031681565b6000546040805160e060020a63aa1566450281523360048201529051600160a060020a039092169163aa15664591602480820192602092909190829003018186803b158015610ed157600080fd5b505afa158015610ee5573d6000803e3d6000fd5b505050506040513d6020811015610efb57600080fd5b50511515610f55576040805160e560020a62461bcd02815260206004820152603960248201526000805160206114528339815191526044820152600080516020611432833981519152606482015290519081900360840190fd5b600160e860020a031982161515610fb6576040805160e560020a62461bcd02815260206004820152601a60248201527f5061792063757272656e637920636f6465206973206e756c6c2e000000000000604482015290519081900360640190fd5b600160e860020a031982166000818152600660209081526040918290208490558151928352820183905280517f9342d2e77f78a211818c17938619fcbb5d57089d24841841df0ff3fa4b13b1639281900390910190a15050565b60045460ff1681565b6000546040805160e060020a63aa1566450281523360048201529051600160a060020a039092169163aa15664591602480820192602092909190829003018186803b15801561106757600080fd5b505afa15801561107b573d6000803e3d6000fd5b505050506040513d602081101561109157600080fd5b505115156110eb576040805160e560020a62461bcd02815260206004820152603960248201526000805160206114528339815191526044820152600080516020611432833981519152606482015290519081900360840190fd5b600160e860020a03198116600090815260056020526040902054600160a060020a031680151561118b576040805160e560020a62461bcd02815260206004820152602660248201527f5072696365206f7261636c6520746f2072656d6f766520646f6573206e6f742060448201527f65786973742e0000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160e860020a03198216600090815260056020908152604091829020805473ffffffffffffffffffffffffffffffffffffffff191690558151600160a060020a038416815291517f1ab93c820592302b2bef0070dd03654585b6942bfde155498ddd3d69190bf0429281900390910190a15050565b60035481565b6000547401000000000000000000000000000000000000000090047d0100000000000000000000000000000000000000000000000000000000000281565b600160e860020a03198116600090815260056020526040812054600160a060020a03168015156112e5576040805160e560020a62461bcd02815260206004820152603c60248201527f5072696365206f7261636c6520666f722074686520737065636966696564206360448201527f757272656e637920636f646520646f6573206e6f742065786973742e00000000606482015290519081900360840190fd5b80600160a060020a03166398d5fdca6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561132157600080fd5b505afa158015611335573d6000803e3d6000fd5b505050506040513d602081101561134b57600080fd5b50519392505050565b600080848411156113765761136f848663ffffffff6113cd16565b9050611389565b611386858563ffffffff6113cd16565b90505b909110159392505050565b60006113c4836113b8600354600a0a6113b8600254876113e290919063ffffffff16565b9063ffffffff61140d16565b90505b92915050565b6000828211156113dc57600080fd5b50900390565b60008215156113f3575060006113c7565b82820282848281151561140257fe5b04146113c457600080fd5b600080821161141b57600080fd5b6000828481151561142857fe5b0494935050505056fe6f77656420746f2063616c6c2074686973206d6574686f642e000000000000004f6e6c792077686974656c697374656420776f726b6572732061726520616c6ca165627a7a72305820d82bbf0c833b30f96cb34eebfe47f81dd69e5a8df0cd58c79b985533212eb0c10029 \ No newline at end of file diff --git a/contracts/bin/ProxyFactory.bin b/contracts/bin/ProxyFactory.bin new file mode 100644 index 0000000..58fe985 --- /dev/null +++ b/contracts/bin/ProxyFactory.bin @@ -0,0 +1 @@ +0x608060405234801561001057600080fd5b5061048e806100206000396000f3fe6080604052600436106100405763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166361b69abd8114610045575b600080fd5b34801561005157600080fd5b506101156004803603604081101561006857600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156100a057600080fd5b8201836020820111156100b257600080fd5b803590602001918460018302840111640100000000831117156100d457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061013e945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b600073ffffffffffffffffffffffffffffffffffffffff831615156101c457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d617374657220636f70792061646472657373206973206e756c6c2e00000000604482015290519081900360640190fd5b826101cd61027d565b73ffffffffffffffffffffffffffffffffffffffff909116815260405190819003602001906000f080158015610207573d6000803e3d6000fd5b50905060008251111561022f5760008060008451602086016000865af1141561022f57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e73499181900360200190a192915050565b6040516101d58061028e8339019056fe608060405234801561001057600080fd5b506040516020806101d58339810180604052602081101561003057600080fd5b5051600160a060020a03811615156100a957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d617374657220636f70792061646472657373206973206e756c6c2e00000000604482015290519081900360640190fd5b60008054600160a060020a03909216600160a060020a031990921691909117905560fd806100d86000396000f3fe608060405260043610603e5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663a619486e8114607a575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e8015156075573d6000fd5b3d6000f35b348015608557600080fd5b50608c60b5565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60005473ffffffffffffffffffffffffffffffffffffffff168156fea165627a7a72305820eb990995fbf08f8cf0abe217a80dc901bb5b96fcdac0cc3d3239573815798cdc0029a165627a7a72305820a2b3a9ec1600033900a730b23095a01a2ff7ca3f834ef1a1bc881ff1ed8800080029 \ No newline at end of file diff --git a/contracts/bin/TokenHolder.bin b/contracts/bin/TokenHolder.bin new file mode 100644 index 0000000..9ff8827 --- /dev/null +++ b/contracts/bin/TokenHolder.bin @@ -0,0 +1 @@ +0x608060405234801561001057600080fd5b5061198a806100206000396000f3fe6080604052600436106100ab5763ffffffff60e060020a600035041663028c979d81146100b05780631f3c99c3146100f15780631fa5d6a41461010657806351491e0c146101395780635c0a60f91461018057806360c30e8f146102c257806389aa2af01461036b5780638da5cb5b1461039257806397ebe030146103c35780639c144d5e14610458578063a2d2ff681461046d578063b7b8d60414610482578063fc0c546a146104db575b600080fd5b3480156100bc57600080fd5b506100ef600480360360608110156100d357600080fd5b50600160a060020a0381351690602081013590604001356104f0565b005b3480156100fd57600080fd5b506100ef610562565b34801561011257600080fd5b506100ef6004803603602081101561012957600080fd5b5035600160a060020a0316610612565b34801561014557600080fd5b5061014e610742565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b34801561018c57600080fd5b506100ef600480360360c08110156101a357600080fd5b600160a060020a03823581169260208101358216926040820135909216918101906080810160608201356401000000008111156101df57600080fd5b8201836020820111156101f157600080fd5b8035906020019184602083028401116401000000008311171561021357600080fd5b91939092909160208101903564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184602083028401116401000000008311171561026557600080fd5b91939092909160208101903564010000000081111561028357600080fd5b82018360208201111561029557600080fd5b803590602001918460208302840111640100000000831117156102b757600080fd5b50909250905061079d565b610357600480360360c08110156102d857600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561030357600080fd5b82018360208201111561031557600080fd5b8035906020019184600183028401116401000000008311171561033757600080fd5b91935091508035906020810135906040810135906060013560ff16610b4a565b604080519115158252519081900360200190f35b34801561037757600080fd5b50610380610f33565b60408051918252519081900360200190f35b34801561039e57600080fd5b506103a7610f39565b60408051600160a060020a039092168252519081900360200190f35b610357600480360360c08110156103d957600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561040457600080fd5b82018360208201111561041657600080fd5b8035906020019184600183028401116401000000008311171561043857600080fd5b91935091508035906020810135906040810135906060013560ff16610f48565b34801561046457600080fd5b506103a7611403565b34801561047957600080fd5b5061014e611412565b34801561048e57600080fd5b506104b5600480360360208110156104a557600080fd5b5035600160a060020a031661146d565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156104e757600080fd5b506103a7611496565b600554600160a060020a03163314610552576040805160e560020a62461bcd02815260206004820152601e60248201527f4f6e6c79206f776e657220697320616c6c6f77656420746f2063616c6c2e0000604482015290519081900360640190fd5b61055d8383836114a5565b505050565b600554600160a060020a031633146105c4576040805160e560020a62461bcd02815260206004820152601e60248201527f4f6e6c79206f776e657220697320616c6c6f77656420746f2063616c6c2e0000604482015290519081900360640190fd5b60025460408051918252517f4fdc3ae5b88cfb88e6fd0018782bd67575d1f425d78385735194b2607f7eda739181900360200190a160025461060d90600163ffffffff61166b16565b600255565b600554600160a060020a03163314610674576040805160e560020a62461bcd02815260206004820152601e60248201527f4f6e6c79206f776e657220697320616c6c6f77656420746f2063616c6c2e0000604482015290519081900360640190fd5b806001600160a060020a03821660009081526003602081905260409091200154116106e9576040805160e560020a62461bcd02815260206004820152601660248201527f4b6579206973206e6f7420617574686f72697a65642e00000000000000000000604482015290519081900360640190fd5b600160a060020a0382166000818152600360208181526040928390206001920191909155815192835290517f2991ab7bfda4556c9e662762b3dfa89a1df391084c4278286d466c1c187e55239281900390910190a15050565b604080517f6578656375746552756c6528616464726573732c62797465732c75696e74323581527f362c75696e74382c627974657333322c627974657333322900000000000000006020820152905190819003603801902081565b600154600160a060020a03161580156107bf5750600554600160a060020a0316155b80156107d45750600454600160a060020a0316155b151561082a576040805160e560020a62461bcd02815260206004820181905260248201527f436f6e747261637420686173206265656e20616c72656164792073657475702e604482015290519081900360640190fd5b600160a060020a038916151561088a576040805160e560020a62461bcd02815260206004820152601f60248201527f546f6b656e20636f6e74726163742061646472657373206973206e756c6c2e00604482015290519081900360640190fd5b600160a060020a038816151561090f576040805160e560020a62461bcd028152602060048201526024808201527f546f6b656e52756c657320636f6e74726163742061646472657373206973206e60448201527f756c6c2e00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038716151561096f576040805160e560020a62461bcd02815260206004820152601660248201527f4f776e65722061646472657373206973206e756c6c2e00000000000000000000604482015290519081900360640190fd5b8483146109ec576040805160e560020a62461bcd02815260206004820152603e60248201527f53657373696f6e206b65797320616e64207370656e64696e67206c696d69747360448201527f20617272617973206c656e677468732061726520646966666572656e742e0000606482015290519081900360840190fd5b848114610a8f576040805160e560020a62461bcd02815260206004820152604160248201527f53657373696f6e206b65797320616e642065787069726174696f6e206865696760448201527f68747320617272617973206c656e677468732061726520646966666572656e7460648201527f2e00000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b60018054600160a060020a03808c1673ffffffffffffffffffffffffffffffffffffffff1992831617909255600480548b841690831617905560058054928a16929091169190911790556002805560005b85811015610b3e57610b36878783818110610af757fe5b90506020020135600160a060020a03168686848181101515610b1557fe5b905060200201358585858181101515610b2a57fe5b905060200201356114a5565b600101610ae0565b50505050505050505050565b600080600160009054906101000a9004600160a060020a0316600160a060020a03166384f48d6a6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610b9e57600080fd5b505afa158015610bb2573d6000803e3d6000fd5b505050506040513d6020811015610bc857600080fd5b50519050600160a060020a0389811690821614610c55576040805160e560020a62461bcd02815260206004820152602660248201527f27746f272061646472657373206973206e6f7420636f4761746577617920616460448201527f64726573732e0000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600080610cfa60405180807f65786563757465526564656d7074696f6e28616464726573732c62797465732c81526020017f75696e743235362c75696e74382c627974657333322c62797465733332290000815250603e01905060405180910390208c8c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508e92508d91508c90508b611684565b9150915060006003600083600160a060020a0316600160a060020a031681526020019081526020016000209050600160009054906101000a9004600160a060020a0316600160a060020a031663095ea7b38d83600001546040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610da357600080fd5b505af1158015610db7573d6000803e3d6000fd5b505050506040513d6020811015610dcd57600080fd5b5050604051606090600160a060020a038e169034908e908e90808383808284376040519201945060009350909150508083038185875af1925050503d8060008114610e34576040519150601f19603f3d011682016040523d82523d6000602084013e610e39565b606091505b508092508197505050600160009054906101000a9004600160a060020a0316600160a060020a031663095ea7b38e60006040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610ebb57600080fd5b505af1158015610ecf573d6000803e3d6000fd5b505050506040513d6020811015610ee557600080fd5b505060408051858152871515602082015281517f23a87d3083eafe50e6f601373e38cd7afe8a0725d15d3f8b097a83f03acdb064929181900390910190a15050505050979650505050505050565b60025481565b600554600160a060020a031681565b600154600090600160a060020a0389811691161415610fd7576040805160e560020a62461bcd02815260206004820152602660248201527f27746f272061646472657373206973207574696c69747920746f6b656e20616460448201527f64726573732e0000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03881630141561105e576040805160e560020a62461bcd02815260206004820152602b60248201527f27746f27206164647265737320697320546f6b656e486f6c646572206164647260448201527f65737320697473656c662e000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008061110360405180807f6578656375746552756c6528616464726573732c62797465732c75696e74323581526020017f362c75696e74382c627974657333322c62797465733332290000000000000000815250603801905060405180910390208b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92508c91508b90508a611684565b600160a060020a038082166000908152600360205260408082206004805483517f2185810b000000000000000000000000000000000000000000000000000000008152935197995095975090959490931693632185810b93828101939282900301818387803b15801561117557600080fd5b505af1158015611189573d6000803e3d6000fd5b5050600154600480548554604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a03938416948101949094526024840191909152519216935063095ea7b392506044808201926020929091908290030181600087803b15801561120357600080fd5b505af1158015611217573d6000803e3d6000fd5b505050506040513d602081101561122d57600080fd5b5050604051606090600160a060020a038d169034908d908d90808383808284376040519201945060009350909150508083038185875af1925050503d8060008114611294576040519150601f19603f3d011682016040523d82523d6000602084013e611299565b606091505b5060015460048054604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a03928316938101939093526000602484018190529051959a509395509091169263095ea7b392604480840193602093929083900390910190829087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b505050506040513d602081101561134257600080fd5b505060048054604080517f212c81570000000000000000000000000000000000000000000000000000000081529051600160a060020a039092169263212c815792828201926000929082900301818387803b1580156113a057600080fd5b505af11580156113b4573d6000803e3d6000fd5b505060408051878152881515602082015281517f36cd2662860eb4ad66890c2d0ac0af9dde2f8927a7190e1eaed43ce9d43682b19450908190039091019150a150505050979650505050505050565b600454600160a060020a031681565b604080517f65786563757465526564656d7074696f6e28616464726573732c62797465732c81527f75696e743235362c75696e74382c627974657333322c627974657333322900006020820152905190819003603e01902081565b600360208190526000918252604090912080546001820154600283015492909301549092919084565b600154600160a060020a031681565b82600160a060020a0381161515611506576040805160e560020a62461bcd02815260206004820152601460248201527f4b65792061646472657373206973206e756c6c2e000000000000000000000000604482015290519081900360640190fd5b836000600160a060020a038216600090815260036020819052604090912001541461157b576040805160e560020a62461bcd02815260206004820152600b60248201527f4b6579206578697374732e000000000000000000000000000000000000000000604482015290519081900360640190fd5b4383116115f8576040805160e560020a62461bcd02815260206004820152603560248201527f45787069726174696f6e20686569676874206973206c746520746f207468652060448201527f63757272656e7420626c6f636b206865696768742e0000000000000000000000606482015290519081900360840190fd5b600160a060020a0385166000818152600360208181526040808420898155600181018990556002808201959095559354928401929092558151938452905191927faaf20b4ab9461ac8240a308f4bae35956040be348d648df2aa88137418189887929081900390910190a1505050505050565b60008282018381101561167d57600080fd5b9392505050565b60008061169a8989898051906020012089611884565b915060018284878760405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156116f9573d6000803e3d6000fd5b505060408051601f190151600160a060020a038116600090815260036020819052929020600254928101549194509250146117a4576040805160e560020a62461bcd02815260206004820152603860248201527f4b657927732073657373696f6e206973206e6f7420657175616c20746f20636f60448201527f6e747261637427732073657373696f6e2077696e646f772e0000000000000000606482015290519081900360840190fd5b600181015443106117ff576040805160e560020a62461bcd02815260206004820152601860248201527f53657373696f6e206b65792077617320657870697265642e0000000000000000604482015290519081900360640190fd5b6002810154871461185a576040805160e560020a62461bcd02815260206004820152601d60248201527f496e636f7272656374206e6f6e6365206973207370656369666965642e000000604482015290519081900360640190fd5b600281015461187090600163ffffffff61166b16565b600290910155909890975095505050505050565b604080517f19000000000000000000000000000000000000000000000000000000000000006020808301919091526000602183018190526c010000000000000000000000003081026022850152600160a060020a039097169096026036830152604a8201869052604b820194909452606b810192909252608b8201849052608c8201849052608d82018490527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19909416608e820152609281018390526093808201939093528351808203909301835260b30190925280519101209056fea165627a7a723058202bc46049b0be756c816d9a274158a83bcff6d3db8a023faa29b9e6df820a9a330029 \ No newline at end of file diff --git a/contracts/bin/TokenRules.bin b/contracts/bin/TokenRules.bin new file mode 100644 index 0000000..8d57ba0 --- /dev/null +++ b/contracts/bin/TokenRules.bin @@ -0,0 +1 @@ +0x608060405234801561001057600080fd5b506040516040806116768339810180604052604081101561003057600080fd5b50805160209091015181600160a060020a03811615156100d757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4f7267616e697a6174696f6e20636f6e74726163742061646472657373206d7560448201527f7374206e6f74206265207a65726f2e0000000000000000000000000000000000606482015290519081900360840190fd5b60008054600160a060020a031916600160a060020a039283161790558116151561016257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f546f6b656e2061646472657373206973206e756c6c2e00000000000000000000604482015290519081900360640190fd5b60048054600160a060020a031916600160a060020a0392909216919091179055506006805460ff191660011790556114d78061019f6000396000f3fe6080604052600436106100cf5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166304d6ded481146100d4578063212c8157146101f55780632185810b1461020c57806322f468ea1461022157806323bd4d7a146102645780633e290e5c14610295578063661309ac146103715780638486c223146103b857806394ac7a3f146103cd578063a6a192da1461049c578063aa7937671461057b578063b286e04714610590578063d6a7d226146105a5578063fc0c546a146105d8575b600080fd5b3480156100e057600080fd5b506100fe600480360360208110156100f757600080fd5b50356105ed565b604051808060200184600160a060020a0316600160a060020a0316815260200180602001838103835286818151815260200191508051906020019080838360005b8381101561015757818101518382015260200161013f565b50505050905090810190601f1680156101845780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156101b757818101518382015260200161019f565b50505050905090810190601f1680156101e45780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561020157600080fd5b5061020a610742565b005b34801561021857600080fd5b5061020a61075b565b34801561022d57600080fd5b5061024b6004803603602081101561024457600080fd5b5035610777565b6040805192835290151560208301528051918290030190f35b34801561027057600080fd5b50610279610793565b60408051600160a060020a039092168252519081900360200190f35b3480156102a157600080fd5b5061020a600480360360608110156102b857600080fd5b8101906020810181356401000000008111156102d357600080fd5b8201836020820111156102e557600080fd5b8035906020019184600183028401116401000000008311171561030757600080fd5b91939092600160a060020a038335169260408101906020013564010000000081111561033257600080fd5b82018360208201111561034457600080fd5b8035906020019184600183028401116401000000008311171561036657600080fd5b5090925090506107a2565b34801561037d57600080fd5b506103a46004803603602081101561039457600080fd5b5035600160a060020a0316610d35565b604080519115158252519081900360200190f35b3480156103c457600080fd5b5061020a610d4a565b3480156103d957600080fd5b5061020a600480360360408110156103f057600080fd5b81019060208101813564010000000081111561040b57600080fd5b82018360208201111561041d57600080fd5b8035906020019184602083028401116401000000008311171561043f57600080fd5b91939092909160208101903564010000000081111561045d57600080fd5b82018360208201111561046f57600080fd5b8035906020019184602083028401116401000000008311171561049157600080fd5b509092509050610e65565b3480156104a857600080fd5b5061020a600480360360608110156104bf57600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156104ea57600080fd5b8201836020820111156104fc57600080fd5b8035906020019184602083028401116401000000008311171561051e57600080fd5b91939092909160208101903564010000000081111561053c57600080fd5b82018360208201111561054e57600080fd5b8035906020019184602083028401116401000000008311171561057057600080fd5b509092509050610f5b565b34801561058757600080fd5b5061020a611062565b34801561059c57600080fd5b506103a461117a565b3480156105b157600080fd5b5061024b600480360360208110156105c857600080fd5b5035600160a060020a0316611183565b3480156105e457600080fd5b5061027961119f565b60018054829081106105fb57fe5b60009182526020918290206003919091020180546040805160026001841615610100026000190190931692909204601f8101859004850283018501909152808252919350918391908301828280156106945780601f1061066957610100808354040283529160200191610694565b820191906000526020600020905b81548152906001019060200180831161067757829003601f168201915b505050506001838101546002808601805460408051602061010097841615979097026000190190921693909304601f81018690048602820186019093528281529596600160a060020a039093169592945091928301828280156107385780601f1061070d57610100808354040283529160200191610738565b820191906000526020600020905b81548152906001019060200180831161071b57829003601f168201915b5050505050905083565b336000908152600560205260409020805460ff19169055565b336000908152600560205260409020805460ff19166001179055565b6003602052600090815260409020805460019091015460ff1682565b600054600160a060020a031681565b600054604080517faa1566450000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163aa15664591602480820192602092909190829003018186803b15801561080657600080fd5b505afa15801561081a573d6000803e3d6000fd5b505050506040513d602081101561083057600080fd5b505115156108ae576040805160e560020a62461bcd02815260206004820152603960248201527f4f6e6c792077686974656c697374656420776f726b6572732061726520616c6c60448201527f6f77656420746f2063616c6c2074686973206d6574686f642e00000000000000606482015290519081900360840190fd5b831515610905576040805160e560020a62461bcd02815260206004820152601360248201527f52756c65206e616d6520697320656d7074792e00000000000000000000000000604482015290519081900360640190fd5b600160a060020a0383161515610965576040805160e560020a62461bcd02815260206004820152601560248201527f52756c652061646472657373206973206e756c6c2e0000000000000000000000604482015290519081900360640190fd5b8015156109bc576040805160e560020a62461bcd02815260206004820152601260248201527f52756c652041424920697320656d7074792e0000000000000000000000000000604482015290519081900360640190fd5b60008585604051602001808383808284376040805191909301818103601f190182528352805160209182012060008181526003909252929020600101549195505060ff16159250610a80915050576040805160e560020a62461bcd02815260206004820152602c60248201527f52756c6520776974682074686520737065636966696564206e616d6520616c7260448201527f65616479206578697374732e0000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03841660009081526002602052604090206001015460ff1615610b1a576040805160e560020a62461bcd02815260206004820152602f60248201527f52756c652077697468207468652073706563696669656420616464726573732060448201527f616c7265616479206578697374732e0000000000000000000000000000000000606482015290519081900360840190fd5b610b226113da565b6040805160806020601f8a0181900402820181019092526060810188815290918291908a908a9081908501838280828437600092019190915250505090825250600160a060020a03871660208083019190915260408051601f8801839004830281018301825287815292019190879087908190840183828082843760009201919091525050509152509050610bb56113f9565b506040805180820182526001805482526020808301828152600160a060020a038a16600090815260028352858120855181558251908501805491151560ff1992831617905588825260038085529682208651815592519285018054931515939091169290921790915582548084018085559390915285518051949593948794929092027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60192610c6a92849290910190611410565b5060208281015160018301805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905560408301518051610cb69260028501920190611410565b505060408051600160a060020a038a1660208201528181529081018a90527f4d39292a7c76562755f38e419d757d846579699af484d88be86a1811dca7321592508a9150899089908060608101858580828437600083820152604051601f909101601f1916909201829003965090945050505050a15050505050505050565b60056020526000908152604090205460ff1681565b600054604080517faa1566450000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163aa15664591602480820192602092909190829003018186803b158015610dae57600080fd5b505afa158015610dc2573d6000803e3d6000fd5b505050506040513d6020811015610dd857600080fd5b50511515610e56576040805160e560020a62461bcd02815260206004820152603960248201527f4f6e6c792077686974656c697374656420776f726b6572732061726520616c6c60448201527f6f77656420746f2063616c6c2074686973206d6574686f642e00000000000000606482015290519081900360840190fd5b6006805460ff19166001179055565b60065460ff161515610ee7576040805160e560020a62461bcd02815260206004820152602160248201527f446972656374207472616e736665727320617265206e6f7420616c6c6f77656460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610f5533858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805160208089028281018201909352888252909350889250879182918501908490808284376000920191909152506111ae92505050565b50505050565b3360009081526002602052604090206001015460ff161515610fed576040805160e560020a62461bcd02815260206004820152602860248201527f4f6e6c7920726567697374657265642072756c6520697320616c6c6f7765642060448201527f746f2063616c6c2e000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61105b85858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805160208089028281018201909352888252909350889250879182918501908490808284376000920191909152506111ae92505050565b5050505050565b600054604080517faa1566450000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163aa15664591602480820192602092909190829003018186803b1580156110c657600080fd5b505afa1580156110da573d6000803e3d6000fd5b505050506040513d60208110156110f057600080fd5b5051151561116e576040805160e560020a62461bcd02815260206004820152603960248201527f4f6e6c792077686974656c697374656420776f726b6572732061726520616c6c60448201527f6f77656420746f2063616c6c2074686973206d6574686f642e00000000000000606482015290519081900360840190fd5b6006805460ff19169055565b60065460ff1681565b6002602052600090815260409020805460019091015460ff1682565b600454600160a060020a031681565b600160a060020a03831660009081526005602052604090205460ff161515611246576040805160e560020a62461bcd02815260206004820152602b60248201527f5472616e73666572732066726f6d20746865206164647265737320617265206e60448201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000606482015290519081900360840190fd5b80518251146112c5576040805160e560020a62461bcd02815260206004820152603960248201527f27746f2720616e642027616d6f756e7427207472616e7366657220617272617960448201527f7327206c656e6774687320617265206e6f7420657175616c2e00000000000000606482015290519081900360840190fd5b60005b82518110156113b6576004548351600160a060020a03909116906323b872dd9086908690859081106112f657fe5b90602001906020020151858581518110151561130e57fe5b6020908102909101810151604080517c010000000000000000000000000000000000000000000000000000000063ffffffff8816028152600160a060020a03958616600482015293909416602484015260448301529151606480830193928290030181600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b505050506040513d60208110156113ac57600080fd5b50506001016112c8565b505050600160a060020a03166000908152600560205260409020805460ff19169055565b6040805160608181018352808252600060208301529181019190915290565b604080518082019091526000808252602082015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061145157805160ff191683800117855561147e565b8280016001018555821561147e579182015b8281111561147e578251825591602001919060010190611463565b5061148a92915061148e565b5090565b6114a891905b8082111561148a5760008155600101611494565b9056fea165627a7a7230582020f7ce19ef90a3fcc42386bf3bb88bca6b35affe8bf52ef9881e677fe97d5a720029 \ No newline at end of file diff --git a/contracts/bin/UserWalletFactory.bin b/contracts/bin/UserWalletFactory.bin new file mode 100644 index 0000000..04dda48 --- /dev/null +++ b/contracts/bin/UserWalletFactory.bin @@ -0,0 +1 @@ +0x608060405234801561001057600080fd5b506107ba806100206000396000f3fe60806040526004361061004b5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663d94c25298114610050578063f6b48b131461021a575b600080fd5b34801561005c57600080fd5b506101f4600480360361010081101561007457600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561009f57600080fd5b8201836020820111156100b157600080fd5b803590602001918460018302840111640100000000831117156100d357600080fd5b91939092600160a060020a03833581169360208101358216936040820135909216929060808101906060013564010000000081111561011157600080fd5b82018360208201111561012357600080fd5b8035906020019184602083028401116401000000008311171561014557600080fd5b91939092909160208101903564010000000081111561016357600080fd5b82018360208201111561017557600080fd5b8035906020019184602083028401116401000000008311171561019757600080fd5b9193909290916020810190356401000000008111156101b557600080fd5b8201836020820111156101c757600080fd5b803590602001918460208302840111640100000000831117156101e957600080fd5b509092509050610264565b60408051600160a060020a03938416815291909216602082015281519081900390910190f35b34801561022657600080fd5b5061022f610525565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6000808d6102706105a9565b600160a060020a03909116815260405190819003602001906000f08015801561029d573d6000803e3d6000fd5b5091506102e0828e8e8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061058092505050565b8a6102e96105a9565b600160a060020a03909116815260405190819003602001906000f080158015610316573d6000803e3d6000fd5b509050606060405180807f736574757028616464726573732c616464726573732c616464726573732c616481526020017f64726573735b5d2c75696e743235365b5d2c75696e743235365b5d2900000000815250603c01905060405180910390208b8b858c8c8c8c8c8c604051602401808a600160a060020a0316600160a060020a0316815260200189600160a060020a0316600160a060020a0316815260200188600160a060020a0316600160a060020a0316815260200180602001806020018060200184810384528a8a82818152602001925060200280828437600083820152601f01601f19169091018581038452888152602090810191508990890280828437600083820152601f01601f19169091018581038352868152602090810191508790870280828437600081840152601f19601f8201169050808301925050509c50505050505050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506104ce8282610580565b60408051600160a060020a0380861682528416602082015281517f3760dde36ca0d14503ddc7d9cf7b88cc01aa497561b9a3c2bc94bb77812c8cf7929181900390910190a1509c509c9a5050505050505050505050565b604080517f736574757028616464726573732c616464726573732c616464726573732c616481527f64726573735b5d2c75696e743235365b5d2c75696e743235365b5d29000000006020820152905190819003603c01902081565b6000815111156105a55760008060008351602085016000875af114156105a557600080fd5b5050565b6040516101d5806105ba8339019056fe608060405234801561001057600080fd5b506040516020806101d58339810180604052602081101561003057600080fd5b5051600160a060020a03811615156100a957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d617374657220636f70792061646472657373206973206e756c6c2e00000000604482015290519081900360640190fd5b60008054600160a060020a03909216600160a060020a031990921691909117905560fd806100d86000396000f3fe608060405260043610603e5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663a619486e8114607a575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e8015156075573d6000fd5b3d6000f35b348015608557600080fd5b50608c60b5565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60005473ffffffffffffffffffffffffffffffffffffffff168156fea165627a7a72305820eb990995fbf08f8cf0abe217a80dc901bb5b96fcdac0cc3d3239573815798cdc0029a165627a7a72305820cf9f7009b6f884fac58dea040073a112866fb84bfdf635a3c0543085d9cdfedd0029 \ No newline at end of file diff --git a/test/integration/DirectTransfer.js b/test/integration/DirectTransfer.js index ba7754f..618d6cc 100644 --- a/test/integration/DirectTransfer.js +++ b/test/integration/DirectTransfer.js @@ -1,17 +1,14 @@ -const { assert } = require('chai'); const Web3 = require('web3'); -const Package = require('../../index'); const Mosaic = require('@openstfoundation/mosaic.js'); +const { assert } = require('chai'); +const Package = require('../../index'); const MockContractsDeployer = require('./../utils/MockContractsDeployer'); const config = require('../utils/configReader'); +const { dockerSetup, dockerTeardown } = require('./../../utils/docker'); -const TokenRulesSetup = Package.Setup.TokenRules; const UserSetup = Package.Setup.User; const { Contracts } = Package; const UserHelper = Package.Helpers.User; -const TokenHolderHelper = Package.Helpers.TokenHolder; -const { dockerSetup, dockerTeardown } = require('./../../utils/docker'); -const TokenRulesHelper = Package.Helpers.TokenRules; let txOptions, userWalletFactoryAddress, @@ -112,7 +109,7 @@ describe('Direct transfers between TH contracts', async function() { gas: config.gas }; - const tokenRulesSetupInstance = new TokenRulesSetup(auxiliaryWeb3); + const tokenRulesSetupInstance = new Package.Setup.TokenRules(auxiliaryWeb3); const response = await tokenRulesSetupInstance.deploy(organizationAddress, eip20Token, txOptions); tokenRulesAddress = response.receipt.contractAddress; @@ -212,7 +209,7 @@ describe('Direct transfers between TH contracts', async function() { }); it('Performs direct transfer of tokens', async function() { - const tokenHolder = new TokenHolderHelper(auxiliaryWeb3, tokenHolderSender); + const tokenHolder = new Package.Helpers.TokenHolder(auxiliaryWeb3, tokenHolderSender); // MockToken instance is needed because for transfer. Transfer is not available in Mosaic.ContractInteract.EIP20Token // Please update after transfer is exposed in Mosaic.js const mockTokenAbi = mockTokenDeployerInstance.abiBinProvider.getABI('MockToken'); @@ -232,7 +229,7 @@ describe('Direct transfers between TH contracts', async function() { const secondReceiverInitialBalance = await eip20Instance.balanceOf(tokenHolderSecondReceiver); const transferAmounts = [20, 10]; - const tokenRulesHelperObject = new TokenRulesHelper(tokenRulesAddress, auxiliaryWeb3); + const tokenRulesHelperObject = new Package.Helpers.TokenRules(tokenRulesAddress, auxiliaryWeb3); const directTransferExecutable = tokenRulesHelperObject.getDirectTransferExecutableData( transferTos, transferAmounts diff --git a/test/integration/PricerRulePay.js b/test/integration/PricerRulePay.js index 7b4a4e0..79a3c0b 100644 --- a/test/integration/PricerRulePay.js +++ b/test/integration/PricerRulePay.js @@ -1,24 +1,17 @@ -const { assert } = require('chai'); const Web3 = require('web3'); +const { assert } = require('chai'); +const BN = require('bn.js'); const Package = require('../../index'); const Mosaic = require('@openstfoundation/mosaic.js'); const MockContractsDeployer = require('./../utils/MockContractsDeployer'); const config = require('../utils/configReader'); -const BN = require('bn.js'); +const { dockerSetup, dockerTeardown } = require('./../../utils/docker'); +const Utils = require('../../utils/Utils'); -const TokenRulesSetup = Package.Setup.TokenRules; const UserSetup = Package.Setup.User; -const RulesSetup = Package.Setup.Rules; const Contracts = Package.Contracts; -const UserHelper = Package.Helpers.User; -const TokenRulesHelper = Package.Helpers.TokenRules; const { AbiBinProvider } = Package; -const TokenHolderHelper = Package.Helpers.TokenHolder; const PricerRuleHelper = Package.Helpers.Rules.PricerRule; -const { dockerSetup, dockerTeardown } = require('./../../utils/docker'); -const Utils = require('../../utils/Utils'); - -const abiBinProvider = new AbiBinProvider(); let auxiliaryWeb3, txOptions, @@ -185,7 +178,7 @@ describe('TH transfers through PricerRule Pay', async function() { }); it('Performs setup of PricerRule', async function() { - const rulesSetup = new RulesSetup(auxiliaryWeb3, organizationAddress, eip20Token, tokenRulesAddress); + const rulesSetup = new Package.Setup.Rules(auxiliaryWeb3, organizationAddress, eip20Token, tokenRulesAddress); const pricerRulesDeployResponse = await rulesSetup.deployPricerRule( config.baseCurrencyCode, config.conversionRate, @@ -233,8 +226,9 @@ describe('TH transfers through PricerRule Pay', async function() { gas: config.gas }; - const tokenRulesHelperObject = new TokenRulesHelper(tokenRulesAddress, auxiliaryWeb3); + const tokenRulesHelperObject = new Package.Helpers.TokenRules(tokenRulesAddress, auxiliaryWeb3); const pricerRuleName = 'PricerRule'; + const abiBinProvider = new AbiBinProvider(); const pricerRuleAbi = abiBinProvider.getABI('PricerRule'); const response = await tokenRulesHelperObject.registerRule( pricerRuleName, @@ -258,7 +252,7 @@ describe('TH transfers through PricerRule Pay', async function() { }); it('Creates sender user wallet', async function() { - const userInstance = new UserHelper( + const userInstance = new Package.Helpers.User( thMasterCopyAddress, gnosisSafeMasterCopyAddress, delayedRecoveryModuleMasterCopyAddress, @@ -317,7 +311,7 @@ describe('TH transfers through PricerRule Pay', async function() { }); it('Performs transfer through PricerRule.pay', async function() { - const tokenHolder = new TokenHolderHelper(auxiliaryWeb3, tokenHolderSender), + const tokenHolder = new Package.Helpers.TokenHolder(auxiliaryWeb3, tokenHolderSender), mockTokenAbi = mockTokenDeployerInstance.abiBinProvider.getABI('MockToken'), eip20TokenContractInstance = new auxiliaryWeb3.eth.Contract(mockTokenAbi, eip20Token, txOptions); diff --git a/test/integration/WalletOperations.js b/test/integration/WalletOperations.js index bed2685..51190cf 100644 --- a/test/integration/WalletOperations.js +++ b/test/integration/WalletOperations.js @@ -9,10 +9,8 @@ const { dockerSetup, dockerTeardown } = require('./../../utils/docker'); const UserSetup = Package.Setup.User; const { Contracts } = Package; -const AbiBinProvider = Package.AbiBinProvider; const TokenHolderHelper = Package.Helpers.TokenHolder; - -const abiBinProvider = new AbiBinProvider(); +const abiBinProvider = new Package.AbiBinProvider(); let auxiliaryWeb3, deployerAddress,