モナパーティがモナコインの子亀になる方法
ツイッターを眺めていると、意外と知られていないかなと思ったので。
知らなくてもモナパーティは使えますけれども。
技術的な厳密さは追いません。追いたい人は「マスタリング・ビットコイン」とか読んでください。あと OP_RETURN でピンと来る人は、本稿の対象読者ではありません。
Ⓜ️
まず、前提知識として、モナコインがどうやって MONA という価値を移転しているか、から。
普段使う範囲では殆ど意識されないですが、モナコインにはプログラミング言語が内蔵されています。イーサリアムのような高機能なものではありませんが、ちょっとした計算ならできます。想像に難くないと思いますが、暗号系の機能に特化しています。
そして、全ての価値(MONA)は UTXO という断片に記録されています。UTXO が何の略なのかは気にする必要はないです。そういう単語だと丸呑みしましょう。
UTXO には、価値に加え、プログラムの断片も含まれています。そして、その欠損部分を補ってプログラムを正しく実行できたなら、その UTXO に含まれる価値を利用できるルールとなっています。(なお、大抵の場合「秘密鍵を持っていると証明できるか」が欠損部分になります。)
UTXO を利用できる人は、含まれる価値を基にして、複数の新しい UTXO を生成できます。利用された UTXO は使用済みの印が付き、再利用はできません。
新しいUTXO には、元のとは違うプログラムの断片を含めることができます。つまり自分は利用できず別の人が利用できる UTXO を作れます。これが、いわゆる「送金」の際に、最下層で起きていることです。
Ⓜ️
ここで、絶対に実行が失敗するプログラムの断片を、敢えて UTXO に含めたとします。この UTXO は次の UTXO を生成する機会がありません。しかし UTXO としては正しいので、モナコインのブロックチェーンに記録されます。
(正しいのですが、いかなる手段を用いようともこの UTXO を利用できないので、ブロックチェーンエクスプローラは、unparsed address など不親切な表示を行う場合があります。関連記事はこちら。)
さらに「絶対に実行が失敗するプログラム」の後ろに任意のデータを含めた場合、このデータもまた、モナコインのブロックチェーンに記録されます。モナコインにとっては利用価値のないデータですが、UTXO としては正しいので。
モナパーティのノードは、「絶対に実行が失敗するプログラム」後ろにメッセージ(アセットの生成、送受信、DEX 操作、などなど)のデータを含めた UTXO を作り、モナコインにおける送金の仕組みを使って、モナコインのチェーンに記録します。また、モナコインのチェーンにある UTXO からメッセージを抽出し、モナパーティのデータベースを更新します。子亀チェーンの完成です。
Ⓜ️
この仕組みはビットコインが備えている機能を踏襲しています。最初期はチート扱いされたようですが、今となっては、このような使われ方は想定されています。
ちなみに「絶対に実行が失敗するプログラム」に使う命令は OP_RETURN と呼ばれています。モナパーティに限らず、 OP_RETURN という語が出たら「ああビットコインやモナコインを、本来の用途である送金以外で使う気なのだな」というふうに解釈してほぼ間違いはありません。