Wie werden Daten in der Blockchain gespeichert?

Ich frage mich, ob es möglich ist, jemandem eine Bitcoin-Transaktions-ID zu geben, und damit kann er einige versteckte Daten lesen, wie die blockchain.info-Notizen zu Transaktionen, aber in Wirklichkeit für immer in der Blockchain gespeichert.

Ich hatte diese Idee, aber ich glaube nicht, ob es eine gute Praxis wäre:

Senden Sie die minimal mögliche Menge an BTC, nämlich 0.00000001 BTC, oder 1 satoshi, an eine Adresse, und in dieser Adresse befinden sich die Daten.

1 ArFAXhvMbwJuub4ujnVbLFszqX3Mc uzsX

Soweit ich weiß, besteht die Adresse aus 30 Buchstaben in base58, aber da das erste Zeichen eine 1 sein muss und die letzten vier die Prüfsumme sein müssen, haben Sie in base58 25 Buchstaben, und das sind ungefähr 17 Bytes.

Sie müssen also 0.0001 BTCdie Transaktionsgebühr bezahlen, und danach können Sie dieser Transaktion Daten zu einem Preis von 17 Bytes pro 1 Satoshi hinzufügen, indem Sie Satoshis an viele Adressen senden, die die gesamten Daten enthalten. Stellen Sie sich vor, wir könnten dort Daten für immer speichern, ... und mit der Zukunft kommunizieren ...

Gibt es eine andere Technik, dies zu tun? Ist diese Technik eine gute Praxis?

Bitte fördern Sie diesen Missbrauch der Blockchain nicht. Dafür gibt es Altcoins.
Ich bin jetzt noch verwirrter. Rückversicherungsunternehmen beginnen damit, die Nutzung der Blockchain zur Speicherung von Verträgen/Schadensfällen zu fördern/untersuchen. Aber die hier gegebenen Antworten deuten darauf hin, dass es eine schreckliche Idee ist. Was vermisse ich ? www2.deloitte.com/content/dam/Deloitte/uk/Documents/Innovation/…
Jus12 – welche Altcoins sind für diesen Zweck?
OriginStamp macht etwas Ähnliches: app.originstamp.org/home

Antworten (6)

dann haben Sie 25 Buchstaben in base58, und das sind etwa 17 Bytes.

20, eigentlich.

Sie müssen also etwa 0,0001 BTC für die Transaktionsgebühr bezahlen, und danach können Sie dieser Transaktion Daten zu einem Preis von 17 Bytes pro 1 Satoshi hinzufügen, indem Sie Satoshis an viele Adressen senden, die die gesamten Daten enthalten. Stellen Sie sich vor, wir könnten dort Daten für immer speichern, ... und mit der Zukunft kommunizieren ...

Sie werden dabei auf zwei Probleme stoßen: Transaktionsgebühren und Staubregeln. Transaktionsgebühren bedeuten, dass jede Transaktion Sie ein paar Cent kostet. Staubregeln bedeuten, dass Transaktionen mit Ausgaben unter einer bestimmten Größe einfach verworfen werden. Der Grund dafür ist, dass Sie eine so kleine Transaktion senden, dass die zum Einlösen erforderliche Gebühr höher ist als das Geld, das Sie senden.

Langfristig werden die von Ihnen gesendeten Daten mit allen anderen Daten in der Blockchain identisch aussehen. Das bedeutet, dass Sie Ihre Transaktion irgendwie identifizieren müssen. Dies geschieht normalerweise durch die Bereitstellung der txid, die 32 Byte groß ist.

Ist diese Technik eine gute Praxis?

Es hängt davon ab, was Sie erreichen wollen. Versuchen Sie beispielsweise, anonym zu kommunizieren? Sie sollten stattdessen BitMessage über Tor verwenden. Möchten Sie Transaktionsdaten einbetten, wie es Counterparty tut? Die Einbettung der Daten in Bitcoin ist dafür wahrscheinlich die beste Lösung.

... und mit der Zukunft kommunizieren ...

Nun, das Internetarchiv durchsucht alle Webseiten (einschließlich dieser!), sodass Sie die Dinge, die Sie eingegeben haben, bereits in einen verteilten, langlebigen Datenspeicher hochladen.

Danke für die Antwort. Wie berechnen Sie, dass es genau 20 Bytes sind? Ich bin sicher, es muss sehr einfach sein, aber ich kann nicht daran denken.
@NathanParker Ich habe es nicht berechnet. Pay-to-Public-Key-Hash-Ausgaben haben einen 20-Byte-HASH160-Hash, und das ist es, was der Hauptteil einer Adresse codiert.
Eine Adresse ist also der Hash eines öffentlichen Schlüssels? Woher kennen Sie dann den öffentlichen Schlüssel angesichts der Adresse? Wie können Sie wissen, dass eine Transaktion mit seinem privaten Schlüssel signiert wurde, wenn Sie die Öffentlichkeit nicht zum Vergleichen kennen? Der einzige Weg, den ich dazu denke, wäre das Hinzufügen des öffentlichen Schlüssels zu den Transaktionsdaten.
Sie enthüllen den Pubkey, wenn sie ihn ausgeben.
Ich habe vergessen, Ihnen dafür zu danken. Also vielen Dank :)
Nein. Wenn SE weg ist, wird ein Domain-Squatter eine robots.txt hochladen, die archive.org rückwirkend anwendet, ohne ihre Authentizität in Frage zu stellen, und diese Konversation wird weg sein.

Es wurde getan. Es ist lahm. Es ist Spam. Ihnen entstehen auf Dauer Kosten im gesamten Netzwerk (und nein, die Gebühr zahlt sich nicht aus).

Wenn Sie sich wirklich nicht zurückhalten können, schauen Sie sich OP_RETURN an, da dies zumindest eine viel netzwerkfreundlichere Methode ist.

Sie könnten die OP_RETURNOperation in Ihrem Pubkey-Skript verwenden. Es gibt Ihnen 80 Bytes an kostenlosen Daten (ich denke, es wurde kürzlich von 40 Bytes aktualisiert, die Sie überprüfen könnten).

Wenn Sie ein Entwickler sind, können Sie ein auf BitcoinJ basierendes Programm erstellen, das Ihnen hilft, eine OP_RETURNOperation zu einer Transaktion hinzuzufügen.

Script script = new ScriptBuilder().op(ScriptOpCodes.OP_RETURN).data("your message".getBytes()).build();
                tx.addOutput(Transaction.MIN_NONDUST_OUTPUT, script);

Sie können sich auch diese Lösungen ansehen:

Bitcoin ist für Transaktionen, nicht für die Speicherung. Um dies zu implementieren, kann ein von Bitcoin abgeleitetes System wie Ethereum verwendet werden. StorJ oder FileCoin sind spezielle Blockchain-ähnliche Systeme nur zur Speicherung.

Sie sollten erklären, warum Sie die Technik für schlechte Praxis halten. Insbesondere der Ascii Bernake verwendete im Wesentlichen die gleiche Technik wie der Asker, nur mit größeren Ausgaben.

Soweit ich weiß, können Daten in Blockchain gespeichert werden, indem Smart Contracts mit Solidity Compiler bereitgestellt werden. Die Daten, die wir speichern möchten, können in Struct-Variablen des Smart Contracts und in Form von Strings gespeichert werden. Sobald der Vertrag bereitgestellt ist, wird ein Hash generiert. Der Hash wird dann in Form einer verknüpften Listenstruktur in der Blockchain gespeichert, die mit anderen Hashes verbunden ist.