MCPcopy Create free account
hub / github.com/ccxt/ccxt / create_sub_account

Method create_sub_account

python/ccxt/async_support/pacifica.py:2844–2908  ·  view source on GitHub ↗

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={})

Source from the content-addressed store, hash-verified

2842 }
2843
2844 async 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 = await self.privatePostAccountSubaccountCreate(request)
2900 #
2901 # {

Callers

nothing calls this directly

Calls 8

sign_messageMethod · 0.95
ArgumentsRequiredClass · 0.90
handle_optionMethod · 0.80
millisecondsMethod · 0.45

Tested by

no test coverage detected