diff --git a/CHANGELOG.md b/CHANGELOG.md index e591859..ecd7103 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Version 0.10.0 +MultiSig Operation: Logout all sessions([104](https://github.com/OpenSTFoundation/openst.js/pull/104)) Rule setup: Pricer rule setup and interaction([66](https://github.com/OpenSTFoundation/openst.js/pull/66)) User setup: Company to User Implementation([68](https://github.com/OpenSTFoundation/openst.js/pull/68)) Direct transfer of tokens using TokenRules contract([67](https://github.com/OpenSTFoundation/openst.js/pull/67)) diff --git a/contracts/abi/TokenHolder.abi b/contracts/abi/TokenHolder.abi index 27137c3..7229dcc 100644 --- a/contracts/abi/TokenHolder.abi +++ b/contracts/abi/TokenHolder.abi @@ -1 +1 @@ -[{"constant":true,"inputs":[],"name":"EXECUTE_RULE_CALLPREFIX","outputs":[{"name":"","type":"bytes4"}],"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":"status","type":"uint8"}],"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":"_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 +[{"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/bin/TokenHolder.bin b/contracts/bin/TokenHolder.bin index 1eea702..ac410e7 100644 --- a/contracts/bin/TokenHolder.bin +++ b/contracts/bin/TokenHolder.bin @@ -1 +1 @@ -0x608060405234801561001057600080fd5b5061195e806100206000396000f3fe6080604052600436106100a05763ffffffff60e060020a600035041663028c979d81146100a55780631f3c99c3146100e65780631fa5d6a4146100fb57806351491e0c1461012e5780635c0a60f91461017557806360c30e8f146102b75780638da5cb5b1461036057806397ebe030146103915780639c144d5e14610426578063a2d2ff681461043b578063b7b8d60414610450578063fc0c546a146104bc575b600080fd5b3480156100b157600080fd5b506100e4600480360360608110156100c857600080fd5b50600160a060020a0381351690602081013590604001356104d1565b005b3480156100f257600080fd5b506100e4610543565b34801561010757600080fd5b506100e46004803603602081101561011e57600080fd5b5035600160a060020a0316610620565b34801561013a57600080fd5b50610143610766565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b34801561018157600080fd5b506100e4600480360360c081101561019857600080fd5b600160a060020a03823581169260208101358216926040820135909216918101906080810160608201356401000000008111156101d457600080fd5b8201836020820111156101e657600080fd5b8035906020019184602083028401116401000000008311171561020857600080fd5b91939092909160208101903564010000000081111561022657600080fd5b82018360208201111561023857600080fd5b8035906020019184602083028401116401000000008311171561025a57600080fd5b91939092909160208101903564010000000081111561027857600080fd5b82018360208201111561028a57600080fd5b803590602001918460208302840111640100000000831117156102ac57600080fd5b5090925090506107c1565b61034c600480360360c08110156102cd57600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156102f857600080fd5b82018360208201111561030a57600080fd5b8035906020019184600183028401116401000000008311171561032c57600080fd5b91935091508035906020810135906040810135906060013560ff16610b6a565b604080519115158252519081900360200190f35b34801561036c57600080fd5b50610375610f53565b60408051600160a060020a039092168252519081900360200190f35b61034c600480360360c08110156103a757600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156103d257600080fd5b8201836020820111156103e457600080fd5b8035906020019184600183028401116401000000008311171561040657600080fd5b91935091508035906020810135906040810135906060013560ff16610f62565b34801561043257600080fd5b5061037561141a565b34801561044757600080fd5b50610143611429565b34801561045c57600080fd5b506104836004803603602081101561047357600080fd5b5035600160a060020a0316611484565b604051808581526020018481526020018381526020018260028111156104a557fe5b60ff16815260200194505050505060405180910390f35b3480156104c857600080fd5b506103756114b0565b600454600160a060020a03163314610533576040805160e560020a62461bcd02815260206004820152601e60248201527f4f6e6c79206f776e657220697320616c6c6f77656420746f2063616c6c2e0000604482015290519081900360640190fd5b61053e8383836114bf565b505050565b336001600160a060020a03821660009081526002602081905260409091206003015460ff169081111561057257fe5b146105c7576040805160e560020a62461bcd02815260206004820152601660248201527f4b6579206973206e6f7420617574686f72697a65642e00000000000000000000604482015290519081900360640190fd5b336000908152600260208190526040909120600301805460ff191660018302179055506040805133815290517f2991ab7bfda4556c9e662762b3dfa89a1df391084c4278286d466c1c187e55239181900360200190a150565b600454600160a060020a03163314610682576040805160e560020a62461bcd02815260206004820152601e60248201527f4f6e6c79206f776e657220697320616c6c6f77656420746f2063616c6c2e0000604482015290519081900360640190fd5b806001600160a060020a03821660009081526002602081905260409091206003015460ff16908111156106b157fe5b14610706576040805160e560020a62461bcd02815260206004820152601660248201527f4b6579206973206e6f7420617574686f72697a65642e00000000000000000000604482015290519081900360640190fd5b600160a060020a038216600081815260026020818152604092839020600301805460ff1916909217909155815192835290517f2991ab7bfda4556c9e662762b3dfa89a1df391084c4278286d466c1c187e55239281900390910190a15050565b604080517f6578656375746552756c6528616464726573732c62797465732c75696e74323581527f362c75696e74382c627974657333322c627974657333322900000000000000006020820152905190819003603801902081565b600154600160a060020a03161580156107e35750600454600160a060020a0316155b80156107f85750600354600160a060020a0316155b151561084e576040805160e560020a62461bcd02815260206004820181905260248201527f436f6e747261637420686173206265656e20616c72656164792073657475702e604482015290519081900360640190fd5b600160a060020a03891615156108ae576040805160e560020a62461bcd02815260206004820152601f60248201527f546f6b656e20636f6e74726163742061646472657373206973206e756c6c2e00604482015290519081900360640190fd5b600160a060020a0388161515610933576040805160e560020a62461bcd028152602060048201526024808201527f546f6b656e52756c657320636f6e74726163742061646472657373206973206e60448201527f756c6c2e00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0387161515610993576040805160e560020a62461bcd02815260206004820152601660248201527f4f776e65722061646472657373206973206e756c6c2e00000000000000000000604482015290519081900360640190fd5b848314610a10576040805160e560020a62461bcd02815260206004820152603e60248201527f53657373696f6e206b65797320616e64207370656e64696e67206c696d69747360448201527f20617272617973206c656e677468732061726520646966666572656e742e0000606482015290519081900360840190fd5b848114610ab3576040805160e560020a62461bcd02815260206004820152604160248201527f53657373696f6e206b65797320616e642065787069726174696f6e206865696760448201527f68747320617272617973206c656e677468732061726520646966666572656e7460648201527f2e00000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b60018054600160a060020a03808c1673ffffffffffffffffffffffffffffffffffffffff1992831617909255600380548b841690831617905560048054928a169290911691909117905560005b85811015610b5e57610b56878783818110610b1757fe5b90506020020135600160a060020a03168686848181101515610b3557fe5b905060200201358585858181101515610b4a57fe5b905060200201356114bf565b600101610b00565b50505050505050505050565b600080600160009054906101000a9004600160a060020a0316600160a060020a03166384f48d6a6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610bbe57600080fd5b505afa158015610bd2573d6000803e3d6000fd5b505050506040513d6020811015610be857600080fd5b50519050600160a060020a0389811690821614610c75576040805160e560020a62461bcd02815260206004820152602660248201527f27746f272061646472657373206973206e6f7420636f4761746577617920616460448201527f64726573732e0000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600080610d1a60405180807f65786563757465526564656d7074696f6e28616464726573732c62797465732c81526020017f75696e743235362c75696e74382c627974657333322c62797465733332290000815250603e01905060405180910390208c8c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508e92508d91508c90508b6116a2565b9150915060006002600083600160a060020a0316600160a060020a031681526020019081526020016000209050600160009054906101000a9004600160a060020a0316600160a060020a031663095ea7b38d83600001546040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610dc357600080fd5b505af1158015610dd7573d6000803e3d6000fd5b505050506040513d6020811015610ded57600080fd5b5050604051606090600160a060020a038e169034908e908e90808383808284376040519201945060009350909150508083038185875af1925050503d8060008114610e54576040519150601f19603f3d011682016040523d82523d6000602084013e610e59565b606091505b508092508197505050600160009054906101000a9004600160a060020a0316600160a060020a031663095ea7b38e60006040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610edb57600080fd5b505af1158015610eef573d6000803e3d6000fd5b505050506040513d6020811015610f0557600080fd5b505060408051858152871515602082015281517f23a87d3083eafe50e6f601373e38cd7afe8a0725d15d3f8b097a83f03acdb064929181900390910190a15050505050979650505050505050565b600454600160a060020a031681565b600154600090600160a060020a0389811691161415610ff1576040805160e560020a62461bcd02815260206004820152602660248201527f27746f272061646472657373206973207574696c69747920746f6b656e20616460448201527f64726573732e0000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038816301415611078576040805160e560020a62461bcd02815260206004820152602b60248201527f27746f27206164647265737320697320546f6b656e486f6c646572206164647260448201527f65737320697473656c662e000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008061111d60405180807f6578656375746552756c6528616464726573732c62797465732c75696e74323581526020017f362c75696e74382c627974657333322c62797465733332290000000000000000815250603801905060405180910390208b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92508c91508b90508a6116a2565b600160a060020a0380821660009081526002602052604080822060035482517f2185810b0000000000000000000000000000000000000000000000000000000081529251969850949650949390921692632185810b92600480820193929182900301818387803b15801561119057600080fd5b505af11580156111a4573d6000803e3d6000fd5b50506001546003548454604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a03938416600482015260248101929092525191909216935063095ea7b3925060448083019260209291908290030181600087803b15801561121c57600080fd5b505af1158015611230573d6000803e3d6000fd5b505050506040513d602081101561124657600080fd5b5050604051606090600160a060020a038d169034908d908d90808383808284376040519201945060009350909150508083038185875af1925050503d80600081146112ad576040519150601f19603f3d011682016040523d82523d6000602084013e6112b2565b606091505b50600154600354604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526000602482018190529151959a5093955091169263095ea7b3926044808201936020939283900390910190829087803b15801561132c57600080fd5b505af1158015611340573d6000803e3d6000fd5b505050506040513d602081101561135657600080fd5b5050600354604080517f212c81570000000000000000000000000000000000000000000000000000000081529051600160a060020a039092169163212c81579160048082019260009290919082900301818387803b1580156113b757600080fd5b505af11580156113cb573d6000803e3d6000fd5b505060408051878152881515602082015281517f36cd2662860eb4ad66890c2d0ac0af9dde2f8927a7190e1eaed43ce9d43682b19450908190039091019150a150505050979650505050505050565b600354600160a060020a031681565b604080517f65786563757465526564656d7074696f6e28616464726573732c62797465732c81527f75696e743235362c75696e74382c627974657333322c627974657333322900006020820152905190819003603e01902081565b600260208190526000918252604090912080546001820154928201546003909201549092919060ff1684565b600154600160a060020a031681565b82600160a060020a0381161515611520576040805160e560020a62461bcd02815260206004820152601460248201527f4b65792061646472657373206973206e756c6c2e000000000000000000000000604482015290519081900360640190fd5b836000600160a060020a03821660009081526002602081905260409091206003015460ff169081111561154f57fe5b146115a4576040805160e560020a62461bcd02815260206004820152600b60248201527f4b6579206578697374732e000000000000000000000000000000000000000000604482015290519081900360640190fd5b438311611621576040805160e560020a62461bcd02815260206004820152603560248201527f45787069726174696f6e20686569676874206973206c746520746f207468652060448201527f63757272656e7420626c6f636b206865696768742e0000000000000000000000606482015290519081900360840190fd5b600160a060020a0385166000908152600260208190526040822086815560018082018790559181019290925560038201805460ff19168280021790555060408051600160a060020a038816815290517faaf20b4ab9461ac8240a308f4bae35956040be348d648df2aa881374181898879181900360200190a1505050505050565b6000806116b8898989805190602001208961183f565b915060018284878760405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611717573d6000803e3d6000fd5b505060408051601f190151600160a060020a038116600090815260026020529190912090925090506001600382015460ff16600281111561175457fe5b1480156117645750438160010154115b15156117ba576040805160e560020a62461bcd02815260206004820152601a60248201527f53657373696f6e206b6579206973206e6f74206163746976652e000000000000604482015290519081900360640190fd5b60028101548714611815576040805160e560020a62461bcd02815260206004820152601d60248201527f496e636f7272656374206e6f6e6365206973207370656369666965642e000000604482015290519081900360640190fd5b600281015461182b90600163ffffffff61191916565b600290910155909890975095505050505050565b604080517f19000000000000000000000000000000000000000000000000000000000000006020808301919091526000602183018190526c010000000000000000000000003081026022850152600160a060020a039097169096026036830152604a8201869052604b820194909452606b810192909252608b8201849052608c8201849052608d82018490527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19909416608e820152609281018390526093808201939093528351808203909301835260b301909252805191012090565b60008282018381101561192b57600080fd5b939250505056fea165627a7a723058200a99ce15f8b69ac8ee36e574ca284cef3cda29e4fbde2f0c231e4c113ed9b0e90029 \ No newline at end of file +0x608060405234801561001057600080fd5b5061198a806100206000396000f3fe6080604052600436106100ab5763ffffffff60e060020a600035041663028c979d81146100b05780631f3c99c3146100f15780631fa5d6a41461010657806351491e0c146101395780635c0a60f91461018057806360c30e8f146102c257806389aa2af01461036b5780638da5cb5b1461039257806397ebe030146103c35780639c144d5e14610458578063a2d2ff681461046d578063b7b8d60414610482578063fc0c546a146104db575b600080fd5b3480156100bc57600080fd5b506100ef600480360360608110156100d357600080fd5b50600160a060020a0381351690602081013590604001356104f0565b005b3480156100fd57600080fd5b506100ef610562565b34801561011257600080fd5b506100ef6004803603602081101561012957600080fd5b5035600160a060020a0316610612565b34801561014557600080fd5b5061014e610742565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b34801561018c57600080fd5b506100ef600480360360c08110156101a357600080fd5b600160a060020a03823581169260208101358216926040820135909216918101906080810160608201356401000000008111156101df57600080fd5b8201836020820111156101f157600080fd5b8035906020019184602083028401116401000000008311171561021357600080fd5b91939092909160208101903564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184602083028401116401000000008311171561026557600080fd5b91939092909160208101903564010000000081111561028357600080fd5b82018360208201111561029557600080fd5b803590602001918460208302840111640100000000831117156102b757600080fd5b50909250905061079d565b610357600480360360c08110156102d857600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561030357600080fd5b82018360208201111561031557600080fd5b8035906020019184600183028401116401000000008311171561033757600080fd5b91935091508035906020810135906040810135906060013560ff16610b4a565b604080519115158252519081900360200190f35b34801561037757600080fd5b50610380610f33565b60408051918252519081900360200190f35b34801561039e57600080fd5b506103a7610f39565b60408051600160a060020a039092168252519081900360200190f35b610357600480360360c08110156103d957600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561040457600080fd5b82018360208201111561041657600080fd5b8035906020019184600183028401116401000000008311171561043857600080fd5b91935091508035906020810135906040810135906060013560ff16610f48565b34801561046457600080fd5b506103a7611403565b34801561047957600080fd5b5061014e611412565b34801561048e57600080fd5b506104b5600480360360208110156104a557600080fd5b5035600160a060020a031661146d565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156104e757600080fd5b506103a7611496565b600554600160a060020a03163314610552576040805160e560020a62461bcd02815260206004820152601e60248201527f4f6e6c79206f776e657220697320616c6c6f77656420746f2063616c6c2e0000604482015290519081900360640190fd5b61055d8383836114a5565b505050565b600554600160a060020a031633146105c4576040805160e560020a62461bcd02815260206004820152601e60248201527f4f6e6c79206f776e657220697320616c6c6f77656420746f2063616c6c2e0000604482015290519081900360640190fd5b60025460408051918252517f4fdc3ae5b88cfb88e6fd0018782bd67575d1f425d78385735194b2607f7eda739181900360200190a160025461060d90600163ffffffff61166b16565b600255565b600554600160a060020a03163314610674576040805160e560020a62461bcd02815260206004820152601e60248201527f4f6e6c79206f776e657220697320616c6c6f77656420746f2063616c6c2e0000604482015290519081900360640190fd5b806001600160a060020a03821660009081526003602081905260409091200154116106e9576040805160e560020a62461bcd02815260206004820152601660248201527f4b6579206973206e6f7420617574686f72697a65642e00000000000000000000604482015290519081900360640190fd5b600160a060020a0382166000818152600360208181526040928390206001920191909155815192835290517f2991ab7bfda4556c9e662762b3dfa89a1df391084c4278286d466c1c187e55239281900390910190a15050565b604080517f6578656375746552756c6528616464726573732c62797465732c75696e74323581527f362c75696e74382c627974657333322c627974657333322900000000000000006020820152905190819003603801902081565b600154600160a060020a03161580156107bf5750600554600160a060020a0316155b80156107d45750600454600160a060020a0316155b151561082a576040805160e560020a62461bcd02815260206004820181905260248201527f436f6e747261637420686173206265656e20616c72656164792073657475702e604482015290519081900360640190fd5b600160a060020a038916151561088a576040805160e560020a62461bcd02815260206004820152601f60248201527f546f6b656e20636f6e74726163742061646472657373206973206e756c6c2e00604482015290519081900360640190fd5b600160a060020a038816151561090f576040805160e560020a62461bcd028152602060048201526024808201527f546f6b656e52756c657320636f6e74726163742061646472657373206973206e60448201527f756c6c2e00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038716151561096f576040805160e560020a62461bcd02815260206004820152601660248201527f4f776e65722061646472657373206973206e756c6c2e00000000000000000000604482015290519081900360640190fd5b8483146109ec576040805160e560020a62461bcd02815260206004820152603e60248201527f53657373696f6e206b65797320616e64207370656e64696e67206c696d69747360448201527f20617272617973206c656e677468732061726520646966666572656e742e0000606482015290519081900360840190fd5b848114610a8f576040805160e560020a62461bcd02815260206004820152604160248201527f53657373696f6e206b65797320616e642065787069726174696f6e206865696760448201527f68747320617272617973206c656e677468732061726520646966666572656e7460648201527f2e00000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b60018054600160a060020a03808c1673ffffffffffffffffffffffffffffffffffffffff1992831617909255600480548b841690831617905560058054928a16929091169190911790556002805560005b85811015610b3e57610b36878783818110610af757fe5b90506020020135600160a060020a03168686848181101515610b1557fe5b905060200201358585858181101515610b2a57fe5b905060200201356114a5565b600101610ae0565b50505050505050505050565b600080600160009054906101000a9004600160a060020a0316600160a060020a03166384f48d6a6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610b9e57600080fd5b505afa158015610bb2573d6000803e3d6000fd5b505050506040513d6020811015610bc857600080fd5b50519050600160a060020a0389811690821614610c55576040805160e560020a62461bcd02815260206004820152602660248201527f27746f272061646472657373206973206e6f7420636f4761746577617920616460448201527f64726573732e0000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600080610cfa60405180807f65786563757465526564656d7074696f6e28616464726573732c62797465732c81526020017f75696e743235362c75696e74382c627974657333322c62797465733332290000815250603e01905060405180910390208c8c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508e92508d91508c90508b611684565b9150915060006003600083600160a060020a0316600160a060020a031681526020019081526020016000209050600160009054906101000a9004600160a060020a0316600160a060020a031663095ea7b38d83600001546040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610da357600080fd5b505af1158015610db7573d6000803e3d6000fd5b505050506040513d6020811015610dcd57600080fd5b5050604051606090600160a060020a038e169034908e908e90808383808284376040519201945060009350909150508083038185875af1925050503d8060008114610e34576040519150601f19603f3d011682016040523d82523d6000602084013e610e39565b606091505b508092508197505050600160009054906101000a9004600160a060020a0316600160a060020a031663095ea7b38e60006040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610ebb57600080fd5b505af1158015610ecf573d6000803e3d6000fd5b505050506040513d6020811015610ee557600080fd5b505060408051858152871515602082015281517f23a87d3083eafe50e6f601373e38cd7afe8a0725d15d3f8b097a83f03acdb064929181900390910190a15050505050979650505050505050565b60025481565b600554600160a060020a031681565b600154600090600160a060020a0389811691161415610fd7576040805160e560020a62461bcd02815260206004820152602660248201527f27746f272061646472657373206973207574696c69747920746f6b656e20616460448201527f64726573732e0000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03881630141561105e576040805160e560020a62461bcd02815260206004820152602b60248201527f27746f27206164647265737320697320546f6b656e486f6c646572206164647260448201527f65737320697473656c662e000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008061110360405180807f6578656375746552756c6528616464726573732c62797465732c75696e74323581526020017f362c75696e74382c627974657333322c62797465733332290000000000000000815250603801905060405180910390208b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92508c91508b90508a611684565b600160a060020a038082166000908152600360205260408082206004805483517f2185810b000000000000000000000000000000000000000000000000000000008152935197995095975090959490931693632185810b93828101939282900301818387803b15801561117557600080fd5b505af1158015611189573d6000803e3d6000fd5b5050600154600480548554604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a03938416948101949094526024840191909152519216935063095ea7b392506044808201926020929091908290030181600087803b15801561120357600080fd5b505af1158015611217573d6000803e3d6000fd5b505050506040513d602081101561122d57600080fd5b5050604051606090600160a060020a038d169034908d908d90808383808284376040519201945060009350909150508083038185875af1925050503d8060008114611294576040519150601f19603f3d011682016040523d82523d6000602084013e611299565b606091505b5060015460048054604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a03928316938101939093526000602484018190529051959a509395509091169263095ea7b392604480840193602093929083900390910190829087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b505050506040513d602081101561134257600080fd5b505060048054604080517f212c81570000000000000000000000000000000000000000000000000000000081529051600160a060020a039092169263212c815792828201926000929082900301818387803b1580156113a057600080fd5b505af11580156113b4573d6000803e3d6000fd5b505060408051878152881515602082015281517f36cd2662860eb4ad66890c2d0ac0af9dde2f8927a7190e1eaed43ce9d43682b19450908190039091019150a150505050979650505050505050565b600454600160a060020a031681565b604080517f65786563757465526564656d7074696f6e28616464726573732c62797465732c81527f75696e743235362c75696e74382c627974657333322c627974657333322900006020820152905190819003603e01902081565b600360208190526000918252604090912080546001820154600283015492909301549092919084565b600154600160a060020a031681565b82600160a060020a0381161515611506576040805160e560020a62461bcd02815260206004820152601460248201527f4b65792061646472657373206973206e756c6c2e000000000000000000000000604482015290519081900360640190fd5b836000600160a060020a038216600090815260036020819052604090912001541461157b576040805160e560020a62461bcd02815260206004820152600b60248201527f4b6579206578697374732e000000000000000000000000000000000000000000604482015290519081900360640190fd5b4383116115f8576040805160e560020a62461bcd02815260206004820152603560248201527f45787069726174696f6e20686569676874206973206c746520746f207468652060448201527f63757272656e7420626c6f636b206865696768742e0000000000000000000000606482015290519081900360840190fd5b600160a060020a0385166000818152600360208181526040808420898155600181018990556002808201959095559354928401929092558151938452905191927faaf20b4ab9461ac8240a308f4bae35956040be348d648df2aa88137418189887929081900390910190a1505050505050565b60008282018381101561167d57600080fd5b9392505050565b60008061169a8989898051906020012089611884565b915060018284878760405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156116f9573d6000803e3d6000fd5b505060408051601f190151600160a060020a038116600090815260036020819052929020600254928101549194509250146117a4576040805160e560020a62461bcd02815260206004820152603860248201527f4b657927732073657373696f6e206973206e6f7420657175616c20746f20636f60448201527f6e747261637427732073657373696f6e2077696e646f772e0000000000000000606482015290519081900360840190fd5b600181015443106117ff576040805160e560020a62461bcd02815260206004820152601860248201527f53657373696f6e206b65792077617320657870697265642e0000000000000000604482015290519081900360640190fd5b6002810154871461185a576040805160e560020a62461bcd02815260206004820152601d60248201527f496e636f7272656374206e6f6e6365206973207370656369666965642e000000604482015290519081900360640190fd5b600281015461187090600163ffffffff61166b16565b600290910155909890975095505050505050565b604080517f19000000000000000000000000000000000000000000000000000000000000006020808301919091526000602183018190526c010000000000000000000000003081026022850152600160a060020a039097169096026036830152604a8201869052604b820194909452606b810192909252608b8201849052608c8201849052608d82018490527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19909416608e820152609281018390526093808201939093528351808203909301835260b30190925280519101209056fea165627a7a723058204f6a55fb77b6160849cea39cf95d729484634c77487355b7d41814e19a18b9200029 \ No newline at end of file diff --git a/lib/helper/TokenHolder.js b/lib/helper/TokenHolder.js index 0eafe7c..6f72fa7 100644 --- a/lib/helper/TokenHolder.js +++ b/lib/helper/TokenHolder.js @@ -55,8 +55,7 @@ class TokenHolder { getAuthorizeSessionExecutableData(sessionKey, spendingLimit, expirationHeight) { const oThis = this; - const jsonInterface = oThis.abiBinProvider.getABI(tokenHolderContractName), - contract = new oThis.auxiliaryWeb3.eth.Contract(jsonInterface, oThis.tokenHolderProxy), + const contract = oThis.getTokenHolderInstance(), executableData = contract.methods.authorizeSession(sessionKey, spendingLimit, expirationHeight).encodeABI(); return executableData; @@ -72,13 +71,26 @@ class TokenHolder { getRevokeSessionExecutableData(sessionKey) { const oThis = this; - const jsonInterface = oThis.abiBinProvider.getABI(tokenHolderContractName), - contract = new oThis.auxiliaryWeb3.eth.Contract(jsonInterface, oThis.tokenHolderProxy), + const contract = oThis.getTokenHolderInstance(), executableData = contract.methods.revokeSession(sessionKey).encodeABI(); return executableData; } + /** + * Logout all authorized sessions. + * + * @returns {*} Executable data to logout sessions. + */ + getLogoutExecutableData() { + const oThis = this; + + const contract = oThis.getTokenHolderInstance(), + executableData = contract.methods.logout().encodeABI(); + + return executableData; + } + /** * It is used to get call prefix of executeRule method in TokenHolder contract. * @@ -131,10 +143,23 @@ class TokenHolder { _executeRuleRawTx(to, data, nonce, r, s, v) { const oThis = this; + const contract = oThis.getTokenHolderInstance(); + + return contract.methods.executeRule(to, data, nonce, r, s, v); + } + + /** + * Method to get tokenholder contract instance. + * + * @returns {oThis.auxiliaryWeb3.eth.Contract} + */ + getTokenHolderInstance() { + const oThis = this; + const jsonInterface = oThis.abiBinProvider.getABI(tokenHolderContractName), contract = new oThis.auxiliaryWeb3.eth.Contract(jsonInterface, oThis.tokenHolderProxy); - return contract.methods.executeRule(to, data, nonce, r, s, v); + return contract; } } diff --git a/test/integration/WalletOperations.js b/test/integration/WalletOperations.js index 3c073b8..bd56e92 100644 --- a/test/integration/WalletOperations.js +++ b/test/integration/WalletOperations.js @@ -444,6 +444,55 @@ describe('Wallet operations', async function() { ); }); + // wallet9, wallet8 are the owners. + it('Should logout all authorized sessions', async function() { + const tokenHolderInstance = new TokenHolder(auxiliaryWeb3, tokenHolderProxy); + const currentOwner = wallets[9]; + const logoutExData = tokenHolderInstance.getLogoutExecutableData(); + + const nonce = await gnosisSafeProxyInstance.getNonce(); + + const safeTxData = await gnosisSafeProxyInstance.getSafeTxData( + tokenHolderProxy, + 0, + logoutExData, + 0, + 0, + 0, + 0, + config.NULL_ADDRESS, + config.NULL_ADDRESS, + nonce + ); + + const ownerSignature = await currentOwner.signEIP712TypedData(safeTxData); + const result = await gnosisSafeProxyInstance.execTransaction( + tokenHolderProxy, + 0, + logoutExData, + 0, + 0, + 0, + 0, + config.NULL_ADDRESS, + config.NULL_ADDRESS, + ownerSignature.signature, + txOptions + ); + + const txReceipt = await auxiliaryWeb3.eth.getTransactionReceipt(result.transactionHash); + + abiDecoder.addABI(abiBinProvider.getABI('GnosisSafe')); + abiDecoder.addABI(abiBinProvider.getABI('TokenHolder')); + + const decodedResult = abiDecoder.decodeLogs(txReceipt.logs); + + const sessionsLoggedOutEvent = JSON.parse(JSON.stringify(decodedResult)); + + assert.strictEqual(sessionsLoggedOutEvent[0].name, 'SessionsLoggedOut', 'Incorrect event emitted'); + assert.strictEqual(sessionsLoggedOutEvent[0].events[0].value, '2', 'Incorrect sessionwindow value'); + }); + // wallet9, wallet8 are the owners. it('Should change required threshold', async function() { // Owners already added should be equal or less than the threshold limit. Here, we have 2-owners in the gnosisSafe proxy.