[E-Lang] Hash Chaining & Capabilities, Proposal #1b: SimplifyingPluribus

Mark S. Miller markm@caplet.com
Tue, 17 Oct 2000 11:01:00 -0700


At 10:21 AM 10/17/00, Mark S. Miller wrote:
>Anyone have any better ideas?  Again, this is orthogonal to hash-based 
>proposals for simplifying Pluribus.  The only difference between the above 
>description and current Pluribus is that, in current Pluribus, VatB would 
>ask VatC to look up the pair <VatID(X), swissNumber(Carol)> rather than 
>swissNumber(Carol).  VatID(X) would be VatID(C) for the standard Granovetter 
>case, and VatID(A) if Carol is the result of a pipelined message from VatA 
>into VatC.

Call me stupid: The issues aren't orthogonal after all.

In the current protocol, where the lookup request looks up a pair of <VatID, 
swiss number>, and where the vatID identifies the vat that generated the 
swiss number, then that should be used instead of the Vine to determine what 
machine to round-trip to.  In the pipelined case, it amounts to the same 
thing -- VatC waits until a round trip to VatA completes before reporting 
lookup failure.  However, in the standard non-pipelined case, where the 
generating vat is VatC but the Vine still comes from VatA, VatC could 
immediately report lookup failure without initiating a round trip to VatA.

If I simplify the protocol the way I was proposing, then I lose this 
"optimization".  However, I think the proposed optimization is still the 
right thing, since, in the non-pipelined case when everyone is behaving 
properly, the lookup of Carol will immediately succeed.  There is only extra 
overhead to deal with a case in which someone was acting improperly, or 
where Carol's sturdiness has expired.

So, if no one has a counter-argument, I'm still planning to look up a 
swissNumber rather than a pair, and I'm still planning to use the Vine to 
determine what vat to round trip to, rather than provide other extra 
information for this purpose.