Warrants

A warrant is a right to use a service.

Two of our hello world examples have a client netlet and a server netlet; the client gets and displays the message from the server netlet. The clients have warrants which allow them to use a hello world service.

Another way to think of a warrant is that it is evidence of a contract. If a contract has been arranged (on- or off-line) then a warrant will result so that the service can be used and the contract fulfilled.

When a client netlet wants to use a service it presents its warrant to the node which then finds and binds the server netlet. On binding, a service session is created. In fact, service sessions can only be created though warrants.

Of course, for a node to use a warrant to find a service the warrant needs to contain either a descriptor or a URL reference of where to find that descriptor--Figure [*]. So to make use of a service, a netlet needs only a warrant. This contains everything a node needs to find and bind a service, however indirectly.

Figure: A warrant is a right to use a service. Among other things it must contain a descriptor for the relevant netlet, or a reference to one.
 

\resizebox*{0.8\textwidth}{!}{\includegraphics{images/warrants-descriptors-general-colour.eps}}

Figure: Warrants A and B are both for use of a file storage service. But warrant A limits its holder(s) to a specific group of files, while warrant B is limited to a different group. Thus each warrant-holder has access only to their files.
 

\resizebox*{0.9\textwidth}{!}{\includegraphics{images/warrant-limiting-colour.eps}}

To recap: a descriptor contains netlet code, or a URL for netlet code, plus an initialisation object. A warrant contains a descriptor or a URL for a descriptor.

A warrant is not just a general right to use a service--it is very likely to be limited for the terms of the particular contract for which it was issued. Two netlets may have warrants to use a service, but one may be time-limited, and another may be resource limited. That's up to whoever arranged the contract. In Figure [*] different warrants for the same service allow their holders access only to their area of that service.

The agreements that warrants are based on are key to Jtrix, because nothing can execute without explicit rights to do so. Moreover, all resources consumed (bandwidth to load the netlet, CPU time and memory to run it, disk space to store it, etc) must be accounted for and, almost certainly, paid for.

Nik Silver 2002-03-09