iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Software Development

Web3 支付工程筆記:企業級穩定幣結算系統與多鏈架構實戰 系列

一筆穩定幣付款請求從 API 進來,要通過重試、queue、relayer、鏈上確認才算數,每一層都可能重複、卡住或失敗。

我想從零蓋一套企業級穩定幣結算系統,把所有設計想法和取捨寫下來:Payment Intent 狀態機與雙鍵冪等、複式記帳 ledger 與稽核日誌、Go relayer 的交易序列化與失敗任務處理、鏈上鏈下對帳、結算合約與 Permit2、批次付款,最後延伸到 EVM 之外,Solana、TON、SUI 各自需要處理什麼問題等等。

寫給在 Web3 打滾的後端工程師,重心在為什麼這樣設計,不程式碼逐行導讀。完整程式碼會放在公開 repo。

參賽天數 22 天 | 共 22 篇文章 | 1 人訂閱 訂閱系列文 RSS系列文
DAY 1

Day 1 | 導讀:在不可靠又非同步的世界裡,保證錢只動一次

現實總是殘酷的 想像你負責一個支付系統的 API。某天凌晨,一個客戶的 server 因為網路不穩定,對同一筆 $50,000 USDC 的付款請求重送了三次。...

2026-08-23 ‧ 由 菲力 分享
DAY 2

Day 2 | 穩定幣實作 (上):ERC-20 代幣在現實世界中的各種陷阱

本日程式碼:repo tag day-02 一顆 ERC-20 穩定幣在鏈上長怎樣 一顆 ERC-20 穩定幣,本質上是一份住在合約裡的帳本。你「持有 10...

2026-08-24 ‧ 由 菲力 分享
DAY 3

Day 3 | 穩定幣實作 (下):Local Devnet 部署與無痛的自動化狀態注入

本日程式碼:repo tag day-03 昨天的測試成果無法輕易 reproduce 昨天用四隻 mock 把四類例外都列舉了,但那些 token 只存在...

2026-08-25 ‧ 由 菲力 分享
DAY 4

Day 4 | 核心狀態機:支付意圖 (Payment Intent) 的生命週期流轉

本日程式碼:repo tag day-04 我們現在 devnet 上有 USDC 和 USDT、有一個有錢的 payer、有動不了錢的黑名單地址,所以可以...

2026-08-26 ‧ 由 菲力 分享
DAY 5

Day 5 | 雙鍵設計 (上):idpk 如何守住 API 層的重試攻擊

本日程式碼:repo tag day-05 昨天的狀態機從 created 開始,但 created 之前其實還有「API 收到請求、決定要不要長出一筆 i...

2026-08-27 ‧ 由 菲力 分享
DAY 6

Day 6 | 雙鍵設計 (下):以 PaymentRef 作為 Audit Tracking 的識別碼

本日程式碼:repo tag day-06 Day 4 的 Example 裡,Payment Intent pi_0001 從狀態 created 走到...

2026-08-28 ‧ 由 菲力 分享
DAY 7

Day 7 | 財務底線:Double-entry Ledger 與 Append-only 稽核日誌

本日程式碼:repo tag day-07 昨天 Payment Intent pi_0001 已經跑到 settled,而 History 記著它走過的所...

2026-08-29 ‧ 由 菲力 分享
DAY 8

Day 8 | Relayer 架構概觀:Job Queue 驅動的設計

本日程式碼:repo tag day-08 昨天帳本定義完之後,鏈下的核心三件事都齊了:狀態機、雙鍵、ledger。但到目前為止,Payment Inten...

2026-08-30 ‧ 由 菲力 分享
DAY 9

Day 9 | Go Worker Pool 實戰:優雅處理高併發的 Tx 任務

本日程式碼:repo tag day-09 昨天的 Worker 其實已經可以同時跑好幾個:它自己沒有狀態,八個 goroutine 對同一個 Worker...

2026-08-31 ‧ 由 菲力 分享
DAY 10

Day 10 | 交易序列化的四鏈對照:Nonce、Seqno、Blockhash、Object Version

本日程式碼:repo tag day-10 昨天 pool 建起來之後,現在 N 個 worker 各領各的 job,誰先誰後都無所謂;但那 N 筆交易要上...

2026-09-01 ‧ 由 菲力 分享