---
# System prepended metadata

title: Experimentalネットワークについて(LN Walletで利用できる)

---

# 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
```

開発について、以下３案があります。
- 作成するのがかなり難しそうなので、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から取り掛かると良さそう。
