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

cocone TECH TALK Vol.6 - ココネグループのブロックチェーン MOOI Network とのバックエンド連携

cocone TECH TALK Vol.6 - ココネグループのブロックチェーン MOOI Network とのバックエンド連携

cocone

May 08, 2023
Tweet

More Decks by cocone

Other Decks in Technology

Transcript

  1. ▪経歴  CRMパッケージ企業 / SIチーム  エンタメ系 / 自社開発企業  株式会社ヴァリューズ  ココネ株式会社 社会に出てプロジェクトマネジメントを含めたSIerムーブを一通り叩き込まれ、 

    その後は自社開発エンジニアの道へ。 前職ではサーバーチームのリーダーとして複数事業でバックエンドの設計-実装-運 用を行い主力製品のAWS Foundational Technical Reviewの適用対応なども担当。 2022年、ご縁がありココネへ。 自己紹介 齋藤裕志( Yuji Saito ) JANKENでのすがた 実社会でのすがた 趣味 : Sound Horizon ⛩ 2
  2. ブロックチェーン連携の流れ(すさまじくざっくり書いたもの) ①Mint(ミント) サービス側でアイテムを削除(封印)し、ブロックチェーンにデータを書き込む Mint Burn Item Data Own Info Item

    Data Burn Info ②Burn(バーン) ブロックチェーン上でデータを利用不可能にし、サービス側でアイテムを利用可能に ※実際の処理の流れはもっと複雑で、順序も上記とは異なる場合があります。 16
  3. WriteConflict問題 ・更新対象がTransaction中はロックされる(これは当然) ・ロック中にそのDocumentにTransactionで処理しようとすると、5msだけ待って エラーとなる(なんやて) A’s Item A’s Status B’s Item

    B’s Item Shared Info Shared Status ◯ Transaction 1 ◯ Transaction 2 ◯ Transaction 1 ✖ Transaction 2 ERROR https://www.mongodb.com/docs/manual/reference/parameters/#mongodb-parameter-param.maxTransactionLockRequestTimeoutMillis 20
  4. ミューテーションテスト(っぽいもの)によりテストのカバレッジを上げる ・今回の要件において、外部通信が複雑に発生する ・特にネットワークエラーなど、結合テストなどでも確認が難し いものについて、全てテストしていく必要がある case 内容 エラーキー 1 NFTをMintingする通信の関数1 mutation1

    2 NFTをMintingする通信の関数2 mutation2 3 … … mutation2:(userid‐A) mutation2:(userid‐B) mutation1:(userid‐C) →設定すると故意にエラーを発生させるような仕組みを作成 →以下の例だと例えば userAは必ずNFTのMinting通信の関数2で失敗するようになる 23