示例#1
0
 def generate_signed_deploy_transaction(hex_avm_code: str,
                                        project_path: str = '',
                                        wallet_file_name: str = ''):
     wallet_dir_path = os.path.join(project_path, 'wallet')
     wallet_manager = read_wallet(wallet_dir_path, wallet_file_name)
     deploy_dir_path = os.path.join(project_path, 'contracts')
     deploy_information = handle_deploy_config(deploy_dir_path)
     need_storage = deploy_information.get('needStorage', True)
     name = deploy_information.get('name', os.path.split(project_path)[1])
     version = deploy_information.get('version', '0.0.1')
     author = deploy_information.get('author', '')
     email = deploy_information.get('email', '')
     desc = deploy_information.get('desc', '')
     b58_payer_address = deploy_information.get(
         'payer',
         wallet_manager.get_default_account().get_address())
     gas_limit = deploy_information.get('gasLimit', 21000000)
     gas_price = deploy_information.get('gasPrice', 500)
     ontology = OntologySdk()
     tx = ontology.neo_vm().make_deploy_transaction(hex_avm_code,
                                                    need_storage, name,
                                                    version, author, email,
                                                    desc, b58_payer_address,
                                                    gas_limit, gas_price)
     password = getpass.getpass('\tPlease input payer account password: ')
     payer_acct = wallet_manager.get_account(b58_payer_address, password)
     ontology.sign_transaction(tx, payer_acct)
     return tx
    def test_transfer_multi(self):
        sdk = OntologySdk()
        sdk.set_rpc(local_rpc_address)
        oep4 = sdk.neo_vm().oep4()
        oep4.set_contract_address(contract_address)
        private_key1 = "5f2fe68215476abb9852cfa7da31ef00aa1468782d5ca809da5c4e1390b8ee45"
        private_key2 = "f00dd7f5356e8aee93a049bdccc44ce91169e07ea3bec9f4e0142e456fd39bae"
        private_key3 = "da213fb4cb1b12269c20307dadda35a7c89869c0c791b777fd8618d4159db99c"
        acct1 = Account(private_key1, SignatureScheme.SHA256withECDSA)
        acct2 = Account(private_key2, SignatureScheme.SHA256withECDSA)
        acct3 = Account(private_key3, SignatureScheme.SHA256withECDSA)

        b58_from_address1 = acct1.get_address_base58()
        hex_from_address1 = acct1.get_address_hex()
        from_address_list = [hex_from_address1, hex_from_address1]

        b58_to_address2 = acct2.get_address_base58()
        b58_to_address3 = acct3.get_address_base58()

        hex_to_address2 = acct2.get_address_hex()
        hex_to_address3 = acct3.get_address_hex()
        to_address_list = [hex_to_address2, hex_to_address3]

        value_list = [1, 2]
        # print("b58 addr 1 is ", b58_from_address1)
        # print("b58 addr 1 is ", b58_to_address2)
        # print("b58 addr 1 is ", b58_to_address3)

        transfer1 = [b58_from_address1, b58_to_address2, value_list[0]]
        transfer2 = [b58_from_address1, b58_to_address3, value_list[1]]
        signers = [acct1]
        args = []
        args.append(transfer1)
        args.append(transfer2)

        gas_limit = 20000000
        gas_price = 500

        tx_hash = oep4.transfer_multi(args, signers[0], signers, gas_limit,
                                      gas_price)
        self.assertEqual(64, len(tx_hash))
        sdk = OntologySdk()
        sdk.set_rpc(local_rpc_address)
        time.sleep(10)
        try:
            event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
            # print("event is ", event)
            notify = event['Notify'][0:-1]
            # print("notify is ", notify)
            self.assertEqual(len(args), len(notify))
            for index in range(len(notify)):
                self.assertEqual(from_address_list[index],
                                 notify[index]['States'][1])
                self.assertEqual(to_address_list[index],
                                 notify[index]['States'][2])
                self.assertEqual(value_list[index],
                                 int(notify[index]['States'][3]))
        except SDKException as e:
            raised = False
            self.assertTrue(raised, e)
示例#3
0
 def test_get_total_supply(self):
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     contract_address = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9'
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     self.assertEqual(1000000000, oep4.get_total_supply())
 def test_approve(self):
     sdk = OntologySdk()
     sdk.set_rpc(local_rpc_address)
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     private_key1 = "5f2fe68215476abb9852cfa7da31ef00aa1468782d5ca809da5c4e1390b8ee45"
     private_key2 = "f00dd7f5356e8aee93a049bdccc44ce91169e07ea3bec9f4e0142e456fd39bae"
     owner_acct = Account(private_key1, SignatureScheme.SHA256withECDSA)
     hex_owner_address = owner_acct.get_address_hex()
     spender = Account(private_key2, SignatureScheme.SHA256withECDSA)
     b58_spender_address = spender.get_address_base58()
     hex_spender_address = spender.get_address_hex()
     amount = 100
     gas_limit = 20000000
     gas_price = 0
     tx_hash = oep4.approve(owner_acct, b58_spender_address, amount,
                            owner_acct, gas_limit, gas_price)
     self.assertEqual(len(tx_hash), 64)
     sdk = OntologySdk()
     sdk.set_rpc(local_rpc_address)
     time.sleep(6)
     try:
         event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
         notify = event['Notify'][0]
         self.assertEqual(hex_owner_address, notify['States'][1])
         self.assertEqual(hex_spender_address, notify['States'][2])
         self.assertEqual('64', notify['States'][3])
     except SDKException as e:
         raised = False
         self.assertTrue(raised, e)
示例#5
0
 def test_set_contract_address(self):
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     contract_address = '85848b5ec3b15617e396bdd62cb49575738dd413'
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     self.assertEqual(contract_address, oep4.get_contract_address(is_hex=True))
示例#6
0
 def test_get_symbol(self):
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     contract_address = 'd7b6a47966770c1545bf74c16426b26c0a238b16'
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     self.assertEqual('DX', oep4.get_symbol())
 def test_get_total_supply(self):
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     contract_address = '6fe70af535887a820a13cfbaff6b0b505f855e5c'
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     self.assertEqual(10000000000000, oep4.get_total_supply())
 def test_approve(self):
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     contract_address = '6fe70af535887a820a13cfbaff6b0b505f855e5c'
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     private_key1 = '523c5fcf74823831756f0bcb3634234f10b3beb1c05595058534577752ad2d9f'
     private_key2 = '75de8489fcb2dcaf2ef3cd607feffde18789de7da129b5e97c81e001793cb7cf'
     owner_acct = Account(private_key1, SignatureScheme.SHA256withECDSA)
     hex_owner_address = owner_acct.get_address_hex()
     spender = Account(private_key2, SignatureScheme.SHA256withECDSA)
     b58_spender_address = spender.get_address_base58()
     hex_spender_address = spender.get_address_hex()
     amount = 100
     gas_limit = 20000000
     gas_price = 500
     tx_hash = oep4.approve(owner_acct, b58_spender_address, amount,
                            owner_acct, gas_limit, gas_price)
     self.assertEqual(len(tx_hash), 64)
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     time.sleep(6)
     try:
         event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
         notify = event['Notify'][0]
         self.assertEqual(hex_owner_address, notify['States'][0])
         self.assertEqual(hex_spender_address, notify['States'][1])
         self.assertEqual('64', notify['States'][2])
     except SDKException as e:
         raised = False
         self.assertTrue(raised, e)
 def test_get_total_supply(self):
     sdk = OntologySdk()
     sdk.set_rpc(local_rpc_address)
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     print("oep4.get_total_supply() is ", oep4.get_total_supply())
     self.assertEqual(100000000000000000, oep4.get_total_supply())
 def test_get_name(self):
     sdk = OntologySdk()
     sdk.set_rpc(local_rpc_address)
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     print("oep4.get_name() is ", oep4.get_name())
     self.assertEqual('TokenName', oep4.get_name())
示例#11
0
    def test_transfer_multi(self):
        sdk = OntologySdk()
        sdk.set_rpc(remote_rpc_address)
        contract_address = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9'
        oep4 = sdk.neo_vm().oep4()
        oep4.set_contract_address(contract_address)
        private_key1 = '523c5fcf74823831756f0bcb3634234f10b3beb1c05595058534577752ad2d9f'
        private_key2 = '75de8489fcb2dcaf2ef3cd607feffde18789de7da129b5e97c81e001793cb7cf'
        private_key3 = '1383ed1fe570b6673351f1a30a66b21204918ef8f673e864769fa2a653401114'
        acct1 = Account(private_key1, SignatureScheme.SHA256withECDSA)
        acct2 = Account(private_key2, SignatureScheme.SHA256withECDSA)
        acct3 = Account(private_key3, SignatureScheme.SHA256withECDSA)
        args = list()

        b58_from_address1 = acct1.get_address_base58()
        b58_from_address2 = acct2.get_address_base58()
        hex_from_address1 = acct1.get_address_hex()
        hex_from_address2 = acct2.get_address_hex()
        from_address_list = [hex_from_address1, hex_from_address2]

        b58_to_address1 = acct2.get_address_base58()
        b58_to_address2 = acct3.get_address_base58()
        hex_to_address1 = acct2.get_address_hex()
        hex_to_address2 = acct3.get_address_hex()
        to_address_list = [hex_to_address1, hex_to_address2]

        value_list = [1.1, 2.2]

        transfer1 = [b58_from_address1, b58_to_address1, value_list[0]]
        transfer2 = [b58_from_address2, b58_to_address2, value_list[1]]

        signers = [acct1, acct2, acct3]
        args.append(transfer1)
        args.append(transfer2)

        gas_limit = 20000000
        gas_price = 500

        tx_hash = oep4.transfer_multi(args, signers[0], signers, gas_limit, gas_price)
        self.assertEqual(64, len(tx_hash))
        sdk = OntologySdk()
        sdk.set_rpc(remote_rpc_address)
        time.sleep(6)
        try:
            decimal = oep4.get_decimal()
            event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
            notify = event['Notify'][:-1]
            self.assertEqual(len(args), len(notify))
            for index in range(len(notify)):
                self.assertEqual('transfer', bytes.fromhex(notify[index]['States'][0]).decode())
                self.assertEqual(from_address_list[index], notify[index]['States'][1])
                self.assertEqual(to_address_list[index], notify[index]['States'][2])
                array = bytearray(binascii.a2b_hex(notify[index]['States'][3].encode('ascii')))
                array.reverse()
                notify_value = int(binascii.b2a_hex(array).decode('ascii'), 16)
                self.assertEqual((10 ** decimal) * value_list[index], notify_value)
        except SDKException as e:
            raised = False
            self.assertTrue(raised, e)
 def test_set_contract_address(self):
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     contract_address = '6fe70af535887a820a13cfbaff6b0b505f855e5c'
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     self.assertEqual(contract_address,
                      oep4.get_contract_address(is_hex=True))
 def test_set_contract_address(self):
     sdk = OntologySdk()
     sdk.set_rpc(local_rpc_address)
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     # print("ope4 contract address is ", oep4.get_contract_address(is_hex=True), type(oep4.get_contract_address(is_hex=True)))
     # print("Contract address is ", contract_address, type(contract_address))
     self.assertEqual(contract_address,
                      oep4.get_contract_address(is_hex=True))
    def test_transfer_multi(self):
        sdk = OntologySdk()
        sdk.set_rpc(remote_rpc_address)
        contract_address = '6fe70af535887a820a13cfbaff6b0b505f855e5c'
        oep4 = sdk.neo_vm().oep4()
        oep4.set_contract_address(contract_address)
        private_key1 = '523c5fcf74823831756f0bcb3634234f10b3beb1c05595058534577752ad2d9f'
        private_key2 = '75de8489fcb2dcaf2ef3cd607feffde18789de7da129b5e97c81e001793cb7cf'
        private_key3 = '1383ed1fe570b6673351f1a30a66b21204918ef8f673e864769fa2a653401114'
        acct1 = Account(private_key1, SignatureScheme.SHA256withECDSA)
        acct2 = Account(private_key2, SignatureScheme.SHA256withECDSA)
        acct3 = Account(private_key3, SignatureScheme.SHA256withECDSA)
        args = list()

        b58_from_address1 = acct1.get_address_base58()
        b58_from_address2 = acct2.get_address_base58()
        hex_from_address1 = acct1.get_address_hex()
        hex_from_address2 = acct2.get_address_hex()
        from_address_list = [hex_from_address1, hex_from_address2]

        b58_to_address1 = acct2.get_address_base58()
        b58_to_address2 = acct3.get_address_base58()
        hex_to_address1 = acct2.get_address_hex()
        hex_to_address2 = acct3.get_address_hex()
        to_address_list = [hex_to_address1, hex_to_address2]

        value_list = [1, 2]

        transfer1 = [b58_from_address1, b58_to_address1, value_list[0]]
        transfer2 = [b58_from_address2, b58_to_address2, value_list[1]]
        signers = [acct1, acct2, acct3]
        args.append(transfer1)
        args.append(transfer2)

        gas_limit = 20000000
        gas_price = 500

        tx_hash = oep4.transfer_multi(args, signers[0], signers, gas_limit,
                                      gas_price)
        self.assertEqual(64, len(tx_hash))
        sdk = OntologySdk()
        sdk.set_rpc(remote_rpc_address)
        time.sleep(6)
        try:
            event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
            notify = event['Notify'][:-1]
            self.assertEqual(len(args), len(notify))
            for index in range(len(notify)):
                self.assertEqual(from_address_list[index],
                                 notify[index]['States'][0])
                self.assertEqual(to_address_list[index],
                                 notify[index]['States'][1])
                self.assertEqual(value_list[index],
                                 int(notify[index]['States'][2]))
        except SDKException as e:
            raised = False
            self.assertTrue(raised, e)
 def test_init(self):
     sdk = OntologySdk()
     sdk.set_rpc(local_rpc_address)
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     private_key = '5f2fe68215476abb9852cfa7da31ef00aa1468782d5ca809da5c4e1390b8ee45'
     acct = Account(private_key, SignatureScheme.SHA256withECDSA)
     gas_limit = 20000000
     gas_price = 500
     tx_hash = oep4.init(acct, acct, gas_limit, gas_price)
     self.assertEqual(len(tx_hash), 64)
示例#16
0
 def test_balance_of(self):
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     contract_address = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9'
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     b58_address1 = 'ANH5bHrrt111XwNEnuPZj6u95Dd6u7G4D6'
     b58_address2 = 'AazEvfQPcQ2GEFFPLF1ZLwQ7K5jDn81hve'
     balance = oep4.balance_of(b58_address1)
     self.assertGreaterEqual(balance, 10)
     balance = oep4.balance_of(b58_address2)
     self.assertGreaterEqual(balance, 1)
 def test_init(self):
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     contract_address = '6fe70af535887a820a13cfbaff6b0b505f855e5c'
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     private_key = '523c5fcf74823831756f0bcb3634234f10b3beb1c05595058534577752ad2d9f'
     acct = Account(private_key, SignatureScheme.SHA256withECDSA)
     gas_limit = 20000000
     gas_price = 500
     tx_hash = oep4.init(acct, acct, gas_limit, gas_price)
     self.assertEqual(len(tx_hash), 64)
示例#18
0
 def test_get_decimal(self):
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     contract_address1 = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9'
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address1)
     self.assertEqual(10, oep4.get_decimal())
     contract_address2 = '165b1227311d47c22cd073ef8f285d3bddc858ca'
     oep4.set_contract_address(contract_address2)
     self.assertEqual(32, oep4.get_decimal())
     contract_address3 = '8fecd2740b10a7410026774cc1f99fe14860873b'
     oep4.set_contract_address(contract_address3)
     self.assertEqual(255, oep4.get_decimal())
 def test_allowance(self):
     sdk = OntologySdk()
     sdk.set_rpc(local_rpc_address)
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     private_key1 = "5f2fe68215476abb9852cfa7da31ef00aa1468782d5ca809da5c4e1390b8ee45"
     private_key2 = "f00dd7f5356e8aee93a049bdccc44ce91169e07ea3bec9f4e0142e456fd39bae"
     acct1 = Account(private_key1, SignatureScheme.SHA256withECDSA)
     acct2 = Account(private_key2, SignatureScheme.SHA256withECDSA)
     b58_owner_address = acct1.get_address_base58()
     b58_spender_address = acct2.get_address_base58()
     allowance = oep4.allowance(b58_owner_address, b58_spender_address)
     self.assertGreaterEqual(allowance, 1)
 def test_get_decimal(self):
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     contract_address1 = '6fe70af535887a820a13cfbaff6b0b505f855e5c'
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address1)
     self.assertEqual(8, oep4.get_decimal())
     contract_address2 = 'c8e9b4316f16ddc328708d8a60b5db04a950516f'
     oep4.set_contract_address(contract_address2)
     self.assertEqual(32, oep4.get_decimal())
     contract_address3 = 'a60ec27d5ca6fb492e338de8f24a999dfda961cb'
     oep4.set_contract_address(contract_address3)
     self.assertEqual(255, oep4.get_decimal())
 def test_allowance(self):
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     contract_address = '6fe70af535887a820a13cfbaff6b0b505f855e5c'
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     private_key1 = '523c5fcf74823831756f0bcb3634234f10b3beb1c05595058534577752ad2d9f'
     private_key2 = '75de8489fcb2dcaf2ef3cd607feffde18789de7da129b5e97c81e001793cb7cf'
     acct1 = Account(private_key1, SignatureScheme.SHA256withECDSA)
     acct2 = Account(private_key2, SignatureScheme.SHA256withECDSA)
     b58_owner_address = acct1.get_address_base58()
     b58_spender_address = acct2.get_address_base58()
     allowance = oep4.allowance(b58_owner_address, b58_spender_address)
     self.assertGreaterEqual(allowance, 1)
示例#22
0
 def test_transfer(self):
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     contract_address = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9'
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     private_key1 = '523c5fcf74823831756f0bcb3634234f10b3beb1c05595058534577752ad2d9f'
     from_acct = Account(private_key1, SignatureScheme.SHA256withECDSA)
     gas_limit = 20000000
     gas_price = 500
     b58_to_address = 'AazEvfQPcQ2GEFFPLF1ZLwQ7K5jDn81hve'
     value = 10
     tx_hash = oep4.transfer(from_acct, b58_to_address, value, from_acct, gas_limit, gas_price)
     self.assertEqual(64, len(tx_hash))
示例#23
0
 def test_init(self):
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     contract_address = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9'
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     private_key = '523c5fcf74823831756f0bcb3634234f10b3beb1c05595058534577752ad2d9f'
     acct = Account(private_key, SignatureScheme.SHA256withECDSA)
     gas_limit = 20000000
     gas_price = 500
     tx_hash = oep4.init(acct, acct, gas_limit, gas_price)
     self.assertEqual(len(tx_hash), 64)
     time.sleep(6)
     notify = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)['Notify'][0]
     self.assertEqual('Already initialized!', bytes.fromhex(notify['States']).decode())
 def test_transfer(self):
     sdk = OntologySdk()
     sdk.set_rpc(local_rpc_address)
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     private_key1 = '5f2fe68215476abb9852cfa7da31ef00aa1468782d5ca809da5c4e1390b8ee45'
     private_key2 = "f00dd7f5356e8aee93a049bdccc44ce91169e07ea3bec9f4e0142e456fd39bae"
     from_acct = Account(private_key1, SignatureScheme.SHA256withECDSA)
     to_acct = Account(private_key2, SignatureScheme.SHA256withECDSA)
     gas_limit = 20000000
     gas_price = 500
     b58_to_address = to_acct.get_address_base58()
     value = 10
     result = oep4.transfer(from_acct, b58_to_address, value, from_acct,
                            gas_limit, gas_price)
     self.assertEqual(len(result), 64)
 def test_transfer(self):
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     contract_address = '6fe70af535887a820a13cfbaff6b0b505f855e5c'
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     private_key1 = '523c5fcf74823831756f0bcb3634234f10b3beb1c05595058534577752ad2d9f'
     private_key2 = '75de8489fcb2dcaf2ef3cd607feffde18789de7da129b5e97c81e001793cb7cf'
     from_acct = Account(private_key1, SignatureScheme.SHA256withECDSA)
     to_acct = Account(private_key2, SignatureScheme.SHA256withECDSA)
     gas_limit = 20000000
     gas_price = 500
     b58_to_address = to_acct.get_address_base58()
     value = 10
     result = oep4.transfer(from_acct, b58_to_address, value, from_acct,
                            gas_limit, gas_price)
     self.assertEqual(len(result), 64)
示例#26
0
def deploy(sdk: OntologySdk):
    # avm文件路径
    avm_path = "./contract/group/GroupContract.avm"
    # 钱包文件路径
    wallet_path = "./test.json"
    sdk.wallet_manager.open_wallet(wallet_path)
    address = ""
    password = ""
    acct = sdk.wallet_manager.get_account(address, password)
    gaslimit = 2000000
    gasprice = 0
    code = read_code(avm_path)
    tx = sdk.neo_vm().make_deploy_transaction(code, True, "name", "version",
                                              "me", "", "test contract",
                                              acct.get_address_base58(),
                                              gaslimit, gasprice)
    sdk.add_sign_transaction(tx, acct)
    sdk.rpc.send_raw_transaction(tx)
    print("deploy")
示例#27
0
    def test_transfer_from(self):
        sdk = OntologySdk()
        sdk.set_rpc(remote_rpc_address)
        contract_address = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9'
        oep4 = sdk.neo_vm().oep4()
        oep4.set_contract_address(contract_address)
        private_key1 = '523c5fcf74823831756f0bcb3634234f10b3beb1c05595058534577752ad2d9f'
        private_key2 = '75de8489fcb2dcaf2ef3cd607feffde18789de7da129b5e97c81e001793cb7cf'
        private_key3 = '1383ed1fe570b6673351f1a30a66b21204918ef8f673e864769fa2a653401114'
        spender_acct = Account(private_key2, SignatureScheme.SHA256withECDSA)

        from_acct = Account(private_key1, SignatureScheme.SHA256withECDSA)
        b58_from_address = from_acct.get_address_base58()
        hex_from_address = from_acct.get_address_hex()

        to_acct = Account(private_key3, SignatureScheme.SHA256withECDSA)
        b58_to_address = to_acct.get_address_base58()
        hex_to_address = to_acct.get_address_hex()

        gas_limit = 20000000
        gas_price = 500
        value = 1
        tx_hash = oep4.transfer_from(spender_acct, b58_from_address, b58_to_address, value, from_acct, gas_limit,
                                     gas_price)
        self.assertEqual(64, len(tx_hash))
        sdk = OntologySdk()
        sdk.set_rpc(remote_rpc_address)
        time.sleep(6)
        try:
            decimal = oep4.get_decimal()
            event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
            notify = event['Notify'][0]
            self.assertEqual(2, len(notify))
            self.assertEqual('transfer', bytes.fromhex(notify['States'][0]).decode())
            self.assertEqual(hex_from_address, notify['States'][1])
            self.assertEqual(hex_to_address, notify['States'][2])
            array = bytearray(binascii.a2b_hex(notify['States'][3].encode('ascii')))
            array.reverse()
            notify_value = int(binascii.b2a_hex(array).decode('ascii'), 16)
            self.assertEqual((10 ** decimal) * value, notify_value)
        except SDKException as e:
            raised = False
            self.assertTrue(raised, e)
示例#28
0
 def generate_signed_deploy_transaction(hex_avm_code: str,
                                        project_path: str = '',
                                        wallet_file_name: str = '',
                                        config: str = ''):
     wallet_file, deploy_information, password_information = handle_deploy_config(
         project_path, config)
     if wallet_file_name != '':
         wallet_manager = read_wallet(project_path, wallet_file_name)
     else:
         wallet_manager = read_wallet(project_path, wallet_file)
     need_storage = deploy_information.get('needStorage', True)
     name = deploy_information.get('name', os.path.split(project_path)[1])
     version = deploy_information.get('version', '0.0.1')
     author = deploy_information.get('author', '')
     email = deploy_information.get('email', '')
     desc = deploy_information.get('desc', '')
     b58_payer_address = deploy_information.get('payer', '')
     if b58_payer_address == '':
         b58_payer_address = wallet_manager.get_default_account(
         ).get_address()
     if b58_payer_address == '':
         raise PunicaException(
             PunicaError.other_error('payer address should not be None'))
     gas_limit = deploy_information.get('gasLimit', 21000000)
     gas_price = deploy_information.get('gasPrice', 500)
     ontology = OntologySdk()
     tx = ontology.neo_vm().make_deploy_transaction(hex_avm_code,
                                                    need_storage, name,
                                                    version, author, email,
                                                    desc, b58_payer_address,
                                                    gas_limit, gas_price)
     password = password_information.get(b58_payer_address, '')
     if password == '':
         password = getpass.getpass(
             '\tPlease input payer account password: '******' not found'))
     ontology.sign_transaction(tx, payer_acct)
     return tx
    def test_transfer_from(self):
        sdk = OntologySdk()
        sdk.set_rpc(remote_rpc_address)
        contract_address = '6fe70af535887a820a13cfbaff6b0b505f855e5c'
        oep4 = sdk.neo_vm().oep4()
        oep4.set_contract_address(contract_address)
        private_key1 = '523c5fcf74823831756f0bcb3634234f10b3beb1c05595058534577752ad2d9f'
        private_key2 = '75de8489fcb2dcaf2ef3cd607feffde18789de7da129b5e97c81e001793cb7cf'
        private_key3 = '1383ed1fe570b6673351f1a30a66b21204918ef8f673e864769fa2a653401114'
        spender_acct = Account(private_key2, SignatureScheme.SHA256withECDSA)

        from_acct = Account(private_key1, SignatureScheme.SHA256withECDSA)
        hex_from_address = from_acct.get_address_hex()

        to_acct = Account(private_key3, SignatureScheme.SHA256withECDSA)
        hex_to_address = to_acct.get_address_hex()
        b58_to_address = to_acct.get_address_base58()

        gas_limit = 20000000
        gas_price = 500
        value = 1
        tx_hash = oep4.transfer_from(spender_acct, from_acct, b58_to_address,
                                     value, from_acct, gas_limit, gas_price)
        self.assertEqual(64, len(tx_hash))
        sdk = OntologySdk()
        sdk.set_rpc(remote_rpc_address)
        time.sleep(6)
        try:
            event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
            notify = event['Notify'][0]
            self.assertEqual(2, len(notify))
            self.assertEqual(hex_from_address, notify['States'][0])
            self.assertEqual(hex_to_address, notify['States'][1])
            self.assertEqual('01', notify['States'][2])
        except SDKException as e:
            raised = False
            self.assertTrue(raised, e)
示例#30
0
 def test_approve(self):
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     contract_address = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9'
     oep4 = sdk.neo_vm().oep4()
     oep4.set_contract_address(contract_address)
     private_key1 = '523c5fcf74823831756f0bcb3634234f10b3beb1c05595058534577752ad2d9f'
     private_key2 = '75de8489fcb2dcaf2ef3cd607feffde18789de7da129b5e97c81e001793cb7cf'
     owner_acct = Account(private_key1, SignatureScheme.SHA256withECDSA)
     hex_owner_address = owner_acct.get_address_hex()
     spender = Account(private_key2, SignatureScheme.SHA256withECDSA)
     b58_spender_address = spender.get_address_base58()
     hex_spender_address = spender.get_address_hex()
     amount = 100
     gas_limit = 20000000
     gas_price = 500
     tx_hash = oep4.approve(owner_acct, b58_spender_address, amount, owner_acct, gas_limit, gas_price)
     self.assertEqual(len(tx_hash), 64)
     sdk = OntologySdk()
     sdk.set_rpc(remote_rpc_address)
     time.sleep(6)
     try:
         decimal = oep4.get_decimal()
         event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
         notify = event['Notify'][0]
         states = notify['States']
         self.assertEqual('approval', bytes.fromhex(states[0]).decode())
         self.assertEqual(hex_owner_address, states[1])
         self.assertEqual(hex_spender_address, states[2])
         array = bytearray(binascii.a2b_hex(states[3].encode('ascii')))
         array.reverse()
         notify_value = int(binascii.b2a_hex(array).decode('ascii'), 16)
         self.assertEqual((10 ** decimal) * amount, notify_value)
     except SDKException as e:
         raised = False
         self.assertTrue(raised, e)