【調べ物】Stacks Blockchain:ビットコイン上に構築されるスマートコントラクト

【調べ物】Stacks Blockchain:ビットコイン上に構築されるスマートコントラクト

ALEXというビットコイン上でDeFiを扱うというプロジェクトを見て「それってどうなの?(LNをDeFiとして機能させるイメージはつくのだが)」と思って調べたところ、肝はStacksブロックチェーンとビットコインの関係性のよう。そこで、最近話題のマイアミコインやニューヨークコインなど地域財政・分散化に関連するプロジェクトでも耳にするStacksにシフトして調べてみた。

初版のホワイトペーパーはPoXの報酬設計が中心でネットワークセキュリティに関する情報が薄くあまり印象が良くない。githubのsip-007を中心に読むことに。

途中見つけたRSKの開発者によるドキュメントに課題感が記載されていたのでこちらも大変参考になった。
スマコンとしての検証はしておらず、インセンティブ設計に関する内容が主となった。(というかドキュメントの内容がほとんどそれ)

■プロダクトの目的

Bitcoinをアンカーのブロックチェーンとして1:1の比率でブロック生成され、そのセキュリティを享受しつつ、セカンドレイヤーのような設計でスループットを上げること、スマートコントラクトとDappsを動かすことの二点を主な目的とするブロックチェーン。

■プロジェクトの背景

ビットコインでインターネットを利用するプロジェクトの歴史 このプロジェクトは、より良いインターネットを構築するための取り組みとして、2013年にプリンストン大学コンピュータサイエンス学部でスタートしました。Muneeb AliとRyan Sheaは、2014年にY Combinatorを経て、他のプリンストン大学のコンピュータ科学者を募り、初期の研究開発を行いました。初期の投資家には、Union Square Ventures、Naval Ravikant、SV Angelなどがいます。Muneebの2017年の博士論文は、ブロックチェーン上に構築されたユーザー所有のインターネットの技術的基盤を築いた[8. このプロジェクトは、2017年にStacks暗号通貨のトークンオファリングで4,700万ドルを調達し、2019年には史上初のSEC適格US Reg Aオファリングと同時進行のReg Sオファリングでさらに2,300万ドルを調達した。これらの募集には、USV、Lux、DCG、Winklevoss Capital、Blockchain Capital、Foundation Capital、Hashkey、Fenbushiなど、4,500人以上のStacksホルダーが参加しました。非中央集権的なエコシステム 公益法人であるBlockstack PBCは、初期の研究開発、プロトコールの作成に取り組みました。https://gaia.blockstack.org/hub/1AxyPunHHAHiEffXWESKfbvmBpGQv138Fp/stacks.pdf

また、2021年11月30日頃にメインネットをローンチ予定。

■Clarity言語

Stacksブロックチェーンのアプリケーション開発に用いられている言語

Predictability(予測可能性):開発者のための構文の明確さSecurity:トランザクションに条件を指定することで予期しないトークン移転を防ぐ
No compiler:記述どおりにStacksブロックチェーンでブロードキャストされ、記述・分析・テストどおりに実行される。


■トークン:STX(Stacksトークン)

大まかな機能は下記のとおり
 1)マイナー報酬
 2)チェーンの正当性を表明するstackerへの参加要件
 3)Stacks blockchainのガス代

■トランザクションのライフサイクル

Generate:トランザクションは、エンコーディング仕様に従ってアセンブルされます。

検証と署名:トランザクションは、整形式であることを確認するために検証されます。必要な署名が記入されています。


ブロードキャスト
:トランザクションはノードに送信されます。

登録:マイナーはトランザクションを受信し、検証して、保留中のすべてのトランザクションの保持領域であるmempoolに追加します。

プロセス:マイナーはmempoolを確認し、マイニングする次のブロックのトランザクションを選択します。トランザクションの種類に応じて、このステップでさまざまなアクションが発生する可能性があります。たとえば、トークン転送の事後条件を検証したり、スマートコントラクトで定義されたトークンを作成したり、既存のスマートコントラクトメソッドを呼び出そうとしたりできます。

確認:マイナーは一連のトランザクションでブロックを正常にマイニングします。内部のトランザクションはネットワークに正常に伝播されます。

https://docs.stacks.co/understand-stacks/transactions

■マイニング:proof-of-transfer (PoX) 

(2020年にproof-of-burnモデルから変更提案)

https://docs.stacks.co/understand-stacks/proof-of-transfer

初期のPoBではマイナーは基軸通貨をバーンしてマイニングに参加していたが、PoXへの移行後は新しい暗号資産のオーナーに転送する。このアルゴリズムはStacksブロックチェーンの場合、マイナーは新しくmintされたStacksトークンを受け取るためにビットコインをStacker(後述 STXをロックする)に転送する。

マイナーはブロック報酬としてSTXトークンとトランザクション手数料(トランザクションサイズにより変動)を受け取る。

このBTCの送金が、Stacksブロックチェーンがビットコインブロックチェーンをアンカーとして順序付けられるため堅牢なファイナリティを得られるという点が肝のよう。

PoXにおいてはトークンの保有インセンティブとマイニングのインセンティブを同一のマイナーが享受でき、中央集権化する可能性がある。そのため、マイニングが始まってからビットコインブロックが100,000ブロックを経過するまではPoXのsunset phaseと呼ばれ、PoBに再度移行する。ビットコインのコミットメントの半分が燃やされ、残りの半分が保有者に譲渡されるというように、時間をかけて直線的に行われます。

マイニングが開始された後、 100,000ビットコインブロック、PoXサンセットフェーズが開始されます。このフェーズでは、ブロックコミットの割合を増やして書き込む必要があります。このサンセット料金を燃やすには、マイナーはサンセット料金の金額をブロックコミットトランザクションの最初の出力(つまり、OPRETURN出力)に送信する必要があります。

400,000ブロック経過後にsunset phaseは終了し、PoXはアクティブでなくなり、ビットコインは1111111111111111111114oLvT2アドレスに送られてバーンされる。

https://github.com/stacksgov/sips/blob/main/sips/sip-007/sip-007-stacking-consensus.md#addressing-miner-consolidation-in-stacking

2029年ごろにはPoBに戻る模様。後述のインセンティブ設計寿命や如何に。

■ブロック報酬

最初の4年間は1000STX/ブロック、その後の4年間は500STX/ブロック、その後の4年間は250STX/ブロック、その後は永久に125STX/ブロックhttps://gaia.blockstack.org/hub/1AxyPunHHAHiEffXWESKfbvmBpGQv138Fp/stacks.pdf

■ネットワーク参加者

https://docs.stacks.co/understand-stacks/proof-of-transfer

1)Miner
PoX型ブロックチェーンにおいてはマイニングハードウェアは必要なく、バーン暗号通貨(stacksにおいてはビットコイン)を持つ人は誰でも、最小金額しかもっていなくてもマイニングに参加できる。

1.ブロック報酬を受け取るために、BTCをStackerに送る。
2.ブロック報酬を受け取るマイナーはランダムに重みづけされた関数(VRF)により選ばれ入札される。この入札の確率は、1.で送ったBTCをすべてのマイナーが送信した合計BTCで割ったものに等しくなる。(最小値は規定されていないが、実質dustの制約以上の量に規定される 11,000sats/ブロック以上が推奨されている)
3.選ばれたマイナーはblock leaderと呼ばれ、microblocks(後述)を流す権利とStackブロックチェーンに新しいブロックをコミットする権利を獲得する。
4.マイナーは新しくmintされたSTXトークンとトランザクション手数料を報酬として受け取る。

ブロックはビットコインブロックごとに1回マイニングできる。

・Coinbase報酬の推移

https://docs.stacks.co/understand-stacks/mining

Reward maturity:マイナーの報酬受け取りはビットコインブロックチェーンが100ブロック経過後に受け取り可能。


2)Stacker
STXトークンをコントラクトにロックすることをStackingと呼ぶ。 

1.保有するSTXを単独周期または複数周期にわたりロックする。
2.ロックするSTの量に基づき、独立してstackするか他のStacketと集約したプールとしてstackするかを選択する。
3.Stackerはマイナーから報酬を受け取るためにBTCアドレスを提供する。報酬はstacksしたSTXトークンの量に比例し、アドレスに受領後にすぐに利用できる。
4.コミットしたサイクルが終了するとSTXのロックが解除される。

マイナー入札に使用されるビットコインはコンセンサスに積極的に参加しているSTXトークン所有者(Stacker)のアドレスに送信される。STXの保有とStackingアルゴリズムへの参加報酬として活動してるSTX保有者に送られる。 なお、StackerはSTXトークンを一定期間ロックする必要がある。

StackerはStacksチェーンのバージョン/フォークを現在のものとしてシグナル(投票)する署名付きメッセージを発行することができます。マイナーはノードの取り込みを行いつつ、stackerとしても振舞うことができる。

…この署名が、正当なフォークを判定するコンセンサスアルゴリズムとなっている模様。この署名の振る舞いにペナルティが見受けられなかったのは少し気になった。

■microblock

一つのstacksブロックはmicroblockに細分化され、ビットコインと独立してトランザクションスループットを拡張し、ファイナリティを持たせる。
microblockのブロックへの取り込みはblock leaderにより行われる。mempoolに到着したmicro blockをパッケージ化し、ブロックに含む。

"マイクロブロックは、開発者がビットコインのセキュリティを継承しながら、スタック上にパフォーマンスの高い高品質のアプリケーションを作成するための強力なメカニズムです。"

…いうほど相関性がないように思う。

ユーザーは、リーダーが自分のトランザクションに適用すべきコミットメントスキームを選択します。トランザクションには、"バッチのみ"、"ストリームのみ"、"両方を試す "というタグを付けることができます。情報を得たユーザーは、関連するリスクよりも低レイテンシーを重視するかどうかに基づいて、どのスキームを選択するかを決めます。https://github.com/stacksgov/sips/blob/main/sips/sip-001/sip-001-burn-election.md#operation-as-a-leader


■proof-of-burn

PoXのコンセプトにPoBが初期採用されていたため、コンセプトの概観に。
PoBの問題点として、PoBチェーンの初期段階では、この暗号通貨はベースとなる暗号通貨であるビットコインほどの価値や安全性を持たない可能性がある。PoBチェーンが成熟し、新しい暗号通貨の価値と安定性が高まる前に、マイナーはビットコインを破壊してまで参加したがらない可能性があった。この背景から、PoXへ移行された。

Proof ofBurnによって可能になったプロパティ

・時間のグローバル知識…バーンチェーン(Bitocoin)の成長を時間経過として認識し、全ての正しいスタックピアはスタックブロックとリーダーエポックの同じ順序を決定できる。他のブロックチェーンではブロックの生成時間に必ずしも合意がないとしている。

ブロックのグローバル知識

バーンチェーンの同じビューを持つ各正しいスタックピアは、存在するスタックブロックのセットの同じビューも持ちます。既存のブロックチェーンにはこれがありませんが、代わりに、すべてのブロックをゴシップするために、適切に接続されたピアネットワークに依存しています。

・不正検証

1.アンカーブロック - アンカーブロックはStacksのチェーンブロックです。報酬サイクルの期間中、アンカーブロックの子孫であるフォークを採掘するには、適切な報酬アドレスに採掘資金を送金する必要があります。

2.報酬セット - 報酬セットは、報酬サイクルで資金を受け取るビットコインアドレスのセットです。このセットは、アンカーブロックのStacksチェーンの状態を用いて決定されます。

→ゴシップ方法は?異なる検証結果を持つ可能性は?思ったよりビットコインのチェーンとの相互関係が薄い。一方的に

■報酬受け取りビットコインアドレスの有効性検証

マイナーからstackerへの報酬アドレスの不正がないようにその有効性をネットワーク全体で検証

1.マイナーがアンカーブロックの子孫ではないチェーンチップから構築している場合、マイナーのコミット資金はすべてバーンアドレスに送られなければならない(つまり、資金は燃やされる)。

2.マイナーがアンカーブロックの子孫から構築している場合、マイナーは以下のように選ばれた報酬セットから5つのアドレスにコミット資金を送らなければならない。
  • 検証可能なランダム関数(sortitionでも使用される)を使用して、報酬セットから5つのアドレスを選択する。この5つのアドレスがこのブロックの報酬アドレスとなります。

  • 検証可能なランダム関数(sortitionでも使用される)を使用して、報酬セットから5つのアドレスを選択する。この5つのアドレスがこのブロックの報酬アドレスとなります。

  • ブロックにアドレスが選択されると、これらのアドレスは報酬セットから削除され、将来の報酬サイクルのブロックでそのアドレスが繰り返されることはありません。

アドレス選択に使用される検証可能なランダム関数(VRF)は、報酬アドレスを選択する各マイナーによって同じアドレスが選択されることを保証することに注意してください。マイナーが有効なアドレスに資金を送金しない書き込みコミットメントを 送信した場合、それらのコミットメントはネットワークの残りの部分によって無視されます(他のネットワーク参加者は転送アドレスが無効であると推測できるため)。https://github.com/stacksgov/sips/blob/main/sips/sip-007/sip-007-stacking-consensus.md#stacking-consensus-algorithm

…マイナーのblockリーダー入札時に、それぞれのマイナーから提出されるコミットを比較して、一意の報酬受け取りアドレスの有効性が検証

■Explorer

Stacks Explorer:https://explorer.stacks.co/?chain=mainnet

・右のチェックがBitcoinブロックチェーンにアンカーされたトランザクション

・記述されたコントラクト

■トークン

・価格

・プレマインの分配

https://gaia.blockstack.org/hub/1AxyPunHHAHiEffXWESKfbvmBpGQv138Fp/stacks.pdf

プレマインの配布先に関するリサーチはこちらが有用

■結び

PoXは、既存のビットコインブロックチェーンの価値を利用し、それを新規トークン(stacksにおいてはSTX)保有およびマイニングの報酬とすることで、セカンドレイヤーのブロックチェーンの運用にインセンティブを与える。

PoXのホワイトペーパーはトークンインセンティブへの言及が主で、セキュリティの議論が少ない印象を受けた。

ビットコインのセキュリティに基づいているという謳い文句が見受けられるがセキュリティの相互関係は希薄に感じた。

また、前述に挙げられている課題として現状の設計ではマイナーはstackerを担うことができ、ネットワーク参加者の中央集権化が進む懸念がある。この対策としてビットコイン400,000ブロック経過後(2029年頃)にPoXは終了し、PoBに戻る。その点において、移行後にビットコイン報酬を目的としていたstackerの振る舞いがどうなるかが掴めなかった。
現状、マイナーはビットコインをstackerへの手数料にSTXを受け取る点も、両トークンの値動き次第でインセンティブが変わる。STXを得た後にネットワークが拡大した場合、更にロックさせてSTXを得て、消費したBTCを上回るパフォーマンスをSTXのロックを続けることで循環させる。その点に特段の新規性は見られなかった。

stackerがチェーンの正当性を判定する点にPoS型のスラッシュのようなペナルティがない点は、「ブロック報酬が得られないor時間方向に難易度が上がるためチェーンを分岐させるインセンティブが働かず、大丈夫であろう」という解釈にとどまっている印象も受け、もう少し踏み込んで議論してもいいのではと思った。まあPoS系のようにネットワークが停止するわけではないしフォークは許容するのではあるけれども。

その他、前述したRSKの開発者による記事でいくつか懸念点が挙げられている。

総じて、ウェブサイトで主張しているほどさほどビットコインとの相関が感じられない、新規性?という印象を受けたところで一通り満足してしまった。

このブロックチェーン上で最近話題になっている目玉プロダクトのマイアミやニューヨークコインのような地域通貨系を動かして社会実装が進むイメージが現段階ではあまりわかなかった。

消化しきれていない点もあり、誤りがある点は忌憚なくご意見いただけますと幸いです。

■参考文献等

Stacks,https://www.stacks.co/what-is-stacks

Stacks Docs,https://docs.stacks.co/

Muneeb Ali,「Stacks 2.0 Apps and Smart Contracts for Bitcoin」, https://gaia.blockstack.org/hub/1AxyPunHHAHiEffXWESKfbvmBpGQv138Fp/stacks.pdf

Blockstack PBC,「PoX: Proof of Transfer Mining with Bitcoin」, https://uploads-ssl.webflow.com/5ff21113877dd72b9f913b35/6154471366c15dae30133499_pox.pdf

Jude Nelson,「Stacking Consensus SIP Number: 007」,https://github.com/stacksgov/sips/blob/main/sips/sip-007/sip-007-stacking-consensus.md#stacking-consensus-algorithm

Jude Nelson,「Burn Election SIP Number: 001」https://github.com/stacksgov/sips/blob/main/sips/sip-001/sip-001-burn-election.md#operation-as-a-leader

Sergio Demian Lerner,「A Review of the Stacks Blockchain from a RSK perspective」,https://medium.com/iovlabs-innovation-stories/a-review-of-the-stacks-blockchain-from-a-rsk-perspective-9e3361970f34

「Can someone help me understand this critique of Stacks?」,https://www.reddit.com/r/stacks/comments/ndjvqo/can_someone_help_me_understand_this_critique_of/

Remaining : 0 characters / 0 images
100

Sign up / Continue after login

Related stories

Writer

ブロックチェーン・暗号資産のオフィスワーカー。 興味があることが多すぎる。 歌、カメラ、旅行、カレーが好き。

Share

Popular stories

【写真】マイコンの手業の世界

94

HUNTER×HUNTERとチラシの裏と

70

エルサルバドルについて

70