TRON Developer Hub CN

TRON开发者中心

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

Get Started    

使用TRON Docker快速入门

简介

本指南引导用户完成TRON Docker快速启动映像设置。 该图像为用户提供了一个专用网络,其中包含一个完整节点,一个Solidity节点,一个事件服务器,默认情况下,每个帐户中有10个TRX帐户充满10,000个测试TRX。 帐户提供相应的私钥。 因此, Docker快速启动的目的 是快速提供与本地测试环境,通过它们可以相互作用并了解TRON区块链用户。

软件依赖

Docker 请参考Docker官方网站下载并安装最新的Docker版本:

Docker安装为Mac DockerWindows安装


Node.JS控制台 这将用于通过Tron-Web与完整和稳定节点进行交互。


Node.JS控制台下载


克隆TRON Docker快速开始

git clone https://github.com/tronprotocol/docker-tron-quickstart.git

设置TRON Docker

什么是TRON Docker?

Tron Docker Structure

Tron Docker Structure

TRON Docker 快速入门通过使用公开完整节点、有效性节点和事件服务器的映像为 TRON 的开发人员创建一个专用网络。 完整节点存储所有交易数据并将块数据与Solidity节点同步。 一旦您在智能合约中触发事件,MongoDB就会存储事件日志数据,然后为要查询的事件服务器提供数据。 :Docker 图像 仅在本地设备上设置专用测试网。 这意味着它无法连接到Shasta测试网或TRON主网。 要连接到主网或Shasta测试网,请访问设置 完整节点

设置

首先,检查应该在 docker run 命令中引用的 最新版本的TRON Docker Quickstart。 执行 docker run 命令时,请确保通过从Docker Hub页面指定相应的标记名称编号来运行最新版本。 在下图中,最新的Docker版本是1.1.3。

关于版本号的说明

对于最新的 Java-Tron Odyssey 3.2 版本,最低兼容Tron Quickstart版本是Tron Quickstart 1.2.2 。请确保您已安装此版本。

下一个步骤是执行 docker 运行 命令。 docker run 命令公开五个端口:端口8090和8091用于完整节点和Solidity节点HTTP。 端口50051和50052用于完整节点和Solidity节点gRPC。 端口8092用于事件服务器。 在命令语法的末尾,请参考您在Docker Hub页面中看到的 最新版本号

docker run -it -p 8091:8091 -p 8092:8092 -p 8090:8090 -p 50051:50051 -p 50052:50052 --rm --name tron trontools/quickstart:1.1.3

输出:

成功输出的删节版本类似于以下内容:

Tron Quickstart v1.1.15


Run MongoDB...
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 1.5 0.1 20044 3364 pts/0 Ss+ 02:56 0:00 bash ./start.sh
root 12 51.0 3.4 1092444 70888 pts/0 Sl+ 02:56 0:00 mongod
root 39 0.0 0.1 36068 3220 pts/0 R+ 02:56 0:00 ps aux
Set the events db...
MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017

...

[HPM] Proxy created: / -> http://127.0.0.1:18190
[HPM] Proxy created: / -> http://127.0.0.1:18191
[HPM] Proxy created: / -> http://127.0.0.1:18891

 Full Node listening on http://127.0.0.1:8090
 Solidity Node listening on http://127.0.0.1:8091
 Event Server listening on http://127.0.0.1:8092
 
...

ADMIN /admin/accounts-generation
Waiting when nodes are ready to generate 10 accounts...
(1) Waiting for sync...
(2) Waiting for sync...
...
Loading the accounts and waiting for the node to mine the transactions...
(1) Waiting for receipts...
Sending 10000 TRX to TFYPpTr7E21ZaPHV6Kt8eoCF6FD7Y6ahXJ
Sending 10000 TRX to TGVQgxqNCSvVFBYpqq2FN1dxFVj4AT8XAm
Sending 10000 TRX to TWqXfDqhBvLUVzR6omFqdbh4pz2SMg9Nfn
Sending 10000 TRX to TVDqaqHnpjzExRvrUE4UaVMbugFu2FrPEN
Sending 10000 TRX to TGAUQKki2uZMsbTkm2utEoE5wgr3hQuw3S

...

Available Accounts
==================

(0) TFYPpTr7E21ZaPHV6Kt8eoCF6FD7Y6ahXJ (10000 TRX)
(1) TGVQgxqNCSvVFBYpqq2FN1dxFVj4AT8XAm (10000 TRX)
(2) TWqXfDqhBvLUVzR6omFqdbh4pz2SMg9Nfn (10000 TRX)
(3) TVDqaqHnpjzExRvrUE4UaVMbugFu2FrPEN (10000 TRX)
(4) TGAUQKki2uZMsbTkm2utEoE5wgr3hQuw3S (10000 TRX)

... 

# 10 Addresses Shown

Private Keys
==================

(0) c489d91ab038579b8475b430ce74edd36c5829b9d13fbf9ae243c701e51230c7
(1) 781f2eed0dfad7668f1267aed3a28310de8554be9e916ed6f49f74dced46add3
(2) 579461e9c76da2a40bcba3a8f63a453b01bef5b0a0feb8d7418d5235d13e049e
(3) 27045b6a7b0d2426f001af443c731ea792fc7c0190aa07f3f2750ca5a0b0e324
(4) 6580ad6f518fc889e936fe38ffe8ba9bd2888dc12516a8f27403909d681cec09

...

# 10 Corresponding Private Keys Shown

HD Wallet
==================
Mnemonic: organ genius humble smoke copy cup firm review flush seminar essence winter
Base HD Path: m/44'/60'/0'/0/{account_index}

GET 200 - 10766.162 ms

要验证完整节点,Solidity节点,事件服务器和MongoDB运行状态,请打开另一个终端窗口并运行以下命令。

docker exec -it tron tail -f /tron/FullNode/logs/tron.log # check full node log
docker exec -it tron tail -f /tron/SolidityNode/logs/tron.log# check solidity node log
docker exec -it tron mongo

如果您有任何疑问,请返回review

要验证映像是否正常运行,请执行命令 docker exec -it tron ps aux。 输出应类似于以下:

docker exec -it tron ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 20044 3456 pts/0 Ss+ 22:30 0:00 bash ./start.sh
root 44 0.4 3.7 1102748 75416 pts/0 SLl+ 22:30 0:04 mongod --auth
root 76 0.0 0.0 20044 260 pts/0 S+ 22:30 0:00 bash ./start.sh
root 78 0.9 18.0 3015448 365272 pts/0 Sl+ 22:30 0:10 java -jar Event
root 79 0.0 0.0 20044 260 pts/0 S+ 22:30 0:00 bash ./start.sh
root 81 0.0 0.0 20044 260 pts/0 S+ 22:30 0:00 bash ./start.sh
root 83 1.9 13.3 3074716 270280 pts/0 Sl+ 22:30 0:20 java -jar FullN
root 84 1.3 17.0 3134072 346592 pts/0 Sl+ 22:30 0:13 java -jar Solid
root 123 0.0 3.1 940280 64252 pts/0 Sl+ 22:30 0:00 node /tron/app
root 278 0.0 0.1 36068 3304 pts/1 Rs+ 22:48 0:00 ps aux

查询帐户信息

如果您关闭终端或只想再次显示帐户和私钥列表,请运行以下API调用:

curl http://127.0.0.1:8090/admin/accounts

Tron-Studio智能合约

Tron-Studio是一个用于开发、部署和调试基于TVM的智能合约的IDE。 GRPC端口与Tron Docker完整节点配合使用,可以注册帐户,部署智能合约以及触发智能合约。

设置

请确保您的系统上安装了 JDK 1.8环境。 克隆Tron-Studio存储库,然后导航到 tron-studio 目录。

git clone https://github.com/tronprotocol/tron-studio

运行gradlew build:

cd ~/tron/tron-studio
./gradlew build -x test -x check # build project

Starting a Gradle Daemon (subsequent builds will be faster)
Download http://mvnrepository.com/com/github/jengelman/gradle/plugins/shadow/2.0.2/shadow-2.0.2.pom
Download http://mvnrepository.com/org/sonarsource/scanner/gradle/sonarqube-gradle-plugin/2.6/sonarqube-gradle-plugin-2.6.pom
Download http://mvnrepository.com/com/google/protobuf/protobuf-gradle-plugin/0.8.3/protobuf-gradle-plugin-0.8.3.pom
Download http://mvnrepository.com/commons-lang/commons-lang/2.6/commons-lang-2.6.pom
Download http://mvnrepository.com/com/google/guava/guava/18.0/guava-18.0.pom
..........
..........
BUILD SUCCESSFUL in 56s
13 actionable tasks: 13 executed

保持在同一目录并执行jar文件以启动Tron-Studio:

java -jar build/libs/TronStudio.jar

Tron-Studio IDE将如下所示启动:

Tron-Studio

Tron-Studio

运行智能合约

将以下智能合约复制到Tron-Studio编辑器中。

pragma solidity ^0.4.23;

contract HelloWorld {
 // Define variable message of type string
 string message;
 event test(uint res);
 
 // Write function to change the value of variable message
 function postMessage(string value) public returns (string) {
 message = value;
 emit test(8);
 return message;
 }
 
 // Read function to fetch variable message
 function getMessage() public view returns (string){
 return message;
 }
}

单击 Compile 按钮。 成功编译会在右下角弹出一个弹出窗口,让您知道它是成功的。

Tron Studio Compile Panel

Tron Studio Compile Panel

点击在IDE右上拐角的设置按钮。 这将打开“现有设置”窗口。

Tron-Studio Settings

Tron-Studio Settings

调节 本地TVM 的地址端口,以反映 TRON Docker GRPC完全节点端口,这是50051。 请记住, Tron-Studio仅通过gRPC端口与外部环境进行交互.

点击OK保存设置。 然后单击刷新按钮以确保在本地TVM上选择了gRPC端口。 现在单击 Deploy 按钮以部署合同的实例。

Tron Studio Run Panel

Tron Studio Run Panel

一旦合约部署到本地测试网,通过在中心底部窗口中展开事务的详细信息来验证部署是否成功。 结果 类别的值为 成功 表示成功部署。 现在我们可以测试已部署的合同。 在“部署联系人”面板中展开合同。 您将看到 postMessagegetMessage的两个函数。 输入字符串值“1000 Trx”并单击 postMessage 按钮以触发状态更改功能。 然后单击 getMessage 按钮查询更改。 这将在控制台面板中显示“1000 Trx”消息。

Tron-Web 交互

介绍

到目前为止,智能合约已部署在您当地的私人测试网上。 本节将引导用户通过名为 Tron-Web的API库与完整节点,Solidity节点和部署的智能合约进行交互。 本 指南的目的 是给用户与生态系统交互的感觉。

Node.JS控制台

docker-tron-quickstart 文件夹的 app 文件夹中,有一个名为 tronWeb.js的JavaScript文件。 完整节点,Solidity 节点和事件服务器的默认地址指向本地Docker Quickstart节点的HTTP端口。

const TronWeb = require('tronweb')

let fullNode = 'http://127.0.0.1:8090'
let solidityNode = 'http://127.0.0.1:8091'
let eventServer = 'http://127.0.0.1:8092'
let defaultPrivateKey = 'da146374a75310b9666e834ee4ad0866d6f4035967bfc76217c5a495fff9f0d0'

global.tronWeb = new TronWeb(
  fullNode,
  solidityNode,
  eventServer,
  defaultPrivateKey
)

require('repl').start({})

在新的终端中,导航到 docker-tron-quickstart 目录。 安装npm依赖项并执行 节点tronWeb。 这将进入Node.JS控制台。

cd docker-tron-quickstart
cd app
npm install
node tronWeb

查询API调用

我们将运行一个简单的API调用来查询我们的智能合约交易信息。 这将使用 tronWeb.trx.getTransactionInfo API调用。 在Tron-Studio中,扩展原始智能合约的部署详细信息显示 transaction_id

与TRANSACTION_ID作为参数执行所述API调用输出以下JSON数据:

Executing the API call in Terminal 1

Executing the API call in Terminal 1

状态更改API调用

我们现在将对 postMessage 函数进行API调用,在您的私有Docker区块链上记录一条新消息,然后输出该消息。 创建一个具有以下代码的Javascript程序。 在代码中,确保您的本地TVM URL和端口正确,并将您的智能合约地址替换为 contractAddress 字段。 如果您愿意,您也可以修改 postMessage 字符串输入:

const TronWeb = require('tronweb');
const HttpProvider = TronWeb.providers.HttpProvider;
const fullNode = new HttpProvider('http://127.0.0.1:8090');    //Your local TVM URL  
const solidityNode = new HttpProvider('http://127.0.0.1:8091');
const eventServer = 'http://127.0.0.1:8092';
const privateKey = 'da146374a75310b9666e834ee4ad0866d6f4035967bfc76217c5a495fff9f0d0';

const tronWeb = new TronWeb(
    fullNode,
    solidityNode,
    eventServer,
    privateKey
);

async function changestate(){

  let contractAddress = 'TAA6PHMkrQs5bZp7cBYcfdWES9EMb5BZaK';   //Your address
  let contract = await tronWeb.contract().at(contractAddress);
  let resultPost = await contract.postMessage("TRON to the Future").send();
  let resultGet = await contract.getMessage().call();
  console.log('resultGet: ', resultGet);
}

changestate()

分解程序:程序首先定义本地Docker节点和事件服务器的地址和端口。 此信息存储在 tronWeb 对象中。 定义一个名为 changestate 的函数然后执行。 该函数首先定义合同对象。 然而,它执行该 的postMessage 使用功能 。发送() 的方法,以及所述 的getMessage 使用函数 .call() 方法。 最后,该函数输出 getMessage 结果。

输出看起来像:

State changing function posted "TRON to the Future"

State changing function posted "TRON to the Future"

恭喜! 您现在已经设置了本地TRON区块链,部署了您的智能合约,通过TronWeb API调用不可变地更改了区块链,并查询了结果。

使用TRON Docker快速入门


Suggested Edits are limited on API Reference Pages

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