In our system, Password Capabilities are used to implement cheques. Each node in the network is assigned a Bank which manages how much money the node has. The node is given a full withdrawal capability by the bank. So the node can draw as much money as the account permits. From that parent withdrawal capability, the node can derive more restrictive capabilities, like the capability to withdraw X amount from the bank. These capabilities can then be used like cheques. They can be sent to other nodes as payments. Nodes that have received these cheques can then use them to request a bank account transfer, from the payer's bank to its own bank. Alternatively, they keep the cheques, and wait until they have enough, or until a time limit, before they cash all the cheques at the same time.
While the concept of a Bank has been introduced, how it's implemented still isn't clear. Implementing banks in a decentralized network is inherently difficult. The absence of commonly trusted parties or nodes means that there are no nodes that can credibly manage each node's bank account. Account management needs to be performed by a party that everybody trusts, since we don't want nodes to be able to have unlimited bank account.
The proposed charging system tackles this problem by relying on collective actions to perform actions that need credibility. The rationale is that in ad-hoc networks, the majority of the nodes follow the accepted standards. Consequentially, even if a few of the set of nodes which form the bank are misbehaving, the majority of them would still behave properly. So the action or decision of the bank can be thought of as the action or decision of the majority.
The system proposes the use of a node's neighbours to fill the role of the the node's bank collectively. Note that the definition of a 'neighbour' is not set. Since we're employing a Distributed Hash Table on top of an ad-hoc network architecture, a neighbour can be what the DHT, or the ad-hoc network decides. Or alternatively, a hybrid of the two approaches can be used.
As we have a set of nodes acting as a bank, cheques are issued and authenticated collectively by the it. When a cheque issued by a particular bank needs to be 'cashed', it needs to be routed to the right set of nodes (the bank). This job is performed by a Distributed Hash Table. Note that the DHT routing system is used non-traditionally here. While a DHT is used route a request for information, when routing a cheque, the source nodes aren't expecting information to be returned. The use of DHT here is just to route the cheque to the right set of nodes. The issuing of cheques and authentication of cheques and transferred are performed with the help of a threshold signature system.