cari
Rumahpembangunan bahagian belakangTutorial PythonMenguruskan Penyimpanan Data dengan Blockchain dan BigChaindb

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.

pip install bigchaindb
bigchaindb configure
bigchaindb show-config

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

from bigchaindb import Bigchain
b = Bigchain()
print(b)

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

kemudian jalankan aplikasi python:

python app.py

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

tambahkan yang berikut:

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)

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:

{
  "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
    }
  }
}

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

...
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)

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:

{
  "id": "",
  "signature": "",
  "transaction": {
    "current_owner": "",
    "data": {
      "hash": "",
      "payload": null
    },
  "input": null,
  "new_owner": "",
  "operation": "",
    "timestamp": ""
  }
}

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
Menyenaraikan senarai di Python: Memilih kaedah yang betulMenyenaraikan senarai di Python: Memilih kaedah yang betulMay 14, 2025 am 12:11 AM

Tomergelistsinpython, operator youCanusethe, extendmethod, listcomprehension, oritertools.chain, eachwithspecificadvantages: 1) operatorSimpleButlessefficientficorlargelists;

Bagaimana untuk menggabungkan dua senarai dalam Python 3?Bagaimana untuk menggabungkan dua senarai dalam Python 3?May 14, 2025 am 12:09 AM

Dalam Python 3, dua senarai boleh disambungkan melalui pelbagai kaedah: 1) Pengendali penggunaan, yang sesuai untuk senarai kecil, tetapi tidak cekap untuk senarai besar; 2) Gunakan kaedah Extend, yang sesuai untuk senarai besar, dengan kecekapan memori yang tinggi, tetapi akan mengubah suai senarai asal; 3) menggunakan * pengendali, yang sesuai untuk menggabungkan pelbagai senarai, tanpa mengubah suai senarai asal; 4) Gunakan itertools.chain, yang sesuai untuk set data yang besar, dengan kecekapan memori yang tinggi.

Rentetan senarai concatenate pythonRentetan senarai concatenate pythonMay 14, 2025 am 12:08 AM

Menggunakan kaedah Join () adalah cara yang paling berkesan untuk menyambungkan rentetan dari senarai di Python. 1) Gunakan kaedah Join () untuk menjadi cekap dan mudah dibaca. 2) Kitaran menggunakan pengendali tidak cekap untuk senarai besar. 3) Gabungan pemahaman senarai dan menyertai () sesuai untuk senario yang memerlukan penukaran. 4) Kaedah mengurangkan () sesuai untuk jenis pengurangan lain, tetapi tidak cekap untuk penyambungan rentetan. Kalimat lengkap berakhir.

Pelaksanaan Python, apa itu?Pelaksanaan Python, apa itu?May 14, 2025 am 12:06 AM

PythonexecutionistheprocessoftransformingpythoncodeIntoExecutableInstructions.1) TheinterpreterreadsTheCode, convertingIntoByteCode, yang mana -mana

Python: Apakah ciri -ciri utamaPython: Apakah ciri -ciri utamaMay 14, 2025 am 12:02 AM

Ciri -ciri utama Python termasuk: 1. Sintaks adalah ringkas dan mudah difahami, sesuai untuk pemula; 2. Sistem jenis dinamik, meningkatkan kelajuan pembangunan; 3. Perpustakaan standard yang kaya, menyokong pelbagai tugas; 4. Komuniti dan ekosistem yang kuat, memberikan sokongan yang luas; 5. Tafsiran, sesuai untuk skrip dan prototaip cepat; 6. Sokongan multi-paradigma, sesuai untuk pelbagai gaya pengaturcaraan.

Python: pengkompil atau penterjemah?Python: pengkompil atau penterjemah?May 13, 2025 am 12:10 AM

Python adalah bahasa yang ditafsirkan, tetapi ia juga termasuk proses penyusunan. 1) Kod python pertama kali disusun ke dalam bytecode. 2) Bytecode ditafsirkan dan dilaksanakan oleh mesin maya Python. 3) Mekanisme hibrid ini menjadikan python fleksibel dan cekap, tetapi tidak secepat bahasa yang disusun sepenuhnya.

Python untuk gelung vs semasa gelung: Bila menggunakan yang mana?Python untuk gelung vs semasa gelung: Bila menggunakan yang mana?May 13, 2025 am 12:07 AM

UseAforLoopWheniteratingOvereForforpecificNumbimes; Useaphileloopwhencontinuinguntilaconditionismet.forloopsareidealforknownownsequences, sementara yang tidak digunakan.

Gelung Python: Kesalahan yang paling biasaGelung Python: Kesalahan yang paling biasaMay 13, 2025 am 12:07 AM

Pythonloopscanleadtoerrorslikeinfiniteloops, pengubahsuaianListsduringiteration, off-by-oneerrors, sifar-indexingissues, andnestedloopinefficies.toavoidthese: 1) use'i

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Nordhold: Sistem Fusion, dijelaskan
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.