def main(): global BLOCKTIME global USE_EXTERNS global RPC global COINBASE global FROM_DB start = 0 verbose = False debug = False for arg in sys.argv: if arg.startswith("--BLOCKTIME="): BLOCKTIME = float(arg.split("=")[1]) if arg.startswith("--contract="): FROM_DB = True start = arg.split("=")[1] if arg == "--use-externs": USE_EXTERNS = True if arg == "--verbose": verbose = True if arg == "--debug": debug = True deps, nodes = get_compile_order() if type(start) == str: deps = optimize_deps(deps, nodes, start) start = 0 RPC = RPC_Client(default="GETH", verbose=verbose, debug=debug) COINBASE = RPC.eth_coinbase()["result"] for i in range(start, len(deps)): fullname = get_fullname(deps[i]) print "compiling", fullname compile(fullname) if not FROM_DB: sys.stdout.write("dumping new addresses to DB") sys.stdout.flush() for k, v in INFO.items(): DB.Put(k, json.dumps(v)) sys.stdout.write(".") sys.stdout.flush() print return 0
def test_compile_imports(): make_tree(test_code) node = start_test_node() rpc = RPC_Client((test_node.HOST, test_node.PORT), 0) coinbase = rpc.eth_coinbase()['result'] gas_price = int(rpc.eth_gasPrice()['result'], 16) balance = 0 while balance/gas_price < int(MAXGAS, 16): balance = int(rpc.eth_getBalance(coinbase)['result'], 16) time.sleep(1) subprocess.check_call(['python', 'load_contracts.py', '-p', '9696', '-b', '2', '-d', 'test_load_contracts.json', '-s', 'foobar']) db = json.load(open("test_load_contracts.json")) func1 = db['foo']['fullsig'][0]['name'] prefix = sha3.sha3_256(func1.encode('ascii')).hexdigest()[:8] arg = hex(1 << 65)[2:].strip('L').rjust(64, '0') r1 = rpc.eth_call(sender=coinbase, to=db['foo']['address'], data=('0x' + prefix + arg), gas=hex(3*10**6))['result'] r1 = int(r1, 16) if r1 > 2**255: r1 -= 2**256 r2 = bar(1 << 65) if r1 == r2: print 'TEST PASSED' else: print 'TEST FAILED: <r1 {}> <r2 {}>'.format(r1, r2) rm_tree(test_code) node.send_signal(signal.SIGINT) node.wait()
#!/usr/bin/python '''A script for using interacting with a local Ethereum node using JSON RPC.''' from pyrpctools import RPC_Client import sys import re GETHRPC = RPC_Client(default='GETH', debug=True) COINBASE = GETHRPC.eth_coinbase()['result'] kwd_p = re.compile(r'--(?P<key>\D{2,})=(?P<val>.*)') def parse_args(): args = [] kwds = {} for arg in sys.argv[2:]: m = kwd_p.match(arg) if m: d = m.groupdict() if d['val'] == 'COINBASE': d['val'] = COINBASE kwds[d['key']] = d['val'] else: args.append(arg) return args, kwds if __name__ == '__main__': rpc_cmd = sys.argv[1] args, kwds = parse_args() result = getattr(GETHRPC, rpc_cmd)(*args, **kwds)
#!/usr/bin/python '''A script for using interacting with a local Ethereum node using JSON RPC.''' from pyrpctools import RPC_Client import sys import re GETHRPC = RPC_Client(default='GETH', debug=True) COINBASE = GETHRPC.eth_coinbase()['result'] kwd_p = re.compile(r'--(?P<key>\D{2,})=(?P<val>.*)') def parse_args(): args = [] kwds = {} for arg in sys.argv[2:]: m = kwd_p.match(arg) if m: d = m.groupdict() if d['val'] == 'COINBASE': d['val'] = COINBASE kwds[d['key']] = d['val'] else: args.append(arg) return args, kwds if __name__ == '__main__': rpc_cmd = sys.argv[1] args, kwds = parse_args() result = getattr(GETHRPC, rpc_cmd)(*args, **kwds)