Menulis dan membaca data dalam blockchain Bitcoin

Dimungkinkan untuk menulis ke blockchain bitcoin tidak hanya transaksi keuangan, tetapi juga hampir semua data. Data yang direkam dalam blockchain Bitcoin menjadi publik dan hampir tidak mungkin untuk menghapus atau mengubahnya. Fitur ini dapat digunakan, misalnya, untuk membuat situs terdesentralisasi yang tidak dapat diblokir.

Menggunakan pustaka blockchaindata-lib, menulis dan membaca data pada blockchain dapat diatur hanya dalam beberapa baris kode.

Alat-alatnya


Perpustakaan blockchaindata-lib ditulis dalam node.js. Kode sumber dengan contoh tersedia di github.com/3s3s/blockchaindata-lib github. Untuk menambahkan perpustakaan ke proyek Anda, jalankan saja satu perintah di konsol

npm install blockchaindata-lib 

Untuk bekerja dengan blockchain, Anda harus mengonfigurasi akses RPC ke dompet Bitcoin atau garpu yang kompatibel dengan Bitcoin (Litecoin, Dogecoin, dll.). Secara default, blockchaindata-lib akan mencoba mengakses server RPC pada detail berikut:

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

Default dapat diubah oleh fungsi perpustakaan

 updateNetwork(url, user, password) 

Jadi, untuk dapat bekerja dengan perpustakaan, hal pertama yang perlu Anda lakukan adalah meluncurkan dompet uji Bitcoin:

  1. Unduh dompet Bitcoin (atau garpu yang kompatibel.)
  2. Buat file ~ / .bitcoin / bitcoin.conf (atau di windows% APPDATA% / Bitcoin / bitcoin.conf)
  3. Dalam file bitcoin.conf, tulis pengaturan berikut

     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. Simpan perubahan ke bitcoin.conf dan jalankan bitcoind (atau di windows bitcoin-qt.exe)
  5. Tunggu sinkronisasi blockchain

Dengan pengaturan di atas, dompet akan diluncurkan di jaringan uji Bitcoin.

Rekaman data


Dalam bitcoin, transaksi di mana tidak ada pengeluaran dilarang. Karena itu, sebelum Anda menulis sesuatu ke blockchain Bitcoin, Anda harus mengisi kembali dompet Anda. Bitcoin untuk jaringan uji dapat diperoleh secara gratis jika Anda mencari di Google untuk sesuatu seperti "bitcoin testnet faucet". Ketika dompet diisi ulang, Anda akhirnya dapat merekam data.

Perpustakaan memiliki beberapa fungsi untuk merekam data:

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

Pada prinsipnya, apa fungsi ini jelas dari namanya. Hasil Fungsi - Objek
  {hasil: <true |  false>, pesan: <string>, txid: <string>} 


Pertimbangkan contoh penggunaan:

 '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(); 

Jika kode ini dijalankan tanpa kesalahan, hash transaksi akan ditampilkan di konsol. Anda dapat membaca data dari hash ini.

Membaca data


Untuk membaca data yang direkam sebelumnya di blockchain, Anda hanya perlu mengetahui hash transaksi. Dompet mungkin kosong, yaitu, jika Anda hanya ingin membaca data, maka pengisian dompet tidak diperlukan.

Contoh kode

 '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(); 

Jika kode ini berfungsi tanpa kesalahan, maka teks html dari halaman yang sebelumnya saya simpan di blockchain akan ditampilkan di konsol.

Di mana melamar?


Di blockchain, misalnya, Anda dapat menyimpan situs statis. Situs ini praktis tidak mungkin dihapus atau diblokir. Namun, untuk membaca situs seperti itu, Anda akan memerlukan perangkat lunak tambahan: browser baru atau ekstensi browser.

Ekstensi browser adalah solusi termudah. Contoh ekstensi tersebut dapat ditemukan di sini github.com/3s3s/blockchaindata

Anda dapat mengunduh dan menginstal ekstensi ini untuk Firefox di sini: yadi.sk/d/a3xM9BCepP4nBw
Setelah instalasi, Firefox akan memotong dan memproses tautan ke situs dalam format
  http: // tbtc / <txid> 


Misalnya, tautan seperti itu akan berfungsi http: // tbtc / 8af6633160b982a0b0b4d4962ad28e0d5b3dd97e05e27cc2dd64ec0c56820df5

Keefektifan


Pustaka blockchaindata-lib memampatkan data sebelum menempatkannya di blockchain menggunakan algoritma deflate, sehingga metode ini sangat efektif untuk menulis dokumen teks. Selama pengujian, saya berhasil menulis hingga 70 kb data terkompresi ke blockchain. Meskipun tidak ada batasan pada ukuran data yang masuk, kesalahan pada set data besar muncul karena implementasi internal dari kode bitcoin.

Saat menulis data ke blockchain, seseorang juga harus memperhitungkan komponen keuangan. Membaca dan menulis data ke jaringan uji Bitcoin menggunakan perpustakaan blockchaindata-lib sederhana dan gratis. Namun, jika Anda ingin menulis data ke jaringan bitcoin yang berfungsi, maka Anda harus memperhitungkan harga bitcoin yang tidak nol.

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


All Articles