【Python】polyglotでBitcoinSVのブロックチェーンに100kb以上のデータをアップロードする

前回の記事↓

前回はPythonでBitcoinSVのブロックチェーンにアクセスするためのライブラリである「Bitsv」「Polyglot」で画像データをアップロードする方法について紹介しましたが、100kb以上のデータをアップロードする方法について解説していなかったので、今回はそのあたりについて紹介していきたいと思います。

Polyglotで100kb以上のデータをBSVブロックチェーンにアップロード

BitcoinSVのブロックチェーンへのデータをアップロードはunwriter氏の開発したプロトコルを使用することで非常に簡単に行うことができます。

前回はbというプロトコルを使用して画像データをアップロードしましたが、bは100kb以下のデータをアップロードするためのもので、100kb以上のデータブロックチェーンにアップロードする場合はデータを100kbに小分けにしてアップロードし、それらを結合して1つのデータとする処理が必要になります。この処理をしてくれるのが、bcatというプロトコルになります。

bcat自体はjavascriptベースですが、PolyglotというPythonライブラリを使用すればPython上からでも使用することが可能になります。

Polyglotの使い方

まずPolyglotのライブラリと秘密鍵を読み込みます。

# ライブラリの読み込み
import polyglot
import bitsv

# 自分の秘密鍵の読み込み
key = '自分の秘密鍵'
uploader = polyglot.Upload(key)

まずは画像データをアップロードする前に秘密鍵の残高を確認してください。bitcoinSVのブロックチェーンのデータアップロード料金は現在1byte/1satoshiです。

1BSVを10000万円とした場合、100kbのデータをアップロードしようと思った場合はアップロード料金として10円かかる計算になります。

なので、1MBならば100円、1GBなら10万円かかる計算になるので、メインネットで大容量のデータをアップロードには注意してください。そして、秘密鍵にデータをアップロードするのに十分な額が入っているか確認してください。

それが確認できたら画像のアップロードに移りましょう。BCAT://での画像のアップロードには前回のB://と違い、少し前準備が必要になります。

というのも現状bsvのブロックチェーンは1回のトランザクションでアップロードできるデータ容量が1トランザクションにつき、100kb(100000satoshi)までに制限されているので、100kb以上のデータをアップロードする場合はデータを100kbごとに小分けにして送信しなければいけません。

そのために新鮮なアドレス(unspent/未使用のアドレス)をあらかじめ作っておく必要があります。つまりどういうことかというと現在ウォレットに入っている、BSVを100000satoshiごとのUTXOで小分けにしてやる必要があります。

この作業はpolyglotのsplit_biggest_utxo()で簡単に実行できます。

# 自分の秘密鍵が所有する公開鍵アドレスを最低限必要な分作成する
uploader.split_biggest_utxo()

# アドレスが作成できているか確認する
unspent_num = uploader.get_unspents()
print(unspent_num)

そして、get_unspents()でウォレットの状況を確認すると、ウォレットのsatoshiが100000satoshiごとに分けられているのが分かります。

ですが、作成したばかりだと、アドレスを作成するトランザクション自体がブロックチェーン上で検証されておらず、cofimationが0なので、まだこのアドレス(アドレスを生成したトランザクション)はブロックチェーン上で有効と見なされておらず、使用することができませんので1確認待つ必要があります。

1確認ができたら、画像をアップロードしていきます。polyglotで100kb以上のデータをアップロードする場合upload_b()ではなく、upload_bcat()を使用します。

file = "自分の画像のローカルパス"(例C://〇〇/~)
res = uploader.upload_bcat(file)
print(res)

戻り値を格納した変数resにはトランザクションIDが格納されています。

スポンサーリンク

終わり

以上がpolyglotによるBitcoinSVのブロックチェーン上に画像データをアップロードする方法です。100kb以上になるとそこそこアップロード料金が掛かってくるので、もうちょっと引き下げてほしいところですね。

まあそれこそ本家BTCのop_returnが80Byteだった時代にやっていたようにデータを圧縮するみたいなことをすればもっと、効率よくファイルをアップロードすることが可能だとは思いますが・・・。

それはさておき、こうやってトランザクションを発生させ、そのトランザクションがブロックに格納され、マイニング報酬において、半減期ごとに文字通り半減する新規ブロック報酬の代わりとなり、マイナーがネットワーク維持するインセンティブが生まれるわけですから、これこそがビットコインが本来想定していたエコシステムであり、BitcoinSVこそがビットコインだと思います。

BTCのライトニングネットワークはバグまみれなのもそうですが、サイドチェーン(セカンドレイヤー)に依存していることが根本的に大きな欠陥であり、成功しないと思います。まあ思想面の話は別で話していますし、ここでは技術面にだけフォーカスしていきます。

とりあえずこれでpolyglotとBitsvを通じてブロックチェーンへのデータのアップロードは可能になりました、これだけで既存のwebアプリケーションの連携させて使用することも可能ですが、ここまでだとイーサリアムでも可能です、

やはりBitcoinSVのブロックチェーンを利用するメリットはそのずば抜けたスケーリング能力であり、それを生かしたMatanetというブロックチェーンインターネットの構築です。

つまりはHTMLファイルなどを丸ごとアップロードしルーティング処理を施すことでwebサイトなどのwebアプリケーションそのものをブロックチェーンにアップロードすることも可能な訳です。

ですが、実際にそれを行うためにはjsonRPCやP2Pの通信に対しての深い知識が必要になるわけですが、unwritter氏の作成したBitcomとexpress.jsに似せたwebアプリフレームワークであるcosmosを使用すれば、その手間も省けますね。

まだイーサのMetamaskのようなキラーツールはありませんが、今の勢いを見ている限りそういったものが出てくるのも時間の問題だと思います。

プログラミングの独学はとても難しい


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で



「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」

「エンジニアとして若いうちから高収入を得たい」



という強い気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。





侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。



IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。ちなみに今侍エンジニアの無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。


自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする

   侍エンジニア塾       
侍エンジニアの無料体験レッスンを予約する -->