The basic idea is best illustrated in the billing reference above. Think of the slow data channel (SDC) as a coin slot. I use the term muffler here. The muffler is an object with one input integer stream and one output integer stream. The sum of a stream at a point in time is merely the sum of the integers in the stream up to that time. The integers of the streams of the muffler are all positive. The muffler input is made accessible to the confined object and the muffler output is made accessible to a software agent with a responsibility to pay the program owner. The muffler design goal is that the output sum track the input stream but with delay and noise added so as to limit the signal available from the output to a known small quantity, and thus trade-off payment latency with signal bandwidth.
The client is likely to want to limit his payments. The most direct way to offer this control is to enhance the muffler function by giving the client an additional facet to the muffler by which he can read and limit the flow, much as he might observe and control CPU consumption via a meter service key. From a bandwidth perspective the holder of this service key is considered as inside the confined object. Payments that he allows with the muffler service key are delayed and otherwise muffled. A invocation on the muffler input stream, signaling payment, will not return until the holder of the service key authorizes that payment. After such authorization, payment is muffled but certain, or at least beyond the control of the muffler service key.
We have described the rough function of the muffler and its facets and who should hold them; now we consider how to bring about this arrangement securely. In the scenario below B is the application builder who wishes to charge for use. Here is the chronology:
Perhaps payment limitation and observation should be part of bank logic instead of muffler logic.
To throw in more problems before we solve the above, let me mention a payment scheme suitable to some applications. The application produces an answer but only then prices it in light of the answer. It might even tantalize the requestor by displaying evidence of the answer. It is no skin of the application owner’s nose if the requestor refuses to pay. Presumably the requestor has paid for the CPU cycles one way or another. If, on the other hand, the requestor has paid a sub contractor, such payment is skin off the nose.