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

Method get_extended_order_msg_hash

python/ccxt/extended.py:3238–3273  ·  view source on GitHub ↗
(self, settlement: dict)

Source from the content-addressed store, hash-verified

3236 ]))
3237
3238 def get_extended_order_msg_hash(self, settlement: dict) -> str:
3239 orderTypeHash = self.convert_to_big_int(self.extended_starknet_get_selector_from_name(
3240 '"Order"("position_id":"felt","base_asset_id":"AssetId","base_amount":"i64","quote_asset_id":"AssetId","quote_amount":"i64","fee_asset_id":"AssetId","fee_amount":"u64","expiration":"Timestamp","salt":"felt")"PositionId"("value":"u32")"AssetId"("value":"felt")"Timestamp"("seconds":"u64")'
3241 ))
3242 domainHash = self.get_extended_domain_hash()
3243 # Order fields
3244 positionId = self.convert_to_big_int(self.safe_string(settlement, 'collateralPosition'))
3245 baseAssetId = self.safe_string(settlement, 'baseAssetId')
3246 baseAmount = self.convert_to_big_int(self.safe_string(settlement, 'baseAmount'))
3247 quoteAssetId = self.safe_string(settlement, 'quoteAssetId')
3248 quoteAmount = self.convert_to_big_int(self.safe_string(settlement, 'quoteAmount'))
3249 feeAssetId = self.safe_string(settlement, 'feeAssetId')
3250 feeAmount = self.convert_to_big_int(self.safe_string(settlement, 'feeAmount'))
3251 expiration = self.convert_to_big_int(self.safe_string_2(settlement, 'expiration', 'expirationTimestamp'))
3252 salt = self.convert_to_big_int(self.safe_string_2(settlement, 'salt', 'nonce'))
3253 starkKey = self.convert_to_big_int(self.safe_string(settlement, 'starkKey'))
3254 # Order struct hash
3255 orderHash = self.convert_to_big_int(self.extended_starknet_compute_poseidon_hash_on_elements([
3256 orderTypeHash,
3257 positionId,
3258 self.convert_to_big_int(baseAssetId),
3259 self.get_extended_encode_i64(baseAmount),
3260 self.convert_to_big_int(quoteAssetId),
3261 self.get_extended_encode_i64(quoteAmount),
3262 self.convert_to_big_int(feeAssetId),
3263 feeAmount,
3264 expiration,
3265 salt,
3266 ]))
3267 # SNIP-12 final message hash: poseidon('StarkNet Message', domainHash, starkKey, orderHash)
3268 return self.extended_starknet_compute_poseidon_hash_on_elements([
3269 self.get_extended_string_to_felt('StarkNet Message'),
3270 domainHash,
3271 starkKey,
3272 orderHash,
3273 ])
3274
3275 def get_extended_withdrawal_msg_hash(self, settlement: dict, starkKey: str) -> str:
3276 withdrawalTypeHash = self.convert_to_big_int(self.extended_starknet_get_selector_from_name(

Callers 1

Tested by

no test coverage detected