TRON Developer Hub CN

TRON开发者中心

欢迎来到TRON开发者中心。您将找到全面的指南和文档,以帮助您尽快开始使用TRON Developer Hub,并在遇到困难时提供支持。让我们跳进去吧!

Get Started    

发送交易

任何与波场网络的交互行为都被称作为一笔交易。

一笔交易可以是TRX转账、冻结/解冻TRX、触发智能合约等。

只有消耗资源的交易才会被记录在链上。

发送交易的流程

正常情况下,发送一笔交易的流程如下:

创建 -> 签名 -> 广播 -> (等待上链) -> 在链上查询到交易信息

创建交易

任一非查询类的方法都会返回一个未签名的交易,例如:

public TransactionExtention transfer(String fromAddress, String toAddress, long amount) throws IllegalException {

        ByteString rawFrom = parseAddress(fromAddress);
        ByteString rawTo = parseAddress(toAddress);

        TransferContract req = TransferContract.newBuilder()
                .setOwnerAddress(rawFrom)
                .setToAddress(rawTo)
                .setAmount(amount)
                .build();
        TransactionExtention txnExt = blockingStub.createTransaction2(req);

        if(SUCCESS != txnExt.getResult().getCode()){
            throw new IllegalException(txnExt.getResult().getMessage().toStringUtf8());
        }

        return txnExt;
    }

添加参数

wrapper.TransactionBuilder允许你在签名之前为交易添加参数,例如:

TransactionBuilder builder = new TransactionBuilder(transaction);
builder.setFeeLimit(100000000L);
builder.setMemo("memo");
//call TransactionBuilder.build() to get a new transaction
builder.build();

注意,只有触发智能合约的交易才需要设置feeLimit。

签名

有两种方式可以签名:

使用绑定的私钥签名

每一个ApiWrapper实例在初始化时都绑定了一个私钥(或是一个64位的十六进制字符串)。直接调用签名方法即可。

Transction signedTransaction = wrapper.signTransaction(transaction);

使用指定的私钥签名

无论在初始化时使用了什么私钥,你都可以指定任何其他的私钥用作签名:

Transaction signedTransaction = wrapper.signTransaction(transaction, SECP256K1.KeyPair);

参考 org.tron.trident.crypto.SECP256K1 来构造自定义的 SECP256K1.KeyPair

广播

交易哈希会因为对交易的任何改动发生变化(除了添加签名)。

交易哈希会在广播之前重新计算。

wrapper.broadcastTransaction(signedTransaction);

//return transaction hash if successfully broadcasted, otherwise the error code

Updated 28 days ago

发送交易


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.