Schreiben und Lesen von Daten in der Bitcoin-Blockchain

Es ist möglich, nicht nur Finanztransaktionen, sondern auch fast alle Daten in die Blockchain von Bitcoin zu schreiben. Die in der Bitcoin-Blockchain aufgezeichneten Daten werden öffentlich und können kaum gelöscht oder geändert werden. Diese Funktion kann beispielsweise verwendet werden, um dezentrale Sites zu erstellen, die nicht blockiert werden können.

Mit der blockchaindata-lib-Bibliothek kann das Schreiben und Lesen von Daten in der Blockchain in nur wenigen Codezeilen organisiert werden.

Die Werkzeuge


Die blockchaindata-lib-Bibliothek ist in node.js geschrieben. Der Quellcode mit Beispielen ist unter github.com/3s3s/blockchaindata-lib github verfügbar. Um Ihrem Projekt eine Bibliothek hinzuzufügen, führen Sie einfach einen Befehl in der Konsole aus

npm install blockchaindata-lib 

Um mit der Blockchain arbeiten zu können, müssen Sie den RPC-Zugriff auf die Brieftasche von Bitcoin oder eine mit Bitcoin kompatible Gabel (Litecoin, Dogecoin usw.) konfigurieren. Standardmäßig versucht blockchaindata-lib mit den folgenden Details auf den RPC-Server zuzugreifen:

 : http://127.0.0.1:18332 : rpc_btc_test : rpc_btc_password_test 

Die Standardeinstellungen können über die Bibliotheksfunktion geändert werden

 updateNetwork(url, user, password) 

Um mit der Bibliothek arbeiten zu können, müssen Sie zunächst eine Bitcoin-Testmappe starten:

  1. Laden Sie die Bitcoin-Brieftasche (oder eine kompatible Gabel) herunter.
  2. Erstellen Sie die Datei ~ / .bitcoin / bitcoin.conf (oder in Windows% APPDATA% / Bitcoin / bitcoin.conf).
  3. Schreiben Sie in die Datei bitcoin.conf die folgenden Einstellungen

     testnet=1 server=1 rpcbind=127.0.0.1 rpcallowip=127.0.0.1 rpcuser=rpc_btc_test rpcpassword=rpc_btc_password_test txindex=1 

  4. Speichern Sie die Änderungen in bitcoin.conf und führen Sie bitcoind aus (oder in Windows bitcoin-qt.exe).
  5. Warten Sie auf die Blockchain-Synchronisation

Mit den oben genannten Einstellungen wird die Brieftasche im Bitcoin-Testnetzwerk gestartet.

Datenaufzeichnung


Bei Bitcoin sind Transaktionen verboten, bei denen keine Kosten anfallen. Bevor Sie etwas in die Bitcoin-Blockchain schreiben, müssen Sie daher unbedingt Ihre Brieftasche auffüllen. Bitcoins für ein Testnetzwerk erhalten Sie kostenlos, wenn Sie bei Google nach etwas wie "Bitcoin-Testnetzhahn" suchen. Wenn die Brieftasche aufgefüllt ist, können Sie endlich Daten aufzeichnen.

Die Bibliothek verfügt über mehrere Funktionen zum Aufzeichnen von Daten:

 SaveTextToBlockchain( dataString ) SaveJSONToBlockchain( objectJSON ) SaveFileToBlockchain( data ) 

Was diese Funktionen im Prinzip bewirken, geht aus dem Namen hervor. Funktionsergebnis - Objekt
  {Ergebnis: <wahr |  false>, message: <string>, txid: <string>} 


Betrachten Sie ein Verwendungsbeispiel:

 'use strict'; const blockchaindata = require('blockchaindata-lib') async function test1() { try { //    const ret1 = await blockchaindata.SaveTextToBlockchain("     "); if (ret1.result == false) throw new Error("SaveTextToBlockchain failed, message: "+ret1.message); console.log("SaveTextToBlockchain success! txid="+ret1.txid+"\n--------------------------") } catch (e) { console.log(e.message) } } test1(); 

Wenn dieser Code fehlerfrei ausgeführt wird, wird der Transaktions-Hash in der Konsole angezeigt. Sie können die Daten aus diesem Hash lesen.

Daten lesen


Um die zuvor in der Blockchain aufgezeichneten Daten lesen zu können, müssen Sie nur den Hash der Transaktion kennen. Die Brieftasche ist möglicherweise leer. Wenn Sie also nur die Daten lesen möchten, ist das Auffüllen der Brieftasche nicht erforderlich.

Codebeispiel

 'use strict'; const blockchaindata = require('blockchaindata-lib'); async function test2() { //    try { const savedObject = await blockchaindata.GetObjectFromBlockchain("8af6633160b982a0b0b4d4962ad28e0d5b3dd97e05e27cc2dd64ec0c56820df5"); if (savedObject.type == 'error') throw new Error(savedObject.message) if (savedObject.type == 'text') console.log(Buffer.from(savedObject.base64, 'base64').toString('utf8')); else console.log(savedObject.base64); } catch(e) { console.log(e.message) } } test2(); 

Wenn dieser Code fehlerfrei funktioniert, wird der HTML-Text der Seite, die ich zuvor in der Blockchain gespeichert habe, in der Konsole angezeigt.

Wo bewerben?


In der Blockchain können Sie beispielsweise eine statische Site speichern. Diese Seite kann praktisch nicht gelöscht oder blockiert werden. Zum Lesen einer solchen Site benötigen Sie jedoch zusätzliche Software: einen neuen Browser oder eine neue Browsererweiterung.

Die Browser-Erweiterung ist die einfachste Lösung. Ein Beispiel für eine solche Erweiterung finden Sie hier github.com/3s3s/blockchaindata

Sie können diese Erweiterung für Firefox hier herunterladen und installieren: yadi.sk/d/a3xM9BCepP4nBw
Nach der Installation fängt Firefox Links zu Sites im Format ab und verarbeitet sie
  http: // tbtc / <txid> 


Ein solcher Link funktioniert beispielsweise unter http: // tbtc / 8af6633160b982a0b0b4d4962ad28e0d5b3dd97e05e27cc2dd64ec0c56820df5

Wirksamkeit


Die blockchaindata-lib-Bibliothek komprimiert Daten, bevor sie mithilfe des Deflate-Algorithmus in die Blockchain eingefügt werden. Daher ist diese Methode besonders effektiv zum Schreiben von Textdokumenten. Während des Tests konnte ich bis zu 70 KB komprimierte Daten in die Blockchain schreiben. Obwohl es keine Einschränkungen hinsichtlich der Größe eingehender Daten gibt, treten aufgrund der internen Implementierung von Bitcoin-Code Fehler bei großen Datenmengen auf.

Beim Schreiben von Daten in die Blockchain muss auch die finanzielle Komponente berücksichtigt werden. Das Lesen und Schreiben von Daten in das Bitcoin-Testnetzwerk mithilfe der blockchaindata-lib-Bibliothek ist einfach und kostenlos. Wenn Sie jedoch Daten in das funktionierende Netzwerk von Bitcoin schreiben möchten, müssen Sie den Preis von Bitcoin ungleich Null berücksichtigen.

Source: https://habr.com/ru/post/de470884/


All Articles