From 15bc6abee9cc40bd76ce6f92db3f154b1713fbee Mon Sep 17 00:00:00 2001 From: Uxio Fuentefria Date: Thu, 27 Oct 2022 12:48:56 +0200 Subject: [PATCH] Refactor domain and message typehashes --- gnosis/safe/safe.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/gnosis/safe/safe.py b/gnosis/safe/safe.py index a0f42bfcb..1d9580c6c 100644 --- a/gnosis/safe/safe.py +++ b/gnosis/safe/safe.py @@ -85,6 +85,12 @@ class Safe: GUARD_STORAGE_SLOT = ( 0x4A204F620C8C5CCDCA3FD54D003BADD85BA500436A431F0CBDA4F558C93C34C8 ) + DOMAIN_TYPEHASH = bytes.fromhex( + "47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218" + ) + SAFE_MESSAGE_TYPEHASH = bytes.fromhex( + "60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca" + ) def __init__(self, address: ChecksumAddress, ethereum_client: EthereumClient): """ @@ -509,13 +515,14 @@ def contract(self) -> Contract: @cached_property def domain_separator(self): - domain_typehash = bytes.fromhex( - "47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218" - ) return Web3.keccak( encode_abi( ["bytes32", "uint256", "address"], - [domain_typehash, self.ethereum_client.get_chain_id(), self.address], + [ + self.DOMAIN_TYPEHASH, + self.ethereum_client.get_chain_id(), + self.address, + ], ) ) @@ -849,11 +856,10 @@ def get_message_hash(self, message: Union[str, Hash32]) -> Hash32: message = message.encode() message_hash = fast_keccak(message) - safe_message_typehash = bytes.fromhex( - "60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca" - ) safe_message_hash = Web3.keccak( - encode_abi(["bytes32", "bytes32"], [safe_message_typehash, message_hash]) + encode_abi( + ["bytes32", "bytes32"], [self.SAFE_MESSAGE_TYPEHASH, message_hash] + ) ) return Web3.keccak( encode_abi_packed(