一、帐户创建
您可以生成脱机密钥对,其中包括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区块链。
完整代码示例:
constCryptoUtils=require("@tronscan/client/src/utils/crypto"); constTransactionUtils=require("@tronscan/client/src/utils/transactionBuilder"); functiontransferContractTx() { constprivateKey ="b815adfd6ef133d5a878869cb3a2b31f32d4c1481132a71300c3e125be0ab1a1"; consttoken ="TRX"; constfromAddress =CryptoUtils.pkToAddress(privateKey); consttoAddress ="TQ6pM81JDC2GhrUoNYtZGvPc7SvyqcemEu"; constamount =1; lettransaction =TransactionUtils.buildTransferTransaction(token, fromAddress, toAddress, amount); letsignedTransaction =CryptoUtils.signTransaction(privateKey, transaction); }