2017-04-26 75 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/,则可以查看特定块的内容。但是,如果您想跟踪合约中的某些内容并以编程方式检索它,则需要手动实施。 –