Beispiel #1
0
def _create_account(account):
    actions = []
    newaccount = {
        'creator': 'eosio',
        'name': account,
        'owner': {
            'threshold': 1,
            'keys': [{
                'key': initeos.key1,
                'weight': 1
            }],
            'accounts': [],
            'waits': []
        },
        'active': {
            'threshold': 1,
            'keys': [{
                'key': initeos.key2,
                'weight': 1
            }],
            'accounts': [],
            'waits': []
        }
    }

    _newaccount = eosapi.pack_args('eosio', 'newaccount', newaccount)
    act = ['eosio', 'newaccount', _newaccount, {'eosio': 'active'}]
    actions.append(act)
    '''
    args = {'payer':'eosio', 'receiver':account, 'quant':"1.0000 EOS"}
    args = eosapi.pack_args('eosio', 'buyram', args)
    act = ['eosio', 'buyram', {'eosio':'active'}, args]
    actions.append(act)
    '''
    if eosapi.get_code('eosio')[0]:
        args = {'payer': 'eosio', 'receiver': account, 'bytes': 64 * 1024}
        args = eosapi.pack_args('eosio', 'buyrambytes', args)
        act = ['eosio', 'buyrambytes', args, {'eosio': 'active'}]
        actions.append(act)

        args = {
            'from': 'eosio',
            'receiver': account,
            'stake_net_quantity': '1.0050 EOS',
            'stake_cpu_quantity': '1.0050 EOS',
            'transfer': 1
        }
        args = eosapi.pack_args('eosio', 'delegatebw', args)
        act = ['eosio', 'delegatebw', args, {'eosio': 'active'}]
        actions.append(act)

    rr, cost = eosapi.push_actions(actions)
    assert_ret(rr)
Beispiel #2
0
def deploy(account, src):
    if not eosapi.get_account(account):
        print('account does not exists, create it.')
        r = eosapi.create_account2('eosio', account, initeos.key1,
                                   initeos.key2)
        assert r
    '''
    abs_src_file = os.path.dirname(__file__)
    last_update = eosapi.get_code_update_time_ms(account)
    modify_time = os.path.getmtime(abs_src_file)*1000
    if last_update >= modify_time:
        return
    '''

    actions = []
    _src_dir = os.path.dirname(__file__)
    abi_file = os.path.join(_src_dir, 'tester.abi')
    setabi = eosapi.pack_setabi(abi_file, eosapi.N(account))
    act = ['eosio', 'setabi', setabi, {account: 'active'}]
    actions.append(act)

    args = eosapi.pack_args(
        "eosio", 'setcode', {
            'account': account,
            'vmtype': 10,
            'vmversion': 0,
            'code': src.encode('utf8').hex()
        })
    act = ['eosio', 'setcode', args, {account: 'active'}]
    actions.append(act)

    r, cost = eosapi.push_actions(actions)
    print(r['except'])
    print(r['elapsed'])
Beispiel #3
0
def test3(count=200):
    main_class = '<stdin>:Greeter'
    greeter = os.path.join(os.path.dirname(__file__), 'greeter.sol')
    with open(greeter, 'r') as f:
        contract_source_code = f.read()
        contract_interface = compile(contract_source_code, main_class)
        #        deploy(contract_interface)
        contract_abi = contract_interface['abi']

    fn_identifier = 'getValue'

    for abi in contract_abi:
        if 'name' in abi and abi['name'] == fn_identifier:
            fn_abi = abi
            break
    args = ()
    kwargs = {}

    data = web3.utils.contracts.encode_transaction_data(
        web3, fn_identifier, contract_abi, fn_abi, args, kwargs)
    print(data)
    data = data[2:]
    transactions = []
    for i in range(count):
        args = {'from': 'eosio', 'to': 'evm', 'amount': i, 'data': data}
        args = eosapi.pack_args('evm', 'ethtransfer', args)
        action = ['evm', 'ethtransfer', args, {'eosio': 'active'}]
        transactions.append([
            action,
        ])
    ret, cost = eosapi.push_transactions(transactions)
    assert ret
    print(
        'total cost time:%.3f s, cost per action: %.3f ms, actions per second: %.3f'
        % (cost / 1e6, cost / count / 1000, 1 * 1e6 / (cost / count)))
Beispiel #4
0
def test():
    main_class = '<stdin>:Greeter'
    greeter = os.path.join(os.path.dirname(__file__), 'greeter.sol')
    with open(greeter, 'r') as f:
        contract_source_code = f.read()
        contract_interface = compile(contract_source_code, main_class)
        #        deploy(contract_interface)
        bin = contract_interface['bin']
        print(bin)

        account = 'evm'
        actions = []

        _src_dir = os.path.dirname(__file__)
        abi_file = os.path.join(_src_dir, 'evm.abi')
        setabi = eosapi.pack_setabi(abi_file, eosapi.N(account))
        act = ['eosio', 'setabi', setabi, {account: 'active'}]
        actions.append(act)

        #        bin = '608060405234801561001057600080fd5b506103e76000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122b86000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610221806100aa6000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063209652551461005c5780635524107714610087578063a5b248d9146100b4575b600080fd5b34801561006857600080fd5b5061007161010b565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b506100b260048036038101908080359060200190929190505050610151565b005b3480156100c057600080fd5b506100f5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101dd565b6040518082815260200191505060405180910390f35b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550606381016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600060205280600052604060002060009150905054815600a165627a7a7230582027ddd8a5407c4fad4a070848746c3d9e2313600c2a052b6e11b3416b35d72cda0029'
        args = eosapi.pack_args("eosio", 'setcode', {
            'account': account,
            'vmtype': 10,
            'vmversion': 0,
            'code': bin
        })
        act = ['eosio', 'setcode', args, {'evm': 'active'}]
        actions.append(act)

        r, cost = eosapi.push_actions(actions)
        print(r['except'])
        print(r['elapsed'])
Beispiel #5
0
def cb():
    account = 'lab'
    print('++++++cancel boost account', account)
    msg = eosapi.pack_args('eosio', 'cancelboost', {'account': account})
    act = ['eosio', 'cancelboost', msg, {'eosio': 'active'}]
    rr, cost = eosapi.push_actions([act])
    assert_ret(rr)
Beispiel #6
0
def _set_contract(account, wast_file, abi_file):
    with open(wast_file, 'rb') as f:
        wasm = eosapi.wast2wasm(f.read())

    code_hash = eosapi.sha256(wasm)
    with open(abi_file, 'rb') as f:
        abi = f.read()

    actions = []
    _setcode = eosapi.pack_args('eosio', 'setcode', {
        'account': account,
        'vmtype': 0,
        'vmversion': 0,
        'code': wasm.hex()
    })
    #        _setabi = eosapi.pack_args('eosio', 'setabi', {'account':account, 'abi':abi.hex()})
    _setabi = eosapi.pack_setabi(abi_file, account)

    old_hash = eosapi.get_code_hash(account)
    print(old_hash, code_hash)
    if code_hash != old_hash:
        setcode = ['eosio', 'setcode', _setcode, {account: 'active'}]
        actions.append(setcode)

    setabi = ['eosio', 'setabi', _setabi, {account: 'active'}]
    actions.append(setabi)
    rr, cost = eosapi.push_actions(actions)
    assert_ret(rr)
Beispiel #7
0
def ca(account='aabb111'):
    actions = []
    newaccount = {
        'creator': 'eosio',
        'name': account,
        'owner': {
            'threshold': 1,
            'keys': [{
                'key': initeos.key1,
                'weight': 1
            }],
            'accounts': [],
            'waits': []
        },
        'active': {
            'threshold': 1,
            'keys': [{
                'key': initeos.key2,
                'weight': 1
            }],
            'accounts': [],
            'waits': []
        }
    }

    _newaccount = eosapi.pack_args('eosio', 'newaccount', newaccount)
    act = ['eosio', 'newaccount', {'eosio': 'active'}, _newaccount]
    actions.append(act)

    args = {'payer': 'eosio', 'receiver': account, 'bytes': 819200000}
    args = eosapi.pack_args('eosio', 'buyrambytes', args)
    act = ['eosio', 'buyrambytes', {'eosio': 'active'}, args]
    actions.append(act)

    args = {
        'from': 'eosio',
        'receiver': account,
        'stake_net_quantity': '3000.0050 EOS',
        'stake_cpu_quantity': '3000.0050 EOS',
        'transfer': 1
    }
    args = eosapi.pack_args('eosio', 'delegatebw', args)
    act = ['eosio', 'delegatebw', args, {'eosio': 'active'}]
    actions.append(act)
    rr, cost = eosapi.push_actions(actions)
    assert_ret(rr)
Beispiel #8
0
def t():
    if eosapi.get_balance('lab') <= 0:
        eosapi.transfer('eosio', 'lab', 100)
    msg = {'bidder': 'lab', 'bid': "1.3000 EOS"}
    msg = eosapi.pack_args('eosio', 'bidjit', msg)
    act = ['eosio', 'bidjit', msg, {'lab': 'active'}]

    rr, cost = eosapi.push_actions([act])
    assert_ret(rr)
Beispiel #9
0
def t4():
    accounts = gen_names(ACCOUNT_COUNT)
    actions = []
    for account in accounts:
        print('++++++boost account', account)
        msg = eosapi.pack_args('eosio', 'cancelboost', {'account': account})
        act = ['eosio', 'cancelboost', msg, {'eosio': 'active'}]
        actions.append(act)
    rr, cost = eosapi.push_actions(actions)
    assert_ret(rr)
Beispiel #10
0
def u():
    print('upgrading...')
    upgrade_file = os.path.join(os.path.dirname(__file__), 'upgrade.py')
    with open(upgrade_file) as f:
        script = f.read()
    args = {'version': 111, 'script': script}
    args = eosapi.pack_args('eosio', 'upgrade', args)
    act = ['eosio', 'upgrade', {'eosio': 'active'}, args]
    rr, cost = eosapi.push_actions([act])
    assert_ret(rr)
Beispiel #11
0
def test3(count=200):
    transactions = []
    for i in range(count):
        data =generate_call_params('testSetValue', (i,))
        args = {'from':'eosio', 'to':'evm', 'amount':0, 'data':data}
        args = eosapi.pack_args('evm', 'transfer', args)
        action = ['evm', 'transfer', args, {'eosio':'active'}]
        transactions.append([action,])
    ret, cost = eosapi.push_transactions(transactions)
    assert ret
    print('total cost time:%.3f s, cost per action: %.3f ms, actions per second: %.3f'%(cost/1e6, cost/count/1000, 1*1e6/(cost/count)))
Beispiel #12
0
def buyrambytes():
    accounts = gen_names(ACCOUNT_COUNT)
    actions = []
    for account in accounts:
        print('buy ram in bytes', account)
        args = {'payer': 'eosio', 'receiver': account, 'bytes': 1000000}
        args = eosapi.pack_args('eosio', 'buyrambytes', args)
        act = ['eosio', 'buyrambytes', args, {'eosio': 'active'}]
        actions.append(act)
    rr, cost = eosapi.push_actions(actions)
    assert_ret(rr)
Beispiel #13
0
def create_system_accounts():
    systemAccounts = [
        'eosio.token',
        'eosio.bpay',
        'eosio.msig',
        'eosio.names',
        'eosio.ram',
        'eosio.ramfee',
        'eosio.jit',
        'eosio.jitfee',
        'eosio.saving',
        'eosio.stake',
        'eosio.token',
        'eosio.vpay',
    ]
    newaccount = {
        'creator': 'eosio',
        'name': '',
        'owner': {
            'threshold': 1,
            'keys': [{
                'key': key1,
                'weight': 1
            }],
            'accounts': [],
            'waits': []
        },
        'active': {
            'threshold': 1,
            'keys': [{
                'key': key2,
                'weight': 1
            }],
            'accounts': [],
            'waits': []
        }
    }

    for account in systemAccounts:
        if not eosapi.get_account(account):
            actions = []
            print('+++++++++create account', account)
            newaccount['name'] = account
            _newaccount = eosapi.pack_args('eosio', 'newaccount', newaccount)
            act = ['eosio', 'newaccount', _newaccount, {'eosio': 'active'}]
            actions.append(act)
            rr, cost = eosapi.push_actions(actions)
            assert_ret(rr)
Beispiel #14
0
def deploy(account, bin):

    actions = []
    _src_dir = os.path.dirname(__file__)
    abi_file = os.path.join(_src_dir, 'evm.abi')
    setabi = eosapi.pack_setabi(abi_file, eosapi.N(account))
    act = ['eosio', 'setabi', setabi, {account:'active'}]
    actions.append(act)

    args = eosapi.pack_args("eosio", 'setcode', {'account':account,'vmtype':2, 'vmversion':0, 'code':bin})
    act = ['eosio', 'setcode', args, {account:'active'}]
    actions.append(act)

    r, cost = eosapi.push_actions(actions)
    print(r['except'])
    print(r['elapsed'])
Beispiel #15
0
def ttt(count=200):
    actions = []
    for i in range(count):
        args = {
            "from": 'eosio',
            "to": 'eosio.ram',
            "quantity": '%.4f EOS' % (0.01, ),
            "memo": str(i)
        }
        args = eosapi.pack_args('eosio.token', 'transfer', args)
        action = ['eosio.token', 'transfer', args, {'eosio': 'active'}]
        actions.append([action])

    ret, cost = eosapi.push_transactions(actions)
    print(
        'total cost time:%.3f s, cost per action: %.3f ms, transaction per second: %.3f'
        % (cost / 1e6, cost / count / 1000, 1 * 1e6 / (cost / count)))
Beispiel #16
0
def t2():
    contracts_path = os.path.join(os.getcwd(), '..', 'contracts')
    sys.path.append(os.getcwd())
    account = 'eosio'
    path = 'eosio.system'
    accounts = gen_names(ACCOUNT_COUNT)

    _path = os.path.join(contracts_path, path, path)
    wast = _path + '.wast'
    abi_file = _path + '.abi'

    with open(wast, 'rb') as f:
        wasm = eosapi.wast2wasm(f.read())
    code_hash = eosapi.sha256(wasm)
    with open(abi_file, 'rb') as f:
        abi = f.read()

    for account in accounts:
        _create_account(account)
        continue
        if not eosapi.get_account(account):
            _create_account(account)

    for account in accounts:
        print('+++++++++code update', account)
        actions = []
        _setcode = eosapi.pack_args('eosio', 'setcode', {
            'account': account,
            'vmtype': 0,
            'vmversion': 0,
            'code': wasm.hex()
        })
        #        _setabi = eosapi.pack_args('eosio', 'setabi', {'account':account, 'abi':abi.hex()})
        _setabi = pack_setabi(abi_file, account)

        old_hash = eosapi.get_code_hash(account)
        print(old_hash, code_hash)
        if code_hash != old_hash:
            setcode = ['eosio', 'setcode', _setcode, {account: 'active'}]
            actions.append(setcode)

        setabi = ['eosio', 'setabi', _setabi, {account: 'active'}]
        actions.append(setabi)
        rr, cost = eosapi.push_actions(actions)
        assert_ret(rr)
Beispiel #17
0
def test3(count=100):
    actions = []

    for i in range(count):
        msg = {
            "from": "eosio",
            "to": "eosio.token",
            "quantity": "0.0001 EOS",
            "memo": str(i)
        }
        msg = eosapi.pack_args('eosio.token', 'transfer', msg)
        act = [
            N('eosio.token'),
            N('transfer'), [[N('eosio'), N('active')]], msg
        ]
        actions.append([act])
    r, cost = eosapi.push_transactions(actions, True)
    print('total cost time:%.3f s, cost per TS: %.3f ms, TS per second: %.3f' %
          (cost / 1e6, cost / count / 1000, 1 * 1e6 / (cost / count)))