Пример #1
0
    def setUpTestData(cls):
        super().setUpTestData()

        for key, value in contract_addresses.items():
            if callable(value):
                contract_addresses[key] = value(cls.ethereum_client, cls.ethereum_test_account).contract_address

        settings.SAFE_CONTRACT_ADDRESS = contract_addresses['safe']
        settings.SAFE_MULTISEND_ADDRESS = contract_addresses['multi_send']
        settings.SAFE_V1_0_0_CONTRACT_ADDRESS = contract_addresses['safe_V1_0_0']
        settings.SAFE_V0_0_1_CONTRACT_ADDRESS = contract_addresses['safe_V0_0_1']
        settings.SAFE_PROXY_FACTORY_ADDRESS = contract_addresses['proxy_factory']
        settings.SAFE_PROXY_FACTORY_V1_0_0_ADDRESS = contract_addresses['proxy_factory_V1_0_0']
        settings.SAFE_VALID_CONTRACT_ADDRESSES = {settings.SAFE_CONTRACT_ADDRESS,
                                                  settings.SAFE_V1_0_0_CONTRACT_ADDRESS,
                                                  settings.SAFE_V0_0_1_CONTRACT_ADDRESS,
                                                  }
        cls.safe_contract_address = contract_addresses['safe']
        cls.safe_contract = get_safe_contract(cls.w3, cls.safe_contract_address)
        cls.safe_contract_V1_0_0_address = contract_addresses['safe_V1_0_0']
        cls.safe_contract_V1_0_0 = get_safe_V1_0_0_contract(cls.w3, cls.safe_contract_V1_0_0_address)
        cls.safe_contract_V0_0_1_address = contract_addresses['safe_V0_0_1']
        cls.safe_contract_V0_0_1 = get_safe_V1_0_0_contract(cls.w3, cls.safe_contract_V0_0_1_address)
        cls.proxy_factory_contract_address = contract_addresses['proxy_factory']
        cls.proxy_factory_contract = get_proxy_factory_contract(cls.w3, cls.proxy_factory_contract_address)
        cls.proxy_factory = ProxyFactory(cls.proxy_factory_contract_address, cls.ethereum_client)
        cls.multi_send_contract = get_multi_send_contract(cls.w3, contract_addresses['multi_send'])
        cls.multi_send = MultiSend(cls.multi_send_contract.address, cls.ethereum_client)
Пример #2
0
    def __init__(self, w3: Web3, master_copy_address: str,
                 proxy_factory_address: str):
        """
        Init builder for safe creation using create2
        :param w3: Web3 instance
        :param master_copy_address: `Gnosis Safe` master copy address
        :param proxy_factory_address: `Gnosis Proxy Factory` address
        """
        assert Web3.isChecksumAddress(master_copy_address)
        assert Web3.isChecksumAddress(proxy_factory_address)

        self.w3 = w3
        self.master_copy_address = master_copy_address
        self.proxy_factory_address = proxy_factory_address
        self.safe_version = get_safe_contract(
            w3, master_copy_address).functions.VERSION().call()
        if self.safe_version == '1.1.1':
            self.master_copy_contract = get_safe_contract(
                w3, master_copy_address)
        elif self.safe_version == '1.0.0':
            self.master_copy_contract = get_safe_V1_0_0_contract(
                w3, master_copy_address)
        else:
            raise ValueError('Safe version must be 1.1.1 or 1.0.0')
        self.proxy_factory_contract = get_proxy_factory_contract(
            w3, proxy_factory_address)
 def contract_events(self) -> List[ContractEvent]:
     old_proxy_factory_contract = get_proxy_factory_V1_1_1_contract(
         self.ethereum_client.w3)
     proxy_factory_contract = get_proxy_factory_contract(
         self.ethereum_client.w3)
     return [
         old_proxy_factory_contract.events.ProxyCreation(),
         proxy_factory_contract.events.ProxyCreation(),
     ]
Пример #4
0
 def deploy_proxy_factory_contract(cls, ethereum_client: EthereumClient,
                                   deployer_account: LocalAccount) -> EthereumTxSent:
     """
     Deploy proxy factory contract
     :param ethereum_client:
     :param deployer_account: Ethereum Account
     :return: deployed contract address
     """
     proxy_factory_contract = get_proxy_factory_contract(ethereum_client.w3)
     return cls._deploy_proxy_factory_contract(ethereum_client, deployer_account, proxy_factory_contract)
Пример #5
0
    def setUpClass(cls):
        super().setUpClass()

        for key, value in _contract_addresses.items():
            if callable(value):
                _contract_addresses[key] = value(
                    cls.ethereum_client,
                    cls.ethereum_test_account).contract_address

        settings.SAFE_DEFAULT_CALLBACK_HANDLER = _contract_addresses[
            "compatibility_fallback_handler"]
        settings.SAFE_MULTISEND_ADDRESS = _contract_addresses["multi_send"]
        settings.SAFE_CONTRACT_ADDRESS = _contract_addresses["safe_v1_3_0"]
        settings.SAFE_V1_1_1_CONTRACT_ADDRESS = _contract_addresses[
            "safe_V1_1_1"]
        settings.SAFE_V1_0_0_CONTRACT_ADDRESS = _contract_addresses[
            "safe_V1_0_0"]
        settings.SAFE_V0_0_1_CONTRACT_ADDRESS = _contract_addresses[
            "safe_V0_0_1"]
        settings.SAFE_PROXY_FACTORY_ADDRESS = _contract_addresses[
            "proxy_factory"]
        settings.SAFE_PROXY_FACTORY_V1_0_0_ADDRESS = _contract_addresses[
            "proxy_factory_V1_0_0"]
        settings.SAFE_VALID_CONTRACT_ADDRESSES = {
            settings.SAFE_CONTRACT_ADDRESS,
            settings.SAFE_V1_1_1_CONTRACT_ADDRESS,
            settings.SAFE_V1_0_0_CONTRACT_ADDRESS,
            settings.SAFE_V0_0_1_CONTRACT_ADDRESS,
        }
        cls.compatibility_fallback_handler = (
            get_compatibility_fallback_handler_V1_3_0_contract(
                cls.w3, _contract_addresses["compatibility_fallback_handler"]))
        cls.safe_contract_address = _contract_addresses["safe_v1_3_0"]
        cls.safe_contract = get_safe_V1_3_0_contract(cls.w3,
                                                     cls.safe_contract_address)
        cls.safe_contract_V1_1_1_address = _contract_addresses["safe_V1_1_1"]
        cls.safe_contract_V1_1_1 = get_safe_V1_1_1_contract(
            cls.w3, cls.safe_contract_V1_1_1_address)
        cls.safe_contract_V1_0_0_address = _contract_addresses["safe_V1_0_0"]
        cls.safe_contract_V1_0_0 = get_safe_V1_0_0_contract(
            cls.w3, cls.safe_contract_V1_0_0_address)
        cls.safe_contract_V0_0_1_address = _contract_addresses["safe_V0_0_1"]
        cls.safe_contract_V0_0_1 = get_safe_V1_0_0_contract(
            cls.w3, cls.safe_contract_V0_0_1_address)
        cls.proxy_factory_contract_address = _contract_addresses[
            "proxy_factory"]
        cls.proxy_factory_contract = get_proxy_factory_contract(
            cls.w3, cls.proxy_factory_contract_address)
        cls.proxy_factory = ProxyFactory(cls.proxy_factory_contract_address,
                                         cls.ethereum_client)
        cls.multi_send_contract = get_multi_send_contract(
            cls.w3, _contract_addresses["multi_send"])
        cls.multi_send = MultiSend(cls.multi_send_contract.address,
                                   cls.ethereum_client)
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.proxy_factory_contract = get_proxy_factory_contract(self.ethereum_client.w3)
     self.proxy_creation_topic = construct_event_topic_set(self.proxy_factory_contract.events.ProxyCreation().abi,
                                                           None)[0]
Пример #7
0
 def get_contract(self):
     return get_proxy_factory_contract(self.ethereum_client.w3,
                                       self.address)
Пример #8
0
 def __init__(self, ethereum_client: EthereumClient):
     self.ethereum_client = ethereum_client
     dummy_w3 = Web3()  # Not needed, just used to decode contracts
     self.proxy_factory_contract = get_proxy_factory_contract(dummy_w3)
     self.cpk_proxy_factory_contract = get_cpk_factory_contract(dummy_w3)
 def __init__(self, ethereum_client: EthereumClient, tracing_enabled: bool):
     self.ethereum_client = ethereum_client
     self.tracing_enabled = tracing_enabled
     dummy_w3 = Web3()  # Not needed, just used to decode contracts
     self.proxy_factory_contract = get_proxy_factory_contract(dummy_w3)
     self.cpk_proxy_factory_contract = get_cpk_factory_contract(dummy_w3)
Пример #10
0
 def get_contract(self, address: Optional[ChecksumAddress] = None):
     address = address or self.address
     return get_proxy_factory_contract(self.ethereum_client.w3, address)