def tt(count=500): actions = [] for i in range(count): args = { "from": 'eosio', "to": 'eosio.ram', "quantity": '%.4f EOS' % (0.01, ), "memo": 'hello' } action = ['eosio.token', 'transfer', args, {'eosio': 'active'}] actions.append(action) ret, cost = eosapi.push_actions(actions) 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 test2(count=100): import time import json actions = [] for i in range(count): action = ['lab', 'sayhello', str(i), {'lab': 'active'}] actions.append(action) ret, cost = eosapi.push_actions(actions) assert ret print(ret['elapsed']) print(cost) 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 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 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 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 test2(count=100): actions = [] for i in range(count): action = ['greeter', 'setgreeting', str(i), {'greeter':'active'}] actions.append(action) ret, cost = eosapi.push_actions(actions, True) 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))) eosapi.produce_block() code = eosapi.N('greeter') id = eosapi.hash64('greeting', 0) greeting = 0 itr = db.find_i64(code, code, code, id) if itr >= 0: greeting = db.get_i64(itr) print(greeting[1:])
def test1(count=100): actions = [] for i in range(count): action = [ 'eosio.token', 'issue', { "to": "eosio", "quantity": "1.0000 EOS", "memo": str(i) }, { 'eosio': 'active' } ] actions.append(action) ret, cost = eosapi.push_actions(actions) assert ret and not ret['except'] 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 _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 test3(count, d=0): keys = list(wallet.list_keys().keys()) for i in range(0, count): currency = 'curre' + n2s(i) # currency = 'currency' key1 = keys[i] key2 = keys[10000 + i] if not eosapi.get_account(currency): r = eosapi.create_account('eosio', currency, key1, key2) assert r deploy_contract(currency, d) eosapi.produce_block() time.sleep(0.5) actions = [] for i in range(count): currency = 'curre' + n2s(i) action = [ currency, 'issue', { 'currency': 'active' }, { "to": currency, "quantity": "1000.0000 CUD", "memo": "" } ] actions.append(action) ret, cost = eosapi.push_actions(actions, True) assert ret eosapi.produce_block() cost = ret['cost_time'] 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 test2(count=500, msg='wasm'): import time import json code = N('counter') counter_id = N('counter') counter_begin = 0 itr = db.find_i64(code, code, code, counter_id) if itr >= 0: counter_begin = db.get_i64(itr) counter_begin = int.from_bytes(counter_begin, 'little') print('counter begin: ', counter_begin) actions = [] for i in range(count): action = [ 'counter', 'count', msg + ':' + str(i), { 'counter': 'active' } ] actions.append(action) ret, cost = eosapi.push_actions(actions) 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))) counter_end = 0 itr = db.find_i64(code, code, code, counter_id) if itr >= 0: counter_end = db.get_i64(itr) counter_end = int.from_bytes(counter_end, 'little') print('counter end: ', counter_end) itr = db.find_i64(code, code, code, N('msg')) if itr >= 0: msg = db.get_i64(itr) print('msg', msg)
def test2(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:] args = {'from':'eosio', 'to':'evm', 'amount':10, 'data':data} actions = [] for i in range(count): action = ['evm', 'transfer', args, {'eosio':'active'}] actions.append(action) ret, cost = eosapi.push_actions(actions) cost = ret['elapsed'] print(ret['except']) assert ret and not ret['except'] 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 _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 test2(count=100): actions = [] for i in range(count): # action = ['eosio.token', 'issue', {'eosio':'active'}, {"to":"eosio","quantity":"0.0100 EOS","memo":""}] # actions.append(action) # msg = {"issuer":"eosio","maximum_supply":"10000000000.0000 EOS"} # action = ['eosio.token', 'create', {'eosio.token':'active'}, msg] msg = { "from": "eosio", "to": "hello", "quantity": "0.0001 EOS", "memo": "m" } action = ['eosio.token', 'transfer', msg, {'eosio': 'active'}] actions.append(action) ret, cost = eosapi.push_actions(actions, True) 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 test2(count, wasm=False): import time import json actions = [] for i in range(count): action = [ 'currency', 'issue', { 'vote': 'active' }, { "to": "currency", "quantity": "1000.0000 CUR", "memo": "" } ] actions.append(action) ret, cost = eosapi.push_actions(actions, True) assert ret eosapi.produce_block() print( 'total cost time:%.3f s, cost per action: %.3f ms, actions per second: %.3f' % (cost / 1e6, cost / count / 1000, 1 * 1e6 / (cost / count)))