Exemple #1
0
def t3(count=100, sign=True):
#    tracemalloc.start()
#    snapshot1 = tracemalloc.take_snapshot()
    wast = '../../build/contracts/eosio.token/eosio.token.wast'
    key_words = b"hello,world"
    r = eosapi.set_contract('bugs', wast, '../../build/contracts/eosio.token/eosio.token.abi', 0)

    msg = {"issuer":"eosio","maximum_supply":"1000000000.0000 EOS","can_freeze":0,"can_recall":0, "can_whitelist":0}
    r = eosapi.push_action('bugs', 'create', msg, {'bugs':'active'})

    r = eosapi.push_action('bugs','issue',{"to":"bugs","quantity":"1000000.0000 EOS","memo":""},{'eosio':'active'})

    _src_dir = os.path.dirname(__file__)
    for i in range(count):
        actions = []
        #break the wasm cache
        key_words = b"hello,world"
        wast_file = os.path.join(_src_dir, '/Users/newworld/dev/pyeos/build/contracts/eosio.token/eosio.token.wast')
        with open(wast_file, 'rb') as f:
            data = f.read()
            replace_str = b"%d"%(int(time.time()),)
            replace_str.zfill(len(key_words))
            data = data.replace(key_words, replace_str)
            wasm = eosapi.wast2wasm(data)
            raw_code = eosapi.pack_bytes(wasm)

        code = struct.pack('QBB', N('bugs'), 0, 0)
        code += raw_code
        
        act = [N('eosio'), N('setcode'), [[N('bugs'), N('active')]], code]
        setabi = eosapi.pack_setabi('../../build/contracts/eosio.token/eosio.token.abi', eosapi.N('bugs'))
        setabi_action = [N('eosio'), N('setabi'), [[N('bugs'), N('active')]], setabi]
        actions.append([act, setabi_action])


        code = struct.pack('QBB', N('eosio.token'), 0, 0)
        code += raw_code
        act = [N('eosio'), N('setcode'), [[N('eosio.token'), N('active')]], code]
        setabi = eosapi.pack_setabi('../../build/contracts/eosio.token/eosio.token.abi', eosapi.N('eosio.token'))
        setabi_action = [N('eosio'), N('setabi'), [[N('eosio.token'), N('active')]], setabi]
        actions.append([act, setabi_action])

        print('&'*50)
        cost_time = eosapi.push_transactions2(actions, sign)
        
        print('*'*50)
        msg = {"from":"bugs", "to":"eosio", "quantity":"0.0001 EOS", "memo":"%d"%(i,)}
        r = eosapi.push_action('bugs', 'transfer', msg, {'bugs':'active'})

        print('='*20, 'cached module should be decreased by 1 as eosio.token load the same code as bugs')
        msg = {"from":"bugs", "to":"eosio", "quantity":"0.0001 EOS", "memo":"%d"%(i,)}
        r = eosapi.push_action('eosio.token', 'transfer', msg, {'bugs':'active'})

        if i % 50 == 0:
            cost_time = eosapi.produce_block()
    eosapi.produce_block()
Exemple #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'])
Exemple #3
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'])
Exemple #4
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)
Exemple #5
0
def setabi():
    _src_dir = os.path.dirname(__file__)

    setabi = eosapi.pack_setabi(os.path.join(_src_dir, 'lockunlock.abi'), eosapi.N('lockunlock'))
    action = [N('eosio'), N('setabi'), [[N('lockunlock'), N('active')]], setabi]

    cost_time = eosapi.push_transactions2([[action]], sign)
    eosapi.produce_block()
Exemple #6
0
def publish():
    contracts_path = os.path.join(os.getcwd(), '..', 'contracts')
    _path = os.path.join(contracts_path, 'eosio.system', 'eosio.system')
    abi = _path + '.abi'

    setabi = eosapi.pack_setabi(abi, eosapi.N('eosio'))
    assert setabi

    setabi_action = [N('eosio'), N('setabi'), [[N('eosio'), N('active')]], setabi]
    r = eosapi.push_transactions([[setabi_action]])
    assert r[0]
Exemple #7
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'])
Exemple #8
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)
Exemple #9
0
def gen_setabi_action():
    _src_dir = os.path.dirname(__file__)

    setabi = eosapi.pack_setabi(os.path.join(_src_dir, 'actiontest.abi'),
                                eosapi.N('actiontest'))
    return [N('eosio'), N('setabi'), [[N('actiontest'), N('active')]], setabi]
Exemple #10
0
def t1():
    abi_file = '../contracts/eosio.token/eosio.token.abi'
    setabi = eosapi.pack_setabi(abi_file, 'eosio.token')
    eosapi.push_action('eosio', 'setabi', setabi, {'eosio.token': 'active'})