Exemple #1
0
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()
Exemple #3
0
#!/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)
Exemple #4
0
#!/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)