波场TRON团队为更好的地服务社区开发者及建设者,吸引更多强大力量共同建设TRON全球网络生态社区,特制作TRON开发指南,指南将由浅入深为您介绍在波场网络上所遇见到的问题和注意事项。
一、帐户创建
您可以生成脱机密钥对,其中包括TRON不会记录的地址和私钥。 用户地址生成算法如下:
1. 生成密钥对并提取公钥(表示其x,y坐标的64字节字节数组)。
2. 使用sha3–256函数哈希公钥,并提取结果的最后20个字节。
3. 将41添加到字节数组的开头。 初始地址的长度应为21个字节。
4. 使用sha256函数对地址进行两次哈希,并将前4个字节作为验证码。
5. 将验证码添加到初始地址的末尾,并通过base58编码获取base58check格式的地址。
6. 编码的主网地址以T开头,长度为34个字节。
请注意:采用的sha3协议是KECCAK-256。查看用于生成用户地址的 Java代码演示。
(https://github.com/tronprotocol/wallet-cli/blob/master/src/main/java/org/tron/demo/ECKeyDemo.java)
要使此密钥对成为TRON网络中的帐户,您需要使用TRON网络中已存在的帐户调用以下三个API之一:
● 直接调用Create Account API
● 将TRX转移到新地址
● 将TRC10代币转移到新帐户。 注意:TRC20代币转移无法激活帐户。
在网络确认交易后,您可以查询与TRON网络中的地址匹配的帐户信息。 创建帐户会从创建者处消耗0.1 TRX,或者消耗冻结获得的带宽。
二、交易
生成签名交易:安装NPM库 于 :
https://www.npmjs.com/package/@tronscan/client处或下载:
utils
(https://github.com/tronscan/tronscan-node-client/tree/master/src/utils)
and the lib
(https://github.com/tronscan/tronscan-node-client/tree/master/src/lib)
文件夹至你的项目并于本地使用。或者,您可以使用 API签名和广播流 来生成一个已签署的交易。
创建交易:将 transactionBuilder 和 加密 导入到您的Javascript文件中。
const CryptoUtils = require(“@tronscan/client/src/utils/crypto”);
const TransactionUtils = require(“@tronscan/client/src/utils/transactionBuilder”);
导入的transactionBuilder文件中的此函数将创建交易对象
上面指定的buildTransferTransaction将返回buildTransferContract的值,该值是创建事务对象的函数。
签署交易
导入的加密文件中的此函数将对事务对象进行签名。
成功运行这些功能后,您将拥有一个已签名的事务,可以将其广播到TRON区块链。
完整代码示例:
const CryptoUtils = require(“@tronscan/client/src/utils/crypto”);
const TransactionUtils = require(“@tronscan/client/src/utils/transactionBuilder”);
function transferContractTx() {
const privateKey = “b815adfd6ef133d5a878869cb3a2b31f32d4c1481132a71300c3e125be0ab1a1”;
const token = “TRX”;
const fromAddress = CryptoUtils.pkToAddress(privateKey);
const toAddress = “TQ6pM81JDC2GhrUoNYtZGvPc7SvyqcemEu”;
const amount = 1;
let transaction = TransactionUtils.buildTransferTransaction(token, fromAddress, toAddress, amount);
let signedTransaction = CryptoUtils.signTransaction(privateKey, transaction);
}