创建 TRX 原始交易

问题描述 投票:0回答:3

我想创建一个原始交易(不签名)并获取其十六进制格式的哈希值。官方 TRON API 通常会返回一个 JSON 用于创建交易。有人知道该怎么做吗?

transactions blockchain tron
3个回答
1
投票

您只需使用您的交易详细信息调用 api 即可取回交易

const data = {
        to_address: toHex(to),
        owner_address: toHex(from),
        amount: amount,
    };
let transaction = await tronWeb.fullNode.request('wallet/createtransaction', data, 'post');

1
投票

如果我的理解是正确的,您需要未签名交易的原始十六进制表示。 为此,您可以使用 tronweb 库,它们具有 API 来创建 TRX、trc10 或代币传输交易并返回 JSON 和十六进制表示形式: https://developers.tron.network/v3.7/reference/sendtrx

这是上述文档中的示例:

tronWeb.transactionBuilder.sendTrx("TVDGpn4hCSzJ5nkHPLetk8KQBtwaTppnkr", 100, "TNPeeaaFB7K9cmo4uQpcU32zGK8G1NYqeL");

退货

{
    "visible": false,
    "txID": "9f62a65d0616c749643c4e2620b7877efd0f04dd5b2b4cd14004570d39858d7e",
    "raw_data": {
        "contract": [
            {
                "parameter": {
                    "value": {
                        "amount": 100,
                        "owner_address": "418840e6c55b9ada326d211d818c34a994aeced808",
                        "to_address": "41d3136787e667d1e055d2cd5db4b5f6c880563049"
                },
                    "type_url": "type.googleapis.com/protocol.TransferContract"
                },
                "type": "TransferContract"
            }
        ],
        "ref_block_bytes": "0add",
        "ref_block_hash": "6c2763abadf9ed29",
        "expiration": 1581308685000,
        "timestamp": 1581308626092
    },
    "raw_data_hex": "0a020add22086c2763abadf9ed2940c8d5deea822e5a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a15418840e6c55b9ada326d211d818c34a994aeced808121541d3136787e667d1e055d2cd5db4b5f6c880563049186470ac89dbea822e"
}

0
投票

要创建raw_data_hex,需要一个raw_data.proto协议来转换:

syntax = "proto3";

package YourPackageName;
option java_package = "wallet.core.jni.proto";


message Contract {
    enum ContractType {
        AccountCreateContract = 0;
        TransferContract = 1;
        TransferAssetContract = 2;
        VoteAssetContract = 3;
        VoteWitnessContract = 4;
        FreezeBalanceContract = 11;
        UnfreezeBalanceContract = 12;
        WithdrawBalanceContract = 13;
        UnfreezeAssetContract = 14;
        TriggerSmartContract = 31;
        FreezeBalanceV2Contract = 54;
        UnfreezeBalanceV2Contract = 55;
        WithdrawExpireUnfreezeContract = 56;
        DelegateResourceContract = 57;
        UnDelegateResourceContract = 58;
    }
    ContractType type = 1;
    message Parameter {
         message Transfer {
                bytes owner_address = 1;
                bytes to_address = 2;
                int64 amount = 3;
         }
         string type_url = 1;
         Transfer value = 2;
    }
    Parameter parameter = 2;
}


message raw_data_hex {
    bytes ref_block_bytes = 1;
    bytes ref_block_hash = 4;
    int64 expiration = 8;
    repeated Contract contract = 11;
    int64 timestamp = 14;
}

message signRaw_data_hex {
    raw raw_data = 1;
    repeated bytes signature = 2;
}
© www.soinside.com 2019 - 2024. All rights reserved.