ログインIDとwallet addressの紐付け どうするか問題
【custodyとnon custodyについて(考えられる全パターン羅列)】
ポーカーゲームの性質上、betting中は資金をテーブル上に置く(=コントラクトに資金が保存される)ため、その瞬間は確実にcustodyになる。そのため、本プロジェクトではnon custodyとcustodyを以下の定義と仮置きする。
1.non custody(wallet必須): テーブルへのバイイン時のみ資金がプラットフォーム(コントラクトに保存される)に入る
→web3ユーザーかつcustodyが嫌な人 + web3ユーザーかつsign upが面倒な人
2.custody(CoinPokerのようにwalletが無くても可能): プラットフォームに資金を入金(コントラクトに保存される)し、そこからテーブルにバイインしたりトーナメント参加費を支払う
→web2ユーザー + web3ユーザーかつ都度ガス代を払う手間が嫌な人
【walletとログインID生成の流れについて(考えられる全パターン羅列)】
A.wallet接続する→裏側でログインIDが作成されるパターン(SSOのイメージ)
BETDEX型
Uniswap型のようなログイン概念が存在しないパターンもある
B.アカウントをsign upする→勝手にwalletが作成されるパターン( #秘密鍵管理 に関しては後述 )
STEPN型(自社wallet)/FriendTech型(サードパーティwallet)
同一アカウントで事後的にwallet変更できるようにする?
同一アカウントで複数walletを紐づけられるようにする?
C.アカウントをsign upする→wallet生成されず、アプリ内で資金管理されるパターン(※必然的に2のcustody型になる)
→web2ポーカーの要領でアカウント作成は楽だが、入出金の際に面倒
walletは事後的に任意で接続可能にする?
1.CEX型; wallet接続は特にナシ
2.CoinPoker, Sportsbet.io型; wallet接続あり。ただしwallet addressを変更してもログインIDは維持される
deposit用wallet addressに送る
これは自分専用のaddress?
それとも全員共通のaddress?
【walletとログインIDの切り替えについて(考えられる全パターン羅列)】
X. walletを切り替えるとログインIDが変わるパターン
→stakingやEarn要素を考えると、この仕様がやりやすい
Y. walletを切り替えてもログインIDが変わらないパターン
→custody形式でやるなら、こっちが自然
ううううむ、pros/consという感じで悩ましいですね。。。
#※新しいログインIDを生成して、別のログインIDで使用中のwalletを接続させることは不可能にしましょう。
【考えられる全パターンから、どの組み合わせを選択する? (Non Custody/Custodyとwallet/ログインID周り)】
MVP段階; 「1 × A × X」でいく
→これで一旦prototype作成したい
将来; web2ユーザーがメインになってくる
2(custody)メイン、アプリ内資金が足りない場合は接続しているwalletから1(non custody)形式の入金を実現する
A→Bの流れ
基本はcustody形式なので、walletは切り替え可能。(wallet切り替えても固有のログインIDが残る)
ユーザーがwallet保有していれば、接続してログインID生成(資金は再度入金必要あり)
walletが無ければ普通にsign upしてFriend Tech形式でwallet生成される; #これweb2ユーザーからすると分かりにくいかもな......
Yを選択
custodyメインで行くことを考えるとXよりもYがいい気がするが、stakingやearnはどうする?
【上記におけるsign upフロー】
【上記における入金方法】
Non Custody
普通にwalletトランザクションでbuy-inする
walletに対してOn-Rampでのクリプト決済
Custodyの場合
1: 自分のwalletからアプリにトランザクションを起こして入出金
CoinPoker, FriendTechスタイル
2: CEXからアプリに送金する
deposit用wallet addressに送るとき、注意が必要なはず(CoinPokerなど)
3: On/OffRamp決済
【 #秘密鍵管理 について→全然わかってないです...】