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)
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'])
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)))
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'])
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)
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)
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)
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)
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)
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)
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)))
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)
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)
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'])
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)))
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)
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)))