ホームページ > バックエンド開発 > Python チュートリアル > ブロックチェーンとBigChainDBを使用したデータストレージの管理

ブロックチェーンとBigChainDBを使用したデータストレージの管理

Christopher Nolan
リリース: 2025-02-23 08:52:11
オリジナル
177 人が閲覧しました

Managing Data Storage with Blockchain and BigchainDB

コアポイント

  • Ascribeは、ビットコインブロックチェーンを使用してデジタルアートワークの一意の識別を記録し、NOSQLデータベース(RethinkDB)とブロックチェーンレイヤーを組み合わせてBigChainDBを作成します。この組み合わせは、コントロール、資産追跡、セキュリティレベルを強化し、NOSQLデータベースユーザーにとって特に魅力的です。
  • BigChainDBは、ブロックチェーン層のために完全に分散化されていると主張しています。また、NOSQLデータベースでしばしば欠落している機能であるトランザクションサポートも追加されます。このサポートにより、ブロックチェーンレイヤーを介して基礎となるNOSQLデータベースに書き込むときにデータベースの変更が発生することが保証されます。
  • BigChainDBは、現在のNOSQLおよび分散データベースの不足しているギャップを埋めることができます。これにより、効果的なビジネスまたはユースケースが提供される場合があります。ブロックチェーン愛好家の場合、完全に分散化されたアプリケーションスタックの課題を達成し、アプリケーションの開発、展開、維持の方法を変更する可能性があります。

ビットコインの将来は不明ですが、それが依存する基礎となる技術 - ブロックチェーン - は多くの産業やプロジェクトを完全に変え、より多くのアプリケーションが出現しようとしています。

Ascribeは、ビットコインブロックチェーンを使用して、デジタルアートワークの限られた数の一意の識別子を記録する説得力のあるスタートアップです。したがって、この「コピー」の数が限られているため、それらは追跡可能で、説明責任があり(できれば)より高い価値があります。

この方法を使用する際に、主にビットコインブロックチェーン自体に由来する技術的な問題が発生したと考えられています。すべてを書くのは遅く、費用がかかり(現在は時間あたり80セント)、毎日のエントリと総書き込み容量が限られています。また、典型的なスケーラブルなデータベース手法に反して、ノードを追加してもパフォーマンスが向上しておらず、実際のクエリ言語はありません。これにより、ビットコインブロックチェーンに基づくビジネス拡大が課題になります。

しかし、ブロックチェーンの概念は強力な概念であり、その使用と正当性は過去数年にわたって増加しており、大規模な銀行でさえ、彼らがこの概念に触発された技術を開発していることを発表しました。

Ascribeは、2つの利点を組み合わせて、実証済みのNOSQLデータベース(RethinkDB)を採用し、ブロックチェーンレイヤーを追加して、制御、資産追跡、および追加のセキュリティレベルを強化することを決定しました。

このテクノロジーの組み合わせは、NOSQLデータベースユーザーにとって特に魅力的です。これは、データベースの変更が「トランザクション」が発生したことを確実にするのに役立っていたNOSQLデータベースサポートがほとんどないためです。 BigChainDBは、ブロックチェーンレイヤーを介して基礎となるNOSQLデータベースに書き込むことにより、トランザクションサポートを追加します。

BigChainDBは、ブロックチェーン層のために完全に分散化されていると主張しています。分散したNOSQLデータベースの多くは分散化されていると主張していますが、多くの場合、擬似マスター/スレーブ設定があります。

bigchaindbとその依存関係のインストール

BigChainDBをインストールする方法はいくつかあります。最初にDocker画像を試しましたが、いくつかの接続の問題に遭遇し、Pythonパッケージが最も信頼できることがわかりました。

  1. rethinkdbをインストールし、他のMacユーザーには、利用可能な自家製パッケージもあります。
  2. Python 3.4をインストールします。
  3. PIP付きBigChainDBをインストール - sudo pipインストールbigchaindb
  4. rethinkdbを使用してrethinkdbを開始します
  5. BigChainDB StartでBigChainDBを開始すると、コンテンツも設定されます。
  6. http:// server_ip:58080/でbigchaindb(実際にはrethinkdb ui)を開きます。

簡単な例 - メッセージの割り当てと追跡

BigChainDBの主要なユースケースの1つ(およびなぜ作成したのか)は資産を追跡することです。そのため、Pythonで簡単な例を作成しましょう。最初にターミナルで次のコマンドを実行します。

pip install bigchaindb
bigchaindb configure
bigchaindb show-config
ログイン後にコピー
新しいファイルを作成します

app.py これにより、BigChainDBライブラリをインポートし、新しいオブジェクトを作成し、作成したばかりの設定ファイルを使用して接続します。

from bigchaindb import Bigchain
b = Bigchain()
print(b)
ログイン後にコピー
次に、Pythonアプリケーションを実行します:

のようなものが表示されるはずです。これはすべてが問題ないことを教えてくれます。
python app.py
ログイン後にコピー

以下を追加してください:<bigchaindb.core.bigchain at 0x...>

これにより、データベースにアクセスするためのユーザーと関連キーが作成されます。追加のセキュリティレベルを覚えておいてください。次に、データベースに書き込むためのペイロードを作成し、必要なキーを割り当てて書き込みます。

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)
ログイン後にコピー
ブロックチェーンレイヤーからデータベースへの新しいトランザクションが何秒かかります。コードは10秒間待機し、レコードを取得して印刷します。次のようなものが表示されるはずです:

あなたは今、あなたが一人の人にアクセスできるようにしたいという特別なメッセージを持っています:

{
  "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
    }
  }
}
ログイン後にコピー

これにより、2番目のユーザーが作成され、特別なメッセージのトランザクションIDを取得して2番目のユーザーに転送します。 BigChainDBのブロックチェーンレイヤーにより、ユーザーとコードが同じ操作を2回実行できなくなります。上記のコードをもう一度実行しようとすると、二重の支出例外がスローされます。

...
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)
ログイン後にコピー
この例は、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート