Solidity
獲取合約地址的最新存款列表
我有一個可以接收 ETH 的solidity 合約,我如何在這個合約中編寫一個帶有solidity 的函式來獲取對其進行的最新交易列表,例如我想呼叫這個函式並返回存款列表/對其進行的交易,我需要獲取發件人錢包、交易雜湊和時間。
任何幫助表示讚賞。
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Test { struct Tx { uint amountOut; uint amountIn; uint40 time; address receiver; } mapping(address => Tx[]) userTxs; receive() payable external { Tx memory newTx = Tx({ amountOut: 0, amountIn: msg.value, time: uint40(block.timestamp), receiver: address(this) }); userTxs[msg.sender].push(newTx); } function transfer(address to, uint value) external { Tx memory newTx = Tx({ amountOut: value, amountIn: 0, time: uint40(block.timestamp), receiver: to }); userTxs[address(this)].push(newTx); payable(to).transfer(value); } function getUserTxs(address user) external view returns(Tx[] memory) { return userTxs[user]; } }
這是一個
mapping
,mapping(address => Tx[]) userTxs;
和
address
的數組在哪裡。sender``Tx[]``struct Tx
除了交易的雜湊值之外,您擁有所有資訊
struct Tx
,因為它是在交易完成後計算的。這裡有幾個例子,但我建議你遵循一些教程並閱讀關於solidity的資訊,否則你將在下一步被阻止。