Wie sende ich RawTransaction mit Dokument-Hash? [abgeschlossen]

Ich bin ein absoluter Blockchain-Neuling und habe erst vor einer Woche damit angefangen. Ich habe bereits eine private Ethereum-Blockchain bereitgestellt und möchte sie verwenden, um die Dokumentenintegrität sicherzustellen, was bedeutet, dass ich MD5-Prüfsummen in der Blockchain speichern werde, um sie zu einem späteren Zeitpunkt zu überprüfen.

Jetzt verstehe ich, dass eine Blockchain nicht zum Speichern von Daten dient und man OP_RETURN verwenden sollte , um solche Informationen zu speichern, falls gewünscht. Dies bringt mich zu meiner Frage, dh wie erstelle ich eine solche Transaktion und füge den Hash des Dokuments in OP_RETURN hinzu , indem ich Folgendes verwende:

  1. Ein web3.eth- Objekt
  2. Nethereum

Jede Hilfe wird geschätzt.

Ich stimme dafür, diese Frage als nicht zum Thema gehörend zu schließen, da Sie nur praktische, beantwortbare Fragen stellen sollten, die auf tatsächlichen Problemen basieren, mit denen Sie konfrontiert sind. Geschwätzige, offene Fragen mindern den Nutzen unserer Seite und verdrängen andere Fragen von der Titelseite. Und Reddit könnte ein guter Ort für gesprächige Fragen sein.
@niksmac Seit wann wird eine Frage, die mit "Wie kann ich ..." beginnen, als geschwätzige Frage bezeichnet? Ich würde mich freuen, wenn Sie mich tatsächlich auf eine Ressource verweisen könnten, in der die Anweisung zum Erstellen einer solchen Transaktion erwähnt wird.
Dies ist eher eine architekturorientierte Frage, genau wie die Verwendung promisesvon Javascript. Schöne Bearbeitung dort ethereum.stackexchange.com/posts/12672/revisions
@niksmac Nun, dein Kommentar beantwortet meine Frage immer noch nicht. Wie wird eine solche Transaktion mit web3.eth oder Nethereum geschrieben?
Willkommen in der Community! ethereum.stackexchange.com/questions/1547/… kann helfen und bitte überprüfen Sie auch ethereum.stackexchange.com/help
@Syed Was ist das OP_RETURN? @eth Danke für das Update.
OP_RETURNstammt aus der Bitcoin-Welt - das ist keine Ethereum-Sache ... (Sie könnten seine Funktionalität mit einem Vertrag kopieren, aber das ist wahrscheinlich eine ganz andere Frage.)

Antworten (3)

In Ethereum gibt es keine Skript-Opcodes, daher gibt es kein op_return (wie in Bitcoin). Sie können Daten jedoch auf ähnliche Weise speichern, indem Sie Folgendes verwenden:

eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(1‌​00,'finney'),data:web3.toHex('My Message')})
danke, das war hilfreich. Ich konnte die Daten auf diese Weise hinzufügen und werde jetzt Mikkos Ansatz ausprobieren. Kann man mit Sicherheit sagen, dass der beste Weg, dies zu tun, darin besteht, Mikkos Smart-Contract-Ansatz unten zu verwenden?
Es geht nicht um Sicherheit, sondern darum, wie Sie Ihre App gestalten möchten, wenn Sie einen Smart Contract verwenden möchten, also verwenden Sie ihn, ansonsten senden Sie einfach Transaktionen mit Ihrem Hash. Sie haben die Wahl

Smart Contracts können beliebige Daten speichern, einschließlich Dokumenten-Hashes

contract MyHashRegistry {

    mapping (uint => uint) hashes:

    function storeHash(uint documentId, uint hash) {
        hashes[documentId] = hash;
    }
}

Es scheint, dass Sie noch keine relevante Erfahrung in Ethereum haben, um Ihre eigenen Dinge zu bauen, also ist es hier ein Problem, zu Schlussfolgerungen zu springen, anstatt alle Schritte dazwischen zu verstehen. Ich schlage vor, einen Lernpfad einzuschlagen. Du musst

  • Lernen Sie die Programmiersprache Solidity

  • Erstellen Sie einen intelligenten Vertrag

  • Erfahren Sie, wie Sie von Ihrem Computer aus mit Smarts Contracts interagieren (web3.js, web3.py)

danke, ich konnte die Transaktion auf die oben beschriebene Weise von Badr hinzufügen, aber ich glaube, Smart Contracts wären der richtige Weg, dies zu tun. Werde dem von dir vorgeschlagenen Lernpfad folgen.

Ich dachte, es könnte hilfreich sein, den Code hier hinzuzufügen, um die Transaktion mit Nethereum zu veröffentlichen:

var txCount = await web3.Eth.Transactions.GetTransactionCount.SendRequestAsync(senderAddress);
var encoded = web3.OfflineTransactionSigning.SignTransaction(myPrivateKey, receiverAddress, 
                amount: 0, 
                nonce: txCount.Value, 
                gasPrice: 1,
                gasLimit: 100000,
                data: myHexData);

txId = await web3.Eth.Transactions.SendRawTransaction.SendRequestAsync(encoded);