def test_run_all_tx(self): self.rpc.driver.flush() with open('../../contractdb/contracts/submission.s.py') as f: contract = f.read() self.rpc.driver.set_contract( name='submission', code=contract, ) contract = ''' owner = Variable() @construct def seed(): owner.set(ctx.caller) @export def get_owner(): return owner.get() ''' # nakey = nacl.signing.SigningKey.generate() # # pk = nakey.verify_key.encode().hex() nakey = ecdsa.SigningKey.generate(curve=ecdsa.NIST256p) pk = nakey.get_verifying_key().to_string().hex() tx = make_tx(nakey, contract='submission', func='submit_contract', arguments={ 'code': contract, 'name': 'stu_bucks' }) tx_2 = make_tx(nakey, contract='stu_bucks', func='get_owner', arguments={}) result = self.rpc.run_all([tx, tx_2]) self.assertEqual(result[0]['input'], tx) self.assertEqual(result[1]['input'], tx_2) owner = result[0]['output']['updates'].get('stu_bucks.owner') accessed_owner = result[1]['output']['result'] self.assertEqual(owner, json.dumps(pk)) self.assertEqual(accessed_owner, pk)
def submit(name, code_path): """ : Submit new contract """ cmd = ChainCmds() nakey = ecdsa.SigningKey.generate(curve=ecdsa.NIST256p) pk = nakey.get_verifying_key().to_string().hex() code = "" with open(code_path, 'r') as f: code = f.read() tx = make_tx(nakey, contract='submission', func='submit_contract', arguments={ 'code': code, 'name': name }) command = {'command': 'run', 'arguments': {'transaction': tx}} click.echo("Query Command ->") click.echo(command) res = cmd.server_call(command) click.echo("Result :") click.echo(res)
def test_run_all_stores_block_and_equals_retrieved_block(self): self.rpc.driver.flush() with open('../../contractdb/contracts/submission.s.py') as f: contract = f.read() self.rpc.driver.set_contract(name='submission', code=contract) contract = ''' owner = Variable() @construct def seed(): owner.set(ctx.caller) @export def get_owner(): return owner.get() ''' # nakey = nacl.signing.SigningKey.generate() nakey = ecdsa.SigningKey.generate(curve=ecdsa.NIST256p) pk = nakey.get_verifying_key().to_string().hex() tx = make_tx(nakey, contract='submission', func='submit_contract', arguments={ 'code': contract, 'name': 'stu_bucks' }) from copy import deepcopy self.rpc.run(tx) tx = make_tx(nakey, contract='stu_bucks', func='get_owner') txs = [deepcopy(tx) for _ in range(10)] block = self.rpc.run_all(txs) got_block = self.rpc.blocks.get_block_by_index( self.rpc.blocks.height()) self.assertDictEqual(block, got_block)
def test_make_tx(self): # nakey = nacl.signing.SigningKey.generate() # # pk = nakey.verify_key.encode().hex() nakey = ecdsa.SigningKey.generate(curve=ecdsa.NIST256p) pk = nakey.get_verifying_key().to_string().hex() tx = { 'sender': pk, 'signature': None, 'payload': { 'contract': 'submission', 'function': 'submit_contract', 'arguments': { 'code': 'test', 'name': 'stu_bucks' } } } message = encode(tx['payload']).encode() sig = nakey.sign_deterministic(message, hashfunc=hashlib.sha256).hex() tx['signature'] = sig made_tx = make_tx(nakey, contract='submission', func='submit_contract', arguments={ 'code': 'test', 'name': 'stu_bucks' }) self.assertEqual(made_tx, tx)