CorDapp Identities
Parties on the network are represented using the AbstractParty
class. There are two types of AbstractParty
:
Party
, identified by aPublicKey
and aCordaX500Name
AnonymousParty
, identified by aPublicKey
only
Using AnonymousParty
to identify parties in states and commands prevents nodes from learning the identities
of the parties involved in a transaction when they verify the transaction’s dependency chain. When preserving the
anonymity of each party is not required (e.g. for internal processing), Party
can be used instead.
The identity service allows flows to resolve AnonymousParty
to Party
, but only if the anonymous party’s
identity has already been registered with the node (typically handled by SwapIdentitiesFlow
or
IdentitySyncFlow
, discussed below).
Party names use the CordaX500Name
data class, which enforces the structure of names within Corda, as well as
ensuring a consistent rendering of the names in plain text.
Support for both Party
and AnonymousParty
classes in Corda enables sophisticated selective disclosure of
identity information. For example, it is possible to construct a transaction using an AnonymousParty
(so nobody can
learn of your involvement by inspection of the transaction), yet prove to specific counterparts that this
AnonymousParty
actually corresponds to your well-known identity. This is achieved using the
PartyAndCertificate
data class, which contains the X.509 certificate path proving that a given AnonymousParty
corresponds to a given Party
. Each PartyAndCertificate
can be propagated to counterparties on a need-to-know
basis.
The PartyAndCertificate
class is also used by the network map service to represent well-known identities, with the
certificate path proving the certificate was issued by the doorman service.
Was this page helpful?
Thanks for your feedback!
Chat with us
Chat with us on our #docs channel on slack. You can also join a lot of other slack channels there and have access to 1-on-1 communication with members of the R3 team and the online community.
Propose documentation improvements directly
Help us to improve the docs by contributing directly. It's simple - just fork this repository and raise a PR of your own - R3's Technical Writers will review it and apply the relevant suggestions.
We're sorry this page wasn't helpful. Let us know how we can make it better!
Chat with us
Chat with us on our #docs channel on slack. You can also join a lot of other slack channels there and have access to 1-on-1 communication with members of the R3 team and the online community.
Create an issue
Create a new GitHub issue in this repository - submit technical feedback, draw attention to a potential documentation bug, or share ideas for improvement and general feedback.
Propose documentation improvements directly
Help us to improve the docs by contributing directly. It's simple - just fork this repository and raise a PR of your own - R3's Technical Writers will review it and apply the relevant suggestions.