DEVREL-1297 Ledger - Doc Site Lessonly Conformance (#5128)

* DEVREL-1297 Ledger - Doc Site Lessonly Conformance

Rewrite to bring Doc Site and Lessonly into conformance. Assumption is that Doc Site is more up to date.

* DEVREL-1297 Ledger - Doc Site Lessonly Conformance

* DEVREL-1297 Ledger - Doc Site Lessonly Conformance

Home page describes sections that link from it to enable easier navigation.

* Removed comment
This commit is contained in:
ChrissyAtWork 2019-05-21 14:59:11 +01:00 committed by Roger Willis
parent 860ef5833a
commit 79616536d4
3 changed files with 111 additions and 42 deletions

View File

@ -3,15 +3,14 @@ The network
.. topic:: Summary
* *A Corda network is made up of nodes running Corda and CorDapps*
* *Communication between nodes is point-to-point, instead of relying on global broadcasts*
* *Each node has a certificate mapping their network identity to a real-world legal identity*
* *A Corda network is made up of nodes, each of which runs an instance of Corda and one or more CorDapps*
* *Communication between nodes is point-to-point, and does not rely on global broadcasts*
* *Each node has a certificate that maps its network identity to a real-world legal identity*
* *The network is permissioned, with access requiring a certificate from the network operator*
Network structure
-----------------
A Corda network is a peer-to-peer network of **nodes**. Each node runs the Corda software as well as Corda applications
known as **CorDapps**.
A Corda network is a peer-to-peer network of **nodes**. Each node represents a legal entity, and each runs the Corda software (an instance of Corda and one or more Corda applications, known as **CorDapps**).
.. image:: resources/network.png
:scale: 25%
@ -20,28 +19,38 @@ known as **CorDapps**.
All communication between nodes is point-to-point and encrypted using transport-layer security. This means that data is
shared only on a need-to-know basis. There are **no global broadcasts**.
Identity
--------
Each node has a single well-known identity. The node's identity is used to represent the node in transactions, such as
when purchasing an asset.
All of the nodes in the network have the *potential* to communicate with other nodes.
.. note:: These identities are distinct from the RPC user logins that are able to connect to the node via RPC.
**Why do we say "potential" to communicate?**
Each network has a **network map service** that maps each well-known node identity to an IP address. These IP
Because the connections on the graph do not have to be persistent. On the networking level, Corda uses persistent queues, but, as with email, if your recipient is offline, your messages will wait on an outbound queue until the recipient comes online.
Identities and Discovery
------------------------
Each node has a single well-known identity. The node's identity is used to represent the node in transactions; for example, if the node were involved in a transaction to purchase an asset.
The network map service maps each well-known node identity to an IP address. These IP
addresses are used for messaging between nodes.
Nodes can also generate confidential identities for individual transactions. The certificate chain linking a
confidential identity to a well-known node identity or real-world legal identity is only distributed on a need-to-know
basis. This ensures that even if an attacker gets access to an unencrypted transaction, they cannot identify the
transaction's participants without additional information if confidential identities are being used.
basis. If confidential identities are being used, this ensures that even if an attacker gets access to an unencrypted transaction, they cannot identify the
transaction's participants without additional information.
**How do Corda nodes Discover each other?**
Corda nodes discover each other via a **network map service**. You can think of this service as a phone book, which publishes a list of peer nodes that includes metadata about who they are and what services they can offer.
Admission to the network
------------------------
Corda networks are semi-private. To join a network, a node must obtain a certificate from the network operator. This
Unlike traditional blockchain, Corda networks are semi-private. To join a network, a node must obtain a certificate from the network operator. This
certificate maps a well-known node identity to:
* A real-world legal identity
* A public key
The network operator enforces rules regarding the information that nodes must provide and the know-your-customer
processes they must undergo before being granted this certificate.
The network operator enforces rules regarding the information that nodes must provide and the know-your-customer (KYC) processes they must undergo before being granted this certificate.
**What makes Corda different to other networks?**
Other Distributed Ledger Technology (DLT) platforms use global broadcast and gossip networks to propagate data. Corda uses point-to-point messages, and sends them only on a need to know basis (lazy propagation).

View File

@ -16,25 +16,52 @@ The ledger
<p></p>
Overview
The Ledger Data
--------
In Corda, there is **no single central store of data**. Instead, each node maintains a separate database of known
facts. As a result, each peer only sees a subset of facts on the ledger, and no peer is aware of the ledger in its
entirety.
In Corda, there is **no single central store of data**. Instead, each node maintains its own database of those facts that it is aware of.
For example, imagine a network with five nodes, where each coloured circle represents a shared fact:
The facts that a node knows about are those that it is involved with. For example, if there are nodes representing Alice and Bob on the network and Alice loans Bob some money, both Alice and Bob will store an identical record of the facts about that loan. If the only parties involved with the loan are Alice and Bob, then they will be the only nodes that ever see or store this data.
**Important:** The result of this design is that each peer only sees a subset of facts on the ledger, and no peer is aware of the ledger in its entirety.
Example: A network with five nodes, where each numbered circle on an intersection represents a fact shared between two or more nodes.
.. image:: resources/ledger-venn.png
:scale: 25%
:align: center
The preceding Venn diagram represents 5 nodes (Alice, Bob, Carl, Demi and Ed) as sets. Where the sets overlap are shared facts, such as those known by both Alice and Bob (1 and 7).
We can see that although Carl, Demi and Ed are aware of shared fact 3, **Alice and Bob are not**.
Notably, in this Venn diagram, Alice only shares facts with Bob. Alice does not share facts with any of Carl, Demi or Ed.
Equally importantly, Corda guarantees that whenever one of these facts is shared by multiple nodes on the network, it evolves
in lockstep in the database of every node that is aware of it:
**Summary**
The Corda Ledger is a **subjective** construct from each peer's point of view.
**What does that mean?**
* There are no omniscient peers who can see everything on the ledger.
* Each node sees their own facts, and the facts that they share with others.
For example, Alice and Demi don't share any facts, so they each see a completely different set of shared facts.
Shared Facts
------------
In the previous diagram, we could see that although Carl, Demi and Ed are aware of shared fact 3, **Alice and Bob are not**.
On Corda, there is no central or general ledger operating with agency on behalf of all of the nodes on the network. Instead, each node on the network maintains its own vault containing all of its known facts.

You can think of this vault as being a database or simple table.
.. image:: resources/ledger-table.png
:scale: 25%
:scale: 100%
:align: center
For example, Alice and Bob will both see the **exact same version** of shared facts 1 and 7.
Where the rows are shared between nodes (facts 1 and 7 in this example), these are shared facts.
Corda guarantees that whenever one of these facts is shared by multiple nodes on the network, it evolves in lockstep in the database of every node that is aware of it. This means that Alice and Bob will both see an **exactly identical version** of shared facts 1 and 7.
**Note:** Not all on-ledger facts are shared between peers. For example, Alice's fact 11 is not shared with Bob. Fact 11 could, in fact, not be shared with any other node at all. If this is the case, it is deemed a unilateral fact.
**Note:** Although there is no central ledger, it is possible to broadcast a basic fact to all participants should you wish to. You would do this by using the network map service to loop over all parties.De

View File

@ -6,26 +6,59 @@ Key concepts
This section describes the key concepts and features of the Corda platform. It is intended for readers who are new to
Corda, and want to understand its architecture. It does not contain any code, and is suitable for non-developers.
This section should be read in order:
.. note::
The pages in this section should be read in order.
.. toctree::
:maxdepth: 1
:hidden:
The Network <key-concepts-ecosystem>
The Ledger <key-concepts-ledger>
States <key-concepts-states>
Transactions <key-concepts-transactions>
Contracts <key-concepts-contracts>
Flows <key-concepts-flows>
Consensus <key-concepts-consensus>
Notary <key-concepts-notaries>
Vault <key-concepts-vault>
Time Windows <key-concepts-time-windows>
Oracles <key-concepts-oracles>
Nodes <key-concepts-node>
Transaction Tear-Offs <key-concepts-tearoffs>
Trade Offs <key-concepts-tradeoffs>
Deterministic JVM <key-concepts-djvm>
key-concepts-ecosystem
key-concepts-ledger
key-concepts-states
key-concepts-transactions
key-concepts-contracts
key-concepts-flows
key-concepts-consensus
key-concepts-notaries
key-concepts-vault
key-concepts-time-windows
key-concepts-oracles
key-concepts-node
key-concepts-tearoffs
key-concepts-tradeoffs
key-concepts-djvm
The first topics in this section provide an **overview** of the Corda Distributed Ledger:
* :doc:`key-concepts-ecosystem` - The ecosystem that Corda exists in
* :doc:`key-concepts-ledger` - The ledger, and how facts on the ledger are shared between nodes
The second set of topics describe the core **CorDapp Concepts**:
* :doc:`key-concepts-states` - The states represent shared facts on the ledger
* :doc:`key-concepts-transactions` - The transactions update the ledger states
* :doc:`key-concepts-contracts` - The contracts govern the ways in which states can evolve over time
* :doc:`key-concepts-flows` - The flows describe the interactions that must occur between parties to achieve consensus (to satisfy some business requirement)
.. note::
When you build a custom CorDapp, your CorDapp will have state, transaction, contract and flow classes.
The following **Adavnced Corda Concepts** describe important conceptual information:
* :doc:`key-concepts-consensus` - How parties on the network reach consensus about shared facts on the ledger
* :doc:`key-concepts-notaries` - The component that assures uniqueness consensus (prevents double spends)
* :doc:`key-concepts-vault` - The component that stores on-ledger shared facts for a node
Finally, some concepts that expand on other areas:
* :doc:`key-concepts-time-windows` - Transactions can be validated as having fallen after, before or within a particular time window
* :doc:`key-concepts-oracles` - Transactions can include off-ledger facts retrieved using Oracles
* :doc:`key-concepts-node` - Each node contains an instance of Corda, one or more CorDapps, and so on
* :doc:`key-concepts-tearoffs` - Transactions can be signed by parties who have access to only a limited view of the transaction parts
* :doc:`key-concepts-tradeoffs` - Trade-offs that have been made in designing Corda and CorDapps
* :doc:`key-concepts-djvm` - Information about the importance and details of the deterministic JVM
The detailed thinking and rationale behind these concepts are presented in two white papers: