Upgrade to Pro — share decks privately, control downloads, hide ads and more …

N Suite 技術よもやま話

bc/web3@loft
July 03, 2023
160

N Suite 技術よもやま話

bc/web3@loft

July 03, 2023
Tweet

Transcript

  1. © 2023 double jump.tokyo inc. All Rights Reserved N Suite

    技術よもやま話 2023/06/21 TOKYO BLOCKCHAIN TECH MEETUP
  2. © 2023 double jump.tokyo inc. All Rights Reserved Re-building the

    future of gaming with blockchain technology!
  3. © 2023 double jump.tokyo inc. All Rights Reserved Copyright ©

    2023 double jump.tokyo Inc. All rights reserved. double jump.tokyo は
 BCG(※) 開発・運用・支援を主軸とし
 web3事業の様々なノウハウを有する
 ブロックチェーン専業開発会社です。
 会社名:double jump.tokyo株式会社
 所在地:東京都新宿区西新宿 4-34-7
 代表者:代表取締役 CEO 上野 広伸、代表取締役 CTO 満足 亮
 事業内容:ブロックチェーン技術を用いたゲーム、 
      NFTおよびアセットの開発・運営・販売等 
 加盟団体:一般社団法人 日本ブロックチェーン協会(上野は理事を務める) 
      一般社団法人 コンピューターエンターテインメント協会 
 ※BCG=ブロックチェーンゲーム 
 COMPANY
  4. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved N

    Suite の概要
 4
 企業がWeb3ビジネスを行うために必要な ウォレット機能を備えた
 Web3ビジネス・ソフトウェア(SaaS) 

  5. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved N

    Suite の活用シーン
 5
 Web3ビジネスの様々なシーンで使用できる
 暗号資産の保有・送金
 NFTの発行・運用
 NFTの保有・送信
 DeFiの 使用
 スマートコントラクトの デプロイ・メソッド実行
 dAppsへの
 アクセス

  6. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved 企業向けウォレットで考慮すべきポイント


    6
 ウォレットの利用状況を適切に管理・ 把握するために、効果的かつ効率的 なワークフローの整備が必要。 
 社員が自由にウォレットを使えてしまう と、仮想通貨/トークンの紛失や盗難の リスク管理が必要。
 内部統制のオペレーション整備 
 紛失や盗難のリスク管理 
 ?
  7. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved N

    Suite のウォレット機能
 7
 ウォレット
 ワークフローシステム 
 プロジェクトチーム間で秘密鍵を 安全かつ効率的に共有管理可能にするために 
 ワークフローシステムを備えたウォレットを提供 

  8. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved AWS

    認定ソフトウェア
 8
 AWS ファンデーショナルテクニカルレビュー(FTR)を 通過し、「AWS 認定ソフトウェア」に。AWS より、シス テムのセキュリティ、信頼性、運用上の優秀性など の評価を受け、一定の基準をクリア。
  9. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved N

    Suite の対応ネットワーク
 9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Optimism Arbitrum One Nitro Goerli Rollup Optimism Goerli 
 Fuji Testnet
 BSC Testnet
 Avalanche BSC Ethereum Goerli Testnet
 Polygon Mumbai Testnet 
 Astar
 Shibuya Shiden
 Shibuya ※その他ネットワークは順次拡大予定 
 
 
 
 Klyatn
 Baobab Testnet 
 Oasys Oasys Testnet
 ※マルチシグ非対応 
 ※マルチシグ非対応 
 ※マルチシグ非対応 

  10. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved まだまだあるN

    Suiteの機能!
 10
 • 一括送金機能(200件) 
 • NFT一括Mint機能
 • NFT Metadata Preview 
 • EVMカスタムネットワーク 
 • EIP-6963: Multi Injected Provider Discovery対応 ← New! 

  11. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved N

    Suite のワークフロー機能の仕組み
 12
 Create
 Sign
 Broadcast
 Tx Tx Tx Raw Transaction 
 Signed Transaction 
 通常のウォレットのTx実行の流れ 
 Sign
 Broadcast
 Tx Tx Approve
 Tx Request
 Tx N Suite のTx実行の流れ 
 申請者
 承認者
 実行者
 Raw Transaction 
 Signed Transaction 
 使用者

  12. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved N

    Suite の秘密鍵管理方式
 13
 用途に応じて秘密鍵の管理方法を選択 クラウド型 ハードウェア・ウォレット (AWS KMS)
 (例: Ledger)
 自社管理するクラウド 
 (AWS KMS等)に秘密鍵を保管 マルチシグ型 (コントラクトウォレット)
 本日紹介する範囲
  13. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved AWS

    KMS について
 15
 AWS Key Management Service 暗号化キー(いわゆる秘密鍵)を作成して、安全に保管するサービス 作成した秘密鍵は、HSM(Hardware Security Module)に 保存され、HSMから秘密鍵を取り出せないように堅牢に 保護されている。 Ethereumのトランザクションの署名で使われるECDSA 署名に対応している。 HSM
  14. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved AWS

    KMS と N Wallet の接続
 16
 AWS KMS IAM IAM Policy IAM User 秘密鍵 権限の割り当て 付与 登録 ユーザ企業のAWSアカウント AWS KMSの操作権限を割り当てたIAM Policy を作成。 
 IAM User に、作成したIAM Policyを付与。 
 AWS KMS のCMK (Customer Master Key) に暗号化キー(秘密 鍵)を作成。 1 2 3 IAM User のクレデンシャル (Access Key, Secret Access Key) を N Walletに登録。 
 AWS KMSに作成した秘密鍵のアドレス読み込みと署名が可能に なる。
 4 秘密鍵はユーザ企業が保持している形になるため、Self-Custory型 のウォレットサービスにできる
  15. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved N

    Wallet での署名
 17
 署名
 ブロードキャスト 
 Tx Tx 承認
 申請
 Tx Raw Transaction 
 AWS KMS 秘密鍵 署名リクエスト 
 署名リクエスト 
 レスポンス with 署名済みTx 
 Tx ブロードキャスト 
 Tx
  16. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved AWS

    KMS 秘密鍵 AWS KMS で秘密鍵を管理するメリット
 18
 秘密鍵本体を渡さずに共 有可能 ※AWSアクセスキー=使用権限
 秘密鍵がクラウドから 漏洩することがない 
 1 4 アクセス遮断
 AWSのアクセスキーで 
 秘密鍵の使用を制御 
 ※退職者が出た場合など
 3 Logs 秘密鍵の使用履歴がAWS 上のログに残る 
 2 CloudTrail
  17. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved N

    Suite のマルチシグウォレット
 20
 一般的なマルチシグ N Suite のマルチシグ 2 of 3 の例
 Signer
 Signer
 Signer
 0x3aB2…080F (コントラクトウォレット) 
 2 of 3 の例
 0x3aB2…080F (コントラクトウォレット) 
 Signer Group
 Signer Group
 Signer Group

  18. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved Signer

    Group の役割
 21
 0x3aB2…080F
 Signer Group
 Signer Group
 Signer Group
 Main
 N Suite
 Backup
 ユーザ企業が管理
 ユーザ企業が管理
 N Suiteが管理
 通常のTx実行時に署名で使用。 
 署名の一つをN Suiteが肩代わり。 
 他のSigner Groupを変更する 時に使用。
 2 of 3

  19. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved N

    Suite での使用の流れ
 22
 N Suiteの バックグラウンド 
 署名1 承認 秘密鍵の 使用を申請 承認された操作に署名 (MAINの秘密鍵を使用) 
 Workflow Backup Main 署名2&操作実行 接続
 マルチシグ ウォレット
 N Suite のシステムが署名 (N Suiteの秘密鍵を使用) 

  20. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved 技術スタック


    23
 分類
 関連技術
 バックエンド
 言語:Go
 フロントエンド
 言語:TypeScript, React.js, Next.js
 Chrome Extension
 言語:TypeScript, React.js, Next.js インフラ
 AWS, Vercel, Sendgrid, Auth0 ブロックチェーン
 Solidity, ethers.js, Hardhat, Infura
  21. Confidential. © 2022 double jump.tokyo inc. All Rights Reserved N

    Suite 構成図
 24
 User Extention https N Board https 認証 Private https API request Main API Blockchain Proxy N Suite AWS Customer’s cloud Custom signer sign request sign request KMS protocol batch https https Blockchain node など Static file https https (with api key) メールデータ https API request / tx sync blocks BlastAPI Alchemy EventBridge
  22. © 2023 double jump.tokyo inc. All Rights Reserved 開発裏話 •

    N Suite開発の着手は2020年4月。 ◦ NFTブームにより日本企業のNFTビジネスの参入の可能性が見えてきた • 大きなキッカケはAWS KMS 非対称鍵の実装とsecp256k1の採用 ◦ 2019/11/25 「Digital signing with the new asymmetric keys feature of AWS KMS」 ◦ N Suite開発前にある程度のフィージビリティ確認は済ませ、プロダクションで KMSを導入開始していた ▪ そもそもDJT社内では鍵管理が常に課題であった • 昨年から新規にN Suite外のEVM鍵発行はなし
  23. © 2023 double jump.tokyo inc. All Rights Reserved Frontend •

    前年にVercel/Next.jsを採用したゲームプロジェクトを開発していた ◦ toBダッシュボードということで負荷の心配も少なく一択で採用 ◦ CI/CDフローをVercelが用意してくれるため開発者体験が非常に良い ▪ CI/CDに悩む必要がない! ◦ 当時から「イケてる」感のあるプロダクトではあったが、今年はレビュー機能や キャッシュ機構などさらに進化している • Crypto系のプロジェクトは当時Next.jsの採用が多く、Crypto系のライブ ラリがReact対応されていることが多かった • N WalletはMetaMask互換のChromeExtentionなので罠が多い、、 ◦ 互換の追従も大変
  24. © 2023 double jump.tokyo inc. All Rights Reserved Backend •

    toB SaaSということで、ゲームなどと違いアクセスは定常的 ◦ スパイクはなく、業務時間のアクセスがメイン ◦ そもそもブロックチェーンにトランザクションを起こす機会は少ない • 全面的にServerlessを採用して開発を開始 ◦ API Gateway + Lambdaの構成 ◦ コンテナよりもできることが限られるが、その分できることに集中できる ▪ CI/CDに悩む必要がない! • 自前でIndexerも構築し、残高表示も対応 • web3の幅広い課題に自前で対応中!
  25. © 2023 double jump.tokyo inc. All Rights Reserved まとめ •

    N Suiteのご紹介 • web3特有の技術課題に取り組むだけでなく、web2的な技術に関しても高 水準な開発環境で進めている • web3は過渡期で複雑なことが多く、それ以外のことはなくべく考えることを 減らしたい • 2020年4月から開発を重ねてきたN Suiteは十分に実践に耐える状態に なっているのでぜひご利用ください!
  26. © 2023 double jump.tokyo inc. All Rights Reserved N Suiteを開発するDJTでは

    一緒にプロダクト開発をするエンジニアを 募集しています! We are hiring !