如何使用Web3j获取ERC-721 Token 最近交易时间
使用Web3j获取ERC-721 Token 最近交易时间
想要获取ERC-721代币最近一次的交易时间?这篇文章为您提供详细步骤和Java代码示例,帮助您使用Web3j轻松实现。
步骤:
- 连接到以太坊网络: 使用Web3j库连接到您选择的以太坊网络。
- 获取交易历史记录: 使用ERC-721代币合约地址和目标tokenId获取所有交易历史记录。
- 排序找到最新交易: 对交易历史记录进行排序,找到最近一次的交易记录。
- 提取交易时间戳: 从最新交易记录中获取时间戳并转换为可读格式。
代码示例:
// 连接到以太坊网络
Web3j web3j = Web3j.build(new HttpService('https://mainnet.infura.io/v3/your-project-id'));
// ERC-721代币的合约地址
String contractAddress = '0x123456789abcdef...';
// 代币的tokenId
BigInteger tokenId = BigInteger.valueOf(123);
// 获取代币的所有交易历史记录
List<TransferEventResponse> transfers = TransferEventResponse.findTransfers(
web3j, new DefaultBlockParameterNumber(0), new DefaultBlockParameterLatest(),
contractAddress, tokenId);
// 对交易历史记录进行排序,找到最近一次的交易记录
TransferEventResponse latestTransfer = transfers.stream()
.max(Comparator.comparing(TransferEventResponse::getLogIndex))
.orElse(null);
// 从交易记录中获取交易时间戳
if (latestTransfer != null) {
BigInteger timestamp = web3j.ethGetBlockByNumber(
new DefaultBlockParameterNumber(latestTransfer.getBlockNumber()), true)
.send().getBlock().getTimestamp();
Date date = new Date(timestamp.longValue() * 1000);
System.out.println('最近一次交易时间:' + date);
} else {
System.out.println('该代币没有交易历史记录。');
}
重要提示:
- 以上代码适用于ERC-721代币,获取ERC-20代币的交易时间需要使用不同的合约函数和事件。
- 请将示例代码中的占位符替换为您自己的信息。
希望这篇文章能帮助您使用Web3j获取ERC-721代币的最近交易时间!
原文地址: http://www.cveoy.top/t/topic/fY21 著作权归作者所有。请勿转载和采集!