creates a sub-account under the main account :param str name: unused argument :param dict [params]: extra parameters specific to the exchange API endpoint :param int [params.expiryWindow]: time to live in milliseconds :param str [params.subAccountAddress]: -
(self, name: str, params={})
| 2842 | } |
| 2843 | |
| 2844 | def create_sub_account(self, name: str, params={}): |
| 2845 | """ |
| 2846 | creates a sub-account under the main account |
| 2847 | :param str name: unused argument |
| 2848 | :param dict [params]: extra parameters specific to the exchange API endpoint |
| 2849 | :param int [params.expiryWindow]: time to live in milliseconds |
| 2850 | :param str [params.subAccountAddress]: - The public key(address) of the sub-account to use for creation |
| 2851 | :param str [params.subAccountPrivateKey]: - The private key of the sub-account to use for creation |
| 2852 | :returns dict: a response object |
| 2853 | """ |
| 2854 | finalHeaders = {} |
| 2855 | agentAddress = None |
| 2856 | agentAddress, params = self.handle_option('createSubAccount', 'agentAddress', None) |
| 2857 | originAddress = None |
| 2858 | originAddress, params = self.handle_origin_and_single_address('createSubAccount', params) |
| 2859 | if originAddress is None: |
| 2860 | raise ArgumentsRequired(self.id + ' createSubAccount() requires "originAddress" in params or "walletAddress" in requiredCredentials') |
| 2861 | if agentAddress is not None: |
| 2862 | finalHeaders['agent_wallet'] = agentAddress |
| 2863 | subAccountAddress = None |
| 2864 | subAccountAddress, params = self.handle_option_and_params(params, 'createSubAccount', 'subAccountAddress') |
| 2865 | subAccountPrivateKey = None |
| 2866 | subAccountPrivateKey, params = self.handle_option_and_params(params, 'createSubAccount', 'subAccountPrivateKey') |
| 2867 | if subAccountAddress is None: |
| 2868 | raise ArgumentsRequired(self.id + ' createSubAccount() requires a "subAccountAddress"!') |
| 2869 | if subAccountPrivateKey is None: |
| 2870 | raise ArgumentsRequired(self.id + ' createSubAccount() requires a "subAccountPrivateKey"!') |
| 2871 | timestamp = self.milliseconds() |
| 2872 | expiryWindow = None |
| 2873 | expiryWindow, params = self.handle_option_and_params_2(params, 'createSubAccount', 'expiryWindow', 'expiry_window', 5000) |
| 2874 | subaccountSignatureHeader = { |
| 2875 | 'timestamp': timestamp, |
| 2876 | 'expiry_window': expiryWindow, |
| 2877 | 'type': 'subaccount_initiate', |
| 2878 | } |
| 2879 | subSigPayload = { |
| 2880 | 'account': originAddress, |
| 2881 | } |
| 2882 | subaccountSignature = self.sign_message(subaccountSignatureHeader, subSigPayload, subAccountPrivateKey) |
| 2883 | mainSignatureHeader = { |
| 2884 | 'timestamp': timestamp, |
| 2885 | 'expiry_window': expiryWindow, |
| 2886 | 'type': 'subaccount_confirm', |
| 2887 | } |
| 2888 | mainSigPayload = { |
| 2889 | 'signature': subaccountSignature, |
| 2890 | } |
| 2891 | main_signature = self.sign_message(mainSignatureHeader, mainSigPayload, self.privateKey) |
| 2892 | finalHeaders['main_account'] = originAddress |
| 2893 | finalHeaders['subaccount'] = subAccountAddress |
| 2894 | finalHeaders['sub_signature'] = subaccountSignature |
| 2895 | finalHeaders['main_signature'] = main_signature |
| 2896 | finalHeaders['timestamp'] = timestamp |
| 2897 | finalHeaders['expiry_window'] = expiryWindow |
| 2898 | request = finalHeaders |
| 2899 | response = self.privatePostAccountSubaccountCreate(request) |
| 2900 | # |
| 2901 | # { |
nothing calls this directly
no test coverage detected