Esempio n. 1
0
    if type(arg) in (int, long):
        return 'i'
    if type(arg) == list:
        return 'a'
    else:
        return 's'


def safe_eval(thing):
    try:
        return eval(thing)
    except:
        return thing


if __name__ == '__main__':
    c = contracts[sys.argv[1]]
    func = sys.argv[2]
    args = map(safe_eval, sys.argv[3:])
    sig = reduce(lambda a, b: a + get_sym(b), args, '')
    data = abi_data(func, sig, args)

    rpc = GethRPC()
    coinbase = rpc.eth_coinbase()['result']
    result = rpc.eth_sendTransaction(sender=coinbase,
                                     gas=hex(3000000),
                                     to=c,
                                     data=data)
    rpc.eth_getTransactionByHash(result['result'])
    rpc.eth_call('pending', sender=coinbase, gas=hex(3000000), to=c, data=data)
Esempio n. 2
0
    'transferShares' : '0x78da82256f5775df22eee51096d27666772b592d',
}

def get_sym(arg):
    if type(arg) in (int, long):
        return 'i'
    if type(arg) == list:
        return 'a'
    else:
        return 's'

def safe_eval(thing):
    try:
        return eval(thing)
    except:
        return thing

if __name__ == '__main__':
    c = contracts[sys.argv[1]]
    func = sys.argv[2]
    args = map(safe_eval, sys.argv[3:])
    sig = reduce(lambda a, b: a+get_sym(b), args, '')
    data = abi_data(func, sig, args)

    rpc = GethRPC()
    coinbase = rpc.eth_coinbase()['result']
    result = rpc.eth_sendTransaction(
        sender=coinbase, gas=hex(3000000), to=c, data=data)
    rpc.eth_getTransactionByHash(result['result'])
    rpc.eth_call('pending', sender=coinbase, gas=hex(3000000), to=c, data=data)
Esempio n. 3
0
def get_sig(args):
    '''Creates the corresponding serpent signature for the given list of objects.'''
    return reduce(lambda a, b: a+get_sym(b), args, '')

def confirmed_send(**kwds):
    txhash = RPC.eth_sendTransaction(**kwds)['result']
    tries = 0
    while tries < MAXTRIES:
        time.sleep(BLOCKTIME)
        result = RPC.eth_getTransactionByHash(txhash)
        if result['result'] == None:
            return confirmed_send(**kwds)
        if result['result']['blockHash'] != None:
            break
        tries += 1
    return tries < MAXTRIES

if __name__ == '__main__':
    contract_name = sys.argv[1]
    contract_addr = json.loads(DB.Get(contract_name))['address']
    args = get_args()
    sig = get_sig(args)
    funcname = sys.argv[2]
    abi = abi_data(funcname, sig, args)
    if '--call' in sys.argv:
        RPC.eth_call(sender=COINBASE, to=contract_addr, data=abi, gas=GAS)
    if '--sendtx' in sys.argv:
        result = confirmed_send(sender=COINBASE, to=contract_addr, data=abi, gas=GAS)
        if not result:
            raise ValueError('transaction failed!')