日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

交易系统如何确保账簿100%准确

發布時間:2025/3/12 windows 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 交易系统如何确保账簿100%准确 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自廖雪峰老師的《交易系統如何確保賬簿100%準確》

這篇文章闡述了一個交易系統中對賬功能的關鍵,即:時刻保證資產負債表總額始終為 0。

交易系統中,對賬是一個大問題。對賬處理不好,不但需要花費大量的人力去處理賬簿,還要承擔很大的線上修改賬簿的風險。

如果系統能自動化保證賬簿每時每刻100%準確,不能說一勞永逸地解決了所有問題,至少解決了絕大部分問題。

如何對賬,能時刻確保賬簿100%準確?

交易系統中,用戶余額存儲在賬戶表中。例如,一個比特幣交易系統,假設用戶有BTC和USD兩種資產,要確保賬簿余額是對的,一個設計的關鍵點就是:時刻保證整個系統的資產負債表為零!

設想賬戶表的初始狀態,用戶A、B、C、D分別存入了數量不等的BTC(Bitcoin)和USD(US dollar):

usercurrencybalance
ABTC1.2
BUSD4000
CBTC2.8
DUSD6000

無論這些用戶如何交易,以什么價位交易,最終的結果只是BTC和USD在賬戶之間移動,其總額并不會增減:

usercurrencybalance
ABTC0.2
AUSD3000
BBTC1.0
BUSD1000
CBTC0.8
CUSD6000
DBTC2.0

把交易手續費考慮進來,其實也是一樣的,只是用戶的資產有很少一部分被移動到了系統手續費賬戶中:?

usercurrencybalance
ABTC0.2
AUSD2997
BBTC1.0
BUSD1000
CBTC0.8
CUSD5994
DBTC2.0
FEEUSD9

上面的賬戶表不好對賬,是因為根據“資產負債表總額始終為零”這一基本原理,缺少一個關鍵的“負債”賬戶。

如果把初始狀態加入負債賬戶:

usercurrencybalance
DEBTBTC-4
DEBTUSD-10000
ABTC1.2
BUSD4000
CBTC2.8
DUSD6000

整個賬戶表的余額加起來就一定為零。

隨著交易的進行,無論資產如何轉移,最終的賬戶余額也一定為零:

usercurrencybalance
DEBTBTC-4
DEBTUSD-10000
ABTC0.2
AUSD2997
BBTC1.0
BUSD1000
CBTC0.8
CUSD5994
DBTC2.0
FEEUSD9

因此,可以設計出對賬的基本邏輯:

SELECT SUM(balance) FROM ACCOUNTS GROUP BY currency;

在每筆交易后執行該SQL語句,如果賬簿無誤,結果集必定每一行均為?0。

考慮到對賬程序的執行效率,可以把它放到只讀從庫執行,不影響交易本身。

更進一步,考慮系統初始狀態的賬戶表:

usercurrencybalance
(無記錄)(無記錄)(無記錄)

當用戶X存入USD 1500后,要保證資產負載表為0,該存款操作本質上是一個資產轉移過程:USD 1500從DEBT賬戶轉移到用戶X的賬戶:

usercurrencybalance
DEBTUSD-1500
XUSD1500

取款過程則恰好相反,它是用戶資產轉移到DEBT賬戶的過程,體現為DEBT賬戶余額增加(從負更多到負更少)。

對于財務人員來講,用戶總資產其實就是?ABS(DEBT) - FEE?,計算極其簡單。

可見,一個清晰簡潔而可靠的設計,不但有力地保證了系統的安全性,而且大大降低了財務對賬成本。

?

總結

以上是生活随笔為你收集整理的交易系统如何确保账簿100%准确的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。