GNU Taler:設計原則
在設計 GNU Taler 時,在我們的腦海中有以下的設計原則:
1. 自由軟體
![... 在電腦學的領域,自由代表不使用專有軟體](../images/1-libre.png)
GNU Taler 必須是自由軟體。對於商家來說,自由軟體防止供應商鎖定,這意味著商家可以輕鬆選擇其他服務提供商來處理他們的付款。對於國家來說,自由軟體意味著 GNU Taler 無法通過施加限制或要求來損害其主權。對於交易所運營商而言,透明度對於滿足Kerckhoff's principle尤其重要,這也能建立公眾的信心。
因為任何人都可以自由修改錢包軟體,客戶可以從自由軟體中受益並支持其他平台。其原始碼必須可被大眾使用,並且可以輕鬆地驗證其不存在諸如跟踪或遙測之類的對用戶不利的功能。
2. 保護購買者的隱私
![您值得擁有隱私](../images/2-buyer-privacy.png)
當隱私權通過技術措施得到保障,而不是僅僅是政策,才是最有意義的。如果沒有技術層提供預設的隱私,財務交易就會顯示出非必要程度的個人或私人資料。尤其在為線上出版物進行小額付款時更是如此。因此,GNU Taler 必須保護購買者的隱私,以避免促進對人口的極權控制。 有限的私人資料可能需要根據業務需求而被收集(例如,實際交付的送貨地址),並根據當地法律進行保護。在這種情況下,GNU Taler 必須在不再需要此類資料時立即將其刪除。
3. 可審核性 - 允許各州政府對收入課稅並打擊非法商業活動
![洗錢](../images/3-taxable.png)
由於付款系統必須符合當地法律才能合法運作,GNU Taler 的設計必須符合這些要求。GNU Taler 必須為依法展開調查地的調查人員提供審計追踪。此外,我們認為開徵稅收對社會有益,而收入透明為公平稅收的必要條件。因此,GNU Taler 必須使當局能夠追踪收入。
4. 預防支付詐欺
![網路釣魚攻擊](../images/4-fraud.png)
GNU Taler 必須減輕最常見的付款欺詐來源。我們必須遵循軟件設計中的最佳實踐和第三方設計準則,以防止混淆和誤導用戶界面,並且必須讓公眾檢查我們的公開程式碼。此外,GNU Taler 必須為所有關鍵過程提供廣泛的加密證據,以使各方都能準確地將不良行為歸責。
5. 蒐集最少的必要資訊
![基於隱私來設計,以隱私為默認值,符合通用數據保護法規 (GDPR)](../images/5-data-minimization.png)
作為原則(2)的一部分,買方的隱私受到特別重視。然而,其他各方(例如商家)的資料也必受到保護。通常,GNU Taler 會收集必要的最少信息:不會破壞未收集或不再被存儲的資料。
6. 要為可用的
![一鍵購買。對孩童來說也十分容易。](../images/6-usable.png)
GNU Taler 必須適用於非專家客戶,包括 GNU Taler 錢包的終端使用者、希望使用 GNU Taler 接受付款的商家以及電子商務和其他平台的第三方應用程序開發人員。GNU Taler 必須遵循最佳實踐可用性準則,並吸收專家和用戶的回饋。為了做出明智的選擇,自由軟體還需要自由文件。 GNU Taler 必須提供文件齊全的應用程序編程接口 (APIs) ,以實現 GNU Taler 與其他項目之間的無障礙整合 (frictionless integrations)。
7. 要有效率
![能量效率](../images/7-efficient.png)
GNU Taler 必須設計成高效率地。簡而言之,效率代表更少工作量、每秒從事更多的交易、更低的環境影響。效率對於將 GNU Taler 用於小額付款也至關重要。因此,GNU Taler 不得使用某些昂貴的原語 (primitives),例如工作量證明 (proof-of-work)。
8. 容錯設計
![救星](../images/8-fault-tolerant.png)
惡意操作員、手滑 (fat fingers)、電腦故障、gremlins。差錯會發生。GNU Taler 的設計必須有容忍單個組件和系統的故障的能力。在系統可以繼續安全運行的地方,它將繼續安全運行。在它必須暫停運作的時,其他操作在非必要情況下不能離線。系統發生故障時,它們必須正常運行。GNU Taler 必須制定一個計劃,以從危害核心秘密的惡意運營者中恢復。
9. 促進競爭
![一個競爭市場](../images/9-competition.png)
競爭對手必須相對容易地部署可互操作的替代方案。在傳統金融系統中,這方面的障礙相當高並超出了我們的控制範圍。然而,GNU Taler 必須最大程度地減少新競爭對手進入市場的技術負擔。GNU Taler 必須使各種運營商能夠打破目前只有少數幾家全球公司主導市場的系統。支持此目的的設計範例為一個將整個系統拆分為可以獨立操作、開發和改進的較小組件,而不是擁有一個完全獨立的系統。