Пример #1
0
    def test_trx_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("TBoTZcARzWVgnNuB9SyE3S5g1RwsXoQL16")),
                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)
Пример #2
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)
# 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:
Пример #4
0
    logger.debug('- Valid: {}'.format(validSignature))
else:
    logger.error('- Valid: {}'.format(validSignature))
    sys.exit(0)

##################
# VRC20 Transfer #
##################
logger.debug('\n\SmartContract Trigger VRC20 Transfer:')

tx = vision.Transaction()

newContract = contract.TriggerSmartContract(
    owner_address=bytes.fromhex(accounts[1]['addressHex']),
    contract_address=bytes.fromhex(
        address_hex("TBoTZcARzWVgnNuB9SyE3S5g1RwsXoQL16")),
    data=bytes.fromhex(
        "a9059cbb000000000000000000000000364b03e0815687edaf90b81ff58e496dea7383d700000000000000000000000000000000000000000000000000000000000f4240"
    ))

c = tx.raw_data.contract.add()
c.type = vision.Transaction.Contract.TriggerSmartContract
param = Any()
param.Pack(newContract)
c.parameter.CopyFrom(param)

pprint(newContract)

raw_tx, result = ledgerSign(accounts[1]['path'], tx)
validSignature, txID = validateSignature.validate(raw_tx, result[0:65],
                                                  accounts[1]['publicKey'][2:])