diff --git a/hyperliquid/exchange.py b/hyperliquid/exchange.py index 688f640..91ea382 100644 --- a/hyperliquid/exchange.py +++ b/hyperliquid/exchange.py @@ -1078,9 +1078,11 @@ def c_validator_unregister(self) -> Any: def multi_sig(self, multi_sig_user, inner_action, signatures, nonce, vault_address=None): multi_sig_user = multi_sig_user.lower() + is_mainnet = self.base_url == MAINNET_API_URL + chain_id = "0xa4b1" if is_mainnet else "0x66eee" multi_sig_action = { "type": "multiSig", - "signatureChainId": "0x66eee", + "signatureChainId": chain_id, "signatures": signatures, "payload": { "multiSigUser": multi_sig_user, @@ -1088,7 +1090,6 @@ def multi_sig(self, multi_sig_user, inner_action, signatures, nonce, vault_addre "action": inner_action, }, } - is_mainnet = self.base_url == MAINNET_API_URL signature = sign_multi_sig_action( self.wallet, multi_sig_action, diff --git a/hyperliquid/utils/signing.py b/hyperliquid/utils/signing.py index 10cca4d..056202e 100644 --- a/hyperliquid/utils/signing.py +++ b/hyperliquid/utils/signing.py @@ -246,7 +246,8 @@ def sign_l1_action(wallet, action, active_pool, nonce, expires_after, is_mainnet def sign_user_signed_action(wallet, action, payload_types, primary_type, is_mainnet): # signatureChainId is the chain used by the wallet to sign and can be any chain. # hyperliquidChain determines the environment and prevents replaying an action on a different chain. - action["signatureChainId"] = "0x66eee" + if "signatureChainId" not in action: + action["signatureChainId"] = "0xa4b1" if is_mainnet else "0x66eee" action["hyperliquidChain"] = "Mainnet" if is_mainnet else "Testnet" data = user_signed_payload(primary_type, payload_types, action) return sign_inner(wallet, data) @@ -312,9 +313,7 @@ def sign_multi_sig_l1_action_payload( def sign_multi_sig_action(wallet, action, is_mainnet, vault_address, nonce, expires_after): - action_without_tag = action.copy() - del action_without_tag["type"] - multi_sig_action_hash = action_hash(action_without_tag, vault_address, nonce, expires_after) + multi_sig_action_hash = action_hash(action, vault_address, nonce, expires_after) envelope = { "multiSigActionHash": multi_sig_action_hash, "nonce": nonce,