ホームページ >バックエンド開発 >Python チュートリアル >ブロックチェーンとBigChainDBを使用したデータストレージの管理
コアポイント
ビットコインの将来は不明ですが、それが依存する基礎となる技術 - ブロックチェーン - は多くの産業やプロジェクトを完全に変え、より多くのアプリケーションが出現しようとしています。
Ascribeは、ビットコインブロックチェーンを使用して、デジタルアートワークの限られた数の一意の識別子を記録する説得力のあるスタートアップです。したがって、この「コピー」の数が限られているため、それらは追跡可能で、説明責任があり(できれば)より高い価値があります。
この方法を使用する際に、主にビットコインブロックチェーン自体に由来する技術的な問題が発生したと考えられています。すべてを書くのは遅く、費用がかかり(現在は時間あたり80セント)、毎日のエントリと総書き込み容量が限られています。また、典型的なスケーラブルなデータベース手法に反して、ノードを追加してもパフォーマンスが向上しておらず、実際のクエリ言語はありません。これにより、ビットコインブロックチェーンに基づくビジネス拡大が課題になります。しかし、ブロックチェーンの概念は強力な概念であり、その使用と正当性は過去数年にわたって増加しており、大規模な銀行でさえ、彼らがこの概念に触発された技術を開発していることを発表しました。
Ascribeは、2つの利点を組み合わせて、実証済みのNOSQLデータベース(RethinkDB)を採用し、ブロックチェーンレイヤーを追加して、制御、資産追跡、および追加のセキュリティレベルを強化することを決定しました。
このテクノロジーの組み合わせは、NOSQLデータベースユーザーにとって特に魅力的です。これは、データベースの変更が「トランザクション」が発生したことを確実にするのに役立っていたNOSQLデータベースサポートがほとんどないためです。 BigChainDBは、ブロックチェーンレイヤーを介して基礎となるNOSQLデータベースに書き込むことにより、トランザクションサポートを追加します。
BigChainDBは、ブロックチェーン層のために完全に分散化されていると主張しています。分散したNOSQLデータベースの多くは分散化されていると主張していますが、多くの場合、擬似マスター/スレーブ設定があります。
bigchaindbとその依存関係のインストール
BigChainDBをインストールする方法はいくつかあります。最初にDocker画像を試しましたが、いくつかの接続の問題に遭遇し、Pythonパッケージが最も信頼できることがわかりました。簡単な例 - メッセージの割り当てと追跡
BigChainDBの主要なユースケースの1つ(およびなぜ作成したのか)は資産を追跡することです。そのため、Pythonで簡単な例を作成しましょう。最初にターミナルで次のコマンドを実行します。
<code class="language-bash">pip install bigchaindb bigchaindb configure bigchaindb show-config</code>新しいファイルを作成します
app.py これにより、BigChainDBライブラリをインポートし、新しいオブジェクトを作成し、作成したばかりの設定ファイルを使用して接続します。
<code class="language-python">from bigchaindb import Bigchain b = Bigchain() print(b)</code>次に、Pythonアプリケーションを実行します:
のようなものが表示されるはずです。これはすべてが問題ないことを教えてくれます。
<code class="language-bash">python app.py</code>
以下を追加してください:<bigchaindb.core.bigchain at></bigchaindb.core.bigchain>
これにより、データベースにアクセスするためのユーザーと関連キーが作成されます。追加のセキュリティレベルを覚えておいてください。次に、データベースに書き込むためのペイロードを作成し、必要なキーを割り当てて書き込みます。
<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>ブロックチェーンレイヤーからデータベースへの新しいトランザクションが何秒かかります。コードは10秒間待機し、レコードを取得して印刷します。次のようなものが表示されるはずです:
あなたは今、あなたが一人の人にアクセスできるようにしたいという特別なメッセージを持っています:
<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>
これにより、2番目のユーザーが作成され、特別なメッセージのトランザクションIDを取得して2番目のユーザーに転送します。 BigChainDBのブロックチェーンレイヤーにより、ユーザーとコードが同じ操作を2回実行できなくなります。上記のコードをもう一度実行しようとすると、二重の支出例外がスローされます。
<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>この例は、BigChainDBがRethinkDBにどのように追加されるかのほんの一部を示しており、完全なリストがこちらで入手できます。
http endpoint
現在、BigChainDBで利用できる唯一のクライアントライブラリはPythonであり、より多くのライブラリがあるかもしれませんが、同時に、限られたHTTPエンドポイントを使用して既存のトランザクションを照会できます。
https://www.php.cn/link/6eea81fa0417b0068e614074225a9daf
https://www.php.cn/link/f8b64946ebc86a5e23e1605a2943210c
次のペイロードを追加します。ここでは、作成できるさまざまなタイプのトランザクションに合わせて操作を変更できます。 分散型の将来のコンポーネント
ブロックチェーンの起源を無視して、BigChainDBは、現在のNOSQLおよび分散データベースに欠落している多数の機能を提供します。この事実だけでも、試してみる理由であり、有効なビジネス/ユースケースを提供する場合があります。 あなたの間のブロックチェーン愛好家の場合、それはまた、完全な分散型アプリケーションスタックのパズルを完成させます。理論的には、アプリケーション用のイーサリアム、ファイルシステム用のIPF、およびデータストレージ用のBigChainDBがあります。これらのコンポーネントは、アプリケーションの開発、展開、維持の非常に異なる方法の段階を設定し、魅力的な未来を作成します。以下のコメントでこれについてのコメントを聞いてみたいと思います。
(この部分は記事のコンテンツの単純な要約と語り直されたものであり、擬似オリジナリティのカテゴリーに該当しないため、FAQパーツはここで省略されています。)
以上がブロックチェーンとBigChainDBを使用したデータストレージの管理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。