[TOC]

Sự phát triển của công nghệ blockchain đang thúc đẩy giao dịch định lượng vào kỷ nguyên Web3. Là một công cụ giao dịch định lượng hàng đầu, nền tảng giao dịch định lượng FMZ từ lâu đã khám phá hướng đi của Web3 và cung cấp các chức năng liên quan đến Ethereum, cho phép người dùng tương tác với các hợp đồng thông minh, quản lý tiền và thực hiện các chiến lược giao dịch tự động trực tiếp trên chuỗi.
Ngày nay, nền tảng FMZ đã mở rộng hơn nữa khả năng giao dịch Web3 và hỗ trợ mạng Tron (TRX), cho phép người dùng triển khai các chiến lược giao dịch định lượng trên hai chuỗi công khai chính là Ethereum và Tron. Bản nâng cấp này không chỉ cải thiện tính linh hoạt của các giao dịch chuỗi chéo mà còn cung cấp cho các nhà giao dịch nhiều khả năng hơn để quản lý tài sản trên chuỗi.
Trong bài viết này, chúng tôi sẽ trình bày chi tiết:
Chi tiết giới thiệu TRX-TRON (Trích từ Feixiaohao)
TRON được thành lập bởi Justin Sun vào tháng 9 năm 2017 và đã đạt được nhiều thành tựu nổi bật kể từ khi ra mắt mainnet vào tháng 5 năm 2018. Vào tháng 7 năm 2018, hệ sinh thái TRON đã hoàn tất tích hợp với BitTorrent, đơn vị tiên phong trong việc cung cấp dịch vụ Web 3.0 phi tập trung với hơn 100 triệu người dùng hoạt động hàng tháng. Trong những năm gần đây, mạng lưới TRON đã hoạt động rất tốt. Dữ liệu TRONSCAN cho thấy tính đến tháng 10 năm 2022, tổng số người dùng chuỗi công khai TRON đã vượt quá 115 triệu, số lượng giao dịch đã vượt quá 4 tỷ và tổng giá trị bị khóa (TVL) đã vượt quá 13,2 tỷ đô la Mỹ. Mạng lưới TRON đã hoàn toàn phi tập trung vào tháng 12 năm 2021 và hiện là một tổ chức tự trị phi tập trung do cộng đồng quản lý (DAO). Vào tháng 5 năm 2022, TRON đã công bố ra mắt đồng tiền ổn định siêu thế chấp phi tập trung USDD, được hỗ trợ bởi ngân hàng trung ương tiền điện tử của ngành, TRON Joint Reserve, đánh dấu sự gia nhập chính thức của TRON vào kỷ nguyên đồng tiền ổn định phi tập trung. Vào tháng 10 năm 2022, Dominica tuyên bố TRON là cơ sở hạ tầng blockchain quốc gia được chỉ định chính thức của nước này, biến TRON thành chuỗi công khai lớn đã đạt được thỏa thuận hợp tác với một quốc gia có chủ quyền để phát triển cơ sở hạ tầng blockchain. TRON đã được ủy quyền phát hành đồng tiền người hâm mộ Dominica, Dominica Coin (DMC), nhằm nâng cao khả năng hiển thị toàn cầu về di sản thiên nhiên và các điểm tham quan du lịch của Dominica. Đồng thời, bảy token chính thuộc TRON đã được cấp tư cách là tiền kỹ thuật số hợp pháp và phương tiện thanh toán hợp pháp tại Dominica.
Thông lượng cao: Thông lượng cao đạt được bằng cách cải thiện TPS trong TRON và tính thực tế của nó đối với việc sử dụng hàng ngày đã vượt qua Bitcoin và Ethereum.
Khả năng mở rộng: Dựa trên khả năng mở rộng tốt và các hợp đồng thông minh hiệu quả, các ứng dụng có thể có nhiều phương pháp triển khai hơn trong TRON và TRON có thể hỗ trợ số lượng lớn người dùng.
Độ tin cậy cao: TRON có cấu trúc mạng lưới, tài sản của người dùng, giá trị nội tại và mức độ đồng thuận phi tập trung cao hơn mang lại cơ chế phân phối phần thưởng được cải thiện.
grpc.trongrid.io:50051
Bạn có thể sử dụng các nút JSON-RPC, nút REST, v.v. từ các nhà cung cấp nút khác (bạn có thể sử dụng HttpQuery để yêu cầu). Cuộc gọi duy nhất tới đóng gói đối tượng trao đổi trên FMZ là phương thức grpc.
Bạn cần chuẩn bị một ví TRON. Bạn có thể sử dụng OKX, imToken, v.v. hoặc bạn có thể tự tạo một ví.
Trước khi nền tảng FMZ hỗ trợ Tron, nó đã đi đầu trong việc hỗ trợ phát triển Web3 của Ethereum. Bạn có thể xem lại các bài viết trước để tìm hiểu cách kết nối với sàn giao dịch phi tập trung UniSwap. Vì Tron tương thích với Ethereum và tích hợp một số tính năng của ETH và EOS nên nó có những lợi thế độc đáo trong việc thực hiện hợp đồng thông minh và tương tác trên chuỗi. Cấu hình các đối tượng trao đổi Tron (ví, thông tin nút) trên nền tảng FMZ gần giống với cấu hình các đối tượng trao đổi Ethereum (ví, thông tin nút).
Trên trang Thêm trao đổi:

Cấu hình ví, chọn TRON làm ChainType và sử dụng địa chỉ nút RPC mặc định.
Chúng ta có thể sử dụng các công cụ gỡ lỗi của nền tảng để kiểm tra.
Công cụ gỡ lỗi: https://www.fmz.com/m/debug
Đúng như tên gọi, phương pháp này giống hệt phương pháp của Ethereum và chức năng của chúng cũng giống hệt nhau. Phương pháp này được sử dụng để đọc số dư TRX trong ví Tron được chỉ định.
curl https://docs-demo.tron-mainnet.quiknode.pro/jsonrpc \
-X POST \
-H "Content-Type: application/json" \
--data '{"method":"eth_getBalance","params":["0x41f0cc5a2a84cd0f68ed1667070934542d673acbd8", "latest"],"id":1,"jsonrpc":"2.0"}'
Dữ liệu số dư được yêu cầu là một giá trị thập lục phân rất lớn, đòi hỏi phải có hàm chuyển đổi mà chúng tôi đã sử dụng trong chiến lược liên quan đến Ethereum trước đây.
function toAmount(s, decimals) {
return Number((BigDecimal(BigInt(s)) / BigDecimal(Math.pow(10, decimals))).toString())
}
function toInnerAmount(n, decimals) {
return (BigDecimal(n) * BigDecimal(Math.pow(10, decimals))).toFixed(0)
}
Vì địa chỉ ví được sao chép từ ví Tron là địa chỉ được mã hóa base58 nên cần phải chuyển đổi nó thành tham số được mã hóa hex trước khi có thể sử dụng.
function base58ToHex(base58Str) {
const ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
var num = BigInt(0)
for (var char of base58Str) {
var digit = BigInt(ALPHABET.indexOf(char));
if (digit === BigInt(-1)) throw new Error("Invalid Base58 character: " + char)
num = num * BigInt(58) + digit
}
var hex = num.toString(16)
if (hex.length % 2 !== 0) {
hex = "0" + hex
}
return "0x" + hex
}
Sau khi chúng ta chuyển đổi địa chỉ, chúng ta có thể gọi đây làeth_getBalancePhương pháp.
Mã thử nghiệm đầy đủ:
function toAmount(s, decimals) {
return Number((BigDecimal(BigInt(s)) / BigDecimal(Math.pow(10, decimals))).toString())
}
function toInnerAmount(n, decimals) {
return (BigDecimal(n) * BigDecimal(Math.pow(10, decimals))).toFixed(0)
}
function base58ToHex(base58Str) {
const ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
var num = BigInt(0)
for (var char of base58Str) {
var digit = BigInt(ALPHABET.indexOf(char));
if (digit === BigInt(-1)) throw new Error("Invalid Base58 character: " + char)
num = num * BigInt(58) + digit
}
var hex = num.toString(16)
if (hex.length % 2 !== 0) {
hex = "0" + hex
}
return "0x" + hex
}
function main() {
var tronAddress = "Tron 钱包地址"
var hexAddress = base58ToHex(tronAddress).substring(2, 44)
var jsonrpcBase = "https://go.getblock.io/xxx/jsonrpc" // 具体的JSON-RPC节点
var body = {
"method": "eth_getBalance",
"params": [hexAddress, "latest"],
"id":1,
"jsonrpc":"2.0"
}
var options = {
method: "POST",
body: JSON.stringify(body),
headers: {"accept": "application/json", "content-type": "application/json"},
timeout: 1000
}
var ret = JSON.parse(HttpQuery(jsonrpcBase, options))
var balance = ret.result
return toAmount(balance, 6)
}
Độ chính xác của token TRX là 6, vì vậy hãy điền tham số 6 khi xử lý bigNumber.
Kiểm tra trong công cụ gỡ lỗi của nền tảng FMZ:

Khi so sánh số dư TRX trong ví được truy vấn trên tronscan, dữ liệu cho thấy sự nhất quán.

Nội dung thực hành chính trên nền tảng FMZ là phương thức gọi của nút grpc. Do không gian có hạn, chỉ liệt kê các phương thức gọi thường dùng ở đây.
Gọi nguyên mẫu:exchange.IO("api", "tron", "method name", ...). “tên phương thức” là tên của phương thức sẽ được gọi.
Truy vấn thông tin tài khoản ví.
function main() {
var account = exchange.IO("api", "tron", "GetAccount", "tron 钱包地址") // tron 钱包地址 :填写实际的钱包地址。
return account
}
Thông tin cuộc gọi lại (trích đoạn):
{
"address": {},
"balance": 72767348, // 即钱包的TRX余额:72.767348
"asset_optimized": true,
"create_time": 1693463943000,
...
Kiểm tra chuyển khoản.
function main() {
return exchange.IO("api", "tron", "GetTransactionInfoByID", "305f0c2487095effcf9e2db61f021f976707611424cba57e1d6464736f7f49e7")
}
Dữ liệu trả về:
{"id":{},"fee":1100000,"blockNumber":70192360,"blockTimeStamp":1741229766000,"contractResult":[{}],"receipt":{"net_fee":100000}}
Trả về tất cả thông tin nút.
function main() {
return exchange.IO("api", "tron", "ListNodes")
}
Truy vấn thông tin chính xác của mã thông báo TRC20
function main() {
return exchange.IO("api", "tron", "TRC20GetDecimals", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t") // USDT
}
Truy vấn số dư của một token TRC20 nhất định trong một địa chỉ ví nhất định.
function main() {
return exchange.IO("api", "tron", "TRC20ContractBalance", "TRX 钱包地址", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t")
}
Trả về thông tin khối mới nhất trên blockchain hiện tại.
function main() {
return exchange.IO("api", "tron", "GetNowBlock")
}
Dữ liệu trả về:
{
"transactions": [
{
"transaction": {
"raw_data": {
"ref_block_bytes": {},
"ref_block_hash": {},
"expiration": 1741489083000,
"contract": [
{
"type": 1,
"parameter": {
"type_url": "type.googleapis.com/protocol.TransferContract",
"value": {}
...
Truy vấn thông tin băng thông của tài khoản TRON.
function main() {
return exchange.IO("api", "tron", "GetAccountNet", "TWTbnQuiWvEg...")
}
Dữ liệu trả về:
{
"freeNetLimit": 600,
"TotalNetLimit": 43200000000,
"TotalNetWeight": 26982826755
}
Tạo tài khoản Tron.
function main() {
return exchange.IO("api", "tron", "CreateAccount", "TWTbnQ...", "TKCG9...")
}
Cố gắng tạo một tài khoản hiện có sẽ trả về lỗi:
Futures_OP 4: Contract validate error : Account has existed
Nhận thông tin khối dựa trên chiều cao khối.
function main() {
return exchange.IO("api", "tron", "GetBlockByNum", 70227286)
}
Dữ liệu trả về:
{
"transactions": [
{
"transaction": {
"raw_data": {
"ref_block_bytes": {},
"ref_block_hash": {},
"expiration": 1741334628000,
"contract": [
...
TRC20GetName, truy vấn tên mã thông báo TRC20 dựa trên địa chỉ hợp đồng. TRC20GetSymbol, truy vấn biểu tượng mã thông báo TRC20 theo địa chỉ hợp đồng
function main() {
Log("TRC20GetName:", exchange.IO("api", "tron", "TRC20GetName", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"))
Log("TRC20GetSymbol:", exchange.IO("api", "tron", "TRC20GetSymbol", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"))
}
Dữ liệu trả về:
2025-03-09 11:18:43.083 信息 TRC20GetSymbol: USDT
2025-03-09 11:18:43.006 信息 TRC20GetName: Tether USD
function main() {
// 例如某个转账数据中的Data,转换为可读数值
Log("ParseTRC20NumericProperty:", exchange.IO("api", "tron", "ParseTRC20NumericProperty", "0x00000000000000000000000000000000000000000000000000000001a13b8600")) // 7000000000
// 例如某个转账数据中的Data,转换为可读字符串
Log("ParseTRC20StringProperty:", exchange.IO("api", "tron", "ParseTRC20StringProperty", "0x0000000000000000000000000000000000000000000000000000000055534454")) // USDT
}
Để gọi hợp đồng TRC20, chúng ta sử dụng phương thức balanceOf của hợp đồng TRC20, trước tiên mã hóa nó, sau đó gọi nó bằng TRC20Call.
function main() {
var data = exchange.IO("pack", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", "balanceOf", "TWTbnQuiWvEg...")
var tx = exchange.IO("api", "tron", "TRC20Call", "TWTbnQuiWvEg...", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", data, true, 0)
return tx.constant_result
}
Phương pháp hằng số không yêu cầu phát sóng. Kết quả cuộc gọi được ghi lại trong tx.constant_result.
Xây dựng dữ liệu trans.
function main() {
var trans = exchange.IO("api", "tron", "Transfer", "TWTb...", "TKCG9FN...", 1000000)
return trans
}
TWTb...: Địa chỉ của ví TRX A.TKCG9FN...: Địa chỉ của ví TRX B.Dữ liệu trả về:
{
"transaction": {
"raw_data": {
"ref_block_bytes": {},
"ref_block_hash": {},
"expiration": 1741493085000,
"contract": [
{
"type": 1,
"parameter": {
"type_url": "type.googleapis.com/protocol.TransferContract",
"value": {}
}
}
],
"timestamp": 1741493025759
}
},
"txid": {},
"result": {
"result": true
}
}
Nhận ABI của hợp đồng dựa trên địa chỉ hợp đồng.
function main() {
var usdtABI = exchange.IO("api", "tron", "GetContractABI", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t")
return usdtABI
}
Dữ liệu trả về:
{
"entrys": [
{
"constant": true,
"name": "name",
"outputs": [
{
"type": "string"
}
],
"type": 2,
"stateMutability": 2
},
{
"constant": true,
"name": "deprecated",
"outputs": [
{
"type": "bool"
}
],
"type": 2,
"stateMutability": 2
},
...
Đối vớiTKCG9FN1j...Chuyển 1TRX vào địa chỉ ví tron.
function main() {
var ownerAddress = exchange.IO("address")
var ret = exchange.IO("api", "tron", "Transfer", ownerAddress, "TKCG9FN1j...", 1000000)
return ret
}
Gọi phương thức của hợp đồng thông minh.
function main() {
var tx = exchange.IO("api", "tron", "TriggerConstantContract", "TWTbnQu...", "TSUUVjysXV8YqHytSNjfkNXnnB49QDvZpx", "token0()", "")
var ret2 = Encode("raw", "raw", "hex", tx.constant_result[0])
Log(ret2) // 000000000000000000000000891cdb91d149f23b1a45d9c5ca78a88d0cb44c18
}
Dữ liệu trả về là địa chỉ token token0 của nhóm giao dịch sunSwap.
Gọi phương thức hợp đồng thông minh trên chuỗi tronbalanceOf,TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6tvìUSDTĐịa chỉ hợp đồng thông minh của mã thông báo.
function toAmount(s, decimals) {
return Number((BigDecimal(BigInt(s)) / BigDecimal(Math.pow(10, decimals))).toString())
}
function main() {
var balance = exchange.IO("api", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", "balanceOf", "Tron 钱包地址")
return toAmount(balance, 6)
}
Bạn có thể kiểm tra số dư USDT trong ví của mình: 0,000019

Nền tảng FMZWeb3 tronĐối tượng trao đổiexchange.IOHàm này thực hiện các chức năng sau.
function main() {
var ret = exchange.IO("api", "tron", "send", "目标TRX钱包地址", 1) // 需要注意,参数1 表示 0.000001 TRX ,需要转换数值为链上数值。
return ret // 转账hash: 305f0c2487095effcf9e2db61f021f9767076114...
}
exchange.IO("base", "rpc address") // rpc address 替换为具体的节点地址
// 或者
exchange.IO("rpc", "rpc address")
exchange.IO("abi", "contract ABI") // contract ABI 替换为具体的合约ABI内容
exchange.IO("address") // 返回tron钱包地址
pack / encode: Mã hóa/đóng gói dữ liệu, gọi phương thức.
function main() {
// 打包TRC20合约的balanceOf方法调用
var data1 = exchange.IO("pack", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", "balanceOf", "TWTbnQu...") // TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t 为USDT合约地址
Log(data1)
var data2 = exchange.IO("encode", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", "balanceOf", "TWTbnQu...")
Log(data2)
Log("data1 == data2:", data1 == data2) // true
// 编码数据为uint256
var data3 = exchange.IO("pack", "uint256", 19) // 数据为: 19
Log(data3)
var data4 = exchange.IO("encode", "uint256", 19)
Log(data4)
Log("data3 == data4:", data3 == data4)
}
encodePacked: Đã mã hóa và đóng gói
function main() {
var data1 = exchange.IO("encodePacked", "address", "TWTbnQu...")
Log(data1)
// e0c12e16a9f713e5f104c...
var data2 = exchange.IO("encode", "address", "TWTbnQu...")
Log(data2)
// 000000000000000000000000 e0c12e16a9f713e5f104c...
}
giải nén / giải mã: Giải nén / giải mã dữ liệu, gọi phương thức.
function main() {
var data = exchange.IO("pack", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", "balanceOf", "TWTbnQu...")
Log(data)
var tx = exchange.IO("api", "tron", "TRC20Call", "TWTbnQu...", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", data, true, 0)
var ret = Encode("raw", "raw", "hex", tx.constant_result[0])
Log(ret)
// 解码
var usdtBalance = exchange.IO("decode", "uint256", ret)
Log("usdtBalance:", usdtBalance)
// 解码
return exchange.IO("unpack", "uint256", ret)
}
exchange.IO("key", "xxx") // xxx 为私钥
exchange.IO("hash", algo, inputFormat, outputFormat, data)Ký bằng khóa riêng được cấu hình hiện tại và trả về dữ liệu đã ký.
var signature = exchange.IO("hash", "sign", "string", "hex", "txHash") // txHash: 具体hash值
Thực hành ban đầu trên sàn giao dịch DEX trên chuỗi Tron: sunSwap. Chúng tôi gọi hợp đồng nhà máy sunSwap, yêu cầu chỉ số của tất cả các cặp giao dịch, sau đó yêu cầu địa chỉ của cặp giao dịch có chỉ số 1.
function main() {
var poolIndexs = exchange.IO("api", "TThJt8zaJzJMhCEScH7zWKnp5buVZqys9x", "allPoolsLength")
Log("poolIndexs:", poolIndexs) // 交易对索引总数
var hexAddress = exchange.IO("api", "TThJt8zaJzJMhCEScH7zWKnp5buVZqys9x", "allPools", exchange.IO("encode", "uint256", 1))
Log("hexAddress:", hexAddress) // 索引为1的交易对地址
}
Do không gian có hạn, chúng tôi sẽ chia sẻ nội dung sunSwap chi tiết với độc giả trong bài viết tiếp theo. Cảm ơn sự ủng hộ của bạn.
Nền tảng giao dịch định lượng FMZ tiếp tục đổi mới trong kỷ nguyên Web3, cung cấp cho các nhà giao dịch định lượng một không gian giao dịch chuỗi rộng hơn. Bằng cách hỗ trợ mạng Tron, FMZ không chỉ nâng cao khả năng giao dịch chuỗi chéo mà còn cho phép người dùng thực hiện hiệu quả các tương tác hợp đồng thông minh, quản lý quỹ và chiến lược giao dịch tự động trong hệ sinh thái Tron.
Trong bài viết này, chúng tôi đã giới thiệu về sự hỗ trợ của nền tảng FMZ cho mạng Tron và triển khai các lệnh gọi phương thức hợp đồng của SunSwap DEX trên chuỗi Tron. Với sự phát triển của công nghệ blockchain, khả năng giao dịch định lượng Web3 sẽ tiếp tục mở rộng. FMZ sẽ tiếp tục tối ưu hóa và cải thiện khả năng Web3 của mình để cung cấp cho các nhà giao dịch định lượng một môi trường giao dịch linh hoạt, an toàn và hiệu quả hơn, giúp người dùng đạt được lợi thế lớn hơn trên thị trường chuỗi khối.
Cảm ơn các bạn đã đọc và ủng hộ.