Beispiel #1
0
    def test_trx_vote_witness(self, app):
        tx = app.packContract(
            tron.Transaction.Contract.VoteWitnessContract,
            contract.VoteWitnessContract(
                owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
                votes=[
                    contract.VoteWitnessContract.Vote(
                        vote_address=bytes.fromhex(app.address_hex("TKSXDA8HfE9E1y39RczVQ1ZascUEtaSToF")),
                        vote_count=100
                    ),
                    contract.VoteWitnessContract.Vote(
                        vote_address=bytes.fromhex(app.address_hex("TE7hnUtWRRBz3SkFrX8JESWUmEvxxAhoPt")),
                        vote_count=100
                    ),
                    contract.VoteWitnessContract.Vote(
                        vote_address=bytes.fromhex(app.address_hex("TTcYhypP8m4phDhN6oRexz2174zAerjEWP")),
                        vote_count=100
                    ),
                    contract.VoteWitnessContract.Vote(
                        vote_address=bytes.fromhex(app.address_hex("TY65QiDt4hLTMpf3WRzcX357BnmdxT2sw9")),
                        vote_count=100
                    ),
                ]
            )
        )

        data, status = app.sign(app.getAccount(0)['path'], tx)
        validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
        assert(validSignature == True)
Beispiel #2
0
    def test_trx_withdraw_balance(self, app):
        tx = app.packContract(
            tron.Transaction.Contract.WithdrawBalanceContract,
            contract.WithdrawBalanceContract(
                owner_address=bytes.fromhex(app.getAccount(0)['addressHex'])
            )
        )

        data, status = app.sign(app.getAccount(0)['path'], tx)
        validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
        assert(validSignature == True)
Beispiel #3
0
    def test_trx_proposal_delete(self, app):
        tx = app.packContract(
            tron.Transaction.Contract.ProposalDeleteContract,
            contract.ProposalDeleteContract(
                owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
                proposal_id=10,
            )
        )

        data, status = app.sign(app.getAccount(0)['path'], tx)
        validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
        assert(validSignature == True)
Beispiel #4
0
 def test_trx_send_wrong_path(self, app):
     tx = app.packContract(
         tron.Transaction.Contract.TransferContract,
         contract.TransferContract(
             owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             to_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             amount=100000000
         )
     )
     data, status = app.sign(app.getAccount(0)['path'], tx)
     validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
     assert(validSignature == False)
Beispiel #5
0
    def test_trx_account_update(self, app):
        tx = app.packContract(
            tron.Transaction.Contract.AccountUpdateContract,
            contract.AccountUpdateContract(
                account_name=b'CryptoChainTest',
                owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
            )
        )

        data, status = app.sign(app.getAccount(0)['path'], tx)
        validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
        assert(validSignature == True)
Beispiel #6
0
    def test_vs_proposal_create(self, app):
        tx = app.packContract(
            vision.Transaction.Contract.ProposalCreateContract,
            contract.ProposalCreateContract(
                owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
                parameters={1: 100000, 2: 400000}
            )
        )

        data, status = app.sign(app.getAccount(0)['path'], tx)
        validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
        assert(validSignature == True)
Beispiel #7
0
    def test_trx_unfreeze_balance_bw(self, app):
        tx = app.packContract(
            tron.Transaction.Contract.UnfreezeBalanceContract,
            contract.UnfreezeBalanceContract(
                owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
                resource=contract.BANDWIDTH,
            )
        )

        data, status = app.sign(app.getAccount(0)['path'], tx)
        validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
        assert(validSignature == True)
Beispiel #8
0
 def test_trx_send_with_data_field(self, app):
     tx = app.packContract(
         tron.Transaction.Contract.TransferContract,
         contract.TransferContract(
             owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             to_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             amount=100000000
         ),
         b'CryptoChain-TronSR Ledger Transactions Tests'
     )
     data, status = app.sign(app.getAccount(0)['path'], tx)
     validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
     assert(validSignature == True)
Beispiel #9
0
    def test_trx_trc20_approve(self, app):
        tx = app.packContract(
            tron.Transaction.Contract.TriggerSmartContract,
            contract.TriggerSmartContract(
                owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
                contract_address=bytes.fromhex(app.address_hex("TBoTZcARzWVgnNuB9SyE3S5g1RwsXoQL16")),
                data=bytes.fromhex("095ea7b3000000000000000000000000364b03e0815687edaf90b81ff58e496dea7383d700000000000000000000000000000000000000000000000000000000000f4240")
            )
        )

        data, status = app.sign(app.getAccount(0)['path'], tx)
        validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
        assert(validSignature == True)
Beispiel #10
0
    def test_trx_unknown_trc20_send(self, app):
        tx = app.packContract(
            tron.Transaction.Contract.TriggerSmartContract,
            contract.TriggerSmartContract(
                owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
                contract_address=bytes.fromhex(app.address_hex("TVGLX58e3uBx1fmmwLCENkrgKqmpEjhtfG")),
                data=bytes.fromhex("a9059cbb000000000000000000000000364b03e0815687edaf90b81ff58e496dea7383d700000000000000000000000000000000000000000000000000000000000f4240")
            )
        )

        data, status = app.sign(app.getAccount(0)['path'], tx)
        validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
        assert(validSignature == True)
Beispiel #11
0
 def createaccount(self, from_address, account_address, ac_type):
     """
     创建账户
     :return: account 对象
     """
     accontract = Contract_pb2.AccountCreateContract()
     accontract.owner_address = from_address.encode()
     accontract.account_address = account_address.encode()
     accontract.tpye = Tron_pb2.AccountType()
     with grpc.insecure_channel('localhost:50051') as channel:
         stub = api_pb2_grpc.WalletStub(channel)
         response = stub.CreateAccount2(accontract)
     return response
Beispiel #12
0
 def test_trx_send_asset_without_name(self, app):
     tx = app.packContract(
         tron.Transaction.Contract.TransferAssetContract,
         contract.TransferAssetContract(
             owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             to_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             amount=1000000,
             asset_name="1002000".encode()
         )
     )
     data, status = app.sign(app.getAccount(0)['path'], tx)
     validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
     assert(validSignature == True)
Beispiel #13
0
    def test_vs_unfreeze_balance_delegate_entropy(self, app):
        tx = app.packContract(
            vision.Transaction.Contract.UnfreezeBalanceContract,
            contract.UnfreezeBalanceContract(
                owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
                resource=contract.ENTROPY,
                receiver_address=bytes.fromhex(app.getAccount(1)['addressHex']),
            )
        )

        data, status = app.sign(app.getAccount(0)['path'], tx)
        validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
        assert(validSignature == True)
Beispiel #14
0
    def test_trx_freeze_balance_energy(self, app):
        tx = app.packContract(
            tron.Transaction.Contract.FreezeBalanceContract,
            contract.FreezeBalanceContract(
                owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
                frozen_balance=10000000000,
                frozen_duration=3,
                resource=contract.ENERGY
                )
        )

        data, status = app.sign(app.getAccount(0)['path'], tx)
        validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
        assert(validSignature == True)
Beispiel #15
0
 def test_trx_exchange_withdraw(self, app):
     tx = app.packContract(
         tron.Transaction.Contract.ExchangeWithdrawContract,
         contract.ExchangeWithdrawContract(
             owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             exchange_id=6,
             token_id="1000166".encode(),
             quant=1000000
             )
     )
     exchangeSignature = ["08061207313030303136361a0b43727970746f436861696e20002a015f3203545258380642473045022100fe276f30a63173b2440991affbbdc5d6d2d22b61b306b24e535a2fb866518d9c02205f7f41254201131382ec6c8b3c78276a2bb136f910b9a1f37bfde192fc448793"]
     data, status = app.sign(app.getAccount(0)['path'], tx, exchangeSignature)
     validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
     assert(validSignature == True)
Beispiel #16
0
 def test_trx_exchange_create(self, app):
     tx = app.packContract(
         tron.Transaction.Contract.ExchangeCreateContract,
         contract.ExchangeCreateContract(
             owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             first_token_id="_".encode(),
             first_token_balance=10000000000,
             second_token_id="1000166".encode(),
             second_token_balance=10000000
         )
     )
     data, status = app.sign(app.getAccount(0)['path'], tx)
     validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
     assert(validSignature == True)
Beispiel #17
0
 def test_vs_send_permissioned(self, app):
     tx = app.packContract(
         vision.Transaction.Contract.TransferContract,
         contract.TransferContract(
             owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             to_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             amount=100000000
         ),
         None,
         2
     )
     data, status = app.sign(app.getAccount(0)['path'], tx)
     assert(status == 0x9000)
     validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
     assert(validSignature == True)
Beispiel #18
0
 def test_trx_send_asset_with_name(self, app):
     tx = app.packContract(
         tron.Transaction.Contract.TransferAssetContract,
         contract.TransferAssetContract(
             owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             to_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             amount=1000000,
             asset_name="1002000".encode()
         )
     )
     # BTT token ID 1002000 - 6 decimals
     tokenSignature = ["0a0a426974546f7272656e7410061a46304402202e2502f36b00e57be785fc79ec4043abcdd4fdd1b58d737ce123599dffad2cb602201702c307f009d014a553503b499591558b3634ceee4c054c61cedd8aca94c02b"]
     data, status = app.sign(app.getAccount(0)['path'], tx, tokenSignature)
     validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
     assert(validSignature == True)
Beispiel #19
0
 def test_trx_send_asset_with_name_wrong_signature(self, app):
     tx = app.packContract(
         tron.Transaction.Contract.TransferAssetContract,
         contract.TransferAssetContract(
             owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             to_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             amount=1000000,
             asset_name="1002000".encode()
         )
     )
     # BTT token ID 1002000 - 6 decimals
     tokenSignature = ["0a0a4e6577416765436f696e10001a473045022100d8d73b4fad5200aa40b5cdbe369172b5c3259c10f1fb17dfb9c3fa6aa934ace702204e7ef9284969c74a0e80b7b7c17e027d671f3a9b3556c05269e15f7ce45986c8"]
     data, status = app.sign(app.getAccount(0)['path'], tx, tokenSignature)
     # expected fail
     assert( status == 0x6800 )
Beispiel #20
0
 def test_trx_exchange_create_with_token_name(self, app):
     tx = app.packContract(
         tron.Transaction.Contract.ExchangeCreateContract,
         contract.ExchangeCreateContract(
             owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             first_token_id="_".encode(),
             first_token_balance=10000000000,
             second_token_id="1000166".encode(),
             second_token_balance=10000000
         )
     )
     tokenSignature = ["0a0354525810061a463044022037c53ecb06abe1bfd708bd7afd047720b72e2bfc0a2e4b6ade9a33ae813565a802200a7d5086dc08c4a6f866aad803ac7438942c3c0a6371adcb6992db94487f66c7",
               "0a0b43727970746f436861696e10001a4730450221008417d04d1caeae31f591ae50f7d19e53e0dfb827bd51c18e66081941bf04639802203c73361a521c969e3fd7f62e62b46d61aad00e47d41e7da108546d954278a6b1"]
     data, status = app.sign(app.getAccount(0)['path'], tx, tokenSignature)
     validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
     assert(validSignature == True)
Beispiel #21
0
 def test_trx_custom_contract(self, app):
     tx = app.packContract(
         tron.Transaction.Contract.TriggerSmartContract,
         contract.TriggerSmartContract(
             owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
             contract_address=bytes.fromhex(app.address_hex("TTg3AAJBYsDNjx5Moc5EPNsgJSa4anJQ3M")),
             data=bytes.fromhex('{:08x}{:064x}'.format(
                 0x0a857040,
                 int(10001)
                 ))
         )
     )
     
     data, status = app.sign(app.getAccount(0)['path'], tx)
     validSignature, txID = validateSignature.validate(tx,data[0:65],app.getAccount(0)['publicKey'][2:])
     assert(validSignature == True)
Beispiel #22
0
 def createtransaction(self, owner_address, to_address, amount):
     """
     创建一个转账的交易
     :return: 返回转账合约对象
     {
     "transaction" :
         {"txID":"454f156bf1256587ff6ccdbc56e64ad0c51e4f8efea5490dcbc720ee606bc7b8",
         "raw_data":
             {"contract":
                 [{"parameter":
                     {"value":
                         {"amount":1,
                          "owner_address":"41235d90e1d0a0ccfa268781f464e0252ba6112993",
                          "to_address":"41d1e7a6bc354106cb410e65ff8b181c600ff14292"
                         },
                         "type_url":"type.googleapis.com/protocol.TransferContract"
                     },
                     "type":"TransferContract"
                 }],
                 "ref_block_bytes":"267e",
                 "ref_block_hash":"9a447d222e8de9f2",
                 "expiration":1530893064000,
                 "timestamp":1530893006233
             }
         }
         ,"privateKey": "your private key"
     }
     """
     transfer = Contract_pb2.TransferContract()
     transfer.owner_address = owner_address.encode()
     transfer.to_address = to_address.encode()
     transfer.amount = amount
     with grpc.insecure_channel('localhost:50051') as channel:
         stub = api_pb2_grpc.WalletStub(channel)
         response = stub.CreateTransaction2(transfer)
     return response
Beispiel #23
0
    def test_trx_vote_witness_more_than_5(self, app):
        tx = app.packContract(
            tron.Transaction.Contract.VoteWitnessContract,
            contract.VoteWitnessContract(
                owner_address=bytes.fromhex(app.getAccount(0)['addressHex']),
                votes=[
                    contract.VoteWitnessContract.Vote(
                        vote_address=bytes.fromhex(app.address_hex("TKSXDA8HfE9E1y39RczVQ1ZascUEtaSToF")),
                        vote_count=100
                    ),
                    contract.VoteWitnessContract.Vote(
                        vote_address=bytes.fromhex(app.address_hex("TE7hnUtWRRBz3SkFrX8JESWUmEvxxAhoPt")),
                        vote_count=100
                    ),
                    contract.VoteWitnessContract.Vote(
                        vote_address=bytes.fromhex(app.address_hex("TTcYhypP8m4phDhN6oRexz2174zAerjEWP")),
                        vote_count=100
                    ),
                    contract.VoteWitnessContract.Vote(
                        vote_address=bytes.fromhex(app.address_hex("TY65QiDt4hLTMpf3WRzcX357BnmdxT2sw9")),
                        vote_count=100
                    ),
                    contract.VoteWitnessContract.Vote(
                        vote_address=bytes.fromhex(app.address_hex("TSzoLaVCdSNDpNxgChcFt9rSRF5wWAZiR4")),
                        vote_count=100
                    ),
                    contract.VoteWitnessContract.Vote(
                        vote_address=bytes.fromhex(app.address_hex("TSNbzxac4WhxN91XvaUfPTKP2jNT18mP6T")),
                        vote_count=100
                    ),
                ]
            )
        )

        data, status = app.sign(app.getAccount(0)['path'], tx)
        assert(status == 0x6800)
# check if device have custom contracts enable
result = dongle.exchange(bytearray.fromhex("E0060000FF"))
customAllowed = result[0] & 0x02
if customAllowed == 0:
    print("Custom Contract not allowed, test should fail...")
    sys.exit(0)

####################
# TWM Deposit TRX  #
####################
logger.debug('\n\SmartContract Trigger: Deposit TRX in TWM Contract')
data = '{:08x}'.format(0xd0e30db0)
tx = stub.TriggerContract(
    contract.TriggerSmartContract(
        owner_address=bytes.fromhex(accounts[1]['addressHex']),
        contract_address=bytes.fromhex(
            address_hex("TTg3AAJBYsDNjx5Moc5EPNsgJSa4anJQ3M")),
        call_value=1000000,
        data=bytes.fromhex(data)))

raw_tx, result = ledgerSign(accounts[1]['path'], tx.transaction)
tx.transaction.signature.extend([bytes(result[0:65])])
#r = stub.BroadcastTransaction(tx.transaction)

validSignature, txID = validateSignature.validate(raw_tx, result[0:65],
                                                  accounts[1]['publicKey'][2:])
logger.debug('- RAW: {}'.format(raw_tx))
logger.debug('- txID: {}'.format(txID))
logger.debug('- Signature: {}'.format(binascii.hexlify(result[0:65])))
if (validSignature):
    logger.debug('- Valid: {}'.format(validSignature))
else:
Beispiel #25
0
from core import Vision_pb2 as vision
from google.protobuf.any_pb2 import Any
import grpc

# Start Channel and WalletStub
channel = grpc.insecure_channel("vtest.infragrid.v.network:50051")
stub = WalletStub(channel)

logger.debug('''
   Vision MultiSign tests
''')

tx = stub.CreateTransaction2(
    contract.TransferContract(
        owner_address=bytes.fromhex(
            address_hex("VUEZSdKsoDHQMeZwihtdoBiN46zxhGWYdH")),
        to_address=bytes.fromhex(
            address_hex("VPnYqC2ukKyhEDAjqRRobSVygMAb8nAcXM")),
        amount=100000))
# use permission 2
tx.transaction.raw_data.contract[0].Permission_id = 2

raw_tx, sign1 = ledgerSign(parse_bip32_path("44'/195'/0'/0/0"), tx.transaction)
raw_tx, sign2 = ledgerSign(parse_bip32_path("44'/195'/1'/0/0"), tx.transaction)

tx.transaction.signature.extend([bytes(sign1[0:65])])
tx.transaction.signature.extend([bytes(sign2[0:65])])

r = stub.BroadcastTransaction(tx.transaction)

if r.result == True:
    print("Success")
Beispiel #26
0
# Start Channel and WalletStub
channel = grpc.insecure_channel("vtest.infragrid.v.network:50051")
stub = WalletStub(channel)

logger.debug('''
   Vision Transactions tests
''')

############
# Send VS #
############
logger.debug('\n\nTransfer Contract:')

tx = stub.CreateTransaction2(
    contract.TransferContract(
        owner_address=bytes.fromhex(accounts[1]['addressHex']),
        to_address=bytes.fromhex(accounts[0]['addressHex']),
        amount=1))

raw_tx, result = ledgerSign(accounts[1]['path'], tx.transaction)
validSignature, txID = validateSignature.validate(raw_tx, result[0:65],
                                                  accounts[1]['publicKey'][2:])
logger.debug('- RAW: {}'.format(raw_tx))
logger.debug('- txID: {}'.format(txID))
logger.debug('- Signature: {}'.format(binascii.hexlify(result[0:65])))
if (validSignature):
    logger.debug('- Valid: {}'.format(validSignature))
else:
    logger.error('- Valid: {}'.format(validSignature))
    sys.exit(0)

# Broadcast Example