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

メルコイン決済基盤の実践話 / Implementing the Mercoin Payment Platform

mercari
October 14, 2023

メルコイン決済基盤の実践話 / Implementing the Mercoin Payment Platform

メルコインの暗号資産ビジネスを支えるために、既存のメルペイの決済基盤の開発経験を活用し、決済基盤を再設計・開発しました。
本セッションでは、メルコイン決済基盤の構成や各ドメインコンポーネントの紹介、技術的な進化ポイントについて、詳しくご説明します。

In order to support Mercoin’s cryptoasset business, our members leveraged their development experience of working on the existing Merpay payment platform to redesign and develop the Mercoin payment platform.
In this session, we’ll share the configuration of the Mercoin payment platform and each domain component and explain the relevant technical development points in detail.

------
Merpay & Mercoin Tech Fest 2023は3日間のオンライン技術カンファレンスです。
IT企業で働くソフトウェアエンジニアおよびメルペイ・メルコインの技術スタックに興味がある方々を対象に2023年8月22日(火)、23日(水)、24日(木)の3日間、開催します。 Merpay & Mercoin Tech Fest は事業との関わりから技術への興味を深め、プロダクトやサービスを支えるエンジニアリングを知ることができるお祭りです。

今年のテーマは「Unleash Fintech」。 メルペイ・メルコインのこれまでの技術的な取り組みはもちろん、メルカリグループのFintech事業における新たな挑戦をお伝えします。 セッションでは事業を支える組織・技術・課題などへの試行錯誤やアプローチなど多面的にご紹介予定です。

メルペイ・メルコインが今後どのようにUnleash(解放)していくのか、ぜひ見に来てください。

■イベント関連情報
- 公式ウェブサイト:https://events.merpay.com/techfest-2023/
- 申し込みページ:https://mercari.connpass.com/event/286670/
- Twitterハッシュタグ: #MerpayMercoinTechFest
■リンク集
- メルカリ・メルペイイベント一覧:https://mercari.connpass.com/
- メルカリキャリアサイト:https://careers.mercari.com/
- メルカリエンジニアリングブログ:https://engineering.mercari.com/blog/
- メルカリエンジニア向けTwitterアカウント:https://twitter.com/mercaridevjp
- 株式会社メルペイ:https://jp.merpay.com/

mercari

October 14, 2023
Tweet

More Decks by mercari

Other Decks in Technology

Transcript

  1. Session Title
    Pragmatic Practices of
    Mercoin Payment Platform
    メルコイン決済基盤の実践話
    foghost
    Engineering Head of Merpay Value Circulation Platform

    View full-size slide

  2. Junwei Liang / @foghost
    2016年11月メルカリ入社、メルペイ立ち上げ時期か
    ら、
    決済基盤の開発に携わってきた。
    現在、Engineering HeadとしてValue Circulation
    Platformチームでメルカリグループの各事業を支える
    ためのビジネス基盤サービスの開発・運用を担当して
    いる。
    株式会社メルペイ
    Engineering Head of Value Circulation Platform

    View full-size slide

  3. Vision of Value Circulation Platform
    Provide a foundation as a product
    that is the best choice for product teams
    プロダクトチームにとってベストチョイスの基盤
    をプロダクトとして提供する

    View full-size slide

  4. Agenda
    01
    02
    03
    04
    全体概要の紹介
    台帳管理
    決済処理
    帳簿管理

    View full-size slide

  5. Payment Platform Overview
    決済処理
    メルペイ
    各種決済
    台帳管理 帳簿管理
    Product
    Services
    Foundation /
    Value
    Circulation
    Platform
    メルカリフリマ
    External Services
    暗号資産取引
    サービス
    Mercoin Payment Platform
    メルカリShops
    Merpay Payment Platform
    決済処理
    精算 台帳管理 外部接続
    銀行 パートナーさま
    クレカなどの
    GW業者さま

    View full-size slide

  6. 決済とは
    さまざまな 経済取引 において
    参加者達 の お財布 を操作して、
    価値の移転・交換を行う

    View full-size slide

  7. メルコインにおける決済
    暗号資産取引 において お客さま
    の 取引口座、暗号資産口座などの財布
    を操作して、価値の移転・交換を行う

    View full-size slide

  8. 台帳管理
    口座・価値の管理

    View full-size slide

  9. お客さまの口座
    ¥
    Trading Funds
    Account (JPY)
    取引口座
    B
    Crypto Account
    (BTC)
    暗号資産口座
    Mercoin
    Accounts
    Merpay
    Accounts
    Points Account
    メルカリポイント口座
    P ¥
    Funds Account
    メルペイ資金移動口座

    View full-size slide

  10. 台帳への記帳方法 - 単式
    決済サービス 台帳サービス
    - 1000円
    メルカリポイント
    Point Account
    メルカリポイント口座
    P
    +2000円分 = ? + ?
    暗号資産(BTC)残高
    - 1000円
    取引口座残高
    ¥
    Trading Funds
    Account (JPY)
    取引口座
    B
    Crypto Account
    (BTC)
    暗号資産口座
    メルペイ
    決済サービス

    View full-size slide

  11. 単式記帳
    ● 取引におけるお金の移動について、移動元口座と移動先
    口座を単独で操作して記帳される
    ● 台帳の観点からは、ある口座のお金がどこから入って、
    どこへ出たのが追跡できない (上流の決済サービスの
    データが必要)

    View full-size slide

  12. +1000円分
    暗号資産(BTC)残高
    台帳への記帳方法 - 複式
    決済サービス 台帳サービス
    - 1000円
    メルカリポイント
    - 1000円
    取引口座残高
    -1000円分
    メルカリポイント預かり金
    +1000円分
    暗号資産(BTC)残高
    ¥ B
    Trading Funds
    Account (JPY)
    取引口座
    Crypto Account
    (BTC)
    暗号資産口座
    Point Account
    メルカリポイント口座
    P
    メルペイ
    決済サービス

    View full-size slide

  13. 複式記帳
    ● 取引におけるお金の移動について、移動元口座と移動
    先口座必ずセットで操作して記帳される
    ● 台帳の観点からは、お金の出入れについて、移動元と移
    動先がわかるように追跡される

    View full-size slide

  14. Exchange
    Account (Source)
    取引口座
    Account (Target)
    暗号資産口座
    AccountLog AccountSnapshot
    AccountItem AccountItemLog
    - 1000円
    取引口座残高
    +1000円分
    暗号資産(BTC)残高
    AccountLog AccountSnapshot
    AccountItem AccountItemLog
    メルコイン台帳サービス(複式記帳)
    Transaction Layer
    Account Layer

    View full-size slide

  15. メルカリポイント預かり金口座とは?

    View full-size slide

  16. 記帳用で実体がない口座
    ¥
    Deposit Account
    預かり金口座
    (メルカリポイント)
    Internal
    Accounts
    ¥
    Deposit Account
    預かり金口座
    (メルペイ残高)
    ¥
    〇〇 Account
    〇〇 費用負担口座

    View full-size slide

  17. Configurable Value Account
    ¥
    Trading Funds
    Account
    取引口座
    B
    Crypto Account
    暗号資産口座
    ¥
    Deposit Account
    預かり金口座
    レート追跡あり
    Log Only
    有効期限なし
    自動作成しない
    自動作成
    属性 挙動

    New Account
    新しい口座種別
    Log Only
    Configurable attributes with less code to support new account
    有効期限なし

    View full-size slide

  18. 決済処理
    価値交換

    View full-size slide

  19. 価値交換(Exchange) API
    お客さま お客さま
    ¥ B
    仮処理
    CreateExchange
    各種口座 (N)
    仮売上
    状態
    確定処理
    CaptureExchange
    P ¥ B
    ある口座 (1)
    ¥
    即時確定
    CreateExchange
    (capture=true)

    View full-size slide

  20. BTC購入
    お客さま お客さま
    ¥
    仮処理
    CreateExchange
    取引口座
    仮売上
    状態
    確定処理
    CaptureExchange
    P B
    暗号資産(BTC)口座
    メルカリポイント口座

    View full-size slide

  21. BTC売却
    お客さま お客さま
    B
    仮処理
    CreateExchange
    暗号資産(BTC)口座
    仮売上
    状態
    確定処理
    CaptureExchange
    ¥
    取引口座

    View full-size slide

  22. 分散トランザクションの管理
    マイクロサービスにおける決済トランザクション管理
    メルコイン決済基盤における分散トランザクション管理

    View full-size slide

  23. Orchestration-based Saga
    with Workflow SDK
    Activity: 決済データ保存
    wf.Activity(PrepareExchange, req).Execute(ctx)
    Activity: 取引残高消費
    wf.Activity(PayFunds, 1000).Execute(ctx)
    Activity: メルカリポイント決済
    wf.Activity(PayPoint, 500).Execute(ctx)
    Activity: 決済結果保存
    wf.Activity(Update, id).Execute(ctx)
    Activity: 決済通知
    wf.Activity(Notify, id).Execute(ctx)
    Activity
    取引残高消費取消
    Activity
    メルカリポイント決済取消
    補償処理
    wf.Workflow(CreateAndAuthExchange, request).Execute(ctx)
    Compensate
    Compensate

    View full-size slide

  24. マイクロサービスを跨いだ整合性担保
    決済処理
    サービス
    台帳管理
    サービス
    メルペイ決済基盤
    暗号資産取引
    サービス
    call merpay API
    BFF Service
    ProcessingTracer
    Distributed Processing Tracing
    Single Source of Truth for confirming the final results across multiple services
    Processing
    Participant
    Services
    Consistency
    Reports
    取引リクエスト
    call API
    with ProcessingID
    call API
    with ProcessingID
    1. RegisterProcessing
    2. Participant
    Notification
    4. ConsistencyReport ConsistencyReport
    3. Reconcile
    Reconcile
    Reconcile
    帳簿管理
    サービス
    Reconcile
    call API
    with ProcessingID

    View full-size slide

  25. 帳簿管理
    会計・法定帳簿

    View full-size slide

  26. 帳簿 と 台帳の定義の違い (独自)
    ● 台帳
    ○ プロダクトサイド向けにお客さまが持ってる口座の価値の増減、移
    動の管理をやってるのが台帳と定義する
    ● 帳簿
    ○ それ以外の目的で、お金の変動、流れを記録するものを帳簿と定
    義する
    ○ 会計帳簿: 会計処理するための帳簿データ
    ○ 法定帳簿: 法定要件に定められている帳簿データ
    どちらも取引におけるお金の変動、流れを記録するため

    View full-size slide

  27. 会計帳簿連携 - メルペイ
    決済サービス
    台帳サービス
    会計サービス
    外部接続
    サービス
    QR決済
    決済リクエスト
    会計イベント
    会計イベント
    会計イベント
    単式記帳
    口座操作・記帳
    リクエスト
    外部決済
    リクエスト

    View full-size slide

  28. 課題
    ● 各MSから必要に応じて、会計システムと連携することなるた
    め、開発と運用に一定の会計のドメイン知識が必要
    ○ 特に決済サービスのところは、決済種別ごとに会計データ
    の連携が少し異なるため、開発・運用コストが高い
    ● 単式記帳を採用した台帳サービスは会計データ連携にはデー
    タが足りてない
    ● 台帳と会計帳簿のリコンサイルの仕組み化が難しい

    View full-size slide

  29. 会計帳簿連携 - メルコイン
    決済サービス
    台帳サービス
    帳簿サービス
    (会計帳簿)
    メルペイ
    サービス
    暗号資産取引
    サービス
    取引リクエスト
    複式記帳
    口座操作・記帳
    リクエスト
    メルペイ決済
    リクエスト
    会計イベント

    View full-size slide

  30. 特徴
    ● 複式記帳を採用した台帳管理の仕組みを利用して、台帳サー
    ビスのレイアから会計データ連携が可能になった
    ● 関連MSから会計連携の責務を外して、会計のこと意識しなく
    ても開発・運用できる
    ● 確定された台帳データをベースに会計帳簿へデータ連携する
    ため、台帳と会計帳簿のリコンサイルの仕組み化がより簡単
    にできる

    View full-size slide

  31. 法定帳簿 - メルコイン
    暗号資産交換業における法定要件を満たすための
    帳簿データの集計と管理
    ● 顧客・自己注文伝票
    ● 顧客・自己勘定元帳
    ● 分別管理表
    ● など

    View full-size slide

  32. 法定帳簿 メルコイン
    決済サービス
    台帳サービス
    帳簿サービス
    (法定帳簿)
    メルペイ
    サービス
    暗号資産取引
    サービス
    決済リクエスト
    複式記帳
    口座操作・記帳
    リクエスト
    メルペイ決済
    リクエスト
    注文データ
    台帳データ

    View full-size slide

  33. ● 複式記帳手法を採用した新しい台帳サービスの開発
    ● 汎用的に利用できる価値交換決済機能を提供する決済
    サービスの開発
    ○ 分散型システムにおける整合性担保のための新しい取り組み
    ● 会計及び法定帳簿を管理する帳簿サービスの開発
    メルコイン決済基盤

    View full-size slide

  34. これからのチャレンジ
    ● メルコインでの実践経験をまた活かして、メルペイ決済
    基盤も進化させていく
    ● 組織横断で台帳・帳簿・決済のドメインコンポーネントが
    共通化できるシステム設計に挑戦

    View full-size slide