ERTP: some initial comments
Mark S. Miller
markm@caplet.com
Fri, 25 Jun 1999 17:40:46 -0700
At 01:23 PM 6/22/99 , Nick Szabo wrote:
>* I'd love to see an example that transfers erights
>which are the rights to use a particular service
>provide by an object (i.e. to invoke one or more of its
>methods a particular number of times), rather than just
>changing a generic numerical balance. The money example isn't
>representative of how ERTP will usually be used.
We need to separate issues here.
1) A non-exclusive transfer of a right to invoke a particular object isn't
particularly interesting, as capabilities already provide than primitively.
2) Given an object, one can create a derived object that provides a limited
ability to invoke methods of the base object, but the new limited right is
no more or less transferable than the original right. This limitation can
be done with simple object abstraction, as shown by the "once" abstraction
in http://www.erights.org/elang/concurrency/race.html , and gains nothing
from ERTP.
3) The remaining ERTP issue, which is indeed informatively different from
money, is the exclusive transfer of the eright to invoke a single object.
The underlying object may or may not be a limited-invocation wrapper (e.g., a
"once") of a yet more primitive object, but this is orthogonal.
http://www.erights.org/smart-contracts/exclusive-updoc.txt is an example
implementation. The last two paragraphs of the intro to ERTP on
http://www.erights.org/smart-contracts/index.html now reads:
erights.updoc shows money re-implemented as a proper eright. Money is
exclusive, fungible, and non-exercisable. Money transfers should be blinded,
but this implementation provides only non-blinded transfer.
By contrast, exclusive.updoc implements, as an exclusively transferable
eright, the ability to invoke (pass messages to) particular underlying
objects that an Issuer decides to make accessible in this manner. These
erights are exclusive, non-fungible, and exercisable. As Nick explains in
"Contracts with Bearer", since these erights are non-fungible, nothing would
be gained by blinding their transfer.
>* Some of the comments seem to treat "trust" in a party as all or
>nothing. However, we are only trusting the Issuer with certain particular
>security properties for a particular set of rights. Such narrowly
>scoped and decentralized trust is critical for real world,
>cross-organizational distributed systems.
I believe this is only an artifact of my writing. I truly don't yet know a
way to speak clearly while making all the trust distinctions I have in my
head. I suspect than new terminology and taxonomy will be required.
In any case, as you point out specific such errors, I will try to fix them.
>* What is the rationale for hiding the distinctions
>between exclusive vs. non-, fungible vs. non-,
>and unlinkable vs. non-? Where will the programmer
>be able set and query these properties?
This is a very important question. Market intermediaries -- escrow exchange
agents, auction houses, etc... --- often won't care what erights are being
moved around, or even what kinds of erights are being moved around. What
they will care about is that these erights, and the manner in which they are
being transferred, is mutually acceptable to their customers. The essence of
being an intermediary is being able to calculate "mutual acceptability"
under adversarial conditions. By being neutral to the nature of the erights
being traded, such intermediaries are more reusable and composable.
Often, the customers of such intermediaries will need to know the nature of
the erights being traded. erights.org expects to be growing standard
subtypes of these base types over time to represent various useful taxonomic
distinction. But we need to get the universal supertypes correct first.