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

Method create_signed_request

python/ccxt/async_support/grvt.py:3015–3070  ·  view source on GitHub ↗
(self, request: Any, structureType: str, currencyObj=None, signerAddress: Str = None)

Source from the content-addressed store, hash-verified

3013 return self.convert_to_big_int_custom('10000') # multiply needed https://t.me/c/3396937126/88
3014
3015 def create_signed_request(self, request: Any, structureType: str, currencyObj=None, signerAddress: Str = None) -> dict:
3016 messageData = None
3017 if structureType == 'EIP712_TRANSFER_TYPE':
3018 amountMultiplier = self.convert_to_big_int_custom('1000000')
3019 amountInt = request['num_tokens'] * amountMultiplier
3020 messageData = {
3021 'fromAccount': request['from_account_id'],
3022 'fromSubAccount': request['from_sub_account_id'],
3023 'toAccount': request['to_account_id'],
3024 'toSubAccount': request['to_sub_account_id'],
3025 'tokenCurrency': currencyObj['numericId'],
3026 'numTokens': self.parse_to_int(amountInt),
3027 'nonce': request['signature']['nonce'],
3028 'expiration': request['signature']['expiration'],
3029 }
3030 elif structureType == 'EIP712_WITHDRAWAL_TYPE':
3031 amountMultiplier = self.convert_to_big_int_custom('1000000')
3032 messageData = {
3033 'fromAccount': request['from_account_id'],
3034 'toEthAddress': request['to_eth_address'],
3035 'tokenCurrency': currencyObj['numericId'],
3036 'numTokens': self.parse_to_int(request['num_tokens'] * amountMultiplier),
3037 'nonce': request['signature']['nonce'],
3038 'expiration': request['signature']['expiration'],
3039 }
3040 elif structureType == 'EIP712_ORDER_TYPE' or structureType == 'EIP712_ORDER_WITH_BUILDER_TYPE':
3041 messageData = self.eip_message_for_order(request, structureType)
3042 elif structureType == 'EIP712_BUILDER_APPROVAL_TYPE':
3043 amountMultiplier = self.convert_to_big_int_custom(self.fee_amount_multiplier())
3044 messageData = {
3045 'mainAccountID': request['main_account_id'],
3046 'builderAccountID': request['builder_account_id'],
3047 'maxFutureFeeRate': self.parse_to_int(float(request['max_futures_fee_rate']) * amountMultiplier),
3048 'maxSpotFeeRate': self.parse_to_int(float(request['max_spot_fee_rate']) * amountMultiplier),
3049 'nonce': request['signature']['nonce'],
3050 'expiration': request['signature']['expiration'],
3051 }
3052 elif structureType == 'EIP712_WALLETLOGIN_TYPE':
3053 messageData = {
3054 'signer': request['address'],
3055 'nonce': request['signature']['nonce'],
3056 'expiration': request['signature']['expiration'],
3057 }
3058 domainData = self.eip_domain_data()
3059 definitions = self.eip_definitions()
3060 ethEncodedMessage = self.eth_encode_structured_data(domainData, definitions[structureType], messageData)
3061 ethEncodedMessageHashed = '0x' + self.hash(ethEncodedMessage, 'keccak', 'hex')
3062 usesPrivKey = self.uses_private_key() # py transpiler needs self line separated
3063 secretOrPrivkey = self.privateKey if usesPrivKey else self.secret
3064 privateKeyWithoutZero = self.remove0x_prefix(secretOrPrivkey)
3065 signature = self.ecdsa(self.remove0x_prefix(ethEncodedMessageHashed), privateKeyWithoutZero, 'secp256k1', None)
3066 request['signature']['r'] = self.format_signature_rs(signature['r'])
3067 request['signature']['s'] = self.format_signature_rs(signature['s'])
3068 request['signature']['v'] = self.sum(27, signature['v'])
3069 request['signature']['signer'] = self.eth_get_address_from_private_key('0x' + privateKeyWithoutZero) if (signerAddress is None) else signerAddress
3070 return request
3071
3072 def format_signature_rs(self, value: str):

Callers 5

initialize_clientMethod · 0.95
transferMethod · 0.95
withdrawMethod · 0.95
create_orderMethod · 0.95

Calls 14

eip_message_for_orderMethod · 0.95
fee_amount_multiplierMethod · 0.95
eip_domain_dataMethod · 0.95
eip_definitionsMethod · 0.95
uses_private_keyMethod · 0.95
format_signature_rsMethod · 0.95
parse_to_intMethod · 0.80
remove0x_prefixMethod · 0.80
hashMethod · 0.45

Tested by

no test coverage detected