2017-04-26 90 views

回答

1

如果您正在嘗試使用您的智能合約形式閱讀交易,則區塊鏈中的固定語言中的答案是「否」不存在。你可以通過Rob的例子來完成Web3.js,或者在外部數據庫中保存transactiosn的日誌,這就像檢查大量的塊和大量事務以及異常問題的複雜性一樣。

在其他情況下,你可以使用一個外部API用於檢查交易和有歷史,爲例子:https://etherscan.io/apis

3

如果智能合約具有數據結構以記錄這些活動,那麼這將是可能的。

草草準備例如:

pragma solidity ^0.4.6; 

contract TrackPayments { 

    struct PaymentStruct { 
     address sender; 
     uint amount; 
    } 

    // look up the struct with payment details using the unique key for each payment 
    mapping(bytes32 => PaymentStruct) public paymentStructs; 

    // payment keys in order received 
    bytes32[] public paymentKeyList; 

    event LogPaymentReceived(address sender, uint amount); 

    function payMe() public payable returns(bool success) { 
     if(msg.value==0) throw; 
     // make a unique key ... 
     bytes32 newKey = sha3(msg.sender, paymentKeyList.length); 
     paymentStructs[newKey].sender = msg.sender; 
     paymentStructs[newKey].amount = msg.value; 
     paymentKeyList.push(newKey); 
     LogPaymentReceived(msg.sender, msg.value); 
     return true; 
    } 

    function getPaymentCount() public constant returns(uint paymentCount) { return paymentKeyList.length; } 

} 

這可能是多一點存儲效率以犧牲順序或隨機接入的費用。這樣做兩個。

希望它有幫助。

+0

不,我真的試圖找出如果智能合同可以直接讀取形成blockchain。但事實並非如此。 – RFVenter

+0

是的,你需要手動實現它。如果您有區塊鏈瀏覽器(外部程序),如https://live.ether.camp/,則可以查看特定塊的內容。但是,如果您想跟蹤合約中的某些內容並以編程方式檢索它,則需要手動實施。 –