From ac1d14464cbfebd1d762391ccbd65acdec56e842 Mon Sep 17 00:00:00 2001 From: josecoll Date: Thu, 26 Jan 2017 15:46:40 +0000 Subject: [PATCH 01/30] Key Concepts rewrite for open source day (#7) First draft Re-structured Key Concepts; added plenty of diagrams; additional content. Added references to other security docs. Re-structured Key Concepts; added plenty of diagrams; additional content. Added references to other security docs. Updated information, indexes and images. Incorporated feedback from PR review comments (RGB, RW) Reformatted diagrams and incorporated feedback from PR reviewers. Addressed formatting problems. Updated Flow Framework diagram Added colour coding to Flow Framework diagram to aid readibility. Small clarification to vault unconsumed state usage. Added tutorial reference as suggested by RGB Updated TOC tree. Updates following PR review comment from Roger First pass updates following PR review comments from MH. Further updates following PR review (including 2 edited diagrams) Diagram changes and minor text edits following review with MGB Remove unused diagrams. Fixed spurious indentation errors. Changes following review and feedback from JD. Added clauses and merkle-trees back into TOC. Added small sub-section on transaction representation in Data Model. Added future work as note in Vault. Minor updates to diagrams following MH review. Updated Corda Ecosystem diagram. Minor changes to Core & Financial docs following PR review by MH. Updated following review by MBG. --- docs/source/consensus.rst | 141 --------- docs/source/data-model.rst | 275 ------------------ docs/source/index.rst | 17 +- .../key-concepts-consensus-notaries.rst | 163 +++++++++++ ...-types.rst => key-concepts-core-types.rst} | 127 +++----- docs/source/key-concepts-data-model.rst | 142 +++++++++ docs/source/key-concepts-ecosystem.rst | 47 +++ docs/source/key-concepts-financial-model.rst | 71 +++++ docs/source/key-concepts-flow-framework.rst | 37 +++ docs/source/key-concepts-security-model.rst | 46 +++ docs/source/key-concepts-vault.rst | 52 ++++ docs/source/key-concepts.rst | 21 ++ docs/source/resources/contract.png | Bin 0 -> 122604 bytes docs/source/resources/cordaNetwork.png | Bin 0 -> 102022 bytes .../resources/financialContractStateModel.png | Bin 0 -> 119573 bytes docs/source/resources/flowFramework.png | Bin 0 -> 225159 bytes docs/source/resources/vault.png | Bin 0 -> 238481 bytes docs/source/running-the-demos.rst | 6 + 18 files changed, 638 insertions(+), 507 deletions(-) delete mode 100644 docs/source/consensus.rst delete mode 100644 docs/source/data-model.rst create mode 100644 docs/source/key-concepts-consensus-notaries.rst rename docs/source/{transaction-data-types.rst => key-concepts-core-types.rst} (57%) create mode 100644 docs/source/key-concepts-data-model.rst create mode 100644 docs/source/key-concepts-ecosystem.rst create mode 100644 docs/source/key-concepts-financial-model.rst create mode 100644 docs/source/key-concepts-flow-framework.rst create mode 100644 docs/source/key-concepts-security-model.rst create mode 100644 docs/source/key-concepts-vault.rst create mode 100644 docs/source/key-concepts.rst create mode 100644 docs/source/resources/contract.png create mode 100644 docs/source/resources/cordaNetwork.png create mode 100644 docs/source/resources/financialContractStateModel.png create mode 100644 docs/source/resources/flowFramework.png create mode 100644 docs/source/resources/vault.png diff --git a/docs/source/consensus.rst b/docs/source/consensus.rst deleted file mode 100644 index 8ca2826622..0000000000 --- a/docs/source/consensus.rst +++ /dev/null @@ -1,141 +0,0 @@ -Consensus model -=============== - -The fundamental unit of consensus in Corda is the **state**. The concept of consensus can be divided into two parts: - -1. Consensus over state **validity** -- parties can reach certainty that a transaction defining output states is accepted by the contracts pointed to by the states and has all the required signatures. This is achieved by parties independently running the same contract code and validation logic (as described in :doc:`data model `) - -2. Consensus over state **uniqueness** -- parties can reach certainty the output states created in a transaction are the unique successors to the input states consumed by that transaction (in other words -- a state has not been used as an input by more than one transaction) - -This article presents an initial model for addressing the **uniqueness** problem. - -.. note:: The current model is still a **work in progress** and everything described in this article can and is likely to change - -Notary ------- - -We introduce the concept of a **notary**, which is an authority responsible for attesting that for a given transaction, it had not signed another transaction consuming any of its input states. -The data model is extended so that every **state** has an appointed notary: - -.. sourcecode:: kotlin - - /** - * A wrapper for [ContractState] containing additional platform-level state information. - * This is the definitive state that is stored on the ledger and used in transaction outputs - */ - data class TransactionState( - /** The custom contract state */ - val data: T, - /** Identity of the notary that ensures the state is not used as an input to a transaction more than once */ - val notary: Party) { - ... - } - -All transactions have to be signed by their input state notary for the output states to be **valid** (apart from *issue* transactions, containing no input states). - -.. note:: The notary is a logical concept and can itself be a distributed entity, potentially a cluster maintained by mutually distrusting parties - -When the notary is requested to sign a transaction, it either signs over it, attesting that the outputs are the **unique** successors of the inputs, -or provides conflict information for any input state that had been consumed by another transaction it had signed before. -In doing so, the notary provides the point of finality in the system. Until the notary signature is obtained, parties cannot be sure that an equally valid, but conflicting transaction, -will not be regarded as confirmed. After the signature is obtained, the parties know that the inputs to this transaction have been uniquely consumed by this transaction. -Hence it is the point at which we can say finality has occurred. - -Multiple notaries -~~~~~~~~~~~~~~~~~ - -More than one notary can exist in the network. This gives the following benefits: - -* **Custom behaviour**. We can have both validating and privacy preserving notaries -- parties can make a choice based on their specific requirements -* **Load balancing**. Spreading the transaction load over multiple notaries will allow higher transaction throughput in the platform overall -* **Low latency**. Latency could be minimised by choosing a notary physically closer the transacting parties - -A transaction should only be signed by a notary if all of its input states point to it. -In cases where a transaction involves states controlled by multiple notaries, the states first have to be repointed to the same notary. -This is achieved by using a special type of transaction that doesn't modify anything but the notary pointer of the state. -Ensuring that all input states point to the same notary is the responsibility of each involved party -(it is another condition for an output state of the transaction to be **valid**) - -Changing notaries -~~~~~~~~~~~~~~~~~ - -To change the notary for an input state, use the ``NotaryChangeFlow``. For example: - -.. sourcecode:: kotlin - - @Suspendable - fun changeNotary(originalState: StateAndRef, - newNotary: Party): StateAndRef { - val flow = NotaryChangeFlow.Instigator(originalState, newNotary) - return subFlow(flow) - } - -The flow will: - -1. Construct a transaction with the old state as the input and the new state as the output - -2. Obtain signatures from all *participants* (a participant is any party that is able to consume this state in a valid transaction, as defined by the state itself) - -3. Obtain the *old* notary signature - -4. Record and distribute the final transaction to the participants so that everyone possesses the new state - -.. note:: Eventually this will be handled automatically on demand. - -Validation ----------- - -One of the design decisions for a notary is whether or not to **validate** a transaction before committing its input states. - -If a transaction is not checked for validity, it opens the platform to "denial of state" attacks, where anyone can build an invalid transaction consuming someone else's states and submit it to the notary to get the states "blocked". -However, validation of a transaction requires the notary to be able to see the full contents of the transaction in question and its dependencies. -This is an obvious privacy leak. - -Our platform is flexible and we currently support both validating and non-validating notary implementations -- a party can select which one to use based on its own privacy requirements. - -.. note:: In the non-validating model the "denial of state" attack is partially alleviated by requiring the calling - party to authenticate and storing its identity for the request. The conflict information returned by the notary - specifies the consuming transaction ID along with the identity of the party that had requested the commit. If the - conflicting transaction is valid, the current one gets aborted; if not - a dispute can be raised and the input states - of the conflicting invalid transaction are "un-committed" (to be covered by legal process). - -.. note:: At present all notaries can see the entire contents of a transaction, but we have a separate piece of work to - replace the parts of the transaction it does not require knowing about with hashes (only input references, timestamp - information, overall transaction ID and the necessary digests of the rest of the transaction to prove that the - referenced inputs/timestamps really do form part of the stated transaction ID should be visible). - -Timestamping ------------- - -In this model the notary also acts as a *timestamping authority*, verifying the transaction timestamp command. - -For a timestamp to be meaningful, its implications must be binding on the party requesting it. -A party can obtain a timestamp signature in order to prove that some event happened before/on/or after a particular point in time. -However, if the party is not also compelled to commit to the associated transaction, it has a choice of whether or not to reveal this fact until some point in the future. -As a result, we need to ensure that the notary either has to also sign the transaction within some time tolerance, -or perform timestamping *and* notarisation at the same time, which is the chosen behaviour for this model. - -There will never be exact clock synchronisation between the party creating the transaction and the notary. -This is not only due to physics, network latencies, etc., but because between inserting the command and getting the -notary to sign there may be many other steps, like sending the transaction to other parties involved in the trade -as well, or even requesting human signoff. Thus the time observed by the notary may be quite different to the -time observed in step 1. - -For this reason, times in transactions are specified as time *windows*, not absolute times. Time windows can be -open-ended, i.e. specify only one of "before" and "after" or they can be fully bounded. If a time window needs to -be converted to an absolute time for e.g. display purposes, there is a utility method on ``Timestamp`` to -calculate the mid point -- but in a distributed system there can never be "true time", only an approximation of it. - -In this way we express that the *true value* of the fact "the current time" is actually unknowable. Even when both before and -after times are included, the transaction could have occurred at any point between those two timestamps. Here -"occurrence" could mean the execution date, the value date, the trade date etc ... the notary doesn't care what precise -meaning the timestamp has to the contract. - -By creating a range that can be either closed or open at one end, we allow all of the following facts to be modelled: - -* This transaction occurred at some point after the given time (e.g. after a maturity event) -* This transaction occurred at any time before the given time (e.g. before a bankruptcy event) -* This transaction occurred at some point roughly around the given time (e.g. on a specific day) - -.. note:: It is assumed that the time feed for a notary is GPS/NaviStar time as defined by the atomic - clocks at the US Naval Observatory. This time feed is extremely accurate and available globally for free. diff --git a/docs/source/data-model.rst b/docs/source/data-model.rst deleted file mode 100644 index b4fd05b58c..0000000000 --- a/docs/source/data-model.rst +++ /dev/null @@ -1,275 +0,0 @@ -Data model -========== - -This article covers the data model: how *states*, *transactions* and *code contracts* interact with each other and -how they are represented in software. - -Overview --------- - -We begin with the idea of a global ledger. In our model although the ledger is shared, it is not always the case that -transactions and ledger entries are globally visible. In cases where a set of transactions stays within a small subgroup of -users it should be possible to keep the relevant data purely within that group. - -To ensure consistency in a global, shared system where not all data may be visible to all participants, we rely -heavily on secure hashes like SHA-256 to identify things. The ledger is defined as a set of immutable **states**, which -are created and destroyed by digitally signed **transactions**. Each transaction points to a set of states that it will -consume/destroy, these are called **inputs**, and contains a set of new states that it will create, these are called -**outputs**. - -States contain arbitrary data, but they always contain at minimum a hash of the bytecode of a -**contract code** file, which is a program expressed in JVM byte code that runs sandboxed inside a Java virtual machine. -Contract code (or just "contracts" in the rest of this document) are globally shared pieces of business logic. - -.. note:: In the current code dynamic loading of contracts is not implemented, so states currently point at - statically created object instances. This will change in the near future. - -Contracts define a **verify function**, which is a pure function given the entire transaction as input. To be considered -valid, the transaction must be **accepted** by the verify function of every contract pointed to by the input and output -states. - -Beyond inputs and outputs, transactions may also contain **commands**, small data packets that -the platform does not interpret itself but which can parameterise execution of the contracts. They can be thought of as -arguments to the verify function. Each command has a list of **public keys** associated with it. The platform ensures -that the transaction is signed by every key listed in the commands before the contracts start to execute. Thus, a verify -function can trust that all listed keys have signed the transaction but is responsible for verifying that any keys required -for the transaction to be valid from the verify function's perspective are included in the list. Public keys -may be random/identityless for privacy, or linked to a well known legal identity, for example via a -*public key infrastructure* (PKI). - -.. note:: Linkage of keys with identities via a PKI is only partially implemented in the current code. - -Commands are always embedded inside a transaction. Sometimes, there's a larger piece of data that can be reused across -many different transactions. For this use case, we have **attachments**. Every transaction can refer to zero or more -attachments by hash. Attachments are always ZIP/JAR files, which may contain arbitrary content. These files are -then exposed on the classpath and so can be opened by contract code in the same manner as any JAR resources -would be loaded. - -.. note:: Attachments must be opened explicitly in the current code. - -Note that there is nothing that explicitly binds together specific inputs, outputs, commands or attachments. Instead -it's up to the contract code to interpret the pieces inside the transaction and ensure they fit together correctly. This -is done to maximise flexibility for the contract developer. - -Transactions may sometimes need to provide a contract with data from the outside world. Examples may include stock -prices, facts about events or the statuses of legal entities (e.g. bankruptcy), and so on. The providers of such -facts are called **oracles** and they provide facts to the ledger by signing transactions that contain commands they -recognise, or by creating signed attachments. The commands contain the fact and the signature shows agreement to that fact. - -Time is also modelled as a fact, with the signature of a special kind of service called a **notary**. A notary is -a (very likely) decentralised service which fulfils the role that miners play in other blockchain systems: -notaries ensure only one transaction can consume any given output. Additionally they may verify a **timestamping -command** placed inside the transaction, which specifies a time window in which the transaction is considered -valid for notarisation. The time window can be open ended (i.e. with a start but no end or vice versa). In this -way transactions can be linked to the notary's clock. - -It is possible for a single Corda network to have multiple competing notaries. Each state points to the notary that -controls it. Whilst a single transaction may only consume states if they are all controlled by the same notary, -a special type of transaction is provided that moves a state (or set of states) from one notary to another. - -.. note:: Currently the platform code will not re-assign states to a single notary as needed for you, in case of - a mismatch. This is a future planned feature. - -As the same terminology often crops up in different distributed ledger designs, let's compare this to other -systems you may be familiar with. The key differences are: - -* Improved contract flexibility vs Bitcoin -* Improved scalability vs Ethereum, as well as ability to keep parts of the transaction graph private (yet still uniquely addressable) -* No reliance on proof of work -* Re-use of existing sandboxing virtual machines -* Use of type safe GCd implementation languages -* Simplified auditing - -Comparison with Bitcoin ------------------------ - -Similarities: - -* The basic notion of immutable states that are consumed and created by transactions is the same. -* The notion of transactions having multiple inputs and outputs is the same. Bitcoin sometimes refers to the ledger - as the unspent transaction output set (UTXO set) as a result. -* Like in Bitcoin, a contract is pure function. Contracts do not have storage or the ability to interact with anything. - Given the same transaction, a contract's accept function always yields exactly the same result. -* Bitcoin output scripts are parameterised by the input scripts in the spending transaction. This is somewhat similar - to our notion of a *command*. -* Bitcoin has a global distributed notary service; that's the famous block chain. However, there is only one. Whilst - there is a notion of a "side chain", this isn't integrated with the core Bitcoin data model and thus adds large - amounts of additional complexity meaning in practice side chains are not used. -* Bitcoin transactions, like ours, refer to the states they consume by using a (txhash, index) pair. The Bitcoin - protocol calls these "outpoints". In our code they are known as ``StateRefs`` but the concept is identical. -* Bitcoin transactions have an associated timestamp (the time at which they are mined). - -Differences: - -* A Bitcoin transaction has a single, rigid data format. A "state" in Bitcoin is always a (quantity of bitcoin, script) - pair and cannot hold any other data. Some people have been known to try and hack around this limitation by embedding - data in semi-standardised places in the contract code so the data can be extracted through pattern matching, but this - is a poor approach. Our states can include arbitrary typed data. -* A Bitcoin transaction's acceptance is controlled only by the contract code in the consumed input states. In practice - this has proved limiting. Our transactions invoke not only input contracts but also the contracts of the outputs. -* A Bitcoin script can only be given a fixed set of byte arrays as the input. This means there's no way for a contract - to examine the structure of the entire transaction, which severely limits what contracts can do. -* Our contracts are Turing-complete and can be written in any ordinary programming language that targets the JVM. -* Our transactions and contracts get their time from an attached timestamp rather than a block. This is - important given that we use block-free conflict resolution algorithms. The timestamp can be arbitrarily precise. -* We use the term "contract" to refer to a bundle of business logic that may handle various different tasks, beyond - transaction verification. For instance, currently our contracts also include code for creating valid transactions - (this is often called "wallet code" in Bitcoin). - -Comparison with Ethereum ------------------------- - -Similarities: - -* Like Ethereum, code runs inside a relatively powerful virtual machine and can contain complex logic. Non-assembly - based programming languages can be used for contract programming. -* They are both intended for the modelling of many different kinds of financial contract. - -Differences: - -* The term "contract" in Ethereum refers to an *instantiation* of a program that is replicated and maintained by - every participating node. This instantiation is very much like an object in an OO program: it can receive and send - messages, update local storage and so on. In contrast, we use the term "contract" to refer to a set of functions, only - one of which is a part of keeping the system synchronised (the verify function). That function is pure and - stateless i.e. it may not interact with any other part of the system whilst executing. -* There is no notion of an "account", as there is in Ethereum. -* As contracts don't have any kind of mutable storage, there is no notion of a "message" as in Ethereum. -* Ethereum claims to be a platform not only for financial logic, but literally any kind of application at all. Our - platform considers non-financial applications to be out of scope. - -Rationale for and tradeoffs in adopting a UTXO-style model ----------------------------------------------------------- - -As discussed above, Corda uses the so-called "UTXO set" model (unspent transaction output). In this model, the database -does not track accounts or balances. Instead all database entries are immutable. An entry is either spent or not spent -but it cannot be changed. In Bitcoin, spentness is implemented simply as deletion – the inputs of an accepted transaction -are deleted and the outputs created. - -This approach has some advantages and some disadvantages, which is why some platforms like Ethereum have tried -(or are trying) to abstract this choice away and support a more traditional account-like model. We have explicitly -chosen *not* to do this and our decision to adopt a UTXO-style model is a deliberate one. In the section below, -the rationale for this decision and its pros and cons of this choice are outlined. - -Rationale ---------- - -Corda, in common with other blockchain-like platforms, is designed to bring parties to shared sets of data into -consensus as to the existence, content and allowable evolutions of those data sets. However, Corda is designed with the -explicit aim of avoiding, to the extent possible, the scalability and privacy implications that arise from those platforms' -decisions to adopt a global broadcast model. - -Whilst the privacy implications of a global consensus model are easy to understand, the scalability implications are -perhaps more subtle, yet serious. In a consensus system, it is critical that all processors of a transaction reach -precisely the same conclusion as to its effects. In situations where two transactions may act on the same data set, -it means that the two transactions must be processed in the same *order* by all nodes. If this were not the case then it -would be possible to devise situations where nodes processed transactions in different orders and reached different -conclusions as to the state of the system. It is for this reason that systems like Ethereum effectively run -single-threaded, meaning the speed of the system is limited by the single-threaded performance of the slowest -machine on the network. - -In Corda, we assume the data being processed represents financial agreements between identifiable parties and that these -institutions will adopt the system only if a significant number of such agreements can be managed by the platform. -As such, the system has to be able to support parallelisation of execution to the greatest extent possible, -whilst ensuring correct transaction ordering when two transactions seek to act on the same piece of shared state. - -To achieve this, we must minimise the number of parties who need to receive and process copies of any given -transaction and we must minimise the extent to which two transactions seek to mutate (or supersede) any given piece -of shared state. - -A key design decision, therefore, is what should be the most atomic unit of shared data in the system. This decision -also has profound privacy implications: the more coarsely defined the shared data units, the larger the set of -actors who will likely have a stake in its accuracy and who must process and observe any update to it. - -This becomes most obvious when we consider two models for representing cash balances and payments. - -A simple account model for cash would define a data structure that maintained a balance at a particular bank for each -"account holder". Every holder of a balance would need a copy of this structure and would thus need to process and -validate every payment transaction, learning about everybody else's payments and balances in the process. -All payments across that set of accounts would have to be single-threaded across the platform, limiting maximum -throughput. - -A more sophisticated example might create a data structure per account holder. -But, even here, I would leak my account balance to anybody to whom I ever made -a payment and I could only ever make one payment at a time, for the same reasons above. - -A UTXO model would define a data structure that represented an *instance* of a claim against the bank. An account -holder could hold *many* such instances, the aggregate of which would reveal their balance at that institution. However, -the account holder now only needs to reveal to their payee those instances consumed in making a payment to that payee. -This also means the payer could make several payments in parallel. A downside is that the model is harder to understand. -However, we consider the privacy and scalability advantages to overwhelm the modest additional cognitive load this places -on those attempting to learn the system. - -In what follows, further advantages and disadvantages of this design decision are explored. - -Pros ----- - -The UTXO model has these advantages: - -* Immutable ledger entries gives the usual advantages that a more functional approach brings: it's easy to do analysis - on a static snapshot of the data and reason about the contents. -* Because there are no accounts, it's very easy to apply transactions in parallel even for high traffic legal entities - assuming sufficiently granular entries. -* Transaction ordering becomes trivial: it is impossible to mis-order transactions due to the reliance on hash functions - to identify previous states. There is no need for sequence numbers or other things that are hard to provide in a - fully distributed system. -* Conflict resolution boils down to the double spending problem, which places extremely minimal demands on consensus - algorithms (as the variable you're trying to reach consensus on is a set of booleans). - -Cons ----- - -It also comes with some pretty serious complexities that in practice must be abstracted from developers: - -* Representing numeric amounts using immutable entries is unnatural. For instance, if you receive $1000 and wish - to send someone $100, you have to consume the $1000 output and then create two more: a $100 for the recipient and - $900 back to yourself as change. The fact that this happens can leak private information to an observer. -* Because users do need to think in terms of balances and statements, you have to layer this on top of the - underlying ledger: you can't just read someone's balance out of the system. Hence, the "wallet" / position manager. - Experience from those who have developed wallets for Bitcoin and other systems is that they can be complex pieces of code, - although the bulk of wallets' complexity in public systems is handling the lack of finality (and key management). -* Whilst transactions can be applied in parallel, it is much harder to create them in parallel due to the need to - strictly enforce a total ordering. - -With respect to parallel creation, if the user is single threaded this is fine, but in a more complex situation -where you might want to be preparing multiple transactions in flight this can prove a limitation – in -the worst case where you have a single output that represents all your value, this forces you to serialise -the creation of every transaction. If transactions can be created and signed very fast that's not a concern. -If there's only a single user, that's not a concern. - -Both cases are typically true in the Bitcoin world, so users don't suffer from this much. In the context of a -complex business with a large pool of shared funds, in which creation of transactions may be very slow due to the -need to get different humans to approve a tx using a signing device, this could quickly lead to frustrating -conflicts where someone approves a transaction and then discovers that it has become a double spend and -they must sign again. In the absolute worst case you could get a form of human livelock. - -The tricky part about solving these problems is that the simplest way to express a payment request -("send me $1000 to public key X") inherently results in you receiving a single output, which then can -prove insufficiently granular to be convenient. In the Bitcoin space Mike Hearn and Gavin Andresen designed "BIP 70" -to solve this: it's a simple binary format for requesting a payment and specifying exactly how you'd like to get paid, -including things like the shape of the transaction. It may seem that it's an over complex approach: could you not -just immediately respend the big output back to yourself in order to split it? And yes, you could, until you hit -scenarios like "the machine requesting the payment doesn't have the keys needed to spend it", -which turn out to be very common. So it's really more effective for a recipient to be able to say to the -sender, "here's the kind of transaction I want you to send me". The :doc:`flow framework ` -may provide a vehicle to make such negotiations simpler. - -A further challenge is privacy. Whilst our goal of not sending transactions to nodes that don't "need to know" -helps, to verify a transaction you still need to verify all its dependencies and that can result in you receiving -lots of transactions that involve random third parties. The problems start when you have received lots of separate -payments and been careful not to make them linkable to your identity, but then you need to combine them all in a -single transaction to make a payment. - -Mike Hearn wrote an article about this problem and techniques to minimise it in -`this article `_ from 2013. This article -coined the term "merge avoidance", which has never been implemented in the Bitcoin space, -although not due to lack of practicality. - -A piece of future work for the wallet implementation will be to implement automated "grooming" of the wallet -to "reshape" outputs to useful/standardised sizes, for example, and to send outputs of complex transactions -back to their issuers for reissuance to "sever" long privacy-breaching chains. - -Finally, it should be noted that some of the issues described here are not really "cons" of -the UTXO model; they're just fundamental. If you used many different anonymous accounts to preserve some privacy -and then needed to spend the contents of them all simultaneously, you'd hit the same problem, so it's not -something that can be trivially fixed with data model changes. diff --git a/docs/source/index.rst b/docs/source/index.rst index 8149311a19..5296867bd1 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -50,11 +50,15 @@ Documentation Contents: :maxdepth: 2 :caption: Key concepts - data-model - transaction-data-types - merkle-trees - consensus - clauses + key-concepts + key-concepts-ecosystem + key-concepts-data-model + key-concepts-core-types + key-concepts-financial-model + key-concepts-flow-framework + key-concepts-consensus-notaries + key-concepts-vault + key-concepts-security-model .. toctree:: :maxdepth: 2 @@ -100,6 +104,8 @@ Documentation Contents: :caption: Other network-simulator + clauses + merkle-trees .. toctree:: :maxdepth: 2 @@ -119,6 +125,7 @@ Documentation Contents: release-notes codestyle building-the-docs + further-notes-on-kotlin publishing-corda azure-vm diff --git a/docs/source/key-concepts-consensus-notaries.rst b/docs/source/key-concepts-consensus-notaries.rst new file mode 100644 index 0000000000..5d13e4e552 --- /dev/null +++ b/docs/source/key-concepts-consensus-notaries.rst @@ -0,0 +1,163 @@ +Consensus and notaries +====================== + +A notary is a service that provides transaction ordering and timestamping. + +Notaries are expected to be composed of multiple mutually distrusting parties who use a standard consensus algorithm. +Notaries are identified by and sign with :ref:`composite-keys`. Notaries accept transactions submitted to them for processing +and either return a signature over the transaction, or a rejection error that states that a double spend attempt has occurred. + +Corda has "pluggable" notary services to improve privacy, scalability, legal-system compatibility and algorithmic agility. +The platform currently provides validating and non-validating notaries, and a distributed RAFT implementation. + +Consensus model +--------------- + +The fundamental unit of consensus in Corda is the **state**. Consensus can be divided into two parts: + +1. Consensus over state **validity** -- parties can reach certainty that a transaction is accepted by the contracts pointed + to by the input and output states, and has all the required signatures. This is achieved by parties independently running + the same contract code and validation logic (as described in :doc:`data model `) + +2. Consensus over state **uniqueness** -- parties can reach certainty the output states created in a transaction are the + unique successors to the input states consumed by that transaction (in other words -- an input state has not been previously + consumed) + +.. note:: The current model is still a **work in progress** and everything described in this article can and is likely to change + +Notary +------ + +A **notary** is an authority responsible for attesting that for a given transaction, it has not signed another transaction +consuming any of the same input states. Every **state** has an appointed notary: + +.. sourcecode:: kotlin + + /** + * A wrapper for [ContractState] containing additional platform-level state information. + * This is the definitive state that is stored on the ledger and used in transaction outputs + */ + data class TransactionState( + /** The custom contract state */ + val data: T, + /** Identity of the notary that ensures the state is not used as an input to a transaction more than once */ + val notary: Party) { + ... + } + +Transactions are signed by a notary to ensure their input states are **valid** (apart from *issue* transactions, containing no input states). +Furthermore, when using a validating notary, a transaction is only valid if all its dependencies are also valid. + +.. note:: The notary is a logical concept and can itself be a distributed entity, potentially a cluster maintained by mutually distrusting parties + +When the notary is requested to sign a transaction, it either signs it, attesting that the outputs are the **unique** +successors of the inputs, or provides conflict information for any input state that has been consumed by another transaction +it has already signed. In doing so, the notary provides the point of finality in the system. Until the notary signature +is obtained, parties cannot be sure that an equally valid, but conflicting, transaction will not be regarded as confirmed. +After the signature is obtained, the parties know that the inputs to this transaction have been uniquely consumed by this transaction. +Hence, it is the point at which we can say finality has occurred. + +Multiple notaries +~~~~~~~~~~~~~~~~~ + +More than one notary can exist in a network. This gives the following benefits: + +* **Custom behaviour**. We can have both validating and privacy preserving Notaries -- parties can make a choice based + on their specific requirements. +* **Load balancing**. Spreading the transaction load over multiple notaries will allow higher transaction throughput in + the platform overall +* **Low latency**. Latency could be minimised by choosing a notary physically closer the transacting parties + +Changing notaries +~~~~~~~~~~~~~~~~~ + +A transaction should only be signed by a notary if all of its input states point to the same notary. +In cases where a transaction involves states controlled by multiple notaries, the states first have to be repointed to the same notary. +This is achieved by using a special type of transaction whose sole output state is identical to its sole input state except for its designated notary. +Ensuring that all input states point to the same notary is the responsibility of each involved party +(it is another condition for an output state of the transaction to be **valid**) + +To change the notary for an input state, use the ``NotaryChangeFlow``. For example: + +.. sourcecode:: kotlin + + @Suspendable + fun changeNotary(originalState: StateAndRef, + newNotary: Party): StateAndRef { + val flow = NotaryChangeFlow.Instigator(originalState, newNotary) + return subFlow(flow) + } + +The flow will: + +1. Construct a transaction with the old state as the input and the new state as the output + +2. Obtain signatures from all *participants* (a participant is any party that is able to consume this state in a valid transaction, as defined by the state itself) + +3. Obtain the *old* notary signature + +4. Record and distribute the final transaction to the participants so that everyone possesses the new state + +.. note:: Eventually, changing notaries will be handled automatically on demand. + +Validation +---------- + +One of the design decisions for a notary is whether or not to **validate** a transaction before accepting it. + +If a transaction is not checked for validity, it opens the platform to "denial of state" attacks, where anyone can build an invalid transaction consuming someone else's states and submit it to the notary to get the states "blocked". +However, if the transaction is validated, this requires the notary to be able to see the full contents of the transaction in question and its dependencies. +This is an obvious privacy leak. + +The platform is flexible and currently supports both validating and non-validating notary implementations -- a party can select which one to use based on its own privacy requirements. + +.. note:: In the non-validating model, the "denial of state" attack is partially alleviated by requiring the calling + party to authenticate and storing its identity for the request. The conflict information returned by the notary + specifies the consuming transaction ID along with the identity of the party that had created the transaction. If the + conflicting transaction is valid, the current one is aborted; if not, a dispute can be raised and the input states + of the conflicting invalid transaction are "un-committed" (via a legal process). + +.. note:: At present, all notaries can see the entire contents of a submitted transaction. A future piece of work + will enable the processing of :doc:`merkle-trees`, thus providing data hiding of sensitive information. + +Timestamping +------------ + +A notary can also act as a *timestamping authority*, verifying the transaction timestamp command. + +For a timestamp to be meaningful, its implications must be binding on the party requesting it. +A party can obtain a timestamp signature in order to prove that some event happened *before*, *on*, or *after* a particular point in time. +However, if the party is not also compelled to commit to the associated transaction, it has a choice of whether or not to reveal this fact until some point in the future. +As a result, we need to ensure that the notary either has to also sign the transaction within some time tolerance, +or perform timestamping *and* notarisation at the same time, which is the chosen behaviour for this model. + +There will never be exact clock synchronisation between the party creating the transaction and the notary. +This is not only due to physics, network latencies, etc. but also because between inserting the command and getting the +notary to sign there may be many other steps, like sending the transaction to other parties involved in the trade, or +even requesting human sign-off. Thus the time observed by the notary may be quite different to the time observed by the +party creating the transaction. + +For this reason, times in transactions are specified as time *windows*, not absolute times. +In a distributed system there can never be "true time", only an approximation of it. Time windows can be +open-ended (i.e. specify only one of "before" and "after") or they can be fully bounded. If a time window needs to +be converted to an absolute time (e.g. for display purposes), there is a utility method on ``Timestamp`` to +calculate the mid point. + +In this way, we express the idea that the *true value* of the fact "the current time" is actually unknowable. Even when both before and +after times are included, the transaction could have occurred at any point between those two timestamps. Here, +"occurrence" could mean the execution date, the value date, the trade date etc ... The notary doesn't care what precise +meaning the timestamp has to the contract. + +By creating a range that can be either closed or open at one end, we allow all of the following facts to be modelled: + +* This transaction occurred at some point after the given time (e.g. after a maturity event) +* This transaction occurred at any time before the given time (e.g. before a bankruptcy event) +* This transaction occurred at some point roughly around the given time (e.g. on a specific day) + +.. note:: It is assumed that the time feed for a notary is GPS/NaviStar time as defined by the atomic + clocks at the US Naval Observatory. This time feed is extremely accurate and available globally for free. + +Also see section 7 of the `Technical white paper`_ which covers this topic in significantly more depth. + +.. _`Technical white paper`: _static/corda-technical-whitepaper.pdf + diff --git a/docs/source/transaction-data-types.rst b/docs/source/key-concepts-core-types.rst similarity index 57% rename from docs/source/transaction-data-types.rst rename to docs/source/key-concepts-core-types.rst index ba27f42f72..a052a2cebd 100644 --- a/docs/source/transaction-data-types.rst +++ b/docs/source/key-concepts-core-types.rst @@ -1,73 +1,30 @@ -Data types +Core types ========== -Corda provides a large standard library of data types used in financial transactions and contract state objects. -These provide a common language for states and contracts. +Corda provides a large standard library of data types used to represent the :doc:`key-concepts-data-model` previously described. +In addition, there are a series of helper libraries which provide date manipulation, maths and cryptography functions. -Amount ------- +State and References +-------------------- +State objects contain mutable data which we would expect to evolve over the lifetime of a contract. -The `Amount `_ class is used to represent an amount of some -fungible asset. It is a generic class which wraps around a type used to define the underlying product, called -the *token*. For instance it can be the standard JDK type ``Currency``, or an ``Issued`` instance, or this can be -a more complex type such as an obligation contract issuance definition (which in turn contains a token definition -for whatever the obligation is to be settled in). - -.. note:: Fungible is used here to mean that instances of an asset is interchangeable for any other identical instance, - and that they can be split/merged. For example a £5 note can reasonably be exchanged for any other £5 note, and a - £10 note can be exchanged for two £5 notes, or vice-versa. - -Here are some examples: - -.. container:: codeset - - .. sourcecode:: kotlin - - // A quantity of some specific currency like pounds, euros, dollars etc. - Amount - // A quantity of currency that is issued by a specific issuer, for instance central bank vs other bank dollars - Amount> - // A quantity of obligations to deliver currency of any issuer. - Amount> - -``Amount`` represents quantities as integers. For currencies the quantity represents pennies, cents or whatever -else the smallest integer amount for that currency is. You cannot use ``Amount`` to represent negative quantities -or fractional quantities: if you wish to do this then you must use a different type e.g. ``BigDecimal``. ``Amount`` -defines methods to do addition and subtraction and these methods verify that the tokens on both sides of the operator -are equal (these are operator overloads in Kotlin and can be used as regular methods from Java). There are also -methods to do multiplication and division by integer amounts. - -State ------ - -A Corda contract is composed of three parts; the executable code, the legal prose, and the state objects that represent -the details of a specific deal or asset (see :doc:`data-model` for further detail). In relational database terms -a state is like a row in a database. A reference to a state in the ledger (whether it has been consumed or not) -is represented with a ``StateRef`` object. If the state ref has been looked up from storage, you will have a -``StateAndRef`` which is simply a ``StateRef`` plus the data. +A reference to a state in the ledger (whether it has been consumed or not) is represented with a ``StateRef`` object. +If the state ref has been looked up from storage, you will have a ``StateAndRef`` which is simply a ``StateRef`` plus the data. The ``ContractState`` type is an interface that all states must implement. A ``TransactionState`` is a simple container for a ``ContractState`` (the custom data used by a contract program) and additional platform-level state -information, such as the *notary* pointer (see :doc:`consensus`). +information, such as the *notary* pointer (see :doc:`key-concepts-consensus-notaries`). A number of interfaces then extend ``ContractState``, representing standardised functionality for common kinds -of state: +of state such as: - ``OwnableState`` - A state which has an owner (represented as a ``PublicKey``, discussed later). Exposes the owner and a function - for replacing the owner e.g. when an asset is sold. + ``OwnableState`` + A state which has an owner (represented as a ``CompositeKey``, discussed later). Exposes the owner and a function + for replacing the owner e.g. when an asset is sold. - ``LinearState`` - A state which links back to its previous state, creating a thread of states over time. A linear state is - useful when modelling an indivisible/non-fungible thing like a specific deal, or an asset that can't be - split (like a rare piece of art). - - ``DealState`` - A LinearState representing an agreement between two or more parties. Intended to simplify implementing generic - flows that manipulate many agreement types. - - ``FixableDealState`` - A deal state, with further functions exposed to support fixing of interest rates. + ``SchedulableState`` + A state to indicate whether there is some activity to be performed at some future point in time with respect to this + contract, what that activity is and at what point in time it should be initiated. NamedByHash and UniqueIdentifier -------------------------------- @@ -81,30 +38,27 @@ This is a combination of a (Java) ``UUID`` representing a globally unique 128 bi string which can be paired with it. For instance the string may represent an existing "weak" (not guaranteed unique) identifier for convenience purposes. -FungibleAssets and Cash ------------------------ - -There is a common ``FungibleAsset`` superclass for contracts which model fungible assets, which also provides a standard -interface for its subclasses' state objects to implement. The clear use-case is ``Cash``, however ``FungibleAsset`` is -intended to be readily extensible to cover other assets, for example commodities could be modelled by using a subclass -whose state objects include further details (location of the commodity, origin, grade, etc.) as needed. Transaction lifecycle types --------------------------- The ``WireTransaction`` class contains the core of a transaction without signatures, and with references to attachments -in place of the attachments themselves (see also :doc:`data-model`). Once signed these are encapsulated in the -``SignedTransaction`` class. For processing a transaction (i.e. to verify it) it is first converted to a +in place of the attachments themselves (see also :doc:`key-concepts-data-model`). Once signed these are encapsulated in the +``SignedTransaction`` class. For processing a transaction (i.e. to verify it) a ``SignedTransaction`` is then converted to a ``LedgerTransaction``, which involves verifying the signatures and associating them to the relevant command(s), and resolving the attachment references to the attachments. Commands with valid signatures are encapsulated in the ``AuthenticatedObject`` type. -.. note:: A ``LedgerTransaction`` has not necessarily had its contracts be run, and thus could be contract-invalid - (but not signature-invalid). You can use the ``verify`` method as shown below to run the contracts. +.. note:: A ``LedgerTransaction`` has not necessarily had its contract code executed, and thus could be contract-invalid + (but not signature-invalid). You can use the ``verify`` method as shown below to validate the contracts. When constructing a new transaction from scratch, you use ``TransactionBuilder``, which is a mutable transaction that -can be signed once modification of the internals is complete. It is typical for contract classes to expose helper -methods that can contribute to a ``TransactionBuilder``. +can be signed once its construction is complete. This builder class should be used to create the initial transaction representation +(before signature, before verification). It is intended to be passed around code that may edit it by adding new states/commands. +Then once the states and commands are right, this class can be used as a holding bucket to gather signatures from multiple parties. +It is typical for contract classes to expose helper methods that can contribute to a ``TransactionBuilder``. Once a transaction +has been constructed using the builders ``toWireTransaction`` or ``toSignedTransaction`` function, it shared with other +participants using the :doc:`key-concepts-flow-framework`. Here's an example of building a transaction that creates an issuance of bananas (note that bananas are not a real contract type in the library): @@ -127,25 +81,22 @@ contract type in the library): In a unit test, you would typically use a freshly created ``MockServices`` object, or more realistically, you would write your tests using the :doc:`domain specific language for writing tests `. -Party and PublicKey -------------------- +Party and CompositeKey +---------------------- Entities using the network are called *parties*. Parties can sign structures using keys, and a party may have many keys under their control. -Parties may sometimes be identified pseudonymously, for example, in a transaction sent to your node as part of a +Parties may sometimes be identified pseudonymously. For example, in a transaction sent to your node as part of a chain of custody it is important you can convince yourself of the transaction's validity, but equally important that you don't learn anything about who was involved in that transaction. In these cases a public key may be present without any identifying information about who owns it. -Identities of parties involved in signing a transaction can be represented simply by a ``PublicKey``, or by further +Identities of parties involved in signing a transaction can be represented simply by a ``CompositeKey``, or by further information (such as name) using the ``Party`` class. An ``AuthenticatedObject`` represents an object (like a command) that has been signed by a set of parties. -.. note:: These types are provisional and will change significantly in future as the identity framework becomes more - fleshed out. - -.. _composite-keys: +.. note:: These types are provisional and will change significantly in future as the identity framework becomes more fleshed out. Multi-signature support ----------------------- @@ -153,6 +104,8 @@ Multi-signature support Corda supports scenarios where more than one key or party is required to authorise a state object transition, for example: "Either the CEO or 3 out of 5 of his assistants need to provide signatures". +.. _composite-keys: + Composite Keys ^^^^^^^^^^^^^^ @@ -163,13 +116,15 @@ node specifies a *threshold* of how many child signatures it requires. An illustration of an *"either Alice and Bob, or Charlie"* composite key: .. image:: resources/composite-key.png - :width: 300px + :align: center + :width: 300px To allow further flexibility, each child node can have an associated custom *weight* (the default is 1). The *threshold* then specifies the minimum total weight of all children required. Our previous example can also be expressed as: .. image:: resources/composite-key-2.png - :width: 300px + :align: center + :width: 300px Verification ^^^^^^^^^^^^ @@ -184,7 +139,7 @@ Signature verification is performed in two stages: Date support ------------ -There are a number of supporting interfaces and classes for use by contract which deal with dates (especially in the +There are a number of supporting interfaces and classes for use by contracts which deal with dates (especially in the context of deadlines). As contract negotiation typically deals with deadlines in terms such as "overnight", "T+3", etc., it's desirable to allow conversion of these terms to their equivalent deadline. ``Tenor`` models the interval before a deadline, such as 3 days, etc., while ``DateRollConvention`` describes how deadlines are modified to take @@ -196,11 +151,11 @@ bank holidays). The ``BusinessCalendar`` class models these calendars of busines from files on disk, but in future this is likely to involve reference data oracles in order to ensure consensus on the dates used. -Cryptography & maths support ----------------------------- +Cryptography and maths support +------------------------------ The ``SecureHash`` class represents a secure hash of unknown algorithm. We currently define only a single subclass, ``SecureHash.SHA256``. There are utility methods to create them, parse them and so on. We also provide some mathematical utilities, in particular a set of interpolators and classes for working with -splines. These can be found in the `maths package `_. +splines. These can be found in the `maths package `_. diff --git a/docs/source/key-concepts-data-model.rst b/docs/source/key-concepts-data-model.rst new file mode 100644 index 0000000000..43d43c7cd6 --- /dev/null +++ b/docs/source/key-concepts-data-model.rst @@ -0,0 +1,142 @@ +Data model +========== + +Overview +-------- +Corda uses the so-called "UTXO set" model (unspent transaction output). In this model, the database +does not track accounts or balances. An entry is either spent or not spent but it cannot be changed. In this model the +database is a set of immutable rows keyed by (hash:output index). Transactions define outputs that append new rows and +inputs which consume existing rows. + +The Corda ledger is defined as a set of immutable **states**, which are created and destroyed by digitally signed **transactions**. +Each transaction points to a set of states that it will consume/destroy, these are called **inputs**, and contains a set +of new states that it will create, these are called **outputs**. +Although the ledger is shared, it is not always the case that transactions and ledger entries are globally visible. +In cases where a set of transactions stays within a small subgroup of users it is possible to keep the relevant +data purely within that group. To ensure consistency, we rely heavily on secure hashes like SHA-256 to identify things. + +The Corda model provides the following additional features: + +* There is no global broadcast at any point. +* States can include arbitrary typed data. +* Transactions invoke not only input contracts but also the contracts of the outputs. +* Contracts refer to a bundle of business logic that may handle various different tasks, beyond transaction verification. +* Contracts are Turing-complete and can be written in any ordinary programming language that targets the JVM. +* Arbitrarily-precise time-bounds may be specified in transactions (which must be attested to by a notary) +* Primary consensus implementations use block-free conflict resolution algorithms. +* Transactions are not ordered using a block chain and by implication Corda does not use miners or proof-of-work. + Instead each state points to a notary, which is a service that guarantees it will sign a transaction only if all the + input states are un-consumed. + +Corda provides three main tools to achieve global distributed consensus: + +* Smart contract logic to ensure state transitions are valid according to the pre-agreed rules. +* Uniqueness and timestamping services to order transactions temporally and eliminate conflicts. +* An :doc:`orchestration framework ` which simplifies the process of writing complex multi-step protocols between multiple different parties. + +Comparisons of the Corda data model with Bitcoin and Ethereum can be found in the white papers. + +States +------ +A state object represents an agreement between two or more parties, the evolution of which governed by machine-readable contract code. +This code references, and is intended to implement, portions of human-readable legal prose. +It is intended to be shared only with those who have a legitimate reason to see it. + +The following diagram illustrates a state object: + +.. image:: resources/contract.png + +In the diagram above, we see a state object representing a cash claim of £100 against a commercial bank, owned by a fictional shipping company. + +.. note:: Legal prose (depicted above in grey-shade) is currently implemented as an unparsed reference to the natural language + contract that the code is supposed to express (usually a hash of the contract's contents). + +States contain arbitrary data, but they always contain at minimum a hash of the bytecode of a +**contract code** file, which is a program expressed in JVM byte code that runs sandboxed inside a Java virtual machine. +Contract code (or just "contracts" in the rest of this document) are globally shared pieces of business logic. + +.. note:: In the current code dynamic loading of contracts is not implemented. This will change in the near future. + +Contracts +--------- +Contracts define part of the business logic of the ledger. + +Corda enforces business logic through smart contract code, which is constructed as a pure function (called "verify") that either accepts +or rejects a transaction, and which can be composed from simpler, reusable functions. The functions interpret transactions +as taking states as inputs and producing output states through the application of (smart contract) commands, and accept +the transaction if the proposed actions are valid. Given the same transaction, a contract’s “verify” function always yields +exactly the same result. Contracts do not have storage or the ability to interact with anything. + +.. note:: In the future, contracts will be mobile. Nodes will download and run contracts inside a sandbox without any review in some deployments, + although we envisage the use of signed code for Corda deployments in the regulated sphere. Corda will use an augmented + JVM custom sandbox that is radically more restrictive than the ordinary JVM sandbox, and it will enforce not only + security requirements but also deterministic execution. + +To further aid writing contracts we introduce the concept of :doc:`clauses` which provide a means of re-using common +verification logic. + +Transactions +------------ +Transaction are used to update the ledger by consuming existing state objects and producing new state objects. + +A transaction update is accepted according to the following two aspects of consensus: + + #. Transaction validity: parties can ensure that the proposed transaction and all its ancestors are valid + by checking that the associated contract code runs successfully and has all the required signatures + #. Transaction uniqueness: parties can ensure there exists no other transaction, over which we have previously reached + consensus (validity and uniqueness), that consumes any of the same states. This is the responsibility of a notary service. + +Beyond inputs and outputs, transactions may also contain **commands**, small data packets that +the platform does not interpret itself but which parameterise execution of the contracts. They can be thought of as +arguments to the verify function. Each command has a list of **composite keys** associated with it. The platform ensures +that the transaction has signatures matching every key listed in the commands before the contracts start to execute. Thus, a verify +function can trust that all listed keys have signed the transaction, but is responsible for verifying that any keys required +for the transaction to be valid from the verify function's perspective are included in the list. Public keys +may be random/identityless for privacy, or linked to a well known legal identity, for example via a +*public key infrastructure* (PKI). + +.. note:: Linkage of keys with identities via a PKI is only partially implemented in the current code. + +Commands are always embedded inside a transaction. Sometimes, there's a larger piece of data that can be reused across +many different transactions. For this use case, we have **attachments**. Every transaction can refer to zero or more +attachments by hash. Attachments are always ZIP/JAR files, which may contain arbitrary content. These files are +then exposed on the classpath and so can be opened by contract code in the same manner as any JAR resources +would be loaded. + +Note that there is nothing that explicitly binds together specific inputs, outputs, commands or attachments. Instead, +it's up to the contract code to interpret the pieces inside the transaction and ensure they fit together correctly. This +is done to maximise flexibility for the contract developer. + +Transactions may sometimes need to provide a contract with data from the outside world. Examples may include stock +prices, facts about events or the statuses of legal entities (e.g. bankruptcy), and so on. The providers of such +facts are called **oracles** and they provide facts to the ledger by signing transactions that contain commands they +recognise, or by creating signed attachments. The commands contain the fact and the signature shows agreement to that fact. + +Time is also modelled as a fact and represented as a **timestamping command** placed inside the transaction. This specifies a +time window in which the transaction is considered valid for notarisation. The time window can be open ended (i.e. with a start but no end or vice versa). +In this way transactions can be linked to the notary's clock. + +It is possible for a single Corda network to have multiple competing notaries. A new (output) state is tied to a specific +notary when it is created. Transactions can only consume (input) states that are all associated with the same notary. +A special type of transaction is provided that can move a state (or set of states) from one notary to another. + +.. note:: Currently the platform code will not automatically re-assign states to a single notary. This is a future planned feature. + +Transaction Validation +^^^^^^^^^^^^^^^^^^^^^^ +When a transaction is presented to a node as part of a flow it may need to be checked. Checking original transaction validity is +the responsibility of the ``ResolveTransactions`` flow. This flow performs a breadth-first search over the transaction graph, +downloading any missing transactions into local storage and validating them. The search bottoms out at transactions without inputs +(eg. these are mostly created from issuance transactions). A transaction is not considered valid if any of its transitive dependencies are invalid. + +.. note:: Non-validating notaries assume transaction validity and do not request transaction data or their dependencies + beyond the list of states consumed. + +The tutorial " :doc:`tutorial-contract` "provides a hand-ons walk-through using these concepts. + +Transaction Representation +^^^^^^^^^^^^^^^^^^^^^^^^^^ +By default, all transaction data (input and output states, commands, attachments) is visible to all participants in +a multi-party, multi-flow business workflow. :doc:`merkle-trees` describes how Corda uses Merkle trees to +ensure data integrity and hiding of sensitive data within a transaction that shouldn't be visible in its entirety to all +participants (eg. oracles nodes providing facts). diff --git a/docs/source/key-concepts-ecosystem.rst b/docs/source/key-concepts-ecosystem.rst new file mode 100644 index 0000000000..5c4df45442 --- /dev/null +++ b/docs/source/key-concepts-ecosystem.rst @@ -0,0 +1,47 @@ +Corda ecosystem +=============== + +A Corda network consists of the following components: + +* Nodes, where each node represents a JVM run-time environment hosting Corda services and executing applications ("CorDapps"). + Nodes communicate using AMQP/1.0 over TLS. +* A permissioning service that automates the process of provisioning TLS certificates. +* A network map service that publishes information about nodes on the network. +* One or more pluggable notary service types (which may be distributed over multiple nodes). + A notary guarantees uniqueness and validity of transactions. +* Zero or more oracle services. An oracle is a well known service that signs transactions if they state a fact and that fact is considered to be true. +* CorDapps which represent participant applications that execute contract code and communicate using the flow framework to achieve consensus over some business activity +* Standalone Corda applications that provide manageability and tooling support to a Corda network. + +These components are illustrated in the following diagram: + +.. image:: resources/cordaNetwork.png + :align: center + +Note: + +* Corda infrastructure services are those which all participants depend upon, such as the network map and notaries. +* Corda services can be deployed by participants, third parties or a central network operator (eg. such as R3); + this diagram is not intended to imply only a centralised model is supported + +It is important to highlight the following: + +* Corda is designed for semi-private networks in which admission requires obtaining an identity signed by a root authority. +* Nodes are arranged in an authenticated peer to peer network. All communication is direct. +* Data is shared on a need-to-know basis. Nodes provide the dependency graph of a transaction they are sending to another node on demand, but there is no global broadcast of all transactions. +* Nodes are backed by a relational database and data placed in the ledger can be queried using SQL +* The network map publishes the IP addresses through which every node on the network can be reached, along with the identity certificates of those nodes and the services they provide. +* All communication takes the form of small multi-party sub-protocols called flows. +* Oracles represent gateways to proprietary (or other) business logic executors (e.g., central counterparties or valuation agents) that can be verified on-ledger by participants. + +CorDapps +-------- +Corda is a platform for the writing of “CorDapps”: applications that extend the distributed ledger with new capabilities. +Such apps define new data types, new inter-node protocol flows and the “smart contracts” that determine allowed changes. +The combination of state objects (data), contract code (allowable operations), transaction flows (business logic +choreography), any necessary APIs, vault plugins, and UI components can be thought of as a shared ledger application, +or corda distributed application (“CorDapp”). This is the core set of components a contract developer on the platform +should expect to build. + +Examples of CorDapps include asset trading (see :ref:`irs-demo` and :ref:`trader-demo`), portfolio valuations (see :ref:`simm-demo`), trade finance, +post-trade order matching, KYC/AML, etc. \ No newline at end of file diff --git a/docs/source/key-concepts-financial-model.rst b/docs/source/key-concepts-financial-model.rst new file mode 100644 index 0000000000..ca35a0cd64 --- /dev/null +++ b/docs/source/key-concepts-financial-model.rst @@ -0,0 +1,71 @@ +Financial model +=============== + +Corda provides a large standard library of data types used in financial applications and contract state objects. +These provide a common language for states and contracts. + +Amount +------ + +The `Amount `_ class is used to represent an amount of some +fungible asset. It is a generic class which wraps around a type used to define the underlying product, called +the *token*. For instance it can be the standard JDK type ``Currency``, or an ``Issued`` instance, or this can be +a more complex type such as an obligation contract issuance definition (which in turn contains a token definition +for whatever the obligation is to be settled in). + +.. note:: Fungible is used here to mean that instances of an asset is interchangeable for any other identical instance, + and that they can be split/merged. For example a £5 note can reasonably be exchanged for any other £5 note, and + a £10 note can be exchanged for two £5 notes, or vice-versa. + +Here are some examples: + +.. container:: codeset + + .. sourcecode:: kotlin + + // A quantity of some specific currency like pounds, euros, dollars etc. + Amount + // A quantity of currency that is issued by a specific issuer, for instance central bank vs other bank dollars + Amount> + // A quantity of a product governed by specific obligation terms + Amount> + +``Amount`` represents quantities as integers. For currencies the quantity represents pennies, cents or whatever +else the smallest integer amount for that currency is. You cannot use ``Amount`` to represent negative quantities +or fractional quantities: if you wish to do this then you must use a different type e.g. ``BigDecimal``. ``Amount`` +defines methods to do addition and subtraction and these methods verify that the tokens on both sides of the operator +are equal (these are operator overloads in Kotlin and can be used as regular methods from Java). There are also +methods to do multiplication and division by integer amounts. + +``Issued`` refers to a product (which can be cash, a cash-like thing, assets, or generally anything else that's +quantifiable with integer quantities) and an associated ``PartyAndReference`` that describes the issuer of that contract. +An issued product typically follows a lifecycle which includes issuance, movement and exiting from the ledger (for example, +see the ``Cash`` contract and its associated *state* and *commands*) + +Financial states +---------------- +In additional to the common state types, a number of interfaces extend ``ContractState`` to model financial state such as: + + ``LinearState`` + A state which has a unique identifier beyond its StateRef and carries it through state transitions. + Such a state cannot be duplicated, merged or split in a transaction: only continued or deleted. A linear state is + useful when modelling an indivisible/non-fungible thing like a specific deal, or an asset that can't be + split (like a rare piece of art). + + ``DealState`` + A LinearState representing an agreement between two or more parties. Intended to simplify implementing generic + protocols that manipulate many agreement types. + + ``FungibleAsset`` + A FungibleAsset is intended to be used for contract states representing assets which are fungible, countable and issued by a + specific party. States contain assets which are equivalent (such as cash of the same currency), so records of their existence + can be merged or split as needed where the issuer is the same. For instance, dollars issued by the Fed are fungible and + countable (in cents), barrels of West Texas crude are fungible and countable (oil from two small containers can be poured into one large + container), shares of the same class in a specific company are fungible and countable, and so on. + +The following diagram illustrates the complete Contract State hierarchy: + +.. image:: resources/financialContractStateModel.png + +Note there are currently two packages, a core library and a finance model specific library. +Developers may re-use or extend the Finance types directly or write their own by extending the base types from the Core library. diff --git a/docs/source/key-concepts-flow-framework.rst b/docs/source/key-concepts-flow-framework.rst new file mode 100644 index 0000000000..81d744e7d3 --- /dev/null +++ b/docs/source/key-concepts-flow-framework.rst @@ -0,0 +1,37 @@ + +Flow framework +-------------- +In Corda all communication takes the form of structured sequences of messages passed between parties which we call flows. + +Flows enable complex multi-step, multi-party business interactions to be modelled as blocking code without a central controller. +The code is transformed into an asynchronous state machine, with checkpoints written to the node’s backing database when messages are sent and received. +A node may potentially have millions of flows active at once and they may last days, across node restarts and even upgrades. + +A flow library is provided to enable developers to re-use common flow types such as notarisation, membership broadcast, +transaction resolution and recording, and so on. + +APIs are provided to send and receive object graphs to and from other identities on the network, embed sub-flows, +report progress information to observers and even interact with people (for manual resolution of exceptional scenarios) + +Flows are embedded within CorDapps and deployed to a participant's node for execution. + +.. note:: We will be implementing the concept of a flow hospital to provide a means for a node administrator to decide + whether a paused flow should be killed or repaired. Flows enter this state if they throw exceptions or explicitly request human assistance. + +Section 4 of the `Technical white paper`_ provides further detail of the above features. + +The following diagram illustrates a sample multi-party business flow: + +.. image:: resources/flowFramework.png + +Note the following: + +* there are 3 participants in this workflow including the notary +* the Buyer and Seller flows (depicted in green) are custom written by developers and deployed within a CorDapp +* the custom written flows invoke both financial library flows such as ``TwoPartyTradeFlow`` (depicted in orange) and core + library flows such as ``ResolveTransactionsFlow`` and ``NotaryFlow`` (depicted in yellow) +* each side of the flow illustrates the stage of execution with a progress tracker notification +* activities within a flow directly or indirectly interact with its node's ledger (eg. to record a signed, notarised transaction) and vault (eg. to perform a spend of some fungible asset) +* flows interact across parties using send, receive and sendReceive messaging semantics (by implementing the ``FlowLogic`` interface) + +.. _`Technical white paper`: _static/corda-technical-whitepaper.pdf \ No newline at end of file diff --git a/docs/source/key-concepts-security-model.rst b/docs/source/key-concepts-security-model.rst new file mode 100644 index 0000000000..f4d8076906 --- /dev/null +++ b/docs/source/key-concepts-security-model.rst @@ -0,0 +1,46 @@ +Security model +============== + +Corda has been designed from the ground up to implement a global, decentralised database where all nodes are assumed to be +untrustworthy. This means that each node must actively cross-check each other's work to reach consensus +amongst a group of interacting participants. + +The security model plays a role in the following areas: + +* Identity: + Corda is designed for semi-private networks in which admission requires obtaining an identity signed by a root authority. + This assumption is pervasive – the flow API provides messaging in terms of identities, with routing and delivery to underlying nodes being handled automatically. + See sections 3.2 of the `Technical white paper`_ for further details on identity and the permissioning service. + +* Notarisation: pluggable notaries and algorithms offering different levels of trust. + Notaries may be validating or non-validating. A validating notary will resolve and fully check transactions they are asked to deconflict. + Without the use of any other privacy features, they gain full visibility into every transaction. + On the other hand, non-validating notaries assume transaction validity and do not request transaction data or their dependencies + beyond the list of states consumed (and thus, their level of trust is much lower and exposed to malicious use of transaction inputs). + From an algorithm perspective, Corda currently provides a distributed notary implementation that uses Raft. + +.. note:: Future notary algorithms may include BFT and hardware assisted non-BFT algorithms (where non-BFT algorithms + are converted into a more trusted form using remote attestation and hardware protection). + +* Authentication, authorisation and entitlements: + Network permissioning, including node to node authentication, is performed using TLS and certificates. + See :doc:`permissioning` for further detail. + +.. warning:: API level authentication (RPC, Web) is currently simple username/password for demonstration purposes and will be revised. + Similarly, authorisation is currently based on permission groups applied to flow execution. + This is subject to design review with views to selecting a proven, mature entitlements solution. + +Privacy techniques + +* Partial data visibility: transactions are not globally broadcast as in many other systems. +* Transaction tear-offs: Transactions are structured as Merkle trees, and may have individual subcomponents be revealed to parties who already know the Merkle root hash. Additionally, they may sign the transaction without being able to see all of it. + + See :doc:`merkle-trees` for further detail. + +* Multi-signature support: Corda uses composite keys to support scenarios where more than one key or party is required to authorise a state object transition. + +.. note:: Future privacy techniques will include key randomisation, graph pruning, deterministic JVM sandboxing and support for secure signing devices. + See sections 10 and 13 of the `Technical white paper`_ for detailed descriptions of these techniques and features. + +.. _`Technical white paper`: _static/corda-technical-whitepaper.pdf + diff --git a/docs/source/key-concepts-vault.rst b/docs/source/key-concepts-vault.rst new file mode 100644 index 0000000000..19d1ca811e --- /dev/null +++ b/docs/source/key-concepts-vault.rst @@ -0,0 +1,52 @@ +Vault +===== + +The vault contains data extracted from the ledger that is considered relevant to the node’s owner, stored in a relational model +that can be easily queried and worked with. + +The vault keeps track of both unconsumed and consumed states: + + * Unconsumed (or unspent) states represent fungible states available for spending (including spend-to-self transactions) + and linear states available for evolution (eg. in response to a lifecycle event on a deal) or transfer to another party. + * Consumed (or spent) states represent ledger immutable state for the purpose of transaction reporting, audit and archival, including the ability to perform joins with app-private data (like customer notes) + +By fungible we refer to assets of measurable quantity (eg. a cash currency, units of stock) which can be combined +together to represent a single ledger state. + +Like with a cryptocurrency wallet, the Corda vault can create transactions that send value (eg. transfer of state) to someone else +by combining fungible states and possibly adding a change output that makes the values balance (this process is usually referred to as ‘coin selection’). +Vault spending ensures that transactions respect the fungibility rules in order to ensure that the issuer and reference data is preserved as the assets pass from hand to hand. + +.. note:: Basic 'coin selection' is currently implemented. Future work includes fungible state optimisation (splitting and + merging of states in the background), 'soft locking' (ability to automatically or explicitly reserve states to prevent + multiple transactions trying to use the same output simultaneously), 'state re-issuance' (sending of states back to the + issuer for re-issuance, thus pruning long transaction chains and improving privacy). + +There is also a facility for attaching descriptive textual notes against any transaction stored in the vault. + +The vault supports the management of data in both authoritative ("on-ledger") form and, where appropriate, shadow ("off-ledger") form: + +* "On-ledger" data refers to distributed ledger state (cash, deals, trades) to which a firm is participant. +* "Off-ledger" data refers to a firm's internal reference, static and systems data. + +The following diagram illustrates the breakdown of the vault into sub-system components: + +.. image:: resources/vault.png + +Note the following: + +* the vault "On Ledger" store tracks unconsumed state and is updated internally by the node upon recording of a transaction on the ledger + (following successful smart contract verification and signature by all participants) +* the vault "Off Ledger" store refers to additional data added by the node owner subsequent to transaction recording +* the vault performs fungible state spending (and in future, fungible state optimisation management including merging, splitting and re-issuance) +* vault extensions represent additional custom plugin code a developer may write to query specific custom contract state attributes. +* customer "Off Ledger" (private store) represents internal organisational data that may be joined with the vault data to perform additional reporting or processing +* a vault query API is exposed to developers using standard Corda RPC and CorDapp plugin mechanisms +* a vault update API is internally used by transaction recording flows. +* the vault database schemas are directly accessible via JDBC for customer joins and queries + +Section 8 of the `Technical white paper`_ describes features of the vault yet to be implemented including private key managament, +soft state locking, state splitting and merging, asset re-issuance and node event scheduling. + +.. _`Technical white paper`: _static/corda-technical-whitepaper.pdf + diff --git a/docs/source/key-concepts.rst b/docs/source/key-concepts.rst new file mode 100644 index 0000000000..f2675129d4 --- /dev/null +++ b/docs/source/key-concepts.rst @@ -0,0 +1,21 @@ +Overview +======== + +This section describes the fundamental concepts and features that underpin the Corda platform, to include: + + * :doc:`key-concepts-ecosystem` + * :doc:`key-concepts-data-model` + * :doc:`key-concepts-core-types` + * :doc:`key-concepts-financial-model` + * :doc:`key-concepts-flow-framework` + * :doc:`key-concepts-consensus-notaries` + * :doc:`key-concepts-vault` + * :doc:`key-concepts-security-model` + +Detailed thinking and rationale behind these concepts are presented in the following published white papers: + + * `Corda: An Introduction`_ + * `Corda: A Distributed Ledger`_ (Technical White Paper) + +.. _`Corda: An Introduction`: _static/corda-introductory-whitepaper.pdf +.. _`Corda: A Distributed Ledger`: _static/corda-technical-whitepaper.pdf diff --git a/docs/source/resources/contract.png b/docs/source/resources/contract.png new file mode 100644 index 0000000000000000000000000000000000000000..de151044d61e0778afa2087f81149a401c4e301b GIT binary patch literal 122604 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 literal 0 HcmV?d00001 diff --git a/docs/source/resources/cordaNetwork.png b/docs/source/resources/cordaNetwork.png new file mode 100644 index 0000000000000000000000000000000000000000..907a0172babfd3aaf75e99a74bbb80ddb16b61b9 GIT binary patch literal 102022 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 literal 0 HcmV?d00001 diff --git a/docs/source/resources/financialContractStateModel.png b/docs/source/resources/financialContractStateModel.png new file mode 100644 index 0000000000000000000000000000000000000000..6c5a2755801e65396eeb82bf5c68fcbd2b9c72c0 GIT binary patch literal 119573 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 H?Z!U=(i3JO literal 0 HcmV?d00001 diff --git a/docs/source/resources/flowFramework.png b/docs/source/resources/flowFramework.png new file mode 100644 index 0000000000000000000000000000000000000000..639658506a5024914bfd7464d3551cb2269035d8 GIT binary patch literal 225159 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%0DiNPuQG&kih+PzBa<^ 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 @@ -127,7 +134,7 @@ extends NotaryError

Nested classes/interfaces inherited from class net.corda.flows.NotaryError

-NotaryError.Conflict, NotaryError.SignaturesMissing, NotaryError.TimestampInvalid, NotaryError.TransactionInvalid +NotaryError.Conflict, NotaryError.SignaturesInvalid, NotaryError.SignaturesMissing, NotaryError.TimestampInvalid, NotaryError.TransactionInvalid @@ -143,7 +150,26 @@ extends NotaryError Constructor and Description -TransactionInvalid()  +TransactionInvalid(java.lang.String msg)  + + + + + +
    +
  • + + +

    Method Summary

    + + + + + + + + +
    All Methods Instance Methods Concrete Methods 
    Modifier and TypeMethod and Description
    java.lang.StringgetMsg() 
  • @@ -160,13 +186,30 @@ extends NotaryError

    Constructor Detail

    - +
    • TransactionInvalid

      -
      public TransactionInvalid()
      +
      public TransactionInvalid(java.lang.String msg)
      +
    • +
    + +
+ +
    +
  • + + +

    Method Detail

    + + + +
      +
    • +

      getMsg

      +
      public java.lang.String getMsg()
  • @@ -224,13 +267,13 @@ extends NotaryError
  • Nested | 
  • Field | 
  • Constr | 
  • -
  • Method
  • +
  • Method
diff --git a/docs/build/html/api/javadoc/net/corda/flows/NotaryError.html b/docs/build/html/api/javadoc/net/corda/flows/NotaryError.html index 5f2cf10ea9..84950ca86a 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/NotaryError.html +++ b/docs/build/html/api/javadoc/net/corda/flows/NotaryError.html @@ -2,10 +2,10 @@ - + NotaryError - + @@ -99,7 +99,7 @@
  • Direct Known Subclasses:
    -
    NotaryError.Conflict, NotaryError.SignaturesMissing, NotaryError.TimestampInvalid, NotaryError.TransactionInvalid
    +
    NotaryError.Conflict, NotaryError.SignaturesInvalid, NotaryError.SignaturesMissing, NotaryError.TimestampInvalid, NotaryError.TransactionInvalid


    @@ -128,15 +128,19 @@ static class  -NotaryError.SignaturesMissing  +NotaryError.SignaturesInvalid  static class  +NotaryError.SignaturesMissing  + + +static class  NotaryError.TimestampInvalid
    Thrown if the time specified in the timestamp command is outside the allowed tolerance
    - + static class  NotaryError.TransactionInvalid  diff --git a/docs/build/html/api/javadoc/net/corda/flows/NotaryException.html b/docs/build/html/api/javadoc/net/corda/flows/NotaryException.html index 6adab72636..c64eb72361 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/NotaryException.html +++ b/docs/build/html/api/javadoc/net/corda/flows/NotaryException.html @@ -2,10 +2,10 @@ - + NotaryException - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.Client.html b/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.Client.html index 249b8367e3..de6f3758a8 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.Client.html +++ b/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.Client.html @@ -2,10 +2,10 @@ - + NotaryFlow.Client - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.Result.html b/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.Result.html index 21da51862e..eebb78bb20 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.Result.html +++ b/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.Result.html @@ -2,10 +2,10 @@ - + NotaryFlow.Result - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.Service.html b/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.Service.html index a3b3a8e2fb..2d6549789d 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.Service.html +++ b/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.Service.html @@ -2,10 +2,10 @@ - + NotaryFlow.Service - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.SignRequest.html b/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.SignRequest.html index 0dc40535d4..52e2c76389 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.SignRequest.html +++ b/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.SignRequest.html @@ -2,10 +2,10 @@ - + NotaryFlow.SignRequest - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.html b/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.html index 3bea1493cf..71a161b785 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.html +++ b/docs/build/html/api/javadoc/net/corda/flows/NotaryFlow.html @@ -2,10 +2,10 @@ - + NotaryFlow - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/Primary.Companion.html b/docs/build/html/api/javadoc/net/corda/flows/Primary.Companion.html index 1bcff68c87..e1019fc48e 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/Primary.Companion.html +++ b/docs/build/html/api/javadoc/net/corda/flows/Primary.Companion.html @@ -2,10 +2,10 @@ - + Primary.Companion - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/ResolveTransactionsFlow.Companion.html b/docs/build/html/api/javadoc/net/corda/flows/ResolveTransactionsFlow.Companion.html index 900ab14881..80d80a6ac3 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/ResolveTransactionsFlow.Companion.html +++ b/docs/build/html/api/javadoc/net/corda/flows/ResolveTransactionsFlow.Companion.html @@ -2,10 +2,10 @@ - + ResolveTransactionsFlow.Companion - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/ResolveTransactionsFlow.ExcessivelyLargeTransactionGraph.html b/docs/build/html/api/javadoc/net/corda/flows/ResolveTransactionsFlow.ExcessivelyLargeTransactionGraph.html index 20edda1959..bcb46a9057 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/ResolveTransactionsFlow.ExcessivelyLargeTransactionGraph.html +++ b/docs/build/html/api/javadoc/net/corda/flows/ResolveTransactionsFlow.ExcessivelyLargeTransactionGraph.html @@ -2,10 +2,10 @@ - + ResolveTransactionsFlow.ExcessivelyLargeTransactionGraph - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/ResolveTransactionsFlow.html b/docs/build/html/api/javadoc/net/corda/flows/ResolveTransactionsFlow.html index d8739afdd1..016a21cd94 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/ResolveTransactionsFlow.html +++ b/docs/build/html/api/javadoc/net/corda/flows/ResolveTransactionsFlow.html @@ -2,10 +2,10 @@ - + ResolveTransactionsFlow - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/Result.Companion.html b/docs/build/html/api/javadoc/net/corda/flows/Result.Companion.html index 57d9d5b21f..cd1421324f 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/Result.Companion.html +++ b/docs/build/html/api/javadoc/net/corda/flows/Result.Companion.html @@ -2,10 +2,10 @@ - + Result.Companion - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/Result.Error.html b/docs/build/html/api/javadoc/net/corda/flows/Result.Error.html index 5c7ea6c114..2656d2d92a 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/Result.Error.html +++ b/docs/build/html/api/javadoc/net/corda/flows/Result.Error.html @@ -2,10 +2,10 @@ - + Result.Error - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/Result.Success.html b/docs/build/html/api/javadoc/net/corda/flows/Result.Success.html index 12db4b16ac..2819767274 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/Result.Success.html +++ b/docs/build/html/api/javadoc/net/corda/flows/Result.Success.html @@ -2,10 +2,10 @@ - + Result.Success - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/Secondary.Companion.html b/docs/build/html/api/javadoc/net/corda/flows/Secondary.Companion.html index 06db14133c..d1ed8f55f8 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/Secondary.Companion.html +++ b/docs/build/html/api/javadoc/net/corda/flows/Secondary.Companion.html @@ -2,10 +2,10 @@ - + Secondary.Companion - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/Seller.Companion.html b/docs/build/html/api/javadoc/net/corda/flows/Seller.Companion.html index b00ae64d44..d0ff83b933 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/Seller.Companion.html +++ b/docs/build/html/api/javadoc/net/corda/flows/Seller.Companion.html @@ -2,10 +2,10 @@ - + Seller.Companion - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/ServiceRequestMessage.html b/docs/build/html/api/javadoc/net/corda/flows/ServiceRequestMessage.html index 1fc80e3309..2fece74c21 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/ServiceRequestMessage.html +++ b/docs/build/html/api/javadoc/net/corda/flows/ServiceRequestMessage.html @@ -2,10 +2,10 @@ - + ServiceRequestMessage - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/ServiceRequestMessageKt.html b/docs/build/html/api/javadoc/net/corda/flows/ServiceRequestMessageKt.html index 78107187d1..439114e71a 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/ServiceRequestMessageKt.html +++ b/docs/build/html/api/javadoc/net/corda/flows/ServiceRequestMessageKt.html @@ -2,10 +2,10 @@ - + ServiceRequestMessageKt - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/StateReplacementException.html b/docs/build/html/api/javadoc/net/corda/flows/StateReplacementException.html index c5332fbad3..37b2c80a73 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/StateReplacementException.html +++ b/docs/build/html/api/javadoc/net/corda/flows/StateReplacementException.html @@ -2,10 +2,10 @@ - + StateReplacementException - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/StateReplacementRefused.html b/docs/build/html/api/javadoc/net/corda/flows/StateReplacementRefused.html index 3b0e2b0645..5267c93e0e 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/StateReplacementRefused.html +++ b/docs/build/html/api/javadoc/net/corda/flows/StateReplacementRefused.html @@ -2,10 +2,10 @@ - + StateReplacementRefused - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Acceptor.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Acceptor.html index 5317199fe5..6b47444274 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Acceptor.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Acceptor.html @@ -2,10 +2,10 @@ - + TwoPartyDealFlow.Acceptor - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.AutoOffer.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.AutoOffer.html index 199aa067d5..3bfae46905 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.AutoOffer.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.AutoOffer.html @@ -2,10 +2,10 @@ - + TwoPartyDealFlow.AutoOffer - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.DealMismatchException.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.DealMismatchException.html index 00883488ec..59384c0ce6 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.DealMismatchException.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.DealMismatchException.html @@ -2,10 +2,10 @@ - + TwoPartyDealFlow.DealMismatchException - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.DealRefMismatchException.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.DealRefMismatchException.html index ed0e982907..e6e5a954c1 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.DealRefMismatchException.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.DealRefMismatchException.html @@ -2,10 +2,10 @@ - + TwoPartyDealFlow.DealRefMismatchException - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Handshake.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Handshake.html index 92ccb43760..5d64d78ab3 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Handshake.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Handshake.html @@ -2,10 +2,10 @@ - + TwoPartyDealFlow.Handshake - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Instigator.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Instigator.html index d850bc7cdd..256c0e8dcc 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Instigator.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Instigator.html @@ -2,10 +2,10 @@ - + TwoPartyDealFlow.Instigator - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.MarkerForBogusRegulatorFlow.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.MarkerForBogusRegulatorFlow.html index e5c943490c..f88f5331ce 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.MarkerForBogusRegulatorFlow.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.MarkerForBogusRegulatorFlow.html @@ -2,10 +2,10 @@ - + TwoPartyDealFlow.MarkerForBogusRegulatorFlow - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Primary.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Primary.html index 89ed417b5b..88e1887510 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Primary.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Primary.html @@ -2,10 +2,10 @@ - + TwoPartyDealFlow.Primary - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Secondary.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Secondary.html index c2514def3e..9fe64174e2 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Secondary.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.Secondary.html @@ -2,10 +2,10 @@ - + TwoPartyDealFlow.Secondary - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.SignaturesFromPrimary.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.SignaturesFromPrimary.html index ec6e12399a..e371cf71d4 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.SignaturesFromPrimary.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.SignaturesFromPrimary.html @@ -2,10 +2,10 @@ - + TwoPartyDealFlow.SignaturesFromPrimary - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.html index 8cf76816ff..cf1befb2e6 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyDealFlow.html @@ -2,10 +2,10 @@ - + TwoPartyDealFlow - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.AssetMismatchException.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.AssetMismatchException.html index f41a0367c4..82fb9c3b2d 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.AssetMismatchException.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.AssetMismatchException.html @@ -2,10 +2,10 @@ - + TwoPartyTradeFlow.AssetMismatchException - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.Buyer.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.Buyer.html index 776726b30e..9c17e81268 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.Buyer.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.Buyer.html @@ -2,10 +2,10 @@ - + TwoPartyTradeFlow.Buyer - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.Seller.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.Seller.html index 405da9a8da..c43fb32ee2 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.Seller.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.Seller.html @@ -2,10 +2,10 @@ - + TwoPartyTradeFlow.Seller - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.SellerTradeInfo.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.SellerTradeInfo.html index 0a3fb30fce..2d70ea6cac 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.SellerTradeInfo.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.SellerTradeInfo.html @@ -2,10 +2,10 @@ - + TwoPartyTradeFlow.SellerTradeInfo - + diff --git a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.SignaturesFromSeller.html b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.SignaturesFromSeller.html index c331c872be..b30fee7b88 100644 --- a/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.SignaturesFromSeller.html +++ b/docs/build/html/api/javadoc/net/corda/flows/TwoPartyTradeFlow.SignaturesFromSeller.html @@ -2,10 +2,10 @@ - + TwoPartyTradeFlow.SignaturesFromSeller - + @@ -59,7 +59,7 @@ var activeTableTab = "activeTableTab";
  • diff --git a/docs/build/html/api/javadoc/net/corda/node/services/config/NodeConfigurationKt.html b/docs/build/html/api/javadoc/net/corda/node/services/config/NodeConfigurationKt.html index 39c3ac7ba2..a7449451fd 100644 --- a/docs/build/html/api/javadoc/net/corda/node/services/config/NodeConfigurationKt.html +++ b/docs/build/html/api/javadoc/net/corda/node/services/config/NodeConfigurationKt.html @@ -2,10 +2,10 @@ - + NodeConfigurationKt - + @@ -45,7 +45,7 @@
    • getConfig

      -
      public NodeSSLConfiguration getConfig()
      +
      public SSLConfiguration getConfig()

      The config object is used to pass in the passwords for the certificate KeyStore and TrustStore

    diff --git a/docs/build/html/api/javadoc/net/corda/node/services/messaging/ArtemisMessagingServer.Companion.html b/docs/build/html/api/javadoc/net/corda/node/services/messaging/ArtemisMessagingServer.Companion.html index 3fa0d9fbf5..49f0427767 100644 --- a/docs/build/html/api/javadoc/net/corda/node/services/messaging/ArtemisMessagingServer.Companion.html +++ b/docs/build/html/api/javadoc/net/corda/node/services/messaging/ArtemisMessagingServer.Companion.html @@ -2,10 +2,10 @@ - + ArtemisMessagingServer.Companion - + @@ -44,8 +44,8 @@
  • CordaRPCClient

    public CordaRPCClient(com.google.common.net.HostAndPort host,
    -                      NodeSSLConfiguration config)
    + SSLConfiguration config)

    An RPC client connects to the specified server and allows you to make calls to the server that perform various useful tasks. See the documentation for proxy or review the docsite to learn more about how this API works.

    @@ -525,7 +525,7 @@ Finalizers are in place to warn you if you lose a reference to an unclosed proxy
    • getConfig

      -
      public NodeSSLConfiguration getConfig()
      +
      public SSLConfiguration getConfig()

      The config object is used to pass in the passwords for the certificate KeyStore and TrustStore

    diff --git a/docs/build/html/api/javadoc/net/corda/node/services/messaging/CordaRPCClientImpl.Companion.html b/docs/build/html/api/javadoc/net/corda/node/services/messaging/CordaRPCClientImpl.Companion.html index d1ad729588..da0d5c41ff 100644 --- a/docs/build/html/api/javadoc/net/corda/node/services/messaging/CordaRPCClientImpl.Companion.html +++ b/docs/build/html/api/javadoc/net/corda/node/services/messaging/CordaRPCClientImpl.Companion.html @@ -2,10 +2,10 @@ - + CordaRPCClientImpl.Companion - + @@ -44,8 +44,8 @@ diff --git a/docs/build/html/contract-irs.html b/docs/build/html/contract-irs.html index 844c779669..2d3ae16e4a 100644 --- a/docs/build/html/contract-irs.html +++ b/docs/build/html/contract-irs.html @@ -104,11 +104,15 @@ API reference: Kotlin/ Key concepts

    CorDapps

      @@ -146,6 +150,8 @@ API reference: Kotlin/ Other

      Component library

      diff --git a/docs/build/html/corda-configuration-file.html b/docs/build/html/corda-configuration-file.html index 3f8e63a939..3c75d8a159 100644 --- a/docs/build/html/corda-configuration-file.html +++ b/docs/build/html/corda-configuration-file.html @@ -104,11 +104,15 @@ API reference: Kotlin/ Key concepts

      CorDapps

        @@ -152,6 +156,8 @@ API reference: Kotlin/ Other

        Component library

        diff --git a/docs/build/html/corda-plugins.html b/docs/build/html/corda-plugins.html index 9687bfed79..02fe0b9b94 100644 --- a/docs/build/html/corda-plugins.html +++ b/docs/build/html/corda-plugins.html @@ -104,11 +104,15 @@ API reference: Kotlin/ Key concepts

        CorDapps

          @@ -146,6 +150,8 @@ API reference: Kotlin/ Other

          Component library

          diff --git a/docs/build/html/creating-a-cordapp.html b/docs/build/html/creating-a-cordapp.html index 68560fd2d0..0472a1a8b4 100644 --- a/docs/build/html/creating-a-cordapp.html +++ b/docs/build/html/creating-a-cordapp.html @@ -36,7 +36,7 @@ - + @@ -104,11 +104,15 @@ API reference: Kotlin/ Key concepts

          CorDapps

            @@ -163,6 +167,8 @@ API reference: Kotlin/ Other

            Component library

            @@ -459,7 +466,7 @@ one node per window.

            Next - Previous + Previous diff --git a/docs/build/html/data-model.html b/docs/build/html/data-model.html deleted file mode 100644 index f72b9f5677..0000000000 --- a/docs/build/html/data-model.html +++ /dev/null @@ -1,546 +0,0 @@ - - - - - - - - - - - - - - Data model — R3 Corda latest documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            - - - - -
            - - - - - - -
            -
            - - - - - - -
            - -
            -
            -
            -
            - -
            -

            Data model

            -

            This article covers the data model: how states, transactions and code contracts interact with each other and -how they are represented in software.

            -
            -

            Overview

            -

            We begin with the idea of a global ledger. In our model although the ledger is shared, it is not always the case that -transactions and ledger entries are globally visible. In cases where a set of transactions stays within a small subgroup of -users it should be possible to keep the relevant data purely within that group.

            -

            To ensure consistency in a global, shared system where not all data may be visible to all participants, we rely -heavily on secure hashes like SHA-256 to identify things. The ledger is defined as a set of immutable states, which -are created and destroyed by digitally signed transactions. Each transaction points to a set of states that it will -consume/destroy, these are called inputs, and contains a set of new states that it will create, these are called -outputs.

            -

            States contain arbitrary data, but they always contain at minimum a hash of the bytecode of a -contract code file, which is a program expressed in JVM byte code that runs sandboxed inside a Java virtual machine. -Contract code (or just “contracts” in the rest of this document) are globally shared pieces of business logic.

            -
            -

            Note

            -

            In the current code dynamic loading of contracts is not implemented, so states currently point at -statically created object instances. This will change in the near future.

            -
            -

            Contracts define a verify function, which is a pure function given the entire transaction as input. To be considered -valid, the transaction must be accepted by the verify function of every contract pointed to by the input and output -states.

            -

            Beyond inputs and outputs, transactions may also contain commands, small data packets that -the platform does not interpret itself but which can parameterise execution of the contracts. They can be thought of as -arguments to the verify function. Each command has a list of public keys associated with it. The platform ensures -that the transaction is signed by every key listed in the commands before the contracts start to execute. Thus, a verify -function can trust that all listed keys have signed the transaction but is responsible for verifying that any keys required -for the transaction to be valid from the verify function’s perspective are included in the list. Public keys -may be random/identityless for privacy, or linked to a well known legal identity, for example via a -public key infrastructure (PKI).

            -
            -

            Note

            -

            Linkage of keys with identities via a PKI is only partially implemented in the current code.

            -
            -

            Commands are always embedded inside a transaction. Sometimes, there’s a larger piece of data that can be reused across -many different transactions. For this use case, we have attachments. Every transaction can refer to zero or more -attachments by hash. Attachments are always ZIP/JAR files, which may contain arbitrary content. These files are -then exposed on the classpath and so can be opened by contract code in the same manner as any JAR resources -would be loaded.

            -
            -

            Note

            -

            Attachments must be opened explicitly in the current code.

            -
            -

            Note that there is nothing that explicitly binds together specific inputs, outputs, commands or attachments. Instead -it’s up to the contract code to interpret the pieces inside the transaction and ensure they fit together correctly. This -is done to maximise flexibility for the contract developer.

            -

            Transactions may sometimes need to provide a contract with data from the outside world. Examples may include stock -prices, facts about events or the statuses of legal entities (e.g. bankruptcy), and so on. The providers of such -facts are called oracles and they provide facts to the ledger by signing transactions that contain commands they -recognise, or by creating signed attachments. The commands contain the fact and the signature shows agreement to that fact.

            -

            Time is also modelled as a fact, with the signature of a special kind of service called a notary. A notary is -a (very likely) decentralised service which fulfils the role that miners play in other blockchain systems: -notaries ensure only one transaction can consume any given output. Additionally they may verify a timestamping -command placed inside the transaction, which specifies a time window in which the transaction is considered -valid for notarisation. The time window can be open ended (i.e. with a start but no end or vice versa). In this -way transactions can be linked to the notary’s clock.

            -

            It is possible for a single Corda network to have multiple competing notaries. Each state points to the notary that -controls it. Whilst a single transaction may only consume states if they are all controlled by the same notary, -a special type of transaction is provided that moves a state (or set of states) from one notary to another.

            -
            -

            Note

            -

            Currently the platform code will not re-assign states to a single notary as needed for you, in case of -a mismatch. This is a future planned feature.

            -
            -

            As the same terminology often crops up in different distributed ledger designs, let’s compare this to other -systems you may be familiar with. The key differences are:

            -
              -
            • Improved contract flexibility vs Bitcoin
            • -
            • Improved scalability vs Ethereum, as well as ability to keep parts of the transaction graph private (yet still uniquely addressable)
            • -
            • No reliance on proof of work
            • -
            • Re-use of existing sandboxing virtual machines
            • -
            • Use of type safe GCd implementation languages
            • -
            • Simplified auditing
            • -
            -
            -
            -

            Comparison with Bitcoin

            -

            Similarities:

            -
              -
            • The basic notion of immutable states that are consumed and created by transactions is the same.
            • -
            • The notion of transactions having multiple inputs and outputs is the same. Bitcoin sometimes refers to the ledger -as the unspent transaction output set (UTXO set) as a result.
            • -
            • Like in Bitcoin, a contract is pure function. Contracts do not have storage or the ability to interact with anything. -Given the same transaction, a contract’s accept function always yields exactly the same result.
            • -
            • Bitcoin output scripts are parameterised by the input scripts in the spending transaction. This is somewhat similar -to our notion of a command.
            • -
            • Bitcoin has a global distributed notary service; that’s the famous block chain. However, there is only one. Whilst -there is a notion of a “side chain”, this isn’t integrated with the core Bitcoin data model and thus adds large -amounts of additional complexity meaning in practice side chains are not used.
            • -
            • Bitcoin transactions, like ours, refer to the states they consume by using a (txhash, index) pair. The Bitcoin -protocol calls these “outpoints”. In our code they are known as StateRefs but the concept is identical.
            • -
            • Bitcoin transactions have an associated timestamp (the time at which they are mined).
            • -
            -

            Differences:

            -
              -
            • A Bitcoin transaction has a single, rigid data format. A “state” in Bitcoin is always a (quantity of bitcoin, script) -pair and cannot hold any other data. Some people have been known to try and hack around this limitation by embedding -data in semi-standardised places in the contract code so the data can be extracted through pattern matching, but this -is a poor approach. Our states can include arbitrary typed data.
            • -
            • A Bitcoin transaction’s acceptance is controlled only by the contract code in the consumed input states. In practice -this has proved limiting. Our transactions invoke not only input contracts but also the contracts of the outputs.
            • -
            • A Bitcoin script can only be given a fixed set of byte arrays as the input. This means there’s no way for a contract -to examine the structure of the entire transaction, which severely limits what contracts can do.
            • -
            • Our contracts are Turing-complete and can be written in any ordinary programming language that targets the JVM.
            • -
            • Our transactions and contracts get their time from an attached timestamp rather than a block. This is -important given that we use block-free conflict resolution algorithms. The timestamp can be arbitrarily precise.
            • -
            • We use the term “contract” to refer to a bundle of business logic that may handle various different tasks, beyond -transaction verification. For instance, currently our contracts also include code for creating valid transactions -(this is often called “wallet code” in Bitcoin).
            • -
            -
            -
            -

            Comparison with Ethereum

            -

            Similarities:

            -
              -
            • Like Ethereum, code runs inside a relatively powerful virtual machine and can contain complex logic. Non-assembly -based programming languages can be used for contract programming.
            • -
            • They are both intended for the modelling of many different kinds of financial contract.
            • -
            -

            Differences:

            -
              -
            • The term “contract” in Ethereum refers to an instantiation of a program that is replicated and maintained by -every participating node. This instantiation is very much like an object in an OO program: it can receive and send -messages, update local storage and so on. In contrast, we use the term “contract” to refer to a set of functions, only -one of which is a part of keeping the system synchronised (the verify function). That function is pure and -stateless i.e. it may not interact with any other part of the system whilst executing.
            • -
            • There is no notion of an “account”, as there is in Ethereum.
            • -
            • As contracts don’t have any kind of mutable storage, there is no notion of a “message” as in Ethereum.
            • -
            • Ethereum claims to be a platform not only for financial logic, but literally any kind of application at all. Our -platform considers non-financial applications to be out of scope.
            • -
            -
            -
            -

            Rationale for and tradeoffs in adopting a UTXO-style model

            -

            As discussed above, Corda uses the so-called “UTXO set” model (unspent transaction output). In this model, the database -does not track accounts or balances. Instead all database entries are immutable. An entry is either spent or not spent -but it cannot be changed. In Bitcoin, spentness is implemented simply as deletion – the inputs of an accepted transaction -are deleted and the outputs created.

            -

            This approach has some advantages and some disadvantages, which is why some platforms like Ethereum have tried -(or are trying) to abstract this choice away and support a more traditional account-like model. We have explicitly -chosen not to do this and our decision to adopt a UTXO-style model is a deliberate one. In the section below, -the rationale for this decision and its pros and cons of this choice are outlined.

            -
            -
            -

            Rationale

            -

            Corda, in common with other blockchain-like platforms, is designed to bring parties to shared sets of data into -consensus as to the existence, content and allowable evolutions of those data sets. However, Corda is designed with the -explicit aim of avoiding, to the extent possible, the scalability and privacy implications that arise from those platforms’ -decisions to adopt a global broadcast model.

            -

            Whilst the privacy implications of a global consensus model are easy to understand, the scalability implications are -perhaps more subtle, yet serious. In a consensus system, it is critical that all processors of a transaction reach -precisely the same conclusion as to its effects. In situations where two transactions may act on the same data set, -it means that the two transactions must be processed in the same order by all nodes. If this were not the case then it -would be possible to devise situations where nodes processed transactions in different orders and reached different -conclusions as to the state of the system. It is for this reason that systems like Ethereum effectively run -single-threaded, meaning the speed of the system is limited by the single-threaded performance of the slowest -machine on the network.

            -

            In Corda, we assume the data being processed represents financial agreements between identifiable parties and that these -institutions will adopt the system only if a significant number of such agreements can be managed by the platform. -As such, the system has to be able to support parallelisation of execution to the greatest extent possible, -whilst ensuring correct transaction ordering when two transactions seek to act on the same piece of shared state.

            -

            To achieve this, we must minimise the number of parties who need to receive and process copies of any given -transaction and we must minimise the extent to which two transactions seek to mutate (or supersede) any given piece -of shared state.

            -

            A key design decision, therefore, is what should be the most atomic unit of shared data in the system. This decision -also has profound privacy implications: the more coarsely defined the shared data units, the larger the set of -actors who will likely have a stake in its accuracy and who must process and observe any update to it.

            -

            This becomes most obvious when we consider two models for representing cash balances and payments.

            -

            A simple account model for cash would define a data structure that maintained a balance at a particular bank for each -“account holder”. Every holder of a balance would need a copy of this structure and would thus need to process and -validate every payment transaction, learning about everybody else’s payments and balances in the process. -All payments across that set of accounts would have to be single-threaded across the platform, limiting maximum -throughput.

            -

            A more sophisticated example might create a data structure per account holder. -But, even here, I would leak my account balance to anybody to whom I ever made -a payment and I could only ever make one payment at a time, for the same reasons above.

            -

            A UTXO model would define a data structure that represented an instance of a claim against the bank. An account -holder could hold many such instances, the aggregate of which would reveal their balance at that institution. However, -the account holder now only needs to reveal to their payee those instances consumed in making a payment to that payee. -This also means the payer could make several payments in parallel. A downside is that the model is harder to understand. -However, we consider the privacy and scalability advantages to overwhelm the modest additional cognitive load this places -on those attempting to learn the system.

            -

            In what follows, further advantages and disadvantages of this design decision are explored.

            -
            -
            -

            Pros

            -

            The UTXO model has these advantages:

            -
              -
            • Immutable ledger entries gives the usual advantages that a more functional approach brings: it’s easy to do analysis -on a static snapshot of the data and reason about the contents.
            • -
            • Because there are no accounts, it’s very easy to apply transactions in parallel even for high traffic legal entities -assuming sufficiently granular entries.
            • -
            • Transaction ordering becomes trivial: it is impossible to mis-order transactions due to the reliance on hash functions -to identify previous states. There is no need for sequence numbers or other things that are hard to provide in a -fully distributed system.
            • -
            • Conflict resolution boils down to the double spending problem, which places extremely minimal demands on consensus -algorithms (as the variable you’re trying to reach consensus on is a set of booleans).
            • -
            -
            -
            -

            Cons

            -

            It also comes with some pretty serious complexities that in practice must be abstracted from developers:

            -
              -
            • Representing numeric amounts using immutable entries is unnatural. For instance, if you receive $1000 and wish -to send someone $100, you have to consume the $1000 output and then create two more: a $100 for the recipient and -$900 back to yourself as change. The fact that this happens can leak private information to an observer.
            • -
            • Because users do need to think in terms of balances and statements, you have to layer this on top of the -underlying ledger: you can’t just read someone’s balance out of the system. Hence, the “wallet” / position manager. -Experience from those who have developed wallets for Bitcoin and other systems is that they can be complex pieces of code, -although the bulk of wallets’ complexity in public systems is handling the lack of finality (and key management).
            • -
            • Whilst transactions can be applied in parallel, it is much harder to create them in parallel due to the need to -strictly enforce a total ordering.
            • -
            -

            With respect to parallel creation, if the user is single threaded this is fine, but in a more complex situation -where you might want to be preparing multiple transactions in flight this can prove a limitation – in -the worst case where you have a single output that represents all your value, this forces you to serialise -the creation of every transaction. If transactions can be created and signed very fast that’s not a concern. -If there’s only a single user, that’s not a concern.

            -

            Both cases are typically true in the Bitcoin world, so users don’t suffer from this much. In the context of a -complex business with a large pool of shared funds, in which creation of transactions may be very slow due to the -need to get different humans to approve a tx using a signing device, this could quickly lead to frustrating -conflicts where someone approves a transaction and then discovers that it has become a double spend and -they must sign again. In the absolute worst case you could get a form of human livelock.

            -

            The tricky part about solving these problems is that the simplest way to express a payment request -(“send me $1000 to public key X”) inherently results in you receiving a single output, which then can -prove insufficiently granular to be convenient. In the Bitcoin space Mike Hearn and Gavin Andresen designed “BIP 70” -to solve this: it’s a simple binary format for requesting a payment and specifying exactly how you’d like to get paid, -including things like the shape of the transaction. It may seem that it’s an over complex approach: could you not -just immediately respend the big output back to yourself in order to split it? And yes, you could, until you hit -scenarios like “the machine requesting the payment doesn’t have the keys needed to spend it”, -which turn out to be very common. So it’s really more effective for a recipient to be able to say to the -sender, “here’s the kind of transaction I want you to send me”. The flow framework -may provide a vehicle to make such negotiations simpler.

            -

            A further challenge is privacy. Whilst our goal of not sending transactions to nodes that don’t “need to know” -helps, to verify a transaction you still need to verify all its dependencies and that can result in you receiving -lots of transactions that involve random third parties. The problems start when you have received lots of separate -payments and been careful not to make them linkable to your identity, but then you need to combine them all in a -single transaction to make a payment.

            -

            Mike Hearn wrote an article about this problem and techniques to minimise it in -this article from 2013. This article -coined the term “merge avoidance”, which has never been implemented in the Bitcoin space, -although not due to lack of practicality.

            -

            A piece of future work for the wallet implementation will be to implement automated “grooming” of the wallet -to “reshape” outputs to useful/standardised sizes, for example, and to send outputs of complex transactions -back to their issuers for reissuance to “sever” long privacy-breaching chains.

            -

            Finally, it should be noted that some of the issues described here are not really “cons” of -the UTXO model; they’re just fundamental. If you used many different anonymous accounts to preserve some privacy -and then needed to spend the contents of them all simultaneously, you’d hit the same problem, so it’s not -something that can be trivially fixed with data model changes.

            -
            -
            - - -
            -
            - - -
            -
            - -
            - -
            - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/build/html/event-scheduling.html b/docs/build/html/event-scheduling.html index 78b4b6a926..9e9c91559f 100644 --- a/docs/build/html/event-scheduling.html +++ b/docs/build/html/event-scheduling.html @@ -104,11 +104,15 @@ API reference: Kotlin/ Key concepts

            CorDapps

            +
          • Further notes on Kotlin
          • Publishing Corda
            • Before Publishing
            • Publishing Locally
            • diff --git a/docs/build/html/inthebox.html b/docs/build/html/inthebox.html index b73a2069ab..49e895f5a1 100644 --- a/docs/build/html/inthebox.html +++ b/docs/build/html/inthebox.html @@ -104,11 +104,15 @@ API reference: Kotlin/ Key concepts

              CorDapps

                @@ -146,6 +150,8 @@ API reference: Kotlin/ Other

                Component library

                diff --git a/docs/build/html/consensus.html b/docs/build/html/key-concepts-consensus-notaries.html similarity index 70% rename from docs/build/html/consensus.html rename to docs/build/html/key-concepts-consensus-notaries.html index e600b949b0..c0bd2b2005 100644 --- a/docs/build/html/consensus.html +++ b/docs/build/html/key-concepts-consensus-notaries.html @@ -12,7 +12,7 @@ - Consensus model — R3 Corda latest documentation + Consensus and notaries — R3 Corda latest documentation @@ -35,8 +35,8 @@ - - + + @@ -104,10 +104,14 @@ API reference: Kotlin/ Key concepts

                  -
                • Data model
                • -
                • Data types
                • -
                • Transaction tear-offs
                • -
                • Consensus model
                    +
                  • Overview
                  • +
                  • Corda ecosystem
                  • +
                  • Data model
                  • +
                  • Core types
                  • +
                  • Financial model
                  • +
                  • Flow framework
                  • +
                  • Consensus and notaries

                    CorDapps

                      @@ -155,6 +160,8 @@ API reference: Kotlin/ Other

                      Component library

                      @@ -206,11 +214,11 @@ API reference: Kotlin/
                    • Docs »
                    • -
                    • Consensus model
                    • +
                    • Consensus and notaries
                    • - View page source + View page source
                    • @@ -220,22 +228,34 @@ API reference: Kotlin/
                      -
                      -

                      Consensus model

                      -

                      The fundamental unit of consensus in Corda is the state. The concept of consensus can be divided into two parts:

                      +
                      +

                      Consensus and notaries

                      +

                      A notary is a service that provides transaction ordering and timestamping.

                      +

                      Notaries are expected to be composed of multiple mutually distrusting parties who use a standard consensus algorithm. +Notaries are identified by and sign with Composite Keys. Notaries accept transactions submitted to them for processing +and either return a signature over the transaction, or a rejection error that states that a double spend attempt has occurred.

                      +

                      Corda has “pluggable” notary services to improve privacy, scalability, legal-system compatibility and algorithmic agility. +The platform currently provides validating and non-validating notaries, and a distributed RAFT implementation.

                      +
                      +

                      Consensus model

                      +

                      The fundamental unit of consensus in Corda is the state. Consensus can be divided into two parts:

                        -
                      1. Consensus over state validity – parties can reach certainty that a transaction defining output states is accepted by the contracts pointed to by the states and has all the required signatures. This is achieved by parties independently running the same contract code and validation logic (as described in data model)
                      2. -
                      3. Consensus over state uniqueness – parties can reach certainty the output states created in a transaction are the unique successors to the input states consumed by that transaction (in other words – a state has not been used as an input by more than one transaction)
                      4. +
                      5. Consensus over state validity – parties can reach certainty that a transaction is accepted by the contracts pointed +to by the input and output states, and has all the required signatures. This is achieved by parties independently running +the same contract code and validation logic (as described in data model)
                      6. +
                      7. Consensus over state uniqueness – parties can reach certainty the output states created in a transaction are the +unique successors to the input states consumed by that transaction (in other words – an input state has not been previously +consumed)
                      -

                      This article presents an initial model for addressing the uniqueness problem.

                      Note

                      The current model is still a work in progress and everything described in this article can and is likely to change

                      +

                      Notary

                      -

                      We introduce the concept of a notary, which is an authority responsible for attesting that for a given transaction, it had not signed another transaction consuming any of its input states. -The data model is extended so that every state has an appointed notary:

                      +

                      A notary is an authority responsible for attesting that for a given transaction, it has not signed another transaction +consuming any of the same input states. Every state has an appointed notary:

                      /**
                        * A wrapper for [ContractState] containing additional platform-level state information.
                        * This is the definitive state that is stored on the ledger and used in transaction outputs
                      @@ -249,32 +269,36 @@ The data model is extended so that every state has an appointed
                       }
                       
                      -

                      All transactions have to be signed by their input state notary for the output states to be valid (apart from issue transactions, containing no input states).

                      +

                      Transactions are signed by a notary to ensure their input states are valid (apart from issue transactions, containing no input states). +Furthermore, when using a validating notary, a transaction is only valid if all its dependencies are also valid.

                      Note

                      The notary is a logical concept and can itself be a distributed entity, potentially a cluster maintained by mutually distrusting parties

                      -

                      When the notary is requested to sign a transaction, it either signs over it, attesting that the outputs are the unique successors of the inputs, -or provides conflict information for any input state that had been consumed by another transaction it had signed before. -In doing so, the notary provides the point of finality in the system. Until the notary signature is obtained, parties cannot be sure that an equally valid, but conflicting transaction, -will not be regarded as confirmed. After the signature is obtained, the parties know that the inputs to this transaction have been uniquely consumed by this transaction. -Hence it is the point at which we can say finality has occurred.

                      +

                      When the notary is requested to sign a transaction, it either signs it, attesting that the outputs are the unique +successors of the inputs, or provides conflict information for any input state that has been consumed by another transaction +it has already signed. In doing so, the notary provides the point of finality in the system. Until the notary signature +is obtained, parties cannot be sure that an equally valid, but conflicting, transaction will not be regarded as confirmed. +After the signature is obtained, the parties know that the inputs to this transaction have been uniquely consumed by this transaction. +Hence, it is the point at which we can say finality has occurred.

                      Multiple notaries

                      -

                      More than one notary can exist in the network. This gives the following benefits:

                      +

                      More than one notary can exist in a network. This gives the following benefits:

                        -
                      • Custom behaviour. We can have both validating and privacy preserving notaries – parties can make a choice based on their specific requirements
                      • -
                      • Load balancing. Spreading the transaction load over multiple notaries will allow higher transaction throughput in the platform overall
                      • +
                      • Custom behaviour. We can have both validating and privacy preserving Notaries – parties can make a choice based +on their specific requirements.
                      • +
                      • Load balancing. Spreading the transaction load over multiple notaries will allow higher transaction throughput in +the platform overall
                      • Low latency. Latency could be minimised by choosing a notary physically closer the transacting parties
                      -

                      A transaction should only be signed by a notary if all of its input states point to it. -In cases where a transaction involves states controlled by multiple notaries, the states first have to be repointed to the same notary. -This is achieved by using a special type of transaction that doesn’t modify anything but the notary pointer of the state. -Ensuring that all input states point to the same notary is the responsibility of each involved party -(it is another condition for an output state of the transaction to be valid)

                      Changing notaries

                      +

                      A transaction should only be signed by a notary if all of its input states point to the same notary. +In cases where a transaction involves states controlled by multiple notaries, the states first have to be repointed to the same notary. +This is achieved by using a special type of transaction whose sole output state is identical to its sole input state except for its designated notary. +Ensuring that all input states point to the same notary is the responsibility of each involved party +(it is another condition for an output state of the transaction to be valid)

                      To change the notary for an input state, use the NotaryChangeFlow. For example:

                      @Suspendable
                       fun changeNotary(originalState: StateAndRef<ContractState>,
                      @@ -293,53 +317,52 @@ Ensuring that all input states point to the same notary is the responsibility of
                       
                       

                      Note

                      -

                      Eventually this will be handled automatically on demand.

                      +

                      Eventually, changing notaries will be handled automatically on demand.

                      Validation

                      -

                      One of the design decisions for a notary is whether or not to validate a transaction before committing its input states.

                      +

                      One of the design decisions for a notary is whether or not to validate a transaction before accepting it.

                      If a transaction is not checked for validity, it opens the platform to “denial of state” attacks, where anyone can build an invalid transaction consuming someone else’s states and submit it to the notary to get the states “blocked”. -However, validation of a transaction requires the notary to be able to see the full contents of the transaction in question and its dependencies. +However, if the transaction is validated, this requires the notary to be able to see the full contents of the transaction in question and its dependencies. This is an obvious privacy leak.

                      -

                      Our platform is flexible and we currently support both validating and non-validating notary implementations – a party can select which one to use based on its own privacy requirements.

                      +

                      The platform is flexible and currently supports both validating and non-validating notary implementations – a party can select which one to use based on its own privacy requirements.

                      Note

                      -

                      In the non-validating model the “denial of state” attack is partially alleviated by requiring the calling +

                      In the non-validating model, the “denial of state” attack is partially alleviated by requiring the calling party to authenticate and storing its identity for the request. The conflict information returned by the notary -specifies the consuming transaction ID along with the identity of the party that had requested the commit. If the -conflicting transaction is valid, the current one gets aborted; if not - a dispute can be raised and the input states -of the conflicting invalid transaction are “un-committed” (to be covered by legal process).

                      +specifies the consuming transaction ID along with the identity of the party that had created the transaction. If the +conflicting transaction is valid, the current one is aborted; if not, a dispute can be raised and the input states +of the conflicting invalid transaction are “un-committed” (via a legal process).

                      Note

                      -

                      At present all notaries can see the entire contents of a transaction, but we have a separate piece of work to -replace the parts of the transaction it does not require knowing about with hashes (only input references, timestamp -information, overall transaction ID and the necessary digests of the rest of the transaction to prove that the -referenced inputs/timestamps really do form part of the stated transaction ID should be visible).

                      +

                      At present, all notaries can see the entire contents of a submitted transaction. A future piece of work +will enable the processing of Transaction tear-offs, thus providing data hiding of sensitive information.

                      Timestamping

                      -

                      In this model the notary also acts as a timestamping authority, verifying the transaction timestamp command.

                      +

                      A notary can also act as a timestamping authority, verifying the transaction timestamp command.

                      For a timestamp to be meaningful, its implications must be binding on the party requesting it. -A party can obtain a timestamp signature in order to prove that some event happened before/on/or after a particular point in time. +A party can obtain a timestamp signature in order to prove that some event happened before, on, or after a particular point in time. However, if the party is not also compelled to commit to the associated transaction, it has a choice of whether or not to reveal this fact until some point in the future. As a result, we need to ensure that the notary either has to also sign the transaction within some time tolerance, or perform timestamping and notarisation at the same time, which is the chosen behaviour for this model.

                      There will never be exact clock synchronisation between the party creating the transaction and the notary. -This is not only due to physics, network latencies, etc., but because between inserting the command and getting the -notary to sign there may be many other steps, like sending the transaction to other parties involved in the trade -as well, or even requesting human signoff. Thus the time observed by the notary may be quite different to the -time observed in step 1.

                      -

                      For this reason, times in transactions are specified as time windows, not absolute times. Time windows can be -open-ended, i.e. specify only one of “before” and “after” or they can be fully bounded. If a time window needs to -be converted to an absolute time for e.g. display purposes, there is a utility method on Timestamp to -calculate the mid point – but in a distributed system there can never be “true time”, only an approximation of it.

                      -

                      In this way we express that the true value of the fact “the current time” is actually unknowable. Even when both before and -after times are included, the transaction could have occurred at any point between those two timestamps. Here -“occurrence” could mean the execution date, the value date, the trade date etc ... the notary doesn’t care what precise +This is not only due to physics, network latencies, etc. but also because between inserting the command and getting the +notary to sign there may be many other steps, like sending the transaction to other parties involved in the trade, or +even requesting human sign-off. Thus the time observed by the notary may be quite different to the time observed by the +party creating the transaction.

                      +

                      For this reason, times in transactions are specified as time windows, not absolute times. +In a distributed system there can never be “true time”, only an approximation of it. Time windows can be +open-ended (i.e. specify only one of “before” and “after”) or they can be fully bounded. If a time window needs to +be converted to an absolute time (e.g. for display purposes), there is a utility method on Timestamp to +calculate the mid point.

                      +

                      In this way, we express the idea that the true value of the fact “the current time” is actually unknowable. Even when both before and +after times are included, the transaction could have occurred at any point between those two timestamps. Here, +“occurrence” could mean the execution date, the value date, the trade date etc ... The notary doesn’t care what precise meaning the timestamp has to the contract.

                      By creating a range that can be either closed or open at one end, we allow all of the following facts to be modelled:

                        @@ -352,6 +375,7 @@ meaning the timestamp has to the contract.

                        It is assumed that the time feed for a notary is GPS/NaviStar time as defined by the atomic clocks at the US Naval Observatory. This time feed is extremely accurate and available globally for free.

                      +

                      Also see section 7 of the Technical white paper which covers this topic in significantly more depth.

                      @@ -362,10 +386,10 @@ clocks at the US Naval Observatory. This time feed is extremely accurate and ava diff --git a/docs/build/html/transaction-data-types.html b/docs/build/html/key-concepts-core-types.html similarity index 70% rename from docs/build/html/transaction-data-types.html rename to docs/build/html/key-concepts-core-types.html index 16d90fda1b..ca906012b7 100644 --- a/docs/build/html/transaction-data-types.html +++ b/docs/build/html/key-concepts-core-types.html @@ -12,7 +12,7 @@ - Data types — R3 Corda latest documentation + Core types — R3 Corda latest documentation @@ -35,8 +35,8 @@ - - + + @@ -104,26 +104,28 @@ API reference: Kotlin/ Key concepts

                        -
                      • Data model
                      • -
                      • Data types

                        CorDapps

                          @@ -161,6 +163,8 @@ API reference: Kotlin/ Other

                          Component library

                          @@ -212,11 +217,11 @@ API reference: Kotlin/
                        • Docs »
                        • -
                        • Data types
                        • +
                        • Core types
                        • - View page source + View page source
                        • @@ -226,68 +231,27 @@ API reference: Kotlin/
                          -
                          -

                          Data types

                          -

                          Corda provides a large standard library of data types used in financial transactions and contract state objects. -These provide a common language for states and contracts.

                          -
                          -

                          Amount

                          -

                          The Amount class is used to represent an amount of some -fungible asset. It is a generic class which wraps around a type used to define the underlying product, called -the token. For instance it can be the standard JDK type Currency, or an Issued instance, or this can be -a more complex type such as an obligation contract issuance definition (which in turn contains a token definition -for whatever the obligation is to be settled in).

                          -
                          -

                          Note

                          -

                          Fungible is used here to mean that instances of an asset is interchangeable for any other identical instance, -and that they can be split/merged. For example a £5 note can reasonably be exchanged for any other £5 note, and a -£10 note can be exchanged for two £5 notes, or vice-versa.

                          -
                          -

                          Here are some examples:

                          -
                          -
                          // A quantity of some specific currency like pounds, euros, dollars etc.
                          -Amount<Currency>
                          -// A quantity of currency that is issued by a specific issuer, for instance central bank vs other bank dollars
                          -Amount<Issued<Currency>>
                          -// A quantity of obligations to deliver currency of any issuer.
                          -Amount<Obligation.State<Currency>>
                          -
                          -
                          -
                          -

                          Amount represents quantities as integers. For currencies the quantity represents pennies, cents or whatever -else the smallest integer amount for that currency is. You cannot use Amount to represent negative quantities -or fractional quantities: if you wish to do this then you must use a different type e.g. BigDecimal. Amount -defines methods to do addition and subtraction and these methods verify that the tokens on both sides of the operator -are equal (these are operator overloads in Kotlin and can be used as regular methods from Java). There are also -methods to do multiplication and division by integer amounts.

                          -
                          -
                          -

                          State

                          -

                          A Corda contract is composed of three parts; the executable code, the legal prose, and the state objects that represent -the details of a specific deal or asset (see Data model for further detail). In relational database terms -a state is like a row in a database. A reference to a state in the ledger (whether it has been consumed or not) -is represented with a StateRef object. If the state ref has been looked up from storage, you will have a -StateAndRef which is simply a StateRef plus the data.

                          +
                          +

                          Core types

                          +

                          Corda provides a large standard library of data types used to represent the Data model previously described. +In addition, there are a series of helper libraries which provide date manipulation, maths and cryptography functions.

                          +
                          +

                          State and References

                          +

                          State objects contain mutable data which we would expect to evolve over the lifetime of a contract.

                          +

                          A reference to a state in the ledger (whether it has been consumed or not) is represented with a StateRef object. +If the state ref has been looked up from storage, you will have a StateAndRef which is simply a StateRef plus the data.

                          The ContractState type is an interface that all states must implement. A TransactionState is a simple container for a ContractState (the custom data used by a contract program) and additional platform-level state -information, such as the notary pointer (see Consensus model).

                          +information, such as the notary pointer (see Consensus and notaries).

                          A number of interfaces then extend ContractState, representing standardised functionality for common kinds -of state:

                          +of state such as:

                          -
                          -
                          OwnableState
                          -
                          A state which has an owner (represented as a PublicKey, discussed later). Exposes the owner and a function -for replacing the owner e.g. when an asset is sold.
                          -
                          LinearState
                          -
                          A state which links back to its previous state, creating a thread of states over time. A linear state is -useful when modelling an indivisible/non-fungible thing like a specific deal, or an asset that can’t be -split (like a rare piece of art).
                          -
                          DealState
                          -
                          A LinearState representing an agreement between two or more parties. Intended to simplify implementing generic -flows that manipulate many agreement types.
                          -
                          FixableDealState
                          -
                          A deal state, with further functions exposed to support fixing of interest rates.
                          -
                          +

                          OwnableState +A state which has an owner (represented as a CompositeKey, discussed later). Exposes the owner and a function +for replacing the owner e.g. when an asset is sold.

                          +

                          SchedulableState +A state to indicate whether there is some activity to be performed at some future point in time with respect to this +contract, what that activity is and at what point in time it should be initiated.

                          @@ -301,29 +265,26 @@ This is a combination of a (Java) -

                          FungibleAssets and Cash

                          -

                          There is a common FungibleAsset superclass for contracts which model fungible assets, which also provides a standard -interface for its subclasses’ state objects to implement. The clear use-case is Cash, however FungibleAsset is -intended to be readily extensible to cover other assets, for example commodities could be modelled by using a subclass -whose state objects include further details (location of the commodity, origin, grade, etc.) as needed.

                          -

                          Transaction lifecycle types

                          The WireTransaction class contains the core of a transaction without signatures, and with references to attachments -in place of the attachments themselves (see also Data model). Once signed these are encapsulated in the -SignedTransaction class. For processing a transaction (i.e. to verify it) it is first converted to a +in place of the attachments themselves (see also Data model). Once signed these are encapsulated in the +SignedTransaction class. For processing a transaction (i.e. to verify it) a SignedTransaction is then converted to a LedgerTransaction, which involves verifying the signatures and associating them to the relevant command(s), and resolving the attachment references to the attachments. Commands with valid signatures are encapsulated in the AuthenticatedObject type.

                          Note

                          -

                          A LedgerTransaction has not necessarily had its contracts be run, and thus could be contract-invalid -(but not signature-invalid). You can use the verify method as shown below to run the contracts.

                          +

                          A LedgerTransaction has not necessarily had its contract code executed, and thus could be contract-invalid +(but not signature-invalid). You can use the verify method as shown below to validate the contracts.

                          When constructing a new transaction from scratch, you use TransactionBuilder, which is a mutable transaction that -can be signed once modification of the internals is complete. It is typical for contract classes to expose helper -methods that can contribute to a TransactionBuilder.

                          +can be signed once its construction is complete. This builder class should be used to create the initial transaction representation +(before signature, before verification). It is intended to be passed around code that may edit it by adding new states/commands. +Then once the states and commands are right, this class can be used as a holding bucket to gather signatures from multiple parties. +It is typical for contract classes to expose helper methods that can contribute to a TransactionBuilder. Once a transaction +has been constructed using the builders toWireTransaction or toSignedTransaction function, it shared with other +participants using the Flow framework.

                          Here’s an example of building a transaction that creates an issuance of bananas (note that bananas are not a real contract type in the library):

                          @@ -343,37 +304,36 @@ contract type in the library):

                          In a unit test, you would typically use a freshly created MockServices object, or more realistically, you would write your tests using the domain specific language for writing tests.

                          -
                          -

                          Party and PublicKey

                          +
                          +

                          Party and CompositeKey

                          Entities using the network are called parties. Parties can sign structures using keys, and a party may have many keys under their control.

                          -

                          Parties may sometimes be identified pseudonymously, for example, in a transaction sent to your node as part of a +

                          Parties may sometimes be identified pseudonymously. For example, in a transaction sent to your node as part of a chain of custody it is important you can convince yourself of the transaction’s validity, but equally important that you don’t learn anything about who was involved in that transaction. In these cases a public key may be present without any identifying information about who owns it.

                          -

                          Identities of parties involved in signing a transaction can be represented simply by a PublicKey, or by further +

                          Identities of parties involved in signing a transaction can be represented simply by a CompositeKey, or by further information (such as name) using the Party class. An AuthenticatedObject represents an object (like a command) that has been signed by a set of parties.

                          Note

                          -

                          These types are provisional and will change significantly in future as the identity framework becomes more -fleshed out.

                          +

                          These types are provisional and will change significantly in future as the identity framework becomes more fleshed out.

                          -

                          Multi-signature support

                          +

                          Multi-signature support

                          Corda supports scenarios where more than one key or party is required to authorise a state object transition, for example: “Either the CEO or 3 out of 5 of his assistants need to provide signatures”.

                          -
                          -

                          Composite Keys

                          +
                          +

                          Composite Keys

                          This is achieved by public key composition, using a tree data structure CompositeKey. A CompositeKey is a tree that stores the cryptographic public key primitives in its leaves and the composition logic in the intermediary nodes. Every intermediary node specifies a threshold of how many child signatures it requires.

                          An illustration of an “either Alice and Bob, or Charlie” composite key:

                          -_images/composite-key.png +_images/composite-key.png

                          To allow further flexibility, each child node can have an associated custom weight (the default is 1). The threshold then specifies the minimum total weight of all children required. Our previous example can also be expressed as:

                          -_images/composite-key-2.png +_images/composite-key-2.png

                          Verification

                          @@ -390,7 +350,7 @@ the composite key requirement is considered to be met.

                          Date support

                          -

                          There are a number of supporting interfaces and classes for use by contract which deal with dates (especially in the +

                          There are a number of supporting interfaces and classes for use by contracts which deal with dates (especially in the context of deadlines). As contract negotiation typically deals with deadlines in terms such as “overnight”, “T+3”, etc., it’s desirable to allow conversion of these terms to their equivalent deadline. Tenor models the interval before a deadline, such as 3 days, etc., while DateRollConvention describes how deadlines are modified to take @@ -401,12 +361,12 @@ bank holidays). The BusinessCal from files on disk, but in future this is likely to involve reference data oracles in order to ensure consensus on the dates used.

                          -
                          -

                          Cryptography & maths support

                          +
                          +

                          Cryptography and maths support

                          The SecureHash class represents a secure hash of unknown algorithm. We currently define only a single subclass, SecureHash.SHA256. There are utility methods to create them, parse them and so on.

                          We also provide some mathematical utilities, in particular a set of interpolators and classes for working with -splines. These can be found in the maths package.

                          +splines. These can be found in the maths package.

                          @@ -417,10 +377,10 @@ splines. These can be found in the - Next + Next - Previous + Previous
                          diff --git a/docs/build/html/key-concepts-data-model.html b/docs/build/html/key-concepts-data-model.html new file mode 100644 index 0000000000..d70aeae348 --- /dev/null +++ b/docs/build/html/key-concepts-data-model.html @@ -0,0 +1,442 @@ + + + + + + + + + + + + + + Data model — R3 Corda latest documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          + + + + +
                          + + + + + + +
                          +
                          + + + + + + +
                          + +
                          +
                          +
                          +
                          + +
                          +

                          Data model

                          +
                          +

                          Overview

                          +

                          Corda uses the so-called “UTXO set” model (unspent transaction output). In this model, the database +does not track accounts or balances. An entry is either spent or not spent but it cannot be changed. In this model the +database is a set of immutable rows keyed by (hash:output index). Transactions define outputs that append new rows and +inputs which consume existing rows.

                          +

                          The Corda ledger is defined as a set of immutable states, which are created and destroyed by digitally signed transactions. +Each transaction points to a set of states that it will consume/destroy, these are called inputs, and contains a set +of new states that it will create, these are called outputs. +Although the ledger is shared, it is not always the case that transactions and ledger entries are globally visible. +In cases where a set of transactions stays within a small subgroup of users it is possible to keep the relevant +data purely within that group. To ensure consistency, we rely heavily on secure hashes like SHA-256 to identify things.

                          +

                          The Corda model provides the following additional features:

                          +
                            +
                          • There is no global broadcast at any point.
                          • +
                          • States can include arbitrary typed data.
                          • +
                          • Transactions invoke not only input contracts but also the contracts of the outputs.
                          • +
                          • Contracts refer to a bundle of business logic that may handle various different tasks, beyond transaction verification.
                          • +
                          • Contracts are Turing-complete and can be written in any ordinary programming language that targets the JVM.
                          • +
                          • Arbitrarily-precise time-bounds may be specified in transactions (which must be attested to by a notary)
                          • +
                          • Primary consensus implementations use block-free conflict resolution algorithms.
                          • +
                          • Transactions are not ordered using a block chain and by implication Corda does not use miners or proof-of-work. +Instead each state points to a notary, which is a service that guarantees it will sign a transaction only if all the +input states are un-consumed.
                          • +
                          +

                          Corda provides three main tools to achieve global distributed consensus:

                          +
                            +
                          • Smart contract logic to ensure state transitions are valid according to the pre-agreed rules.
                          • +
                          • Uniqueness and timestamping services to order transactions temporally and eliminate conflicts.
                          • +
                          • An orchestration framework which simplifies the process of writing complex multi-step protocols between multiple different parties.
                          • +
                          +

                          Comparisons of the Corda data model with Bitcoin and Ethereum can be found in the white papers.

                          +
                          +
                          +

                          States

                          +

                          A state object represents an agreement between two or more parties, the evolution of which governed by machine-readable contract code. +This code references, and is intended to implement, portions of human-readable legal prose. +It is intended to be shared only with those who have a legitimate reason to see it.

                          +

                          The following diagram illustrates a state object:

                          +_images/contract.png +

                          In the diagram above, we see a state object representing a cash claim of £100 against a commercial bank, owned by a fictional shipping company.

                          +
                          +

                          Note

                          +

                          Legal prose (depicted above in grey-shade) is currently implemented as an unparsed reference to the natural language +contract that the code is supposed to express (usually a hash of the contract’s contents).

                          +
                          +

                          States contain arbitrary data, but they always contain at minimum a hash of the bytecode of a +contract code file, which is a program expressed in JVM byte code that runs sandboxed inside a Java virtual machine. +Contract code (or just “contracts” in the rest of this document) are globally shared pieces of business logic.

                          +
                          +

                          Note

                          +

                          In the current code dynamic loading of contracts is not implemented. This will change in the near future.

                          +
                          +
                          +
                          +

                          Contracts

                          +

                          Contracts define part of the business logic of the ledger.

                          +

                          Corda enforces business logic through smart contract code, which is constructed as a pure function (called “verify”) that either accepts +or rejects a transaction, and which can be composed from simpler, reusable functions. The functions interpret transactions +as taking states as inputs and producing output states through the application of (smart contract) commands, and accept +the transaction if the proposed actions are valid. Given the same transaction, a contract’s “verify” function always yields +exactly the same result. Contracts do not have storage or the ability to interact with anything.

                          +
                          +

                          Note

                          +

                          In the future, contracts will be mobile. Nodes will download and run contracts inside a sandbox without any review in some deployments, +although we envisage the use of signed code for Corda deployments in the regulated sphere. Corda will use an augmented +JVM custom sandbox that is radically more restrictive than the ordinary JVM sandbox, and it will enforce not only +security requirements but also deterministic execution.

                          +
                          +

                          To further aid writing contracts we introduce the concept of Clauses which provide a means of re-using common +verification logic.

                          +
                          +
                          +

                          Transactions

                          +

                          Transaction are used to update the ledger by consuming existing state objects and producing new state objects.

                          +

                          A transaction update is accepted according to the following two aspects of consensus:

                          +
                          +
                            +
                          1. Transaction validity: parties can ensure that the proposed transaction and all its ancestors are valid +by checking that the associated contract code runs successfully and has all the required signatures
                          2. +
                          3. Transaction uniqueness: parties can ensure there exists no other transaction, over which we have previously reached +consensus (validity and uniqueness), that consumes any of the same states. This is the responsibility of a notary service.
                          4. +
                          +
                          +

                          Beyond inputs and outputs, transactions may also contain commands, small data packets that +the platform does not interpret itself but which parameterise execution of the contracts. They can be thought of as +arguments to the verify function. Each command has a list of composite keys associated with it. The platform ensures +that the transaction has signatures matching every key listed in the commands before the contracts start to execute. Thus, a verify +function can trust that all listed keys have signed the transaction, but is responsible for verifying that any keys required +for the transaction to be valid from the verify function’s perspective are included in the list. Public keys +may be random/identityless for privacy, or linked to a well known legal identity, for example via a +public key infrastructure (PKI).

                          +
                          +

                          Note

                          +

                          Linkage of keys with identities via a PKI is only partially implemented in the current code.

                          +
                          +

                          Commands are always embedded inside a transaction. Sometimes, there’s a larger piece of data that can be reused across +many different transactions. For this use case, we have attachments. Every transaction can refer to zero or more +attachments by hash. Attachments are always ZIP/JAR files, which may contain arbitrary content. These files are +then exposed on the classpath and so can be opened by contract code in the same manner as any JAR resources +would be loaded.

                          +

                          Note that there is nothing that explicitly binds together specific inputs, outputs, commands or attachments. Instead, +it’s up to the contract code to interpret the pieces inside the transaction and ensure they fit together correctly. This +is done to maximise flexibility for the contract developer.

                          +

                          Transactions may sometimes need to provide a contract with data from the outside world. Examples may include stock +prices, facts about events or the statuses of legal entities (e.g. bankruptcy), and so on. The providers of such +facts are called oracles and they provide facts to the ledger by signing transactions that contain commands they +recognise, or by creating signed attachments. The commands contain the fact and the signature shows agreement to that fact.

                          +

                          Time is also modelled as a fact and represented as a timestamping command placed inside the transaction. This specifies a +time window in which the transaction is considered valid for notarisation. The time window can be open ended (i.e. with a start but no end or vice versa). +In this way transactions can be linked to the notary’s clock.

                          +

                          It is possible for a single Corda network to have multiple competing notaries. A new (output) state is tied to a specific +notary when it is created. Transactions can only consume (input) states that are all associated with the same notary. +A special type of transaction is provided that can move a state (or set of states) from one notary to another.

                          +
                          +

                          Note

                          +

                          Currently the platform code will not automatically re-assign states to a single notary. This is a future planned feature.

                          +
                          +
                          +

                          Transaction Validation

                          +

                          When a transaction is presented to a node as part of a flow it may need to be checked. Checking original transaction validity is +the responsibility of the ResolveTransactions flow. This flow performs a breadth-first search over the transaction graph, +downloading any missing transactions into local storage and validating them. The search bottoms out at transactions without inputs +(eg. these are mostly created from issuance transactions). A transaction is not considered valid if any of its transitive dependencies are invalid.

                          +
                          +

                          Note

                          +

                          Non-validating notaries assume transaction validity and do not request transaction data or their dependencies +beyond the list of states consumed.

                          +
                          +

                          The tutorial ” Writing a contract “provides a hand-ons walk-through using these concepts.

                          +
                          +
                          +

                          Transaction Representation

                          +

                          By default, all transaction data (input and output states, commands, attachments) is visible to all participants in +a multi-party, multi-flow business workflow. Transaction tear-offs describes how Corda uses Merkle trees to +ensure data integrity and hiding of sensitive data within a transaction that shouldn’t be visible in its entirety to all +participants (eg. oracles nodes providing facts).

                          +
                          +
                          +
                          + + +
                          +
                          + + +
                          +
                          + +
                          + +
                          + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/key-concepts-ecosystem.html b/docs/build/html/key-concepts-ecosystem.html new file mode 100644 index 0000000000..2f4a5ddfae --- /dev/null +++ b/docs/build/html/key-concepts-ecosystem.html @@ -0,0 +1,337 @@ + + + + + + + + + + + + + + Corda ecosystem — R3 Corda latest documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          + + + + +
                          + + + + + + +
                          +
                          + + + + + + +
                          + +
                          +
                          +
                          +
                          + +
                          +

                          Corda ecosystem

                          +

                          A Corda network consists of the following components:

                          +
                            +
                          • Nodes, where each node represents a JVM run-time environment hosting Corda services and executing applications (“CorDapps”). +Nodes communicate using AMQP/1.0 over TLS.
                          • +
                          • A permissioning service that automates the process of provisioning TLS certificates.
                          • +
                          • A network map service that publishes information about nodes on the network.
                          • +
                          • One or more pluggable notary service types (which may be distributed over multiple nodes). +A notary guarantees uniqueness and validity of transactions.
                          • +
                          • Zero or more oracle services. An oracle is a well known service that signs transactions if they state a fact and that fact is considered to be true.
                          • +
                          • CorDapps which represent participant applications that execute contract code and communicate using the flow framework to achieve consensus over some business activity
                          • +
                          • Standalone Corda applications that provide manageability and tooling support to a Corda network.
                          • +
                          +

                          These components are illustrated in the following diagram:

                          +_images/cordaNetwork.png +

                          Note:

                          +
                            +
                          • Corda infrastructure services are those which all participants depend upon, such as the network map and notaries.
                          • +
                          • Corda services can be deployed by participants, third parties or a central network operator (eg. such as R3); +this diagram is not intended to imply only a centralised model is supported
                          • +
                          +

                          It is important to highlight the following:

                          +
                            +
                          • Corda is designed for semi-private networks in which admission requires obtaining an identity signed by a root authority.
                          • +
                          • Nodes are arranged in an authenticated peer to peer network. All communication is direct.
                          • +
                          • Data is shared on a need-to-know basis. Nodes provide the dependency graph of a transaction they are sending to another node on demand, but there is no global broadcast of all transactions.
                          • +
                          • Nodes are backed by a relational database and data placed in the ledger can be queried using SQL
                          • +
                          • The network map publishes the IP addresses through which every node on the network can be reached, along with the identity certificates of those nodes and the services they provide.
                          • +
                          • All communication takes the form of small multi-party sub-protocols called flows.
                          • +
                          • Oracles represent gateways to proprietary (or other) business logic executors (e.g., central counterparties or valuation agents) that can be verified on-ledger by participants.
                          • +
                          +
                          +

                          CorDapps

                          +

                          Corda is a platform for the writing of “CorDapps”: applications that extend the distributed ledger with new capabilities. +Such apps define new data types, new inter-node protocol flows and the “smart contracts” that determine allowed changes. +The combination of state objects (data), contract code (allowable operations), transaction flows (business logic +choreography), any necessary APIs, vault plugins, and UI components can be thought of as a shared ledger application, +or corda distributed application (“CorDapp”). This is the core set of components a contract developer on the platform +should expect to build.

                          +

                          Examples of CorDapps include asset trading (see IRS demo and Trader demo), portfolio valuations (see SIMM and Portfolio Demo - aka the Initial Margin Agreement Demo), trade finance, +post-trade order matching, KYC/AML, etc.

                          +
                          +
                          + + +
                          +
                          + + +
                          +
                          + +
                          + +
                          + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/key-concepts-financial-model.html b/docs/build/html/key-concepts-financial-model.html new file mode 100644 index 0000000000..43e891ade1 --- /dev/null +++ b/docs/build/html/key-concepts-financial-model.html @@ -0,0 +1,360 @@ + + + + + + + + + + + + + + Financial model — R3 Corda latest documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          + + + + +
                          + + + + + + +
                          +
                          + + + + + + +
                          + +
                          +
                          +
                          +
                          + +
                          +

                          Financial model

                          +

                          Corda provides a large standard library of data types used in financial applications and contract state objects. +These provide a common language for states and contracts.

                          +
                          +

                          Amount

                          +

                          The Amount class is used to represent an amount of some +fungible asset. It is a generic class which wraps around a type used to define the underlying product, called +the token. For instance it can be the standard JDK type Currency, or an Issued instance, or this can be +a more complex type such as an obligation contract issuance definition (which in turn contains a token definition +for whatever the obligation is to be settled in).

                          +
                          +

                          Note

                          +

                          Fungible is used here to mean that instances of an asset is interchangeable for any other identical instance, +and that they can be split/merged. For example a £5 note can reasonably be exchanged for any other £5 note, and +a £10 note can be exchanged for two £5 notes, or vice-versa.

                          +
                          +

                          Here are some examples:

                          +
                          +
                          // A quantity of some specific currency like pounds, euros, dollars etc.
                          +Amount<Currency>
                          +// A quantity of currency that is issued by a specific issuer, for instance central bank vs other bank dollars
                          +Amount<Issued<Currency>>
                          +// A quantity of a product governed by specific obligation terms
                          +Amount<Obligation.Terms<P>>
                          +
                          +
                          +
                          +

                          Amount represents quantities as integers. For currencies the quantity represents pennies, cents or whatever +else the smallest integer amount for that currency is. You cannot use Amount to represent negative quantities +or fractional quantities: if you wish to do this then you must use a different type e.g. BigDecimal. Amount +defines methods to do addition and subtraction and these methods verify that the tokens on both sides of the operator +are equal (these are operator overloads in Kotlin and can be used as regular methods from Java). There are also +methods to do multiplication and division by integer amounts.

                          +

                          Issued refers to a product (which can be cash, a cash-like thing, assets, or generally anything else that’s +quantifiable with integer quantities) and an associated PartyAndReference that describes the issuer of that contract. +An issued product typically follows a lifecycle which includes issuance, movement and exiting from the ledger (for example, +see the Cash contract and its associated state and commands)

                          +
                          +
                          +

                          Financial states

                          +

                          In additional to the common state types, a number of interfaces extend ContractState to model financial state such as:

                          +
                          +
                          +
                          LinearState
                          +
                          A state which has a unique identifier beyond its StateRef and carries it through state transitions. +Such a state cannot be duplicated, merged or split in a transaction: only continued or deleted. A linear state is +useful when modelling an indivisible/non-fungible thing like a specific deal, or an asset that can’t be +split (like a rare piece of art).
                          +
                          DealState
                          +
                          A LinearState representing an agreement between two or more parties. Intended to simplify implementing generic +protocols that manipulate many agreement types.
                          +
                          FungibleAsset
                          +
                          A FungibleAsset is intended to be used for contract states representing assets which are fungible, countable and issued by a +specific party. States contain assets which are equivalent (such as cash of the same currency), so records of their existence +can be merged or split as needed where the issuer is the same. For instance, dollars issued by the Fed are fungible and +countable (in cents), barrels of West Texas crude are fungible and countable (oil from two small containers can be poured into one large +container), shares of the same class in a specific company are fungible and countable, and so on.
                          +
                          +
                          +

                          The following diagram illustrates the complete Contract State hierarchy:

                          +_images/financialContractStateModel.png +

                          Note there are currently two packages, a core library and a finance model specific library. +Developers may re-use or extend the Finance types directly or write their own by extending the base types from the Core library.

                          +
                          +
                          + + +
                          +
                          + + +
                          +
                          + +
                          + +
                          + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/key-concepts-flow-framework.html b/docs/build/html/key-concepts-flow-framework.html new file mode 100644 index 0000000000..a73cc16a3b --- /dev/null +++ b/docs/build/html/key-concepts-flow-framework.html @@ -0,0 +1,320 @@ + + + + + + + + + + + + + + Flow framework — R3 Corda latest documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          + + + + +
                          + + + + + + +
                          +
                          + + + + + + +
                          + +
                          +
                          +
                          +
                          + +
                          +

                          Flow framework

                          +

                          In Corda all communication takes the form of structured sequences of messages passed between parties which we call flows.

                          +

                          Flows enable complex multi-step, multi-party business interactions to be modelled as blocking code without a central controller. +The code is transformed into an asynchronous state machine, with checkpoints written to the node’s backing database when messages are sent and received. +A node may potentially have millions of flows active at once and they may last days, across node restarts and even upgrades.

                          +

                          A flow library is provided to enable developers to re-use common flow types such as notarisation, membership broadcast, +transaction resolution and recording, and so on.

                          +

                          APIs are provided to send and receive object graphs to and from other identities on the network, embed sub-flows, +report progress information to observers and even interact with people (for manual resolution of exceptional scenarios)

                          +

                          Flows are embedded within CorDapps and deployed to a participant’s node for execution.

                          +
                          +

                          Note

                          +

                          We will be implementing the concept of a flow hospital to provide a means for a node administrator to decide +whether a paused flow should be killed or repaired. Flows enter this state if they throw exceptions or explicitly request human assistance.

                          +
                          +

                          Section 4 of the Technical white paper provides further detail of the above features.

                          +

                          The following diagram illustrates a sample multi-party business flow:

                          +_images/flowFramework.png +

                          Note the following:

                          +
                            +
                          • there are 3 participants in this workflow including the notary
                          • +
                          • the Buyer and Seller flows (depicted in green) are custom written by developers and deployed within a CorDapp
                          • +
                          • the custom written flows invoke both financial library flows such as TwoPartyTradeFlow (depicted in orange) and core +library flows such as ResolveTransactionsFlow and NotaryFlow (depicted in yellow)
                          • +
                          • each side of the flow illustrates the stage of execution with a progress tracker notification
                          • +
                          • activities within a flow directly or indirectly interact with its node’s ledger (eg. to record a signed, notarised transaction) and vault (eg. to perform a spend of some fungible asset)
                          • +
                          • flows interact across parties using send, receive and sendReceive messaging semantics (by implementing the FlowLogic interface)
                          • +
                          +
                          + + +
                          +
                          + + +
                          +
                          + +
                          + +
                          + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/key-concepts-security-model.html b/docs/build/html/key-concepts-security-model.html new file mode 100644 index 0000000000..1c7f651869 --- /dev/null +++ b/docs/build/html/key-concepts-security-model.html @@ -0,0 +1,342 @@ + + + + + + + + + + + + + + Security model — R3 Corda latest documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          + + + + +
                          + + + + + + +
                          +
                          + + + + + + +
                          + +
                          +
                          +
                          +
                          + +
                          +

                          Security model

                          +

                          Corda has been designed from the ground up to implement a global, decentralised database where all nodes are assumed to be +untrustworthy. This means that each node must actively cross-check each other’s work to reach consensus +amongst a group of interacting participants.

                          +

                          The security model plays a role in the following areas:

                          +
                            +
                          • Identity: +Corda is designed for semi-private networks in which admission requires obtaining an identity signed by a root authority. +This assumption is pervasive – the flow API provides messaging in terms of identities, with routing and delivery to underlying nodes being handled automatically. +See sections 3.2 of the Technical white paper for further details on identity and the permissioning service.
                          • +
                          • Notarisation: pluggable notaries and algorithms offering different levels of trust. +Notaries may be validating or non-validating. A validating notary will resolve and fully check transactions they are asked to deconflict. +Without the use of any other privacy features, they gain full visibility into every transaction. +On the other hand, non-validating notaries assume transaction validity and do not request transaction data or their dependencies +beyond the list of states consumed (and thus, their level of trust is much lower and exposed to malicious use of transaction inputs). +From an algorithm perspective, Corda currently provides a distributed notary implementation that uses Raft.
                          • +
                          +
                          +

                          Note

                          +

                          Future notary algorithms may include BFT and hardware assisted non-BFT algorithms (where non-BFT algorithms +are converted into a more trusted form using remote attestation and hardware protection).

                          +
                          +
                            +
                          • Authentication, authorisation and entitlements: +Network permissioning, including node to node authentication, is performed using TLS and certificates. +See Network permissioning for further detail.
                          • +
                          +
                          +

                          Warning

                          +

                          API level authentication (RPC, Web) is currently simple username/password for demonstration purposes and will be revised. +Similarly, authorisation is currently based on permission groups applied to flow execution. +This is subject to design review with views to selecting a proven, mature entitlements solution.

                          +
                          +

                          Privacy techniques

                          +
                            +
                          • Partial data visibility: transactions are not globally broadcast as in many other systems.

                            +
                          • +
                          • Transaction tear-offs: Transactions are structured as Merkle trees, and may have individual subcomponents be revealed to parties who already know the Merkle root hash. Additionally, they may sign the transaction without being able to see all of it.

                            +
                            +

                            See Transaction tear-offs for further detail.

                            +
                            +
                          • +
                          • Multi-signature support: Corda uses composite keys to support scenarios where more than one key or party is required to authorise a state object transition.

                            +
                          • +
                          +
                          +

                          Note

                          +

                          Future privacy techniques will include key randomisation, graph pruning, deterministic JVM sandboxing and support for secure signing devices. +See sections 10 and 13 of the Technical white paper for detailed descriptions of these techniques and features.

                          +
                          +
                          + + +
                          +
                          + + +
                          +
                          + +
                          + +
                          + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/key-concepts-vault.html b/docs/build/html/key-concepts-vault.html new file mode 100644 index 0000000000..fa1c981898 --- /dev/null +++ b/docs/build/html/key-concepts-vault.html @@ -0,0 +1,337 @@ + + + + + + + + + + + + + + Vault — R3 Corda latest documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          + + + + +
                          + + + + + + +
                          +
                          + + + + + + +
                          + +
                          +
                          +
                          +
                          + +
                          +

                          Vault

                          +

                          The vault contains data extracted from the ledger that is considered relevant to the node’s owner, stored in a relational model +that can be easily queried and worked with.

                          +

                          The vault keeps track of both unconsumed and consumed states:

                          +
                          +
                            +
                          • Unconsumed (or unspent) states represent fungible states available for spending (including spend-to-self transactions) +and linear states available for evolution (eg. in response to a lifecycle event on a deal) or transfer to another party.
                          • +
                          • Consumed (or spent) states represent ledger immutable state for the purpose of transaction reporting, audit and archival, including the ability to perform joins with app-private data (like customer notes)
                          • +
                          +
                          +

                          By fungible we refer to assets of measurable quantity (eg. a cash currency, units of stock) which can be combined +together to represent a single ledger state.

                          +

                          Like with a cryptocurrency wallet, the Corda vault can create transactions that send value (eg. transfer of state) to someone else +by combining fungible states and possibly adding a change output that makes the values balance (this process is usually referred to as ‘coin selection’). +Vault spending ensures that transactions respect the fungibility rules in order to ensure that the issuer and reference data is preserved as the assets pass from hand to hand.

                          +
                          +

                          Note

                          +

                          Basic ‘coin selection’ is currently implemented. Future work includes fungible state optimisation (splitting and +merging of states in the background), ‘soft locking’ (ability to automatically or explicitly reserve states to prevent +multiple transactions trying to use the same output simultaneously), ‘state re-issuance’ (sending of states back to the +issuer for re-issuance, thus pruning long transaction chains and improving privacy).

                          +
                          +

                          There is also a facility for attaching descriptive textual notes against any transaction stored in the vault.

                          +

                          The vault supports the management of data in both authoritative (“on-ledger”) form and, where appropriate, shadow (“off-ledger”) form:

                          +
                            +
                          • “On-ledger” data refers to distributed ledger state (cash, deals, trades) to which a firm is participant.
                          • +
                          • “Off-ledger” data refers to a firm’s internal reference, static and systems data.
                          • +
                          +

                          The following diagram illustrates the breakdown of the vault into sub-system components:

                          +_images/vault.png +

                          Note the following:

                          +
                            +
                          • the vault “On Ledger” store tracks unconsumed state and is updated internally by the node upon recording of a transaction on the ledger +(following successful smart contract verification and signature by all participants)
                          • +
                          • the vault “Off Ledger” store refers to additional data added by the node owner subsequent to transaction recording
                          • +
                          • the vault performs fungible state spending (and in future, fungible state optimisation management including merging, splitting and re-issuance)
                          • +
                          • vault extensions represent additional custom plugin code a developer may write to query specific custom contract state attributes.
                          • +
                          • customer “Off Ledger” (private store) represents internal organisational data that may be joined with the vault data to perform additional reporting or processing
                          • +
                          • a vault query API is exposed to developers using standard Corda RPC and CorDapp plugin mechanisms
                          • +
                          • a vault update API is internally used by transaction recording flows.
                          • +
                          • the vault database schemas are directly accessible via JDBC for customer joins and queries
                          • +
                          +

                          Section 8 of the Technical white paper describes features of the vault yet to be implemented including private key managament, +soft state locking, state splitting and merging, asset re-issuance and node event scheduling.

                          +
                          + + +
                          +
                          + + +
                          +
                          + +
                          + +
                          + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/key-concepts.html b/docs/build/html/key-concepts.html new file mode 100644 index 0000000000..b2d11fed22 --- /dev/null +++ b/docs/build/html/key-concepts.html @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + Overview — R3 Corda latest documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          + + + + +
                          + + + + + + +
                          +
                          + + + + + + +
                          + +
                          +
                          +
                          +
                          + +
                          +

                          Overview

                          +

                          This section describes the fundamental concepts and features that underpin the Corda platform, to include:

                          +
                          +
                          +

                          Detailed thinking and rationale behind these concepts are presented in the following published white papers:

                          +
                          +
                          +
                          + + +
                          +
                          + + +
                          +
                          + +
                          + +
                          + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/loadtesting.html b/docs/build/html/loadtesting.html index 63774f7660..df85b935a2 100644 --- a/docs/build/html/loadtesting.html +++ b/docs/build/html/loadtesting.html @@ -104,11 +104,15 @@ API reference: Kotlin/ Key concepts

                          CorDapps

                          Key concepts

                          -
                          diff --git a/docs/build/html/messaging.html b/docs/build/html/messaging.html index 929f97c880..aa0816e63c 100644 --- a/docs/build/html/messaging.html +++ b/docs/build/html/messaging.html @@ -104,11 +104,15 @@ API reference: Kotlin/ Key concepts

                          CorDapps

                          Component library

                          @@ -281,7 +288,7 @@ of the window.

    -_images/vault.png +_images/vault1.png
    New Transactions

    This is where you can create new cash transactions. diff --git a/docs/build/html/node-services.html b/docs/build/html/node-services.html index 0fbfd3db77..2d87703745 100644 --- a/docs/build/html/node-services.html +++ b/docs/build/html/node-services.html @@ -104,11 +104,15 @@ API reference: Kotlin/ Key concepts

    CorDapps