2017-04-26 3 views
1

Ist es für Smart Contract möglich, vergangene Transaktionen zu sehen, mit anderen Worten, wäre es für einen Smart-Vertrag möglich zu sehen, wer es Ether seit seiner Gründung gesendet hat?Smart contract blockchain history

Antwort

1

Wenn Sie versuchen, eine Transaktion mit Ihrem Smart-Vertrag aus der Blockchain zu lesen, ist die Antwort "Nein" in der Solidität lenguage existiert das nicht. Sie können es mit Web3.js am Beispiel von Rob machen oder die Protokolle von transactiosn in der externen Datenbank speichern, das ist so für die Komplexität, viele Blöcke und viele Transaktionen und die asynchronen Probleme zu überprüfen.

In einem anderen Fall können Sie die Transaktionen, die eine externe api für Prüfung und eine Geschichte haben, für Beispiele: https://etherscan.io/apis

3

Es wäre möglich, wenn der Smart Contract über eine Datenstruktur verfügt, um diese Aktivitäten bei ihrem Auftreten zu erfassen.

Hastig vorbereitet Beispiel:

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

} 

Dies könnte auf Kosten der opfern entweder sequentiell oder wahlfreiem Zugriff ein wenig mehr Speicher effizient sein. Dieser Weg macht beides.

Ich hoffe, es hilft.

+0

Nein, ich war wirklich, wenn die Smart-Vertrag direkt mit dem blockchain bilden lesen, um herauszufinden versuchen. Aber es ist nicht. – RFVenter

+0

Ja, Sie müssen es manuell implementieren. Wenn Sie einen Blockchain-Explorer (ein externes Programm) wie https://live.ether.camp/ haben, können Sie den Inhalt eines bestimmten Blocks anzeigen. Wenn Sie jedoch etwas * im * Vertrag verfolgen und es programmgesteuert abrufen möchten, müssen Sie es manuell implementieren. –