Rumah >pembangunan bahagian belakang >Tutorial Python >Menguruskan Penyimpanan Data dengan Blockchain dan BigChaindb

Menguruskan Penyimpanan Data dengan Blockchain dan BigChaindb

Christopher Nolan
Christopher Nolanasal
2025-02-23 08:52:11175semak imbas

Managing Data Storage with Blockchain and BigchainDB

mata teras

    Ascribe menggunakan blockchain bitcoin untuk merekodkan pengenalan unik karya seni digital dan menggabungkan pangkalan data NoSQL (Rethinkdb) dengan lapisan blockchain untuk membuat BigChaindb. Gabungan ini meningkatkan kawalan, pengesanan aset dan tahap keselamatan, dan sangat menarik untuk pengguna pangkalan data NoSQL.
  • BigChaindb mendakwa sepenuhnya terdesentralisasi kerana lapisan blockchainnya. Ia juga menambah sokongan transaksi, ciri yang sering hilang dalam pangkalan data NoSQL. Sokongan ini memastikan perubahan pangkalan data telah berlaku ketika menulis ke pangkalan data NoSQL yang mendasari melalui lapisan blockchain.
  • BigChaindb boleh mengisi jurang yang hilang dalam pangkalan data NoSQL dan diedarkan semasa, yang mungkin menyediakan kes perniagaan atau penggunaan yang berkesan. Bagi peminat blockchain, ia mencapai cabaran susunan aplikasi yang terdesentralisasi sepenuhnya, yang mungkin mengubah bagaimana aplikasi dibangunkan, digunakan, dan dikekalkan.
Walaupun masa depan Bitcoin tidak jelas, teknologi yang mendasari di mana ia bergantung - blockchain - telah mengubah sepenuhnya banyak industri dan projek, dan lebih banyak aplikasi akan muncul.

Ascribe adalah permulaan yang menarik yang menggunakan blockchain bitcoin untuk merekodkan bilangan pengenal unik yang terhad untuk karya seni digital. Oleh itu, disebabkan bilangan "salinan" yang terhad ini, mereka boleh dikesan, bertanggungjawab dan (mudah -mudahan) nilai yang lebih tinggi.

Ascribe menghadapi masalah teknikal apabila menggunakan kaedah ini, yang terutamanya berpunca daripada blockchain bitcoin itu sendiri. Ia lambat untuk menulis segala -galanya, mahal (kini 80 sen setiap masa) dan penyertaan harian terhad dan jumlah kapasiti menulis. Ia juga bertentangan dengan teknik pangkalan data berskala tipikal, menambah nod tidak meningkatkan prestasi, dan tidak ada bahasa pertanyaan sebenar. Ini menjadikan pengembangan perniagaan berdasarkan bitcoin blockchain sebagai cabaran.

Walau bagaimanapun, konsep blockchain adalah konsep yang kuat, dan penggunaan dan legitimasinya telah meningkat sejak beberapa tahun kebelakangan ini, dan bahkan bank -bank besar telah mengumumkan bahawa mereka sedang membangunkan teknologi yang diilhamkan oleh konsep itu.

Ascribe memutuskan untuk menggabungkan kelebihan kedua -duanya, mengamalkan pangkalan data NoSQL yang terbukti (RethinkDB) dan menambah lapisan blockchain untuk meningkatkan kawalan, pengesanan aset dan tahap keselamatan tambahan.

Gabungan teknologi ini amat menarik untuk pengguna pangkalan data NoSQL, kerana beberapa sokongan pangkalan data NoSQL secara tradisinya membantu memastikan perubahan pangkalan data telah berlaku "urus niaga". BigChaindb menambah sokongan transaksi dengan menulis kepada pangkalan data NoSQL yang mendasari melalui lapisan blockchain.

BigChaindb juga mendakwa sepenuhnya terdesentralisasi kerana lapisan blockchain. Walaupun banyak pangkalan data NoSQL yang diedarkan mendakwa telah terdesentralisasi, sering terdapat tetapan pseudo-master/hamba.

Memasang BigChaindb dan Dependency

Terdapat beberapa cara untuk memasang BigChaindb. Mula -mula saya mencuba imej Docker, tetapi menemui beberapa isu sambungan dan mendapati bahawa pakej Python adalah yang paling dipercayai.

  1. Pasang RethinkDB, dan untuk pengguna Mac yang lain, terdapat juga pakej homebrew yang tersedia.
  2. Pasang Python 3.4.
  3. Pasang BigChaindb dengan Pip - sudo Pip Install BigChaindb
  4. Mula Rethinkdb dengan Rethinkdb
  5. Mula BigChaindb dengan BigChaindb Start, ia juga akan mengkonfigurasi beberapa kandungan untuk anda.
  6. Buka BigChaindb (sebenarnya rethinkdb ui) di http: // server_ip: 58080/.

Contoh mudah - Peruntukan mesej dan penjejakan

Salah satu kes penggunaan utama BigChaindb (dan mengapa ascribe menciptanya) adalah untuk mengesan aset, jadi mari kita buat contoh mudah dalam Python. Mula -mula jalankan arahan berikut di terminal anda.

<code class="language-bash">pip install bigchaindb
bigchaindb configure
bigchaindb show-config</code>

Buat fail baru, app.py dan tambahkan yang berikut:

<code class="language-python">from bigchaindb import Bigchain
b = Bigchain()
print(b)</code>

Ini akan mengimport perpustakaan BigChaindb, membuat objek baru dan sambungkannya menggunakan fail tetapan yang baru anda buat.

kemudian jalankan aplikasi python:

<code class="language-bash">python app.py</code>

anda harus melihat sesuatu seperti <bigchaindb.core.bigchain at></bigchaindb.core.bigchain>, yang memberitahu kita semuanya baik -baik saja.

tambahkan yang berikut:

<code class="language-python">from bigchaindb import Bigchain
import time

b = Bigchain()

spuser_priv, spuser_pub = b.generate_keys()
print("User Created")

digital_asset_payload = {'msg': 'This is my special message just for you'}

tx = b.create_transaction(b.me, spuser_pub, None, 'CREATE', payload=digital_asset_payload)
print("Transaction Written")

tx_signed = b.sign_transaction(tx, b.me_private)
b.write_transaction(tx_signed)
print ("Transaction Written to BC, now waiting")

time.sleep(10)

tx_retrieved = b.get_transaction(tx_signed['id'])
print(tx_retrieved)</code>

Ini akan mewujudkan pengguna dan kunci yang berkaitan untuk mengakses pangkalan data - ingat tahap keselamatan tambahan. Kemudian buat muatan untuk menulis ke pangkalan data, peruntukkan kunci yang diperlukan, dan tuliskannya.

Berapa detik yang dilakukan oleh transaksi baru untuk lulus dari lapisan blockchain ke pangkalan data. Kod menunggu selama sepuluh saat, dan kemudian mengambil semula dan mencetak rekod. Anda harus melihat sesuatu seperti yang berikut:

<code class="language-json">{
  "signature": '304502205...',
  "id": "0f442bcf4a42...",
  "transaction": {
      "timestamp": "1457104938.430521",
      "data": {
        "hash": "b32779e57...",
        "payload": {
          "msg": "This is my special message just for you"
        }
      },
      "operation": "CREATE",
      "current_owner": "hFJKYk2...",
      "new_owner": "26pdiQTTx...", 
      "input": None
    }
  }
}</code>

anda kini mempunyai mesej khas yang anda mahu seseorang dapat mengakses:

<code class="language-python">...
print("Now to transfer")

spuser2_priv, spuser2_pub = b.generate_keys()
print("Second User Created")

tx_transfer = b.create_transaction(spuser_pub, spuser2_pub, tx_retrieved['id'], 'TRANSFER')
print("Transfer Created")

tx_transfer_signed = b.sign_transaction(tx_transfer, spuser_priv)
b.write_transaction(tx_transfer_signed)
print ("Transaction Written to BC, now waiting")

time.sleep(15)

tx_transfer_retrieved = b.get_transaction(tx_transfer_signed['id'])
print("Transferred")
print(tx_transfer_retrieved)</code>

Ini akan membuat pengguna kedua, kemudian dapatkan ID transaksi mesej khas dan pindahkannya ke pengguna kedua. Lapisan blockchain BigChaindb akan menghalang pengguna dan kod anda daripada melakukan operasi yang sama dua kali. Jika anda cuba menjalankan kod di atas sekali lagi, pengecualian perbelanjaan berganda dilemparkan.

Contoh ini menunjukkan sebahagian kecil daripada bagaimana BigChaindb ditambah kepada RethinkDB, dan senarai lengkap tersedia di sini.

http endpoint

Pada masa ini, satu -satunya perpustakaan pelanggan yang tersedia untuk BigChaindb adalah Python, dan mungkin terdapat lebih banyak perpustakaan, tetapi pada masa yang sama, titik akhir HTTP yang terhad boleh digunakan untuk menanyakan urus niaga yang ada:

https://www.php.cn/link/6EEA81FA0417B0068E614074225A9DAF

atau tulis transaksi baru menggunakan kaedah berikut:

https://www.php.cn/link/f8b64946ebc86a5e23e1605a2943210c

Tambahkan muatan berikut, di mana operasi boleh diubah sesuai dengan pelbagai jenis urus niaga yang boleh ditulis:

<code class="language-json">{
  "id": "",
  "signature": "",
  "transaction": {
    "current_owner": "",
    "data": {
      "hash": "",
      "payload": null
    },
  "input": null,
  "new_owner": "",
  "operation": "",
    "timestamp": ""
  }
}</code>

Komponen masa depan yang terdesentralisasi

Abaikan asal -usul bloknya pada masa ini, BigChaindb menyediakan sejumlah besar ciri yang hilang dalam NoSQL semasa dan pangkalan data yang diedarkan. Fakta ini sahaja mungkin menjadi alasan untuk mencubanya dan mungkin menyediakan kes perniagaan/penggunaan yang sah.

Untuk peminat blockchain di antara anda, ia juga melengkapkan teka -teki timbunan aplikasi yang terdesentralisasi lengkap. Secara teorinya, kini terdapat Ethereum untuk aplikasi, IPF untuk sistem fail, dan BigChaindb untuk penyimpanan data. Komponen -komponen ini menetapkan tahap untuk cara yang sangat berbeza untuk membangun, menggunakan dan mengekalkan aplikasi, mewujudkan masa depan yang menarik, dan saya berharap dapat mendengar komen anda mengenai ini dalam komen di bawah.

(bahagian FAQ ditinggalkan di sini kerana bahagian ini hanyalah ringkasan mudah dan menceritakan kandungan artikel dan tidak masuk ke dalam kategori pseudo-asal.)

Atas ialah kandungan terperinci Menguruskan Penyimpanan Data dengan Blockchain dan BigChaindb. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn