Transactions

如何列出來自賬戶地址的交易?

  • February 26, 2019

我有一項小型服務,人們可以在其中交換加密貨幣。每個使用者都有自己的比特幣、萊特幣等地址用於餘額存款。現在我想添加乙太坊。所以我想我會為每個使用者創建帳戶,然後檢查傳入的交易。但據我了解,我無法從帳戶地址獲取交易清單。這很奇怪。即使在 Mist 錢包中,我也看不到乙太幣是從哪裡來的。獲得交易的唯一方法是檢查一些第 3 方區塊鏈瀏覽器。

另外據我了解,正確的方法是創建智能合約,因為它具有必要的 API。但我無法為每個使用者創建聯繫人。

也許我只需要創建 1 個將乙太“重定向”到我的主帳戶的合約,但這對使用者來說不是很友好,因為會要求使用者在交易中添加一些額外的數據,以便我可以了解誰是誰。

任何建議都會有所幫助。

如果我正確理解您的問題,您希望能夠看到誰將 Eth 存入了您的合約地址。這就是事件日誌的用途。

(1)創建一個合約,每次有交易就有一個事件。例如:

contract someContract {   

   address public owner;

   // Set the owner of the contract to be the creator of the contract i.e. you
   function someContract() {
       owner = msg.sender;
   } 

   // This is an event 
   event DepositMade(address _from, uint value);
   event WithdrawalMade(address _to, uint value);

   //Catch all function 
   function() {
       // generate an event when someone sends you Eth
       if (msg.value > 0)
           DepositMade(msg.sender, msg.value);
   }

   // Only the owner of the site can withdraw Eth
   modifier admin { if (msg.sender == owner) _ }

   function withdraw(uint amount, address recipient) admin {
       if(recipient.send(amount))
           WithdrawalMade(msg.sender, msg.value);
       else throw;
   }
}

重要的位是定義事件類型event DepositMade(address _from, uint value)並在發生某些事情時生成事件,DepositMade(msg.sender, msg.value);這些事件儲存在與已部署合約實例的地址相關聯的事件日誌中。

eth_newFilter(2) 您使用 rpc或類似的方式檢索此契約上的事件web3.eth.filter

var filter = web3.eth.filter({fromBlock:0, toBlock: 'latest', address: contractAddress, 'topics':['0x' + web3.sha3('DepositMade(hexstring,uint256)')]});
filter.watch(function(error, result) {
  if(!error) console.log(result);
})

您可以嘗試使用https://etherchain.org/documentation/api/中記錄的 etherchain.org GetAccountTransactions API 。

例如:https ://etherchain.org/api/account/0xbeef281b81d383336aca8b2b067a526227638087/tx/0 將為您提供 https://etherchain.org/account/0xbeef281b81d383336aca8b2b067a526227638087#txsent中顯示的交易

Etherscan 也有一些記錄在案的 API - https://etherscan.io/apis。這是與上述帳戶相同的交易數據的等效 API 呼叫。 http://api.etherscan.io/api?module=account&action=txlist&address=0xbeef281b81d383336aca8b2b067a526227638087&sort=asc

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