ATUMChainというプロジェクトがあります。
Tendermintベースで、まずNEM/ETHのアトミックスワップ、そしてBTCペア追加からはじまる、クロスチェーンアトミックスワップのプロトコルだそうです。
Tendermintに関しては今日書いた記事も見てね。
とあるところでATUM開発者に直接対話する機会があったのですが、わかったことを書きます。
Tendermint
以前、ATUMはTendermintを使うとの情報を耳にしていました。なのでCosmosSDKもしくはLotionJSをつかっているのか?と聞いてみたところ、
「どちらも使ってみたが、クロスチェーンスワップに最適化するチューニングをするために、リファレンスのみを頼りにTendermintを独自に実装した。」
ということです。
技術力すげえ。
VM
ATUMChainはTendermintベースのチェーンですが、独自のVMを装備するようです。EVMかと確認したところ、そうではないそうです。
このVMを使って、開発者は独自に通貨ペアを定義できるようです。
btc/lc:jpyとかもできるっぽい。
このVMはEVMでないならどんな言語をコンパイルするのか、もしくはどんなスクリプトなのか?と聞いてみたところ、
On the first stage it will be own DSL / eDSL. What common language to use for contracts is a subject for discussion. It’s a good time now to propose something to us
ということです。
つまり、「まずは独自のドメイン固有言語(DSLもしくはexternal DSL)を使う。コントラクトに使う一般的な言語は議題にのぼっており、今なら提案も受け付けるよ」
ということで、厳密には決まってないようですね。
チェーン自体がHaskellをつかっているらしいので、まず最初はHaskellに依存したDSLになる可能性もあるようです。
マルチシグ
We can create cross only for chains with multisig.
ということです。
しかしetherscanにてトランザクションを確認したところ、単純なETH送信であり、「少なくとも一方のチェーンはマルチシグが使えないとクロスチェーンスワップできない」ということなのではないかと推測されます。
そもそもの仕組み
まず、注文はノード備え付けのAPIを叩いてつくります。これは想像に難くありません。
問題は、スワップをどうすんねん、ですね。
NEMは「NEM2になってアグリゲートトランザクションが実装される」「NEM2になってクロスチェーントランザクションが実装される」までまだたどり着いていない現状、想像が難しいものでした。
しつこく聞いてみたところ、丁寧に答えていただきました。答えとしては
- ノードにアカウントを登録する時に、自動でマルチシグ設定がなされる
- ユーザーのデポジットアドレスがマルチシグアカウントとなり、ランダムに選ばれたpayment gateway nodeとsome authorityが連署名者になる
- payment gateway nodeは最小で4つ。状況に応じて増やす。
とのことです。
仕組み上、
- アカウント登録時に、マルチシグを共にするpayment gateway nodeと運命を共にすることがきまる
- some authorityが導入されるため、トラストレスでなくなる
- payment gateway nodeも、4つということなので信頼できるwitnessである
と考えられます。
Tendermintと聞いてたので、Cosmosみたいなインターオペラビリティをかましてくる壮大なものかと思っていましたが、想像とは少し違いました。
続報あればお伝えします。