[TOC]

Perkembangan teknologi blockchain mendorong perdagangan kuantitatif ke era Web3. Sebagai alat perdagangan kuantitatif terkemuka, platform perdagangan kuantitatif FMZ telah lama mengeksplorasi arah Web3 dan menyediakan fungsi terkait Ethereum, yang memungkinkan pengguna berinteraksi dengan kontrak pintar, mengelola dana, dan mengeksekusi strategi perdagangan otomatis langsung di rantai.
Saat ini, platform FMZ telah memperluas kemampuan perdagangan Web3 dan mendukung jaringan Tron (TRX), yang memungkinkan pengguna menerapkan strategi perdagangan kuantitatif pada dua rantai publik utama, Ethereum dan Tron. Peningkatan ini tidak hanya meningkatkan fleksibilitas transaksi lintas rantai, tetapi juga memberi pedagang lebih banyak kemungkinan untuk manajemen aset on-chain.
Dalam artikel ini, kami akan membahas secara rinci:
Detail Pengenalan TRX-TRON (Dikutip dari Feixiaohao)
TRON didirikan oleh Justin Sun pada bulan September 2017 dan telah mencapai banyak prestasi luar biasa sejak peluncuran mainnetnya pada bulan Mei 2018. Pada bulan Juli 2018, ekosistem TRON menyelesaikan integrasinya dengan BitTorrent, pelopor dalam penyediaan layanan Web 3.0 terdesentralisasi dengan lebih dari 100 juta pengguna aktif bulanan. Dalam beberapa tahun terakhir, jaringan TRON telah berkinerja cemerlang. Data TRONSCAN menunjukkan bahwa hingga Oktober 2022, jumlah total pengguna rantai publik TRON telah melampaui 115 juta, jumlah transaksi telah melampaui 4 miliar, dan total nilai terkunci (TVL) telah melampaui US$13,2 miliar. Jaringan TRON sepenuhnya terdesentralisasi pada bulan Desember 2021 dan sekarang menjadi organisasi otonom terdesentralisasi (DAO) yang diatur oleh komunitas. Pada bulan Mei 2022, TRON mengumumkan peluncuran stablecoin super-collateralized terdesentralisasi USDD, yang didukung oleh bank sentral mata uang kripto industri, TRON Joint Reserve, yang menandai masuknya resmi TRON ke era stablecoin terdesentralisasi. Pada bulan Oktober 2022, Dominica mengumumkan bahwa TRON secara resmi ditetapkan sebagai infrastruktur blockchain nasional, menjadikan TRON sebagai rantai publik besar yang telah mencapai perjanjian kerja sama dengan negara berdaulat untuk mengembangkan infrastruktur blockchain. TRON telah diberi wewenang untuk menerbitkan token penggemar Dominica, Dominica Coin (DMC), untuk meningkatkan visibilitas global warisan alam dan objek wisata Dominica. Pada saat yang sama, tujuh token utama di bawah TRON diberikan status mata uang digital legal dan alat pembayaran yang sah di Dominika.
Throughput tinggi: Throughput tinggi dicapai dengan peningkatan TPS di TRON, dan kepraktisannya untuk penggunaan sehari-hari telah melampaui Bitcoin dan Ethereum.
Skalabilitas: Berdasarkan skalabilitas yang baik dan kontrak pintar yang efisien, aplikasi dapat memiliki lebih banyak metode penerapan di TRON, dan TRON dapat mendukung sejumlah besar pengguna.
Keandalan Tinggi: TRON memiliki struktur jaringan yang lebih andal, aset pengguna, nilai intrinsik, dan tingkat konsensus terdesentralisasi yang lebih tinggi menghadirkan mekanisme distribusi hadiah yang lebih baik.
grpc.trongrid.io:50051
Anda dapat menggunakan node JSON-RPC, node REST, dll. dari penyedia node lain (Anda dapat menggunakan HttpQuery untuk meminta). Satu-satunya panggilan ke enkapsulasi objek pertukaran pada FMZ adalah metode grpc.
Anda perlu menyiapkan dompet TRON. Anda dapat menggunakan OKX, imToken, dll., atau Anda dapat membuatnya sendiri.
Sebelum platform FMZ mendukung Tron, platform tersebut telah memimpin dalam mendukung pengembangan Web3 Ethereum. Anda dapat meninjau artikel sebelumnya untuk mempelajari cara terhubung ke bursa terdesentralisasi UniSwap. Karena Tron kompatibel dengan Ethereum dan mengintegrasikan beberapa fitur ETH dan EOS, ia memiliki keunggulan unik dalam eksekusi kontrak pintar dan interaksi on-chain. Mengonfigurasi objek pertukaran Tron (dompet, informasi node) pada platform FMZ hampir sama dengan mengonfigurasi objek pertukaran Ethereum (dompet, informasi node).
Di halaman Tambahkan Bursa:

Konfigurasikan dompet, pilih TRON sebagai ChainType, dan gunakan alamat node RPC default.
Kita dapat menggunakan alat debugging platform untuk mengujinya.
Alat debugging: https://www.fmz.com/m/debug
Seperti namanya, metode ini persis sama dengan metode Ethereum, dan fungsinya sama persis. Metode ini digunakan untuk membaca saldo TRX di dompet Tron yang ditentukan.
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"}'
Data saldo yang diminta adalah nilai heksadesimal yang sangat besar, yang memerlukan fungsi konversi yang kami gunakan dalam strategi terkait Ethereum sebelumnya.
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)
}
Karena alamat dompet yang disalin dari dompet Tron adalah alamat berkode base58, alamat tersebut perlu diubah ke parameter berkode hex sebelum dapat digunakan.
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
}
Setelah kita mengonversi alamatnya, kita dapat menyebutnyaeth_getBalanceMetode.
Kode tes lengkap:
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)
}
Presisi token TRX adalah 6, jadi isi parameter 6 saat memproses bigNumber.
Uji coba pada alat debugging platform FMZ:

Membandingkan saldo TRX di dompet yang ditanyakan pada tronscan, datanya konsisten.

Konten praktik utama pada platform FMZ adalah pemanggilan metode node grpc. Karena keterbatasan ruang, hanya pemanggilan metode yang umum digunakan yang dicantumkan di sini.
Memanggil prototipe:exchange.IO("api", "tron", "method name", ...). “nama metode” adalah nama metode yang akan dipanggil.
Menanyakan informasi akun dompet.
function main() {
var account = exchange.IO("api", "tron", "GetAccount", "tron 钱包地址") // tron 钱包地址 :填写实际的钱包地址。
return account
}
Informasi panggilan balik (kutipan):
{
"address": {},
"balance": 72767348, // 即钱包的TRX余额:72.767348
"asset_optimized": true,
"create_time": 1693463943000,
...
Periksa transfer.
function main() {
return exchange.IO("api", "tron", "GetTransactionInfoByID", "305f0c2487095effcf9e2db61f021f976707611424cba57e1d6464736f7f49e7")
}
Data yang dikembalikan:
{"id":{},"fee":1100000,"blockNumber":70192360,"blockTimeStamp":1741229766000,"contractResult":[{}],"receipt":{"net_fee":100000}}
Mengembalikan semua informasi simpul.
function main() {
return exchange.IO("api", "tron", "ListNodes")
}
Menanyakan informasi akurasi token TRC20
function main() {
return exchange.IO("api", "tron", "TRC20GetDecimals", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t") // USDT
}
Menanyakan saldo token TRC20 tertentu di alamat dompet tertentu.
function main() {
return exchange.IO("api", "tron", "TRC20ContractBalance", "TRX 钱包地址", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t")
}
Mengembalikan informasi blok terkini pada blockchain saat ini.
function main() {
return exchange.IO("api", "tron", "GetNowBlock")
}
Data yang dikembalikan:
{
"transactions": [
{
"transaction": {
"raw_data": {
"ref_block_bytes": {},
"ref_block_hash": {},
"expiration": 1741489083000,
"contract": [
{
"type": 1,
"parameter": {
"type_url": "type.googleapis.com/protocol.TransferContract",
"value": {}
...
Menanyakan informasi lebar pita akun TRON.
function main() {
return exchange.IO("api", "tron", "GetAccountNet", "TWTbnQuiWvEg...")
}
Data yang dikembalikan:
{
"freeNetLimit": 600,
"TotalNetLimit": 43200000000,
"TotalNetWeight": 26982826755
}
Buat akun Tron.
function main() {
return exchange.IO("api", "tron", "CreateAccount", "TWTbnQ...", "TKCG9...")
}
Mencoba membuat akun yang sudah ada akan menghasilkan kesalahan:
Futures_OP 4: Contract validate error : Account has existed
Dapatkan informasi blok berdasarkan tinggi blok.
function main() {
return exchange.IO("api", "tron", "GetBlockByNum", 70227286)
}
Data yang dikembalikan:
{
"transactions": [
{
"transaction": {
"raw_data": {
"ref_block_bytes": {},
"ref_block_hash": {},
"expiration": 1741334628000,
"contract": [
...
TRC20GetName, menanyakan nama token TRC20 berdasarkan alamat kontrak. TRC20GetSymbol, menanyakan simbol token TRC20 sesuai dengan alamat kontrak
function main() {
Log("TRC20GetName:", exchange.IO("api", "tron", "TRC20GetName", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"))
Log("TRC20GetSymbol:", exchange.IO("api", "tron", "TRC20GetSymbol", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"))
}
Data yang dikembalikan:
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
}
Untuk memanggil kontrak TRC20, kita menggunakan metode balanceOf dari kontrak TRC20, pertama-tama mengodekannya, dan kemudian memanggilnya menggunakan 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
}
Metode konstan tidak memerlukan penyiaran. Hasil panggilan dicatat dalam tx.constant_result.
Membangun data trans.
function main() {
var trans = exchange.IO("api", "tron", "Transfer", "TWTb...", "TKCG9FN...", 1000000)
return trans
}
TWTb...: Alamat dompet TRX A.TKCG9FN...: Alamat dompet TRX B.Data yang dikembalikan:
{
"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
}
}
Dapatkan ABI kontrak berdasarkan alamat kontrak.
function main() {
var usdtABI = exchange.IO("api", "tron", "GetContractABI", "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t")
return usdtABI
}
Data yang dikembalikan:
{
"entrys": [
{
"constant": true,
"name": "name",
"outputs": [
{
"type": "string"
}
],
"type": 2,
"stateMutability": 2
},
{
"constant": true,
"name": "deprecated",
"outputs": [
{
"type": "bool"
}
],
"type": 2,
"stateMutability": 2
},
...
TerhadapTKCG9FN1j...Transfer 1TRX ke alamat dompet tron.
function main() {
var ownerAddress = exchange.IO("address")
var ret = exchange.IO("api", "tron", "Transfer", ownerAddress, "TKCG9FN1j...", 1000000)
return ret
}
Panggil metode kontrak pintar.
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
}
Data yang dikembalikan adalah alamat token token0 dari kumpulan perdagangan sunSwap.
Panggil metode kontrak pintar pada rantai tronbalanceOf,TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6tuntukUSDTAlamat kontrak pintar token.
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)
}
Anda dapat memeriksa saldo USDT di dompet Anda: 0,000019

Platform FMZWeb3 tronObjek Pertukaranexchange.IOFungsi ini mengimplementasikan fungsi-fungsi berikut.
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: Mengkode/mengemas data, pemanggilan metode.
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: Dikodekan dan dikemas
function main() {
var data1 = exchange.IO("encodePacked", "address", "TWTbnQu...")
Log(data1)
// e0c12e16a9f713e5f104c...
var data2 = exchange.IO("encode", "address", "TWTbnQu...")
Log(data2)
// 000000000000000000000000 e0c12e16a9f713e5f104c...
}
unpack / decode: Buka kemasan/dekode data, pemanggilan metode.
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)Tanda tangani dengan kunci pribadi yang dikonfigurasi saat ini dan kembalikan data yang ditandatangani.
var signature = exchange.IO("hash", "sign", "string", "hex", "txHash") // txHash: 具体hash值
Praktik awal di bursa DEX pada rantai Tron: sunSwap. Kami memanggil kontrak pabrik sunSwap, meminta indeks semua pasangan perdagangan, lalu meminta alamat pasangan perdagangan dengan indeks 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的交易对地址
}
Karena keterbatasan ruang, kami akan membagikan konten sunSwap yang terperinci kepada para pembaca di artikel berikutnya. Terima kasih atas dukungan Anda.
Platform perdagangan kuantitatif FMZ terus berinovasi di era Web3, menyediakan ruang perdagangan on-chain yang lebih luas bagi pedagang kuantitatif. Dengan mendukung jaringan Tron, FMZ tidak hanya meningkatkan kemampuan transaksi lintas rantai, tetapi juga memungkinkan pengguna untuk secara efisien menjalankan interaksi kontrak pintar, pengelolaan dana, dan strategi perdagangan otomatis dalam ekosistem Tron.
Dalam artikel ini, kami memperkenalkan dukungan platform FMZ untuk jaringan Tron dan menerapkan panggilan metode kontrak SunSwap DEX pada rantai Tron. Dengan berkembangnya teknologi blockchain, kemungkinan transaksi kuantitatif Web3 akan terus berkembang. FMZ akan terus mengoptimalkan dan meningkatkan kemampuan Web3-nya untuk menyediakan lingkungan perdagangan yang lebih fleksibel, aman, dan efisien bagi pedagang kuantitatif, membantu pengguna memperoleh keuntungan lebih besar di pasar on-chain.
Terima kasih telah membaca dan terima kasih atas dukungan Anda.