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
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
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.
- 1. Fehler bei IBM Blockchain
- 2. Bluemix Blockchain
- 3. WCF Contract Inherited Contracts
- 4. Blockchain Ethereum Anwendungen
- 5. Blockchain Commercial-Paper-Demo
- 6. Blockchain Transaktionen bestellen
- 7. Spring Cloud Contract und Zuul
- 8. Contract Mismatch am EndpointDispatcher (Fehlerbehandlung)
- 9. Javas Design by Contract Pattern
- 10. JUnit Contract Testing mit Suites
- 11. Django Simple History Alles löschen History on Model Löschen
- 12. Blockchain/dezentrale apps entwicklung intro
- 13. Blockchain Entwicklung und Top-Player
- 14. Speichern von Daten auf Blockchain
- 15. Blockchain dezentrale Datenbank auf Schienen
- 16. Bluemix Blockchain Marbles App hängt
- 17. Nicht-finanzielle Verwendung für Blockchain
- 18. Blockchain Hyperledger dev env Setup
- 19. Bash prompt history issue
- 20. Subversion Merge-History-Visualisierung
- 21. Github Commit History Navigation
- 22. firefox iframe history
- 23. History Visualisierungstools für Versionskontrollsysteme?
- 24. GNU readline- History-Funktion
- 25. Erstellen Sie einen "Transaktions-Handler" Smart-Vertrag
- 26. Smart-typedefs
- 27. Autocomplete "smart"
- 28. Typescript: new() Interface contract not erzwungen
- 29. WCF-Endpunktkonfigurationsfehler: Das Attribut 'contract' ist ungültig?
- 30. Design by Contract-Bibliothek (Schnittstelle) Gedanken?
Nein, ich war wirklich, wenn die Smart-Vertrag direkt mit dem blockchain bilden lesen, um herauszufinden versuchen. Aber es ist nicht. – RFVenter
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. –