プロダクト概要
実現したいこと
Web2で発行した仮のトークンがガスフリーで使える。Web3に移行することができる
画面は作らない、APIのみ。
アプローチ
常にDBとブロックチェーンの状態を一致させる
特定のトランザクションをWeb2, Web3で同時に実行する
ガス代かかるし誰も得しない
- 移行するタイミングで同期させる
- 状態のみを同期させる
過去のトランザクションを全て同期させる
考慮ポイント
UserIdとWalletアドレスの紐付けが必要
Walletアドレスを紐付けない人がいるかもしれない
いつのタイミングでWalletアドレスが決まるのかというタイムライン
イベントは以下
仮のトークンの発行
仮のトークンのやりとり
真のトークンのデプロイ
真のトークンのMint
真のトークンと仮のトークンの交換
- 移行したあとはWeb2のアクションは不可能にする
SNSログインの場合は、仮ウォレットを作成する
そのウォレットの秘密鍵の管理ができないので却下
ユーザのウォレットアドレスを登録時に入力もしくはWeb3Auth
- DB構造は以下の形になる
- contract
- ownerAddress:string
- web3ContractAddress:string
- walletAddress
- Migrate時のガス代はサーバが負担する必要あり。
- 署名してウォレットアドレスを送る必要がある
ユーザはカスタムなERC20を作りたかったらどうするの?
一旦まずGasFree Tokenで発行して、1対1でWeb3上で交換する
そういうプロトコルがあったはず
(今後) ユーザが作りたいERC20もJSONアップロードなどで対応してもいいのかも
- Mintの部分をForで回さずにBulkで処理するメソッドがあればガス代節約できそう
- 途中ガス切れを起こすリスクがあるのでBulk Mintは必要かも