0

我想用solidity、web3、tronweb和nodejs创建一个dex网站。

现在我有一个关于 TRC-20 和 ERC-20 网络中的转移令牌的问题。

在我的网站上,用户可以从另一个网站存入钱包,比如bianance , coinbase , . . . 我为他/她创建一个 TRC-20 或 ERC-20 钱包地址。

在这两个网络中都存在许多令牌现在我的问题是,我怎么知道用户发送或接收哪个令牌?

也许用户想ADA从我的网站等其他网站发送令牌binance

我为这样的用户创建了一个 ERC-20 钱包地址0x5226a51522C23CcBEFd04a2d4C6c8e281eD1d680

用户在币安中输入这个地址,然后ADA在我的网站上向他的钱包发送一些代币。

现在我怎么知道这个令牌是ADA,USDT还是别的什么?

4

1 回答 1

1

对于每个与 ​​EVM 兼容的网络(Etheruem、Tron、BSC...),您需要创建一个Transfer()ERC-20 代币事件的侦听器。

web3.eth.subscribe("logs", {
    address: [
        "0xdac17f958d2ee523a2206206994597c13d831ec7", // Ethereum USDT address
        // can add other tokens
    ],
    topics: [
        // keccak256 hash of the "Transfer(address,address,uint256)" event signature
        "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
    ]
}, (err, event) => {
    console.log(event);
});

您可以subscribe()在 web3文档中找到有关该功能的更多信息- 例如如何仅过滤到您的地址的传输(此代码段侦听您可能不需要的所有传输)。


对于他们自己的区块链上的代币(例如 ADA),您需要为传输实现自定义侦听器。侦听器的架构可能需要在每个网络上有所不同——可能有些可以在传输时发出事件,而有些则需要扫描每个块以将交易发送到您的地址。

请注意,某些加密货币基于多个网络。例如 USDT 在EthereumTronBSC等上有自己的代币(来源:USDT 的 CMC详细页面,选择框“Explorers”)。因此,如果您允许用户USDT在任何网络上转移您,您将需要监听所有这些网络上的传入转移。

于 2021-12-14T11:18:37.550 回答