# Experimentalネットワークについて(LN Walletで利用できる) ## TOTOROネットワークの簡易ロードマップ 1. LN Walletで利用できるexperimentalネットワーク(Layer1)をローンチする。 2. zkRollupを使ったTOTOROネットワーク(Layer2)をローンチする。 以下 **1. LN Walletで利用できるExperimentalネットワーク(Layer1)をローンチする**について記載します。 ## 目的 **ユーザに、LN Walletで裏でEtherを使うという体験をさせたい。LNユーザは、競合と被らない領域のユーザであり、そのユーザを予め自分達で囲っておいて、zkrollupローンチ後にそのまま誘導する。** イメージ **LN Walletで、EVMサーバ上のスマートコントラクトを動かす。** ## 詳細 イーサリアムノードと呼ばすに、**EVMサーバ(decentralized server)** という言葉を使う。あくまでもLNユーザにイーサリアムを意識させないこと。 EVMサーバ - gethをforkして自分たちのネットワーク用にカスタマイズする。 - ETHではなく、自分たちのExperimental Tokenを使う。 - TxのVerifyを行って、全部ブロックに込める。Txのチェックしかしない。 利用者から見た時 - LN支払いで、Dappsを利用することができる。 - 手数料が**10satoshi**で、サービスが利用できる。 開発者に対して - 自分たちが他の開発者が作成したDappsプロダクトをGrantする。 - LN Walletで利用できるDappsがローンチできる。 ## 開発 自分たちのexperimentalネットワークの名称は下記になりそう。 **zkcloud lightning** これを[Lapps](https://www.lapps.co/)として登録する。 ### 開発・設計 - Experimentalネットワーク用にカスタマイズしたgeth単体を動かす、EVMサーバを構築する。 - 10satoshiほどの、ほぼ無料の手数料で運営できるように設計する。 - LN Walletをカスタマイズして、自分たちのExperimentalネットワークが利用できるようにする。 ### gethのカスタマイズ - ガス代料金を**0円**にする。 - ガス代が0円なので、無限にトランザクションがループしてしまわないようにする。 - 支払い済みのinvoiceが付属しているTransactionの実行ができるように制限をかける。 ### LN Walletのカスタマイズ ターゲットユーザを見据えて、どのプラットフォームでLN Walletを作成したいかを決める。 - Mobile Wallet - Chrome Extension(MataMask)のようなもの。 ユーザが気軽に使いたいのであれば、Mobile Walletにする。ここで作成したLN WalletはTotoro ネットワークでも使用する。 **達成したいこと** - **LN支払いで、EMVサーバのTransactionが実行できること。** その他 - BTC、ETHのアカウントアドレスのフォーマットの違いについては、アカウント作成時に、互いにマッピングされていない2種類のアカウントアドレスを持つことで解決できる。 - マッピングしないことで、トランザクションを実行する際に、自分以外のユーザにPaymentのInvoiceを代行してもらうことができる。 - LNDサーバはどうする? トランザクションを打つイメージは、[Lightning-BTC支払い](https://hackmd.io/_kCq_Ac0RaCzKPzgWhPNzA)を参照。 ```mermaid sequenceDiagram actor U as User participant O as Operator autonumber U ->> O : submit transaction parameters O ->> U : invoice with transaction parameters U ->> O : lightnig payment with the above invoice U ->> O : submitTx with invoice(lightning payment) O ->> O : Check fee payment O ->> O : verifyAndExec(tx) O ->> U : Response: stateDiff ``` 開発について、以下3案があります。 - 作成するのがかなり難しそうなので、LN Walletを作っているところに協力してもらう。 - アイデアを出して有志を募る。 - LN Walletは、プロジェクトの要なので、自分達で作成する。 もし自分たちで作成する場合は、下記当たりのOSSをフォークして自分たち用にカスタマイズするのが良さそうか。 Mobile - https://github.com/breez/breezmobile Chrome Extension - https://github.com/joule-labs/joule-extension - https://github.com/MetaMask/metamask-extension 追記 - まずは、Google Chrome拡張子のLN Walletを作成する。 - ネイティブのLN Walletに関しては、協業してくれる会社を探す。 ### EVMサーバ上のオペレータの作成 上記のトランザクションを打つイメージの図解で確認した、オペレータの動作を実装する。 - ローカルのLNDと通信しInvoice関連を処理する。 - Invoiceを発行する。 - Invoice支払いを受け付ける。 - 支払い済みのInvoice付きのTransactionを受け取り、EVMサーバに投げる。 - LN支払いを、Experimental Tokenに変換する(アトミックスワップようのようなものを実装する。) ### Experimantal トークン - Airdropする。 - (アフィリエイト) ### ユーザ - ユーザは、LN支払でDappsを支払いができる。 - 開発者は、LN支払でDappsのデプロイできる。 ### 分散ストレージ (自分たちのDappsを作るかもしれない。) 自分たちのロードマップ上にある分散ストレージをTotoroネットワークのローンチに先立って、リリースして先にユーザに体験させてもいい。 基本的には、他の開発者がどんどん自分達のExperimentalネットワーク上でアプリを開発していくことを目指したい。 ### イメージ図 ![](https://hackmd.io/_uploads/S1n3F7o5Y.jpg) dockerで全部立ち上がるように一つのサーバ上で全部実装する or それぞれのノードごとにサーバ分ける。 - ln node - bitcoin - operator - geth **更新(2021-12-22)** ![](https://hackmd.io/_uploads/BkpYhqliF.jpg) - ユーザはevm ノードを叩ける。つまりLN支払でも、トークン支払でもTransactionを実行できる。operatorを介した時のみ、LN支払いできる。(LN BTCの価格分のトークンに変換されて、トランザクションが実行される。) - operatorは、Transactionの実行処理のみhandleする。それ以外は、直接evm nodeから取得してもらう。 - transaction失敗時は、operatorが返金(send pay)する。 - operatorは、2台ほど配置する。 - evm ノードは、3台ほど配置する。 - **gasPriceは、0でなくて通常のgas feeで出す。** これで、estimateの価格も事前にわかる。無限Txも考えなくていい。 - operatorが、市場にでない100億枚のトークンを持っている。TPS1000のTransactionを100年間叩ける計算。 - operatorの秘密鍵の管理に気をつける。(ホットウォレットには、たかだか30日間分のトークンしか置かない) - コールドウォレットにoperator用のトークンが全て置かれており、緊急補給用に5つくらい用意されたウォレットには1日分のトークンが保管されている。 - LN支払の料金に関しては、operatorが料金のhistoryを持っておくこと。 - operatorは全部meta transactionとして実行する。metaTx用のContractを介して、ユーザがデプロイしたContractを実行してもらう。 - IPO(Initial Pay offering)で100satoshi = 1円 = 1トークンが取得できるclaim contractを実行してもらう。 - eth scan用のサーバを用意する。 - experimentalトークンを出して盛り上げてから、claimトークンのイベントを用意する。 - 今の設計だとMetaMaskからもトランザクションを実行できる。 ## TODO - ~~ターゲットユーザおよび展開するプラットフォームを決める~~ -> **Chrome 拡張子で使えるLN Walletを作成する**。モバイルのLN Walletに関しては、協業してもらえる会社を探す。 - gethカスタマイズ。 - EVMサーバ上のオペレータの作成。 - **LN Walletカスタマイズ** > 一番難しそう。 - Experimentalネットワークのローンチ。 一番初めにLN Walletから取り掛かると良さそう。