def test_data_feeds(): k, v, k2, v2 = accounts() scode3 = ''' if !contract.storage[1000]: contract.storage[1000] = 1 contract.storage[1001] = msg.sender return(0) elif msg.sender == contract.storage[1001] and msg.datasize == 2: contract.storage[msg.data[0]] = msg.data[1] return(1) else: return(contract.storage[msg.data[0]]) ''' code3 = serpent.compile(scode3) # print("AST", serpent.rewrite(serpent.parse(scode3))) # print("Assembly", serpent.compile_to_assembly(scode3)) blk = b.genesis({v: 10**18, v2: 10**18}) tx10 = t.contract(0, gasprice, startgas, 0, code3).sign(k) s, addr = pb.apply_tx(blk, tx10) tx11 = t.Transaction(1, gasprice, startgas, addr, 0, '').sign(k) s, o = pb.apply_tx(blk, tx11) tx12 = t.Transaction(2, gasprice, startgas, addr, 0, serpent.encode_datalist([500])).sign(k) s, o = pb.apply_tx(blk, tx12) assert serpent.decode_datalist(o) == [0] tx13 = t.Transaction(3, gasprice, startgas, addr, 0, serpent.encode_datalist([500, 726])).sign(k) s, o = pb.apply_tx(blk, tx13) assert serpent.decode_datalist(o) == [1] tx14 = t.Transaction(4, gasprice, startgas, addr, 0, serpent.encode_datalist([500])).sign(k) s, o = pb.apply_tx(blk, tx14) assert serpent.decode_datalist(o) == [726] return blk, addr
def test_data_feeds(): k, v, k2, v2 = accounts() scode3 = ''' if !contract.storage[1000]: contract.storage[1000] = 1 contract.storage[1001] = msg.sender return(0) elif msg.sender == contract.storage[1001] and msg.datasize == 2: contract.storage[msg.data[0]] = msg.data[1] return(1) else: return(contract.storage[msg.data[0]]) ''' code3 = serpent.compile(scode3) logger.debug("AST", serpent.rewrite(serpent.parse(scode3))) blk = b.genesis({v: 10 ** 18, v2: 10 ** 18}) tx10 = t.contract(0, gasprice, startgas, 0, code3).sign(k) s, addr = pb.apply_transaction(blk, tx10) tx11 = t.Transaction(1, gasprice, startgas, addr, 0, '').sign(k) s, o = pb.apply_transaction(blk, tx11) tx12 = t.Transaction(2, gasprice, startgas, addr, 0, serpent.encode_datalist([500])).sign(k) s, o = pb.apply_transaction(blk, tx12) assert serpent.decode_datalist(o) == [0] tx13 = t.Transaction(3, gasprice, startgas, addr, 0, serpent.encode_datalist([500, 726])).sign(k) s, o = pb.apply_transaction(blk, tx13) assert serpent.decode_datalist(o) == [1] tx14 = t.Transaction(4, gasprice, startgas, addr, 0, serpent.encode_datalist([500])).sign(k) s, o = pb.apply_transaction(blk, tx14) assert serpent.decode_datalist(o) == [726] return blk, addr
def test_namecoin(): k, v, k2, v2 = accounts() blk = b.genesis({v: u.denoms.ether * 1}) code1 = serpent.compile(namecoin_code) tx1 = t.contract(0, gasprice, startgas, 0, code1).sign(k) s, addr = pb.apply_transaction(blk, tx1) snapshot = blk.snapshot() # tx2 tx2 = t.Transaction(1, gasprice, startgas, addr, 0, serpent.encode_datalist(['george', 45])) tx2.sign(k) s, o = pb.apply_transaction(blk, tx2) assert serpent.decode_datalist(o) == [1] # tx3 tx3 = t.Transaction(2, gasprice, startgas, addr, 0, serpent.encode_datalist(['george', 20])).sign(k) s, o = pb.apply_transaction(blk, tx3) assert serpent.decode_datalist(o) == [0] # tx4 tx4 = t.Transaction(3, gasprice, startgas, addr, 0, serpent.encode_datalist(['harry', 60])).sign(k) s, o = pb.apply_transaction(blk, tx4) assert serpent.decode_datalist(o) == [1] blk.revert(snapshot) assert blk.to_dict() assert blk.to_dict()['state'][addr]['code']
def load_contract(self, frm, code, endowment=0, gas=STARTGAS): _tx = transactions.contract(nonce=self.nonce[frm], gasprice=self.GASPRICE, startgas=gas, endowment=endowment, code=code).sign(frm.key) result, contract = processblock.apply_transaction(self.genesis, _tx) assert result self.nonce[frm] += 1 return contract
def step_impl(context): ''' serpent: 'return(sha3(msg.data[0]))' assembly: ['$begincode_0.endcode_0', 'DUP', 'MSIZE', 'SWAP', 'MSIZE', '$begincode_0', 'CALLDATACOPY', 'RETURN', '~begincode_0', '#CODE_BEGIN', 32, 'MSIZE', 0L, 'CALLDATALOAD', 'MSIZE', 'MSTORE', 'SHA3', 'MSIZE', 'SWAP', 'MSIZE', 'MSTORE', 32, 'SWAP', 'RETURN', '#CODE_END', '~endcode_0'] byte code: 6011515b525b600a37f260205b6000355b54205b525b54602052f2 ''' code = '6011515b525b600a37f260205b6000355b54205b525b54602052f2'.decode('hex') tx_contract = transactions.contract(0,10,10**30, 10**30, code).sign(context.key) success, context.contract = processblock.apply_transaction(context.gen, tx_contract) assert(success)
def __init__(self, root_user): self.user = root_user self.code = serpent.compile(open('./crowdfund.se').read()) tx = transactions.contract(NonceSingleton.inc(root_user), Message.DEFAULT_GASPRICE, Message.DEFAULT_STARTGAS, 0, self.code).sign(root_user.private_key) print "Made crowdfund tx: {}".format(tx) self.contract = self._wrap_contract_response( processblock.apply_transaction(root_user.genesis, tx))
def step_impl(context): ''' serpent: 'return(sha3(msg.data[0]))' assembly: ['$begincode_0.endcode_0', 'DUP', 'MSIZE', 'SWAP', 'MSIZE', '$begincode_0', 'CALLDATACOPY', 'RETURN', '~begincode_0', '#CODE_BEGIN', 32, 'MSIZE', 0L, 'CALLDATALOAD', 'MSIZE', 'MSTORE', 'SHA3', 'MSIZE', 'SWAP', 'MSIZE', 'MSTORE', 32, 'SWAP', 'RETURN', '#CODE_END', '~endcode_0'] byte code: 6011515b525b600a37f260205b6000355b54205b525b54602052f2 ''' code = '6011515b525b600a37f260205b6000355b54205b525b54602052f2'.decode( 'hex') tx_contract = transactions.contract(0, 10, 10**30, 10**30, code).sign(context.key) success, context.contract = processblock.apply_transaction( context.gen, tx_contract) assert (success)
def test_gas_deduction(): k, v, k2, v2 = accounts() blk = blocks.genesis({v: utils.denoms.ether * 1}) v_old_balance = blk.get_balance(v) assert blk.get_balance(blk.coinbase) == 0 gasprice = 1 startgas = 10000 code1 = serpent.compile(namecoin_code) tx1 = transactions.contract(0, gasprice, startgas, 0, code1).sign(k) success, addr = processblock.apply_transaction(blk, tx1) assert success assert blk.coinbase != v assert v_old_balance > blk.get_balance(v) assert v_old_balance == blk.get_balance(v) + blk.get_balance(blk.coinbase) intrinsic_gas_used = processblock.GTXCOST + \ processblock.GTXDATA * len(tx1.data) assert v_old_balance - blk.get_balance(v) >= intrinsic_gas_used * gasprice
def test_currency(): k, v, k2, v2 = accounts() scode2 = ''' if !contract.storage[1000]: contract.storage[1000] = 1 contract.storage[0x%s] = 1000 return(1) elif msg.datasize == 1: addr = msg.data[0] return(contract.storage[addr]) else: from = msg.sender fromvalue = contract.storage[from] to = msg.data[0] value = msg.data[1] if fromvalue >= value: contract.storage[from] = fromvalue - value contract.storage[to] = contract.storage[to] + value return(1) else: return(0) ''' % v code2 = serpent.compile(scode2) blk = b.genesis({v: 10 ** 18}) tx4 = t.contract(0, gasprice, startgas, 0, code2).sign(k) s, addr = pb.apply_transaction(blk, tx4) tx5 = t.Transaction(1, gasprice, startgas, addr, 0, '').sign(k) s, o = pb.apply_transaction(blk, tx5) assert serpent.decode_datalist(o) == [1] tx6 = t.Transaction(2, gasprice, startgas, addr, 0, serpent.encode_datalist([v2, 200])).sign(k) s, o = pb.apply_transaction(blk, tx6) assert serpent.decode_datalist(o) == [1] tx7 = t.Transaction(3, gasprice, startgas, addr, 0, serpent.encode_datalist([v2, 900])).sign(k) s, o = pb.apply_transaction(blk, tx7) assert serpent.decode_datalist(o) == [0] tx8 = t.Transaction(4, gasprice, startgas, addr, 0, serpent.encode_datalist([v])).sign(k) s, o = pb.apply_transaction(blk, tx8) assert serpent.decode_datalist(o) == [800] tx9 = t.Transaction(5, gasprice, startgas, addr, 0, serpent.encode_datalist([v2])).sign(k) s, o = pb.apply_transaction(blk, tx9) assert serpent.decode_datalist(o) == [200]
def test_namecoin(): k, v, k2, v2 = accounts() blk = b.genesis({v: u.denoms.ether * 1}) scode1 = ''' if !contract.storage[msg.data[0]]: contract.storage[msg.data[0]] = msg.data[1] return(1) else: return(0) ''' code1 = serpent.compile(scode1) tx1 = t.contract(0, gasprice, startgas, 0, code1).sign(k) s, addr = pb.apply_tx(blk, tx1) snapshot = blk.snapshot() tx2 = t.Transaction(1, gasprice, startgas, addr, 0, serpent.encode_datalist(['george', 45])) tx2.sign(k) s, o = pb.apply_tx(blk, tx2) assert serpent.decode_datalist(o) == [1] tx3 = t.Transaction(2, gasprice, startgas, addr, 0, serpent.encode_datalist(['george', 20])).sign(k) s, o = pb.apply_tx(blk, tx3) assert serpent.decode_datalist(o) == [0] tx4 = t.Transaction(3, gasprice, startgas, addr, 0, serpent.encode_datalist(['harry', 60])).sign(k) s, o = pb.apply_tx(blk, tx4) assert serpent.decode_datalist(o) == [1]
def test_hedge(): k, v, k2, v2 = accounts() blk, addr = test_data_feeds() scode4 = ''' if !contract.storage[1000]: contract.storage[1000] = msg.sender contract.storage[1002] = msg.value contract.storage[1003] = msg.data[0] return(1) elif !contract.storage[1001]: ethvalue = contract.storage[1002] if msg.value >= ethvalue: contract.storage[1001] = msg.sender othervalue = ethvalue * msg(0x%s,0,tx.gas-100,[contract.storage[1003]],1) contract.storage[1004] = othervalue contract.storage[1005] = block.timestamp + 86400 return([2,othervalue],2) else: othervalue = contract.storage[1004] ethvalue = othervalue / msg(0x%s,0,tx.gas-100,[contract.storage[1003]],1) if ethvalue >= contract.balance: send(contract.storage[1000],contract.balance,tx.gas-100) return(3) elif block.timestamp > contract.storage[1005]: send(contract.storage[1001],contract.balance - ethvalue,tx.gas-100) send(contract.storage[1000],ethvalue,tx.gas-100) return(4) else: return(5) ''' % (addr, addr) code4 = serpent.compile(scode4) # print("AST", serpent.rewrite(serpent.parse(scode4))) # print("Assembly", serpent.compile_to_assembly(scode4)) # important: no new genesis block tx15 = t.contract(5, gasprice, startgas, 0, code4).sign(k) s, addr2 = pb.apply_tx(blk, tx15) tx16 = t.Transaction(6, gasprice, startgas, addr2, 10**17, serpent.encode_datalist([500])).sign(k) s, o = pb.apply_tx(blk, tx16) assert serpent.decode_datalist(o) == [1] tx17 = t.Transaction(0, gasprice, startgas, addr2, 10**17, serpent.encode_datalist([500])).sign(k2) s, o = pb.apply_tx(blk, tx17) assert serpent.decode_datalist(o) == [2, 72600000000000000000L] snapshot = blk.snapshot() tx18 = t.Transaction(7, gasprice, startgas, addr2, 0, '').sign(k) s, o = pb.apply_tx(blk, tx18) assert serpent.decode_datalist(o) == [5] tx19 = t.Transaction(8, gasprice, startgas, addr, 0, serpent.encode_datalist([500, 300])).sign(k) s, o = pb.apply_tx(blk, tx19) assert serpent.decode_datalist(o) == [1] tx20 = t.Transaction(9, gasprice, startgas, addr2, 0, '').sign(k) s, o = pb.apply_tx(blk, tx20) assert serpent.decode_datalist(o) == [3] blk.revert(snapshot) blk.timestamp += 200000 tx21 = t.Transaction(7, gasprice, startgas, addr, 0, serpent.encode_datalist([500, 1452])).sign(k) s, o = pb.apply_tx(blk, tx21) assert serpent.decode_datalist(o) == [1] tx22 = t.Transaction(8, gasprice, 2000, addr2, 0, '').sign(k) s, o = pb.apply_tx(blk, tx22) assert serpent.decode_datalist(o) == [4]
addr = utils.privtoaddr(key) # get address from private key gen = blocks.genesis({addr: 10**60}) assembly = serpent.compile_to_assembly(open('tester.se').read()) print assembly code = serpent.assemble(assembly) print code msg_hash = utils.sha3('heres a message') v, r, s = bitcoin.ecdsa_raw_sign(msg_hash, key) pub = bitcoin.privkey_to_pubkey(key) verified = bitcoin.ecdsa_raw_verify(msg_hash, (v, r, s), pub) print verified tx_make_root = transactions.contract(0, 10, 10**30, 10**30, code).sign(key) success, root_contract = processblock.apply_tx(gen, tx_make_root) #tx_init_root = transactions.Transaction(1, 100, 10**40, root_contract, 0, serpent.encode_datalist([msg_hash, v, r, s])).sign(key) #tx_init_root = transactions.Transaction(1, 100, 10**40, root_contract, 0, serpent.encode_datalist(['hi', 'bye'])).sign(key) tx_init_root = transactions.Transaction( 1, 100, 10**40, root_contract, 0, serpent.encode_datalist([2, '139dcd5cc79e260272e05147c349ab5f2db3f102', 1])).sign(key) #tx_init_root = transactions.Transaction(1, 100, 10**40, root_contract, 0, serpent.encode_datalist([2, 1])).sign(key) print assembly success, ans = processblock.apply_tx(gen, tx_init_root) print ans data = serpent.decode_datalist(ans) print data print hex(data[0])
keys = {} for x in range(NUM_ACCOUNTS): key = utils.sha3(str(x+4)) addr = utils.privtoaddr(key) keys[addr] = key endowment = {root_addr: 10**18} for x in keys: endowment[x] = 10**18 genesis = blocks.genesis(endowment) tx1 = transactions.contract(0, 10**12, 100000, 0, root_code).sign(root_key) result, contract = processblock.apply_transaction(genesis, tx1) nonce=1 for address in keys: longitude = random.randint(1000, 110000) latitude = random.randint(1000, 110000) datalist = serpent.encode_datalist([0, longitude, latitude]) tx = transactions.Transaction(0, 10**12, 10000, contract,
keys = {} for x in range(NUM_ACCOUNTS): key = utils.sha3(str(x + 4)) addr = utils.privtoaddr(key) keys[addr] = key endowment = {root_addr: 10**18} for x in keys: endowment[x] = 10**18 genesis = blocks.genesis(endowment) tx1 = transactions.contract(0, 10**12, 100000, 0, root_code).sign(root_key) result, contract = processblock.apply_transaction(genesis, tx1) nonce = 1 for address in keys: longitude = random.randint(1000, 110000) latitude = random.randint(1000, 110000) datalist = serpent.encode_datalist([0, longitude, latitude]) tx = transactions.Transaction(0, 10**12, 10000, contract, 1000, datalist).sign(keys[address]) #nonce = nonce + 1
def test_hedge(): k, v, k2, v2 = accounts() blk, addr = test_data_feeds() scode4 = ''' if !contract.storage[1000]: contract.storage[1000] = msg.sender contract.storage[1002] = msg.value contract.storage[1003] = msg.data[0] return(1) elif !contract.storage[1001]: ethvalue = contract.storage[1002] if msg.value >= ethvalue: contract.storage[1001] = msg.sender othervalue = ethvalue * call(0x%s,[contract.storage[1003]],1) contract.storage[1004] = othervalue contract.storage[1005] = block.timestamp + 86400 return([2,othervalue],2) else: othervalue = contract.storage[1004] ethvalue = othervalue / call(0x%s,contract.storage[1003]) if ethvalue >= contract.balance: send(contract.storage[1000],contract.balance) return(3) elif block.timestamp > contract.storage[1005]: send(contract.storage[1001],contract.balance - ethvalue) send(contract.storage[1000],ethvalue) return(4) else: return(5) ''' % (addr, addr) code4 = serpent.compile(scode4) logger.debug("AST", serpent.rewrite(serpent.parse(scode4))) # important: no new genesis block tx15 = t.contract(5, gasprice, startgas, 0, code4).sign(k) s, addr2 = pb.apply_transaction(blk, tx15) tx16 = t.Transaction(6, gasprice, startgas, addr2, 10 ** 17, serpent.encode_datalist([500])).sign(k) s, o = pb.apply_transaction(blk, tx16) assert serpent.decode_datalist(o) == [1] tx17 = t.Transaction(0, gasprice, startgas, addr2, 10 ** 17, serpent.encode_datalist([500])).sign(k2) s, o = pb.apply_transaction(blk, tx17) assert serpent.decode_datalist(o) == [2, 72600000000000000000L] snapshot = blk.snapshot() tx18 = t.Transaction(7, gasprice, startgas, addr2, 0, '').sign(k) s, o = pb.apply_transaction(blk, tx18) assert serpent.decode_datalist(o) == [5] tx19 = t.Transaction(8, gasprice, startgas, addr, 0, serpent.encode_datalist([500, 300])).sign(k) s, o = pb.apply_transaction(blk, tx19) assert serpent.decode_datalist(o) == [1] tx20 = t.Transaction(9, gasprice, startgas, addr2, 0, '').sign(k) s, o = pb.apply_transaction(blk, tx20) assert serpent.decode_datalist(o) == [3] blk.revert(snapshot) blk.timestamp += 200000 tx21 = t.Transaction(7, gasprice, startgas, addr, 0, serpent.encode_datalist([500, 1452])).sign(k) s, o = pb.apply_transaction(blk, tx21) assert serpent.decode_datalist(o) == [1] tx22 = t.Transaction(8, gasprice, 2000, addr2, 0, '').sign(k) s, o = pb.apply_transaction(blk, tx22) assert serpent.decode_datalist(o) == [4]
nargs = pad32(1) d0 = pad32('hi') print nargs, d0 msg_hash = utils.sha3(nargs + d0) v, r, s = bitcoin.ecdsa_raw_sign(msg_hash, key) pubkey = bitcoin.privkey_to_pubkey(key) verified = bitcoin.ecdsa_raw_verify(msg_hash, (v, r, s), pubkey) gen = blocks.genesis({addr: 10**18}) print serpent.compile_to_assembly(open("DAOist frame.se").read()) DAOcode = serpent.compile(open("DAOist frame.se").read()) DAOcontract = transactions.contract(0, 1, 10**12, 100, DAOcode) DAOcontract.sign(key) success, contract_address = processblock.apply_tx(gen, DAOcontract) DCP = transactions.Transaction( 1, 10**12, 10000, contract_address, 0, serpent.encode_datalist([1, 1, v, r, s, 1, 'hi'])) DCP.sign(key) success, result = processblock.apply_tx(gen, DCP) print "success: ", success print serpent.decode_datalist(result)
assembly = serpent.compile_to_assembly(open('tester.se').read()) print assembly code = serpent.assemble(assembly) print code msg_hash = utils.sha3('heres a message') v, r, s = bitcoin.ecdsa_raw_sign(msg_hash, key) pub = bitcoin.privkey_to_pubkey(key) verified = bitcoin.ecdsa_raw_verify(msg_hash, (v, r, s), pub) print verified tx_make_root = transactions.contract(0,10,10**30, 10**30, code).sign(key) success, root_contract = processblock.apply_tx(gen, tx_make_root) #tx_init_root = transactions.Transaction(1, 100, 10**40, root_contract, 0, serpent.encode_datalist([msg_hash, v, r, s])).sign(key) #tx_init_root = transactions.Transaction(1, 100, 10**40, root_contract, 0, serpent.encode_datalist(['hi', 'bye'])).sign(key) tx_init_root = transactions.Transaction(1, 100, 10**40, root_contract, 0, serpent.encode_datalist([2, '139dcd5cc79e260272e05147c349ab5f2db3f102', 1])).sign(key) #tx_init_root = transactions.Transaction(1, 100, 10**40, root_contract, 0, serpent.encode_datalist([2, 1])).sign(key) print assembly success, ans = processblock.apply_tx(gen, tx_init_root) print ans data = serpent.decode_datalist(ans) print data print hex(data[0]) quit() print ans.encode('hex') data = serpent.decode_datalist(ans)
### From here is pasted together from earlier version of pyetherem import serpent from pyethereum import transactions, blocks, processblock, utils #processblock.print_debug = 1 from pyethereum import slogging slogging.set_level('eth.tx', "DEBUG") code = serpent.compile(namecoin_code) key = utils.sha3('cow') addr = utils.privtoaddr(key) genesis = blocks.genesis(new_db(), {addr: 10**18}) tx1 = transactions.contract(nonce=0, gasprice=10**12, startgas=10000, endowment=0, code=code).sign(key) result, contract = processblock.apply_transaction(genesis, tx1) print genesis.to_dict() tx2 = transactions.Transaction(nonce=1, gasprice=10**12, startgas=10000, to=contract, value=0, data=serpent.encode_abi(0, 1, 45)).sign(key) result, ans = processblock.apply_transaction(genesis, tx2) serpent.decode_datalist(ans) #print genesis.to_dict()
def new_config(data_dir=None): cfg = _get_default_config() if not data_dir: tempfile.mktemp() cfg.set('misc', 'data_dir', data_dir) return cfg ### From here is pasted together from earlier version of pyetherem import serpent from pyethereum import transactions, blocks, processblock, utils #processblock.print_debug = 1 from pyethereum import slogging slogging.set_level('eth.tx',"DEBUG") code = serpent.compile(namecoin_code) key = utils.sha3('cow') addr = utils.privtoaddr(key) genesis = blocks.genesis(new_db(), { addr: 10**18 }) tx1 = transactions.contract(nonce=0,gasprice=10**12,startgas=10000,endowment=0,code=code).sign(key) result, contract = processblock.apply_transaction(genesis,tx1) print genesis.to_dict() tx2 = transactions.Transaction(nonce=1,gasprice=10**12,startgas=10000,to=contract,value=0, data=serpent.encode_abi(0,1,45)).sign(key) result, ans = processblock.apply_transaction(genesis,tx2) serpent.decode_datalist(ans) #print genesis.to_dict()
print("Usage: %s [price] [recipient: transcation success: 2, transcation deny: 3] [sender: transcation success: 2, transcation deny: 3]" %sys.argv[0]) sys.exit(1) code = serpent.compile(escrow) sender_key = utils.sha3('sender') sender_addr = utils.privtoaddr(sender_key) recipient_key = utils.sha3('recipient') recipient_addr = utils.privtoaddr(recipient_key) host_key = utils.sha3('host') host_addr = utils.privtoaddr(host_key) #initialize the block genesis = blocks.genesis({sender_addr: 10**18, recipient_addr: 10**18, host_addr: 10**18}) #initialize the contract tx1 = transactions.contract(0, 10**12, 10000, 0, code).sign(host_key) result, contract = processblock.apply_transaction(genesis, tx1) #execute escrow transaction #nonce, gasprice, startgas, to, value, data price = int(sys.argv[1]) #user supplied price tx2 = transactions.Transaction(0, 10**12, 10000, contract, price, serpent.encode_datalist([1,recipient_addr])).sign(sender_key) result, ans = processblock.apply_transaction(genesis, tx2) tx3 = transactions.Transaction(0, 10**12, 10000, contract, 0, serpent.encode_datalist([int(sys.argv[2])])).sign(recipient_key) result, ans = processblock.apply_transaction(genesis, tx3) tx4 = transactions.Transaction(1, 10**12, 10000, contract, 0, serpent.encode_datalist([int(sys.argv[3])])).sign(sender_key) result, ans = processblock.apply_transaction(genesis, tx4) print('Service address: %s ' %str(hex(genesis.get_storage_data(contract, 0)))) print('Sender address: %s' %str(hex(genesis.get_storage_data(contract, 1)))) print('Reciever address: %s\n' %str(hex(genesis.get_storage_data(contract, 3))))
h = "%02x"%n l = len(h) return "0"*(32-l)+h nargs = pad32(1) d0 = pad32('hi') print nargs, d0 msg_hash = utils.sha3(nargs+d0) v, r, s = bitcoin.ecdsa_raw_sign(msg_hash, key) pubkey = bitcoin.privkey_to_pubkey(key) verified = bitcoin.ecdsa_raw_verify(msg_hash, (v,r,s), pubkey) gen = blocks.genesis({addr: 10**18}) print serpent.compile_to_assembly(open("DAOist frame.se").read()) DAOcode = serpent.compile(open("DAOist frame.se").read()) DAOcontract = transactions.contract(0, 1, 10**12, 100, DAOcode) DAOcontract.sign(key) success, contract_address = processblock.apply_tx(gen, DAOcontract) DCP = transactions.Transaction(1,10**12, 10000, contract_address, 0, serpent.encode_datalist([1,1,v,r,s,1,'hi'])) DCP.sign(key) success, result = processblock.apply_tx(gen, DCP) print "success: ", success print serpent.decode_datalist(result)