Keys are Passable arbitrarily-nested pass-by-copy containers
(CopyArray, CopyRecord, CopySet, CopyBag, CopyMap) in which every
non-container leaf is either a Passable primitive value or a Remotable (a
remotely-accessible object or presence for a remote object), or such leaves
in isolation with no container.
Keys are so named because they can be used as keys in CopyMaps and
agoric-sdk Stores,
and as elements in CopySets and CopyBags.
Keys cannot contain promises or errors, as these do not have useful
distributed equality semantics. Keys also cannot contain any CopyTagged
except for those recognized as CopySets, CopyBags, and CopyMaps.
Be aware that we may recognize more CopyTaggeds over time, including
CopyTaggeds recognized as Keys.
Distributed equality is location independent.
The same two Keys, passed to another location, will be keyEQ there iff
they are keyEQ here. (keyEQ tests equality according to the
key distributed equality semantics.)
Keys are Passable arbitrarily-nested pass-by-copy containers (CopyArray, CopyRecord, CopySet, CopyBag, CopyMap) in which every non-container leaf is either a Passable primitive value or a Remotable (a remotely-accessible object or presence for a remote object), or such leaves in isolation with no container.
Keys are so named because they can be used as keys in CopyMaps and agoric-sdk Stores, and as elements in CopySets and CopyBags.
Keys cannot contain promises or errors, as these do not have useful distributed equality semantics. Keys also cannot contain any CopyTagged except for those recognized as CopySets, CopyBags, and CopyMaps.
Be aware that we may recognize more CopyTaggeds over time, including CopyTaggeds recognized as Keys.
Distributed equality is location independent. The same two Keys, passed to another location, will be
keyEQ
there iff they arekeyEQ
here. (keyEQ
tests equality according to the key distributed equality semantics.)