ESDT 代币集成指南
原文:https://docs.elrond.com/integrators/esdt-tokens-integration-guide
## 简介
集成 ESDT 代币支持可以与原生 EGLD 集成一起完成,因此应该参考 egld 集成指南。
唯一的区别是存储 ESDT 代币及其代币标识符和小数位数的内部方式,以及识别和解析 ESDT 交易的不同方法。
ESDT 交易解析
考虑到想要支持 ESDT 代币的平台已经支持 EGLD 转账,本节将提供在现有系统上集成的附加步骤。
如果是,则网络上的所有交易都被解析,因此集成器将检查交易的发送者或接收者是否是感兴趣的地址。除此之外,还可以检查交易是否是成功的 ESDT 转账。如果是,则可以进一步解析所传送的代币、金额和接收者。
必须遵循以下步骤:
- 检查交易是否为 ESDT 转账(数据字段格式为
ESDTTransfer@<tokenID hexadecimal>@<amount hexadecimal>
)。更多详情此处 - 解析日志和事件中的代币传输详细信息。更多详情此处
举例
假设我们正在观察这些地址:
erd1zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3z92425g3zygs3mthts
erd1venxvenxvenxvenxvenxvenxvenxvenxvenxvenxvenxvenxvenq5ezmpv
我们支持以下代币:
TKN-99hh44
(十六进制编码:544b4e2d393968683434
)TKN2-77hh33
(十六进制编码:544b4e322d373768683333
)
因此,我们将寻找具有以下结构的交易:
TokenTransferTransaction {
Sender: erd1....
Receiver: erd1zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygspavcaj OR erd1venxvenxvenxvenxvenxvenxvenxvenxvenxvenxvenxvenxvenq5ezmpv
Value: 0
GasLimit: 60000000
Data: "ESDTTransfer" +
"@<token identifier hex>" + // 544b4e2d393968683434 OR 544b4e322d373768683333
"@<amount hex>"
}
关于参数如何编码的更多细节,请点击这里。
不遵循这种结构的任何其他交易都必须被省略。
当我们发现这样一个交易时,我们将获取该交易的日志,如这里描述的。日志将为我们提供关于接收者、代币和要转移的金额的信息。如果日志在那里,我们确信传输是成功的,我们可以开始处理提取的数据。
发送 ESDT 代币
向给定接收者发送 ESDT 代币可以通过准备并向网络广播遵循此处描述的格式的交易来完成。
此外,许多 SDK 都支持构建代币转移交易。几个例子是:
余额检查
有时,或者出于安全原因,在执行交易之前,集成者会想要检查一些地址的代币余额。这可以通过获取地址代币平衡端点来执行。
获取代币属性
每个代币都有一些属性,如名称、标记、代币标识符或小数位数。这些属性可以通过这里描述的 API 调用获取。
有用的工具
- ESDT 的文件可以在这里找到。
- ESDT API 文件可以在这里找到。
- erdjs 助手函数可以在这里找到。
- erdjs 代币转移交易生成器可在这里找到。
- erdjava helper 函数可以在这里找到。
- erd Java token transfer transactions builder 可以在这里找到。
- @ elrond network/transaction-decoder。