Ich fange an, Smart Contracts in Ethereum zu lernen und habe einige Fragen zum Konzept des Zustands "Lesen / Schreiben".
Ich weiß, dass der Lesezustand kein Benzin kostet.
Aber wenn wir einen Lesezustand ausführen und damit im Smart Contract rechnen (ohne eine Transaktion zu veröffentlichen)
Wer macht die Berechnung? Ist es der Knoten, der die Vertragsfunktion initiiert hat?
Wenn die Berechnung lokal erfolgt, ist es sicher, den Verschlüsselungsalgorithmus in der Funktion zu verwenden?
Gibt es Netzwerkkosten? (Oder berechnet der Knoten nur aus seinen Kettendaten?)
Danke!
Der lokale Knoten führt die Berechnung mit seinen eigenen Ressourcen und seiner Kopie der Blockchain durch.
Sie können unverschlüsselte Daten sicher an eine Verschlüsselungshilfsfunktion im Vertrag übergeben, solange diese Funktion mit dem Modifikator oder gekennzeichnet pure
ist . Die Informationen werden nicht an das Netzwerk übermittelt.view
constant
Es fallen keine Netzkosten an, aber Gas wird trotzdem berechnet. Dies kann relevant sein, wenn Nur-Lese-Funktionen als Teil von On-Chain-Transaktionen aufgerufen werden (dh von Funktionen aufgerufen werden, die Dinge im Netzwerk tun). Sie stellt eine Obergrenze für die Komplexität der Operation bereit.
Ich hoffe es hilft.
function hashHelper(bytes32 secret) public pure returns(bytes32 hash) { return keccak256(secret); }
und das wäre sicher, lokal, nicht zu viel "kostenloses" Benzin verbrauchen, und dann function recordSecret(bytes32 hash) public returns(bool success)
würde das überall ausgestrahlt werden. Sie werden es schwierig finden, On-Chain zu enthüllen oder zu beweisen, ohne die Bohnen zu verschütten.
Malone