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()
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 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 _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 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()
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]
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 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 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]
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'})