BCHNewsBitcoinCashの新しいOP_CODEでオンチェーン上でのチェスゲームを実現2018.12.27reiこんにちは、BCHNews編集部のreiです。Cash(BCH)のハードフォークで追加された二つのオペコードに関して覚えていますか?一つは、OP_CHECKDATASIG、もう一つはOP_CHECKDATASIGVERIFYです。Forfeitsでは、2つのオペコードにフォーカスした新たな二重支払い抑止の提案についてまとめました。別な可能性として、オペコードを使用してコインの使用方法に制限を設けることができることや、オンチェーンでチェスを行うことができることが新たに発表されています。そこで本日は、このOP_CHECKDATASIGを使用したBCHの新たな可能性に関してまとめようと思います。OP_CHECKDATASIGについて本題に入る前にまず、OP_CHECKDATASIGについておさらいしたいと思います。OP_CHECKDATASIGは、Bitcoinスクリプトで使用されるオペコードです。Bitcoinスクリプトは、オペコードの組み合わせ次第で支払いの条件などを様々設定することができるものです。Bitcoinスクリプトは、スタック指向で可読性は低い言語で、計算複雑性を排し予測可能性なチューリング不完全の言語として設計されています。オペコードはその中で、OP_**で始まる名前でスクリプトの操作が定義されているものです。中でも、OP_CHECKDATASIGとOP_CHECKDATASIGVERIFYはBCHの11月のハードフォークで追加されたオペコードです。OP_CHECKDATASIGは、Bitcoinスクリプトで、署名が有効だった場合true(0)を、そうでなかった場合はfalse(1)を返す働きをし、同時に実装されたOP_CHECKDATASIGVERIFYは、同様に署名を検証しますが、署名が有効であった場合は何も返さず、無効であった場合は動作を停止するオペコードです。Cashの記事で主張しています。記事では、Bitcoinスクリプトの高級言語であるSpednを使用してデモを行なっています。BCH上にスマートコントラクトを記述するスクリプト言語を紹介します』(https://bchnews.jp/bitcoincashnews-sr/4397)引用元:https://honest.cash/pein_sama/spending-constraints-with-op_checkdatasig-172この例では、特定のアウトプットに最低額を設けるという制約を加えています。Sama氏は、これ以外にも特定のスキームで有効なOP_RETURNメタデータが含まれているか、いくつかのパターンに一致するかを調べることができると主張しており、これまでのBitcoinスクリプトは誰が支払いを行うかだけを制限してきましたが、これからはどのように支払いを行うのかという制約を加えることができると述べています。Ruck氏は、Sama氏の発想を元にしてオンチェーンでのチェスのゲームへと発展させています。チェスは、サイコロを振るなどの確率論的な動作がなく、第三者がその正当性を確認することができるゲームです。したがって、OP_CHECKDATASIGを使用して、ゲームがルール通りに運用されていることを確認することができます。Ruck氏はPythonコードを使用して、そのコンセプトの実装を示しています。引用元:https://tobiasruck.com/content/lets-play-chess-on-bch/それぞれの関数は、以下のチェスの動作を表しています。apply_move:駒を動かす関数white_has_won:白の勝利black_has_won:黒の勝利is_stalemate:ステイルメイトステイルメイトは、自分の手番において相手にチェックされておらず、反則にならずに次に動かせる駒が一つもない状況のことを指します。ルール上で引き分けとして扱われることが多く、このコードでも引き分けとして扱われています。詳細は省きますが、このコードは1000satoshisを送り合うことでチェスの手番を進めています。その証拠にお互いがsurrenderを選択した場合、相手に対して1000の値が送信されていることがわかると思います。このやり取りを監視する審判としての役割をOP_CHECKDATASIGが果たすことにより、自律的にゲームを行うことが出来るそうです。Ruck氏はこの過程でOP_CHECKDATASIGを使用したスクリプトが、ループを実現しておりチューリング完全であることを示しています。コードの最適化が行われればBitcoin仮想マシン(VM)を実現できると主張しています。本日は、BCHに新しく追加されたオペコードの内の一つOP_CHECKDATASIGにフォーカスし、その可能性に関してまとめました。Bitcoinスクリプトはあえてチューリング不完全な言語でしたが、OP_CHECKDATASIGの導入によってRuck氏がチューリングマシンの再現に成功、スクリプトのチューリング完全性が示されました。したがって、OP_CHECKDATASIGは、チェスをはじめとしたスクリプトの新分野開拓に対し、一役買うことはほぼ間違い無いと思われますね。最新情報はこちらBCHNewsでは公式のTwitterアカウント(@bchnews_jp)を開設しました。更新情報を配信しておりますので、よろしければフォローしていただけると嬉しいです。この記事をシェアこの記事のカテゴリニュースビットコインキャッシュこの記事のタグBCHBitcoinCashOP_CHECKDATASIGreiBCHNews編集部のひとり。わかりやすく掘り下げた記事を!というモットーで記事を書いています。好きな食べ物はししゃもです。