Check out the new USENIX Web site. next up previous
Next: Money and Goods Atomicity Up: NetBill Previous: The Protocol

NetBill in FDR

To model NetBill, we view each agent as a finite state machine, and use CSP processes to encode them. A CSP process denotes a set of sequences of events, where an event represents a state transition of the state machine; states are implicit.

Figures 2, 3, and 4 present simplified versions of the consumer, the merchant, and the bank processes respectively. Note that -> is a form of sequential composition, || and [] are choice operators (with ||, the choice is completely arbitrary, whereas [] gives preference to unblocked processes), STOP denotes process termination, ! and ? are the communication primitives (for example, coutm!goodsReq sends the message goodsReq on the channel coutm, and cinm?x receives a message from channel cinm, and binds the variable x to the message).

CSP uses a synchronous model of communication between processes. Since we are modeling a distributed system, we need to simulate asynchronous communication. For communication from agent a to agent b, we use two channels aoutb and bina, and a process that reads anything from the first channel and writes it to the second. This process can be easily modified to introduce communication failures as needed.

Processes ABORT, SUCCESS, ERROR, NO_FUNDS, NO_TRANSACTION, END and FAIL are mapped to the CSP STOP process. We use them to improve readability of the code.

 

  figure119


Figure 2: The consumer process.

 

  figure128


Figure 3: The merchant process.

 

  figure137


Figure 4: The bank process.



TOM Comversion
Sat Oct 5 08:55:54 EDT 1996