Solidity

獲取合約地址的最新存款列表

  • March 26, 2022

我有一個可以接收 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];
   }
}

這是一個mappingmapping(address => Tx[]) userTxs;

address的數組在哪裡。sender``Tx[]``struct Tx

除了交易的雜湊值之外,您擁有所有資訊struct Tx,因為它是在交易完成後計算的。

這裡有幾個例子,但我建議你遵循一些教程並閱讀關於solidity的資訊,否則你將在下一步被阻止。

引用自:https://ethereum.stackexchange.com/questions/124768