eth-address-index

signed metadata declarations for ethereum addresses
Info | Log | Files | Refs

test_addressdeclarator.py (3867B)


      1 import logging
      2 import os
      3 import json
      4 import hashlib
      5 
      6 import web3
      7 import eth_tester
      8 
      9 logging.basicConfig(level=logging.DEBUG)
     10 logg = logging.getLogger()
     11 
     12 
     13 eth_params = eth_tester.backends.pyevm.main.get_default_genesis_params({
     14     'gas_limit': 9000000,
     15     })
     16 backend = eth_tester.PyEVMBackend(eth_params)
     17 instance = eth_tester.EthereumTester(backend)
     18 provider = web3.Web3.EthereumTesterProvider(instance)
     19 w3 = web3.Web3(provider)
     20 
     21 
     22 f = open('AddressDeclarator.bin', 'r')
     23 bytecode = f.read()
     24 f.close()
     25 
     26 f = open('AddressDeclarator.json', 'r')
     27 abi = json.load(f)
     28 f.close()
     29 
     30 #token_address = web3.Web3.toChecksumAddress('0x' + os.urandom(20).hex())
     31 
     32 c = w3.eth.contract(abi=abi, bytecode=bytecode)
     33 #tx_hash = c.constructor().transact({'from': w3.eth.accounts[0]})
     34 
     35 declarations = [
     36     ['0x' + os.urandom(32).hex(), '0x' + os.urandom(32).hex()],
     37     ['0x' + os.urandom(32).hex(), '0x' + os.urandom(32).hex()],
     38     ['0x' + os.urandom(32).hex(), '0x' + os.urandom(32).hex()],
     39     ['0x' + os.urandom(32).hex(), '0x' + os.urandom(32).hex()],
     40         ]
     41 
     42 # Deployment is a self-signed declaration
     43 tx_hash = c.constructor(declarations[0][0]).transact({'from': w3.eth.accounts[0]})
     44 r = w3.eth.getTransactionReceipt(tx_hash)
     45 logg.debug('contract {}'.format(r.contractAddress))
     46 
     47 c = w3.eth.contract(abi=abi, address=r.contractAddress)
     48 
     49 r = c.functions.declaratorCount(w3.eth.accounts[0]).call()
     50 assert r == 1
     51 
     52 r = c.functions.declaratorAddressAt(w3.eth.accounts[0], 0).call()
     53 assert r == w3.eth.accounts[0]
     54 
     55 r = c.functions.declaration(w3.eth.accounts[0], w3.eth.accounts[0]).call()
     56 assert r[0].hex() == declarations[0][0][2:]
     57 
     58 
     59 # Add first declaration for 0 by 2
     60 c.functions.addDeclaration(w3.eth.accounts[0], declarations[1][0]).transact({'from': w3.eth.accounts[2]})
     61 
     62 r = c.functions.declaratorCount(w3.eth.accounts[0]).call()
     63 assert r == 2
     64 
     65 r = c.functions.declaratorAddressAt(w3.eth.accounts[0], 1).call()
     66 assert r == w3.eth.accounts[2]
     67 
     68 r = c.functions.declaration(w3.eth.accounts[2], w3.eth.accounts[0]).call()
     69 assert r[0].hex() == declarations[1][0][2:]
     70 
     71 
     72 # Add second declaration for 0 by 2
     73 c.functions.addDeclaration(w3.eth.accounts[0], declarations[1][1]).transact({'from': w3.eth.accounts[2]})
     74 
     75 r = c.functions.declaratorCount(w3.eth.accounts[0]).call()
     76 assert r == 2
     77 
     78 
     79 r = c.functions.declaration(w3.eth.accounts[2], w3.eth.accounts[0]).call()
     80 assert r[0].hex() == declarations[1][0][2:]
     81 assert r[1].hex() == declarations[1][1][2:]
     82 
     83 
     84 # Add first declaration for 1 by 2
     85 c.functions.addDeclaration(w3.eth.accounts[1], declarations[2][0]).transact({'from': w3.eth.accounts[2]})
     86 
     87 r = c.functions.declaratorCount(w3.eth.accounts[0]).call()
     88 assert r == 2
     89 
     90 r = c.functions.declaratorCount(w3.eth.accounts[1]).call()
     91 assert r == 1
     92 
     93 r = c.functions.declaratorAddressAt(w3.eth.accounts[1], 0).call()
     94 assert r == w3.eth.accounts[2]
     95 
     96 r = c.functions.declaration(w3.eth.accounts[2], w3.eth.accounts[1]).call()
     97 assert r[0].hex() == declarations[2][0][2:]
     98 
     99 
    100 # Add declaration for 0 by 3
    101 c.functions.addDeclaration(w3.eth.accounts[0], declarations[3][0]).transact({'from': w3.eth.accounts[3]})
    102 
    103 
    104 # 0 declared itself and 1
    105 r = c.functions.declarationCount(w3.eth.accounts[0]).call()
    106 assert r == 1
    107 
    108 # 0 was declared by itself, 1 and 3
    109 r = c.functions.declaratorCount(w3.eth.accounts[0]).call()
    110 assert r == 3
    111 
    112 # 1 declared noone
    113 r = c.functions.declarationCount(w3.eth.accounts[1]).call()
    114 assert r == 0
    115 
    116 # 1 was declared by 2
    117 r = c.functions.declaratorCount(w3.eth.accounts[1]).call()
    118 assert r == 1
    119 
    120 # 2 declared 0 and 1
    121 r = c.functions.declarationCount(w3.eth.accounts[2]).call()
    122 assert r == 2
    123 
    124 # 2 was declared by noone
    125 r = c.functions.declaratorCount(w3.eth.accounts[2]).call()
    126 assert r == 0
    127 
    128 # 3 declared 0
    129 r = c.functions.declarationCount(w3.eth.accounts[3]).call()
    130 assert r == 1
    131 
    132 # 3 was declared by noone
    133 r = c.functions.declaratorCount(w3.eth.accounts[3]).call()
    134 assert r == 0