Bitcoin Signetを触ってみよう

お知らせ
Table of Contents

この記事はBlockchain Advent Calendar 2019の7日目の記事です。

動機

今年発表されて開発中のBitcoin Signetについて興味を持ち、10月のビットコインとか勉強会#34でもハンズオンを行いました。

会社のブログ記事でもSignetについてご紹介したいと思います。

Signetの概要

Bitcoin Signetはブロックのバリデーションに署名を付加する新しいTestnetです。
BIP0325にもなりました。

BIPとは、Bitcoinの改善提案を行うBitcoin Improvement Proposalsのことです。

BIP0325「Signet」の起案者はDigital Garageに所属し、Bitcoin Core ContributerであるKarl-Johan Alm (@kallewoof)です。

Signetの仕様について日本語で読みたい方は、株式会社chaintope CTO安土茂亨さんのブログ
Develop with pleasure! Bitcoinの新しいテストネットワーク「Signet」の仕様を定義したBIP-325
をご覧ください。

Testnetのコンセンサスアルゴリズム

ざっくり言うと、既存のPoW(Proof of Work)型のTestnetに対し、SignetはPoA(Proof of Authority)型です。

Ethereumなど他のブロックチェーン、ではPoW型のTestnetの他に、PoA型もあります。

Ethereumだと、RopstenがPoW型、RinkebyやKovanがPoA型です。

Ethereum の各種テストネット比較という記事にありますように、PoW型のTestnetは、Mainnetと同じコンセンサスアルゴリズムであるメリットはありますが、経済原理に基づいてブロックの生成間隔が安定するMainnetとは異なり、マイナーのテストによってブロック生成間隔が急激に狭まり長いチェーンのReorgが発生することもあります。

PoA型はコンセンサスアルゴリズムはMainnetとは異なるもの、安定しやすいという特徴があります。

PoW型であるBitcoin Testnetでも長いチェーンのReorg発生がしばしばありました。

Bitcoin TestnetではLightning NetworkなどのLayer2オフチェーンソリューションの開発とテストに欠かせない存在であり、不安定なTestnetでは妨げになっていました。

安定したTestnetを新たに生み出すによって、Layer2オフチェーンソリューションの開発を促進する狙いもあります。

Signetフルノードを立ててみよう

Signetを触るに当たって、ソースコードをビルドするのもいいですが、Signetの起案者Karl-Johan AlmがDockerコンテナを用意してくれていて、簡単にSignetフルノードを立てることができます。

Dockerコンテナを使ってSignetノードを立ててみましょう。

GitHubからコンテナをCloneして実行するまで

git clone https://github.com/kallewoof/signet-platform.git
cd signet-platform/fullnode
./run.sh
cd $HOME/docker-signet
vi bitcoin.conf
# 一行目:-e signet=1の”-e”を消して保存
cd $HOME/workspace/signet-platform/fullnode
./run.sh

これでDockerでBitcoin Signetノードが立ち上がりました

Signetノードの操作

別のターミナルを開いて、Signetノードを操作してみましょう

docker ps    #signetのコンテナIDを見つける(基本は一番上にあるはず)
ID= XXX  #signetのコンテナID 
alias bcli="docker exec $ID bitcoin-cli" 
bcli getblockchaininfo

Signet Explorerと見比べてみましょう

Signetは2019年12月3日で16,600ブロックほどなのですぐに同期できます。

Testnetだとその100倍ほどブロック数があり結構同期に時間がかかります。

Signet BTCをゲット

Docker内にあるgetcoins.shを実行すると、SignetBTCをもらえます。

docker exec $ID getcoins.sh

Payment of 10.00000000 BTC sent with txid 121d9719a3772e2c9720b641c50a4a6f6ca0b3b9d6fbfbe9756263e0ae8284b6

bcli getunconfirmedbalance 

10.00000000

https://explorer.bc-2.jp/ でTXを検索してみましょう。

今回はここまで。

今後

他にも、DockerでFaucetの画面やSignet Blockchain Explorerを立ち上げることができます。まだ私の検証が十分にできてませんが、ご興味のある方は、ハンズオンの資料をご覧になって試してみてください。

また機会があればSignetについて書きたいと思います。

タイトルとURLをコピーしました