智能合同区块链历史记录



智能合约是否有可能查看对其进行的过去交易,换句话说,智能合约有可能查看自成立以来以太的人吗?

,如果智能合约具有数据结构来记录这些活动时,则有可能。

匆忙准备的例子:

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; }
}

这可能会以牺牲顺序或随机访问为代价更高的存储效率。这种方式都可以做到。

希望它有帮助。

如果您试图使用智能合约表格阅读交易,则区块链的答案在坚固性中是"否"。您可以使用Web3.js以Rob或保存外部数据库中的transactiosn日志的示例来完成此操作,这就是这样的复杂性,可以检查许多块和许多交易和异步问题。

在其他情况下,您可以使用外部API检查交易并具有历史记录,例如:https://etherscan.io/apis

最新更新