def xxx_test_upgrade_wallet(web3: Web3): # Check we get somewhat valid ids contract_def = get_compiled_contract_cached("OwnedRegistrar") registrar_contract, txid = deploy_contract(web3, contract_def) # Deploy wallet contract body contract_def = get_compiled_contract_cached("Wallet") wallet_contract, txid = deploy_contract(web3, contract_def) # Register wallet contract body txid = registrar_contract.transact().setAddr("wallet", wallet_contract.address) confirm_transaction(web3, txid) # Deploy relay against the registered wallet contract_def = get_compiled_contract_cached("Relay") relay, txid = deploy_contract( web3, contract_def, constructor_arguments=[registrar_contract.address, "wallet"]) # Test relayed wallet. We use Wallet ABI # against Relay contract. contract_def = get_compiled_contract_cached("Wallet") relayed_wallet = get_contract(web3, contract_def, relay.address) assert relayed_wallet.call().version() == "1.0" # # Upgrade wallet # # Deploy wallet contract body contract_def = get_compiled_contract_cached("Wallet") wallet_contract, txid = deploy_contract(web3, contract_def)
def xxx_test_upgrade_wallet(web3: Web3): # Check we get somewhat valid ids contract_def = get_compiled_contract_cached("OwnedRegistrar") registrar_contract, txid = deploy_contract(web3, contract_def) # Deploy wallet contract body contract_def = get_compiled_contract_cached("Wallet") wallet_contract, txid = deploy_contract(web3, contract_def) # Register wallet contract body txid = registrar_contract.transact().setAddr("wallet", wallet_contract.address) confirm_transaction(web3, txid) # Deploy relay against the registered wallet contract_def = get_compiled_contract_cached("Relay") relay, txid = deploy_contract(web3, contract_def, constructor_arguments=[registrar_contract.address, "wallet"]) # Test relayed wallet. We use Wallet ABI # against Relay contract. contract_def = get_compiled_contract_cached("Wallet") relayed_wallet = get_contract(web3, contract_def, relay.address) assert relayed_wallet.call().version() == "1.0" # # Upgrade wallet # # Deploy wallet contract body contract_def = get_compiled_contract_cached("Wallet") wallet_contract, txid = deploy_contract(web3, contract_def)
def xxx_test_registrar_based_wallet(web3: Web3, coinbase): """Create registrar contract and register a wallet against it.""" wei_amount = to_wei(TEST_VALUE) # Check we get somewhat valid ids contract_def = get_compiled_contract_cached("OwnedRegistrar") registrar_contract, txid = deploy_contract(web3, contract_def) # Deploy wallet contract body wallet_contract_def = get_compiled_contract_cached("Wallet") wallet_contract, txid = deploy_contract(web3, wallet_contract_def) assert wallet_contract.call().version().decode("utf-8") == "1.0" # Register wallet contract body assert wallet_contract.address txid = registrar_contract.transact().setAddr(b"wallet", wallet_contract.address) confirm_transaction(web3, txid) # Check registration succeeded assert decode_addr( registrar_contract.call().addr(b"wallet")) == wallet_contract.address # Deploy relay against the registered wallet contract_def = get_compiled_contract_cached("Relay") assert registrar_contract.address relay, txid = deploy_contract( web3, contract_def, constructor_arguments=[registrar_contract.address, "wallet"]) # Test relayed wallet. We use Wallet ABI # against Relay contract. contract_def = get_compiled_contract_cached("Wallet") relayed_wallet = get_contract(web3, contract_def, relay.address) # Check relay internal data structures assert decode_addr( relay.call().registrarAddr()) == registrar_contract.address assert relay.call().name() == b"wallet" # We point to the wallet implementation impl_addr = decode_addr(relay.call().getImplAddr()) assert impl_addr == wallet_contract.address # Read a public variable through relay contract assert relayed_wallet.call().version().decode("utf-8") == "1.0" # Deposit some ETH txid = send_balance_to_contract(relayed_wallet.address, wei_amount) confirm_transaction(web3, txid) assert relayed_wallet.web3.eth.getBalance(relayed_wallet.address, wei_amount) # Withdraw ETH back relayed_wallet.transact().withdraw(coinbase, wei_amount) confirm_transaction(web3, txid) assert relayed_wallet.web3.eth.getBalance(relayed_wallet.address, 0)
def xxx_test_registrar_based_wallet(web3: Web3, coinbase): """Create registrar contract and register a wallet against it.""" wei_amount = to_wei(TEST_VALUE) # Check we get somewhat valid ids contract_def = get_compiled_contract_cached("OwnedRegistrar") registrar_contract, txid = deploy_contract(web3, contract_def) # Deploy wallet contract body wallet_contract_def = get_compiled_contract_cached("Wallet") wallet_contract, txid = deploy_contract(web3, wallet_contract_def) assert wallet_contract.call().version().decode("utf-8") == "1.0" # Register wallet contract body assert wallet_contract.address txid = registrar_contract.transact().setAddr(b"wallet", wallet_contract.address) confirm_transaction(web3, txid) # Check registration succeeded assert decode_addr(registrar_contract.call().addr(b"wallet")) == wallet_contract.address # Deploy relay against the registered wallet contract_def = get_compiled_contract_cached("Relay") assert registrar_contract.address relay, txid = deploy_contract(web3, contract_def, constructor_arguments=[registrar_contract.address, "wallet"]) # Test relayed wallet. We use Wallet ABI # against Relay contract. contract_def = get_compiled_contract_cached("Wallet") relayed_wallet = get_contract(web3, contract_def, relay.address) # Check relay internal data structures assert decode_addr(relay.call().registrarAddr()) == registrar_contract.address assert relay.call().name() == b"wallet" # We point to the wallet implementation impl_addr = decode_addr(relay.call().getImplAddr()) assert impl_addr == wallet_contract.address # Read a public variable through relay contract assert relayed_wallet.call().version().decode("utf-8") == "1.0" # Deposit some ETH txid = send_balance_to_contract(relayed_wallet.address, wei_amount) confirm_transaction(web3, txid) assert relayed_wallet.web3.eth.getBalance(relayed_wallet.address, wei_amount) # Withdraw ETH back relayed_wallet.transact().withdraw(coinbase, wei_amount) confirm_transaction(web3, txid) assert relayed_wallet.web3.eth.getBalance(relayed_wallet.address, 0)
def simple_test_contract(web3) -> Contract: """Create a contract where we can set a global variable for testing.""" contract_def = get_compiled_contract_cached("TestContract") contract, txid = deploy_contract(web3, contract_def) return contract
def abi_factory(cls, contract_name=None): contract_name = contract_name or "Wallet2" contract_meta = get_compiled_contract_cached(contract_name) return contract_meta
def abi_factory(cls): contract_meta = get_compiled_contract_cached("Token") return contract_meta
def signature_contract(web3): contract_def = get_compiled_contract_cached("SignatureVerifier") contract, txid = deploy_contract(web3, contract_def) return contract
def decode_data_contract(web3) -> Contract: """Create a contract where we can set a global variable for testing.""" contract_def = get_compiled_contract_cached("DecodeData") contract, txid = deploy_contract(web3, contract_def) return contract