summaryrefslogtreecommitdiffstats
path: root/spec
blob: a9b0d190341ff19a624ae502eb33df99fa8628ba (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

Use Case:
  list:
    列出所有接受轉帳的站台。
  query site:
    列出 site 這個站的資訊,包括匯率等。
  quit:
    切斷連線離開。




   +-------+                                             +-------+ 
 +-------+ |    +----------+            +----------+   +-------+ |
 | client|-+ ---| bankd(1) | <--------> | bankd(2) |---| client|-+
 +-------+      +----------+            +----------+   +-------+

 client: 

Note:
  client 能夠改 source,所以請務必注意 server 一定要小心防止 client
  的惡搞

Protocol (between banks):
  1.假設 bankd(1) 為 Ptt 這端的 daemon,bankd(2) 為 Ptt2 這端的。
  2.當 Ptt 上有人想匯錢給 Ptt2 上的人,Ptt user(mbbsd) 這邊會開啟與
    指定機器上 bank 的連線。[1]
  3.Client 先扣除自己的錢[2],再跟 server 說他要轉帳的對象跟金額。
  4.Server 進行確認動作
    1) 確定對方紀錄的匯率與自己相同。不同則回應錯誤。
    2) 確定此人是否存在。是,則將錢匯入,回應成功訊息;否,則回應錯
       誤。
  5.根據 server 的回應做出動作。成功則不做任何事,失敗就將自己的錢
    加回來。


 [1] 不加密的原因是 ... 懶 :p 有需要的話直接拿 ssh tunnel 來用吧 :p
 [2] 避免有人送錢之後惡意斷線,造成錢有增無減。