mirror of
https://github.com/corda/corda.git
synced 2025-02-21 09:51:57 +00:00
Regen docsite
This commit is contained in:
parent
97cb8defd3
commit
7499f7cf1f
2
docs/build/html/.buildinfo
vendored
2
docs/build/html/.buildinfo
vendored
@ -1,4 +1,4 @@
|
||||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: b08dca817adc75e78b383039f097775b
|
||||
config: 02da61908148262295ef57918c434b8d
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
166
docs/build/html/_sources/data-model.txt
vendored
166
docs/build/html/_sources/data-model.txt
vendored
@ -1,13 +1,13 @@
|
||||
Data model
|
||||
==========
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
This article covers the data model: how *states*, *transactions* and *code contracts* interact with each other and
|
||||
how they are represented in the code. It doesn't attempt to give detailed design rationales or information on future
|
||||
design elements: please refer to the R3 wiki for background information.
|
||||
|
||||
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.
|
||||
@ -19,16 +19,21 @@ consume/destroy, these are called **inputs**, and contains a set of new states t
|
||||
**outputs**.
|
||||
|
||||
States contain arbitrary data, but they always contain at minimum a hash of the bytecode of a
|
||||
**code contract**, which is a program expressed in some byte code that runs sandboxed inside a virtual machine. Code
|
||||
contracts (or just "contracts" in the rest of this document) are globally shared pieces of business logic. Contracts
|
||||
define a **verify function**, which is a pure function given the entire transaction as input.
|
||||
**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.
|
||||
|
||||
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
|
||||
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. Public keys
|
||||
may be random/identityless for privacy, or linked to a well known legal identity via a *public key infrastructure* (PKI).
|
||||
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).
|
||||
|
||||
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
|
||||
@ -50,8 +55,8 @@ attachment if the fact it's creating is relatively static and may be referred to
|
||||
|
||||
As the same terminology often crops up in different distributed ledger designs, let's compare this to other
|
||||
distributed ledger systems you may be familiar with. You can find more detailed design rationales for why the platform
|
||||
differs from existing systems in `the R3 wiki <https://r3-cev.atlassian.net/wiki/>`_, but to summarise, the driving
|
||||
factors are:
|
||||
differs from existing systems in `the R3 wiki <https://r3-cev.atlassian.net/wiki/display/AWG/Platform+Stream%3A+Corda>`_,
|
||||
but to summarise, the driving factors 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)
|
||||
@ -114,3 +119,140 @@ Differences:
|
||||
* 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:`protocol framework <protocol-state-machines>`
|
||||
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 <https://medium.com/@octskyward/merge-avoidance-7f95a386692f>`_ 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.
|
||||
|
@ -7,7 +7,7 @@
|
||||
<a href="../index.html">core.protocols</a> / <a href="index.html">ProtocolStateMachine</a> / <a href="."><init></a><br/>
|
||||
<br/>
|
||||
<h1><init></h1>
|
||||
<code><span class="identifier">ProtocolStateMachine</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), )/logic">logic</span><span class="symbol">:</span> <a href="../-protocol-logic/index.html"><span class="identifier">ProtocolLogic</span></a><span class="symbol"><</span><span class="identifier">R</span><span class="symbol">></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), )/scheduler">scheduler</span><span class="symbol">:</span> <span class="identifier"><ERROR CLASS></span><span class="symbol">)</span></code><br/>
|
||||
<code><span class="identifier">ProtocolStateMachine</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), , kotlin.String)/logic">logic</span><span class="symbol">:</span> <a href="../-protocol-logic/index.html"><span class="identifier">ProtocolLogic</span></a><span class="symbol"><</span><span class="identifier">R</span><span class="symbol">></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), , kotlin.String)/scheduler">scheduler</span><span class="symbol">:</span> <span class="identifier"><ERROR CLASS></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), , kotlin.String)/loggerName">loggerName</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">)</span></code><br/>
|
||||
<p>A ProtocolStateMachine instance is a suspendable fiber that delegates all actual logic to a <a href="../-protocol-logic/index.html">ProtocolLogic</a> instance.
|
||||
For any given flow there is only one PSM, even if that protocol invokes subprotocols.</p>
|
||||
<p>These classes are created by the <a href="../../core.messaging/-state-machine-manager/index.html">StateMachineManager</a> when a new protocol is started at the topmost level. If
|
||||
|
@ -24,7 +24,7 @@ logic element gets to return the value that the entire state machine resolves to
|
||||
<td>
|
||||
<a href="-init-.html"><init></a></td>
|
||||
<td>
|
||||
<code><span class="identifier">ProtocolStateMachine</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), )/logic">logic</span><span class="symbol">:</span> <a href="../-protocol-logic/index.html"><span class="identifier">ProtocolLogic</span></a><span class="symbol"><</span><span class="identifier">R</span><span class="symbol">></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), )/scheduler">scheduler</span><span class="symbol">:</span> <span class="identifier"><ERROR CLASS></span><span class="symbol">)</span></code><p>A ProtocolStateMachine instance is a suspendable fiber that delegates all actual logic to a <a href="../-protocol-logic/index.html">ProtocolLogic</a> instance.
|
||||
<code><span class="identifier">ProtocolStateMachine</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), , kotlin.String)/logic">logic</span><span class="symbol">:</span> <a href="../-protocol-logic/index.html"><span class="identifier">ProtocolLogic</span></a><span class="symbol"><</span><span class="identifier">R</span><span class="symbol">></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), , kotlin.String)/scheduler">scheduler</span><span class="symbol">:</span> <span class="identifier"><ERROR CLASS></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), , kotlin.String)/loggerName">loggerName</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">)</span></code><p>A ProtocolStateMachine instance is a suspendable fiber that delegates all actual logic to a <a href="../-protocol-logic/index.html">ProtocolLogic</a> instance.
|
||||
For any given flow there is only one PSM, even if that protocol invokes subprotocols.</p>
|
||||
</td>
|
||||
</tr>
|
||||
@ -37,7 +37,13 @@ For any given flow there is only one PSM, even if that protocol invokes subproto
|
||||
<td>
|
||||
<a href="logger.html">logger</a></td>
|
||||
<td>
|
||||
<code><span class="keyword">lateinit</span> <span class="keyword">var </span><span class="identifier">logger</span><span class="symbol">: </span><span class="identifier"><ERROR CLASS></span></code></td>
|
||||
<code><span class="keyword">val </span><span class="identifier">logger</span><span class="symbol">: </span><span class="identifier"><ERROR CLASS></span></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="logger-name.html">loggerName</a></td>
|
||||
<td>
|
||||
<code><span class="keyword">val </span><span class="identifier">loggerName</span><span class="symbol">: </span><span class="identifier">String</span></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
@ -67,7 +73,7 @@ For any given flow there is only one PSM, even if that protocol invokes subproto
|
||||
<td>
|
||||
<a href="prepare-for-resume-with.html">prepareForResumeWith</a></td>
|
||||
<td>
|
||||
<code><span class="keyword">fun </span><span class="identifier">prepareForResumeWith</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/serviceHub">serviceHub</span><span class="symbol">:</span> <a href="../../core.node/-service-hub/index.html"><span class="identifier">ServiceHub</span></a><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/withObject">withObject</span><span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">?</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/logger">logger</span><span class="symbol">:</span> <span class="identifier"><ERROR CLASS></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/suspendFunc">suspendFunc</span><span class="symbol">:</span> <span class="symbol">(</span><a href="../../core.messaging/-state-machine-manager/-fiber-request/index.html"><span class="identifier">FiberRequest</span></a><span class="symbol">,</span> <span class="identifier">ByteArray</span><span class="symbol">)</span> <span class="symbol">-></span> <span class="identifier">Unit</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">Unit</span></code></td>
|
||||
<code><span class="keyword">fun </span><span class="identifier">prepareForResumeWith</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/serviceHub">serviceHub</span><span class="symbol">:</span> <a href="../../core.node/-service-hub/index.html"><span class="identifier">ServiceHub</span></a><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/withObject">withObject</span><span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">?</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/suspendFunc">suspendFunc</span><span class="symbol">:</span> <span class="symbol">(</span><a href="../../core.messaging/-state-machine-manager/-fiber-request/index.html"><span class="identifier">FiberRequest</span></a><span class="symbol">,</span> <span class="identifier">ByteArray</span><span class="symbol">)</span> <span class="symbol">-></span> <span class="identifier">Unit</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">Unit</span></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
15
docs/build/html/api/core.protocols/-protocol-state-machine/logger-name.html
vendored
Normal file
15
docs/build/html/api/core.protocols/-protocol-state-machine/logger-name.html
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<title>ProtocolStateMachine.loggerName - </title>
|
||||
<link rel="stylesheet" href="../../style.css">
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<a href="../index.html">core.protocols</a> / <a href="index.html">ProtocolStateMachine</a> / <a href=".">loggerName</a><br/>
|
||||
<br/>
|
||||
<h1>loggerName</h1>
|
||||
<a name="core.protocols.ProtocolStateMachine$loggerName"></a>
|
||||
<code><span class="keyword">val </span><span class="identifier">loggerName</span><span class="symbol">: </span><span class="identifier">String</span></code><br/>
|
||||
<br/>
|
||||
<br/>
|
||||
</BODY>
|
||||
</HTML>
|
@ -8,7 +8,7 @@
|
||||
<br/>
|
||||
<h1>logger</h1>
|
||||
<a name="core.protocols.ProtocolStateMachine$logger"></a>
|
||||
<code><span class="keyword">lateinit</span> <span class="keyword">var </span><span class="identifier">logger</span><span class="symbol">: </span><span class="identifier"><ERROR CLASS></span></code><br/>
|
||||
<code><span class="keyword">val </span><span class="identifier">logger</span><span class="symbol">: </span><span class="identifier"><ERROR CLASS></span></code><br/>
|
||||
<br/>
|
||||
<br/>
|
||||
</BODY>
|
||||
|
@ -7,8 +7,8 @@
|
||||
<a href="../index.html">core.protocols</a> / <a href="index.html">ProtocolStateMachine</a> / <a href=".">prepareForResumeWith</a><br/>
|
||||
<br/>
|
||||
<h1>prepareForResumeWith</h1>
|
||||
<a name="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))"></a>
|
||||
<code><span class="keyword">fun </span><span class="identifier">prepareForResumeWith</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/serviceHub">serviceHub</span><span class="symbol">:</span> <a href="../../core.node/-service-hub/index.html"><span class="identifier">ServiceHub</span></a><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/withObject">withObject</span><span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">?</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/logger">logger</span><span class="symbol">:</span> <span class="identifier"><ERROR CLASS></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/suspendFunc">suspendFunc</span><span class="symbol">:</span> <span class="symbol">(</span><a href="../../core.messaging/-state-machine-manager/-fiber-request/index.html"><span class="identifier">FiberRequest</span></a><span class="symbol">,</span> <span class="identifier">ByteArray</span><span class="symbol">)</span> <span class="symbol">-></span> <span class="identifier">Unit</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">Unit</span></code><br/>
|
||||
<a name="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))"></a>
|
||||
<code><span class="keyword">fun </span><span class="identifier">prepareForResumeWith</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/serviceHub">serviceHub</span><span class="symbol">:</span> <a href="../../core.node/-service-hub/index.html"><span class="identifier">ServiceHub</span></a><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/withObject">withObject</span><span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">?</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/suspendFunc">suspendFunc</span><span class="symbol">:</span> <span class="symbol">(</span><a href="../../core.messaging/-state-machine-manager/-fiber-request/index.html"><span class="identifier">FiberRequest</span></a><span class="symbol">,</span> <span class="identifier">ByteArray</span><span class="symbol">)</span> <span class="symbol">-></span> <span class="identifier">Unit</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">Unit</span></code><br/>
|
||||
<br/>
|
||||
<br/>
|
||||
</BODY>
|
||||
|
@ -116,8 +116,8 @@ progress.</p>
|
||||
<td>
|
||||
<a href="../../../core.protocols/-protocol-logic/receive.html">receive</a></td>
|
||||
<td>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code><br/>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/clazz">clazz</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="../../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code></td>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/clazz">clazz</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="../../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code><br/>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
@ -122,8 +122,8 @@ progress.</p>
|
||||
<td>
|
||||
<a href="../../core.protocols/-protocol-logic/receive.html">receive</a></td>
|
||||
<td>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code><br/>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/clazz">clazz</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code></td>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/clazz">clazz</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code><br/>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
14
docs/build/html/api/index-outline.html
vendored
14
docs/build/html/api/index-outline.html
vendored
@ -3437,10 +3437,11 @@
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/-init-.html"><span class="identifier">ProtocolStateMachine</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), )/logic">logic</span><span class="symbol">:</span> <a href="core.protocols/-protocol-logic/index.html"><span class="identifier">ProtocolLogic</span></a><span class="symbol"><</span><span class="identifier">R</span><span class="symbol">></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), )/scheduler">scheduler</span><span class="symbol">:</span> <span class="identifier"><ERROR CLASS></span><span class="symbol">)</span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/logger.html"><span class="keyword">lateinit</span> <span class="keyword">var </span><span class="identifier">logger</span><span class="symbol">: </span><span class="identifier"><ERROR CLASS></span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/-init-.html"><span class="identifier">ProtocolStateMachine</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), , kotlin.String)/logic">logic</span><span class="symbol">:</span> <a href="core.protocols/-protocol-logic/index.html"><span class="identifier">ProtocolLogic</span></a><span class="symbol"><</span><span class="identifier">R</span><span class="symbol">></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), , kotlin.String)/scheduler">scheduler</span><span class="symbol">:</span> <span class="identifier"><ERROR CLASS></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), , kotlin.String)/loggerName">loggerName</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">)</span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/logger.html"><span class="keyword">val </span><span class="identifier">logger</span><span class="symbol">: </span><span class="identifier"><ERROR CLASS></span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/logger-name.html"><span class="keyword">val </span><span class="identifier">loggerName</span><span class="symbol">: </span><span class="identifier">String</span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/logic.html"><span class="keyword">val </span><span class="identifier">logic</span><span class="symbol">: </span><a href="core.protocols/-protocol-logic/index.html"><span class="identifier">ProtocolLogic</span></a><span class="symbol"><</span><span class="identifier">R</span><span class="symbol">></span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/prepare-for-resume-with.html"><span class="keyword">fun </span><span class="identifier">prepareForResumeWith</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/serviceHub">serviceHub</span><span class="symbol">:</span> <a href="core.node/-service-hub/index.html"><span class="identifier">ServiceHub</span></a><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/withObject">withObject</span><span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">?</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/logger">logger</span><span class="symbol">:</span> <span class="identifier"><ERROR CLASS></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/suspendFunc">suspendFunc</span><span class="symbol">:</span> <span class="symbol">(</span><a href="core.messaging/-state-machine-manager/-fiber-request/index.html"><span class="identifier">FiberRequest</span></a><span class="symbol">,</span> <span class="identifier">ByteArray</span><span class="symbol">)</span> <span class="symbol">-></span> <span class="identifier">Unit</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">Unit</span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/prepare-for-resume-with.html"><span class="keyword">fun </span><span class="identifier">prepareForResumeWith</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/serviceHub">serviceHub</span><span class="symbol">:</span> <a href="core.node/-service-hub/index.html"><span class="identifier">ServiceHub</span></a><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/withObject">withObject</span><span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">?</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/suspendFunc">suspendFunc</span><span class="symbol">:</span> <span class="symbol">(</span><a href="core.messaging/-state-machine-manager/-fiber-request/index.html"><span class="identifier">FiberRequest</span></a><span class="symbol">,</span> <span class="identifier">ByteArray</span><span class="symbol">)</span> <span class="symbol">-></span> <span class="identifier">Unit</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">Unit</span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/receive.html"><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolStateMachine.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolStateMachine.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolStateMachine.receive.T)))/recvType">recvType</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/result-future.html"><span class="keyword">val </span><span class="identifier">resultFuture</span><span class="symbol">: </span><span class="identifier"><ERROR CLASS></span><span class="symbol"><</span><span class="identifier">R</span><span class="symbol">></span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/run.html"><span class="keyword">fun </span><span class="identifier">run</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">R</span></a></a><br/>
|
||||
@ -9067,10 +9068,11 @@
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/-init-.html"><span class="identifier">ProtocolStateMachine</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), )/logic">logic</span><span class="symbol">:</span> <a href="core.protocols/-protocol-logic/index.html"><span class="identifier">ProtocolLogic</span></a><span class="symbol"><</span><span class="identifier">R</span><span class="symbol">></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), )/scheduler">scheduler</span><span class="symbol">:</span> <span class="identifier"><ERROR CLASS></span><span class="symbol">)</span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/logger.html"><span class="keyword">lateinit</span> <span class="keyword">var </span><span class="identifier">logger</span><span class="symbol">: </span><span class="identifier"><ERROR CLASS></span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/-init-.html"><span class="identifier">ProtocolStateMachine</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), , kotlin.String)/logic">logic</span><span class="symbol">:</span> <a href="core.protocols/-protocol-logic/index.html"><span class="identifier">ProtocolLogic</span></a><span class="symbol"><</span><span class="identifier">R</span><span class="symbol">></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), , kotlin.String)/scheduler">scheduler</span><span class="symbol">:</span> <span class="identifier"><ERROR CLASS></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$<init>(core.protocols.ProtocolLogic((core.protocols.ProtocolStateMachine.R)), , kotlin.String)/loggerName">loggerName</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">)</span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/logger.html"><span class="keyword">val </span><span class="identifier">logger</span><span class="symbol">: </span><span class="identifier"><ERROR CLASS></span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/logger-name.html"><span class="keyword">val </span><span class="identifier">loggerName</span><span class="symbol">: </span><span class="identifier">String</span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/logic.html"><span class="keyword">val </span><span class="identifier">logic</span><span class="symbol">: </span><a href="core.protocols/-protocol-logic/index.html"><span class="identifier">ProtocolLogic</span></a><span class="symbol"><</span><span class="identifier">R</span><span class="symbol">></span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/prepare-for-resume-with.html"><span class="keyword">fun </span><span class="identifier">prepareForResumeWith</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/serviceHub">serviceHub</span><span class="symbol">:</span> <a href="core.node/-service-hub/index.html"><span class="identifier">ServiceHub</span></a><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/withObject">withObject</span><span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">?</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/logger">logger</span><span class="symbol">:</span> <span class="identifier"><ERROR CLASS></span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, , kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/suspendFunc">suspendFunc</span><span class="symbol">:</span> <span class="symbol">(</span><a href="core.messaging/-state-machine-manager/-fiber-request/index.html"><span class="identifier">FiberRequest</span></a><span class="symbol">,</span> <span class="identifier">ByteArray</span><span class="symbol">)</span> <span class="symbol">-></span> <span class="identifier">Unit</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">Unit</span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/prepare-for-resume-with.html"><span class="keyword">fun </span><span class="identifier">prepareForResumeWith</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/serviceHub">serviceHub</span><span class="symbol">:</span> <a href="core.node/-service-hub/index.html"><span class="identifier">ServiceHub</span></a><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/withObject">withObject</span><span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">?</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$prepareForResumeWith(core.node.ServiceHub, kotlin.Any, kotlin.Function2((core.messaging.StateMachineManager.FiberRequest, kotlin.ByteArray, kotlin.Unit)))/suspendFunc">suspendFunc</span><span class="symbol">:</span> <span class="symbol">(</span><a href="core.messaging/-state-machine-manager/-fiber-request/index.html"><span class="identifier">FiberRequest</span></a><span class="symbol">,</span> <span class="identifier">ByteArray</span><span class="symbol">)</span> <span class="symbol">-></span> <span class="identifier">Unit</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">Unit</span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/receive.html"><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolStateMachine$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolStateMachine.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolStateMachine.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolStateMachine$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolStateMachine.receive.T)))/recvType">recvType</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/result-future.html"><span class="keyword">val </span><span class="identifier">resultFuture</span><span class="symbol">: </span><span class="identifier"><ERROR CLASS></span><span class="symbol"><</span><span class="identifier">R</span><span class="symbol">></span></a></a><br/>
|
||||
<a href="docs/build/html/api/index"><a href="core.protocols/-protocol-state-machine/run.html"><span class="keyword">fun </span><span class="identifier">run</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">R</span></a></a><br/>
|
||||
|
@ -168,8 +168,8 @@ progress.</p>
|
||||
<td>
|
||||
<a href="../../core.protocols/-protocol-logic/receive.html">receive</a></td>
|
||||
<td>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code><br/>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/clazz">clazz</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code></td>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/clazz">clazz</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code><br/>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
@ -164,8 +164,8 @@ before its sent back to the oracle for signing (for example, adding output state
|
||||
<td>
|
||||
<a href="../../core.protocols/-protocol-logic/receive.html">receive</a></td>
|
||||
<td>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/clazz">clazz</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code><br/>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code></td>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code><br/>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/clazz">clazz</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
@ -101,8 +101,8 @@ progress.</p>
|
||||
<td>
|
||||
<a href="../../core.protocols/-protocol-logic/receive.html">receive</a></td>
|
||||
<td>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code><br/>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/clazz">clazz</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code></td>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/clazz">clazz</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code><br/>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
@ -120,8 +120,8 @@ progress.</p>
|
||||
<td>
|
||||
<a href="../../core.protocols/-protocol-logic/receive.html">receive</a></td>
|
||||
<td>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code><br/>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/clazz">clazz</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code></td>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/clazz">clazz</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code><br/>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
@ -158,8 +158,8 @@ progress.</p>
|
||||
<td>
|
||||
<a href="../../../core.protocols/-protocol-logic/receive.html">receive</a></td>
|
||||
<td>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/clazz">clazz</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="../../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code><br/>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code></td>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long)/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code><br/>
|
||||
<code><span class="keyword">fun </span><span class="symbol"><</span><span class="identifier">T</span> <span class="symbol">:</span> <span class="identifier">Any</span><span class="symbol">></span> <span class="identifier">receive</span><span class="symbol">(</span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/topic">topic</span><span class="symbol">:</span> <span class="identifier">String</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/sessionIDForReceive">sessionIDForReceive</span><span class="symbol">:</span> <span class="identifier">Long</span><span class="symbol">, </span><span class="identifier" id="core.protocols.ProtocolLogic$receive(kotlin.String, kotlin.Long, java.lang.Class((core.protocols.ProtocolLogic.receive.T)))/clazz">clazz</span><span class="symbol">:</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html"><span class="identifier">Class</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span><span class="symbol">)</span><span class="symbol">: </span><a href="../../../core.utilities/-untrustworthy-data/index.html"><span class="identifier">UntrustworthyData</span></a><span class="symbol"><</span><span class="identifier">T</span><span class="symbol">></span></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
12
docs/build/html/building-the-docs.html
vendored
12
docs/build/html/building-the-docs.html
vendored
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Building the documentation — R3 Prototyping latest documentation</title>
|
||||
<title>Building the documentation — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="index.html"/>
|
||||
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
||||
<link rel="prev" title="Code style guide" href="codestyle.html"/>
|
||||
|
||||
|
||||
@ -50,7 +50,7 @@
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Prototyping
|
||||
<a href="index.html" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
@ -96,7 +96,7 @@
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Tutorials</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial_contract.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="protocol-state-machines.html">Protocol state machines</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="oracles.html">Writing oracle services</a></li>
|
||||
</ul>
|
||||
@ -122,7 +122,7 @@
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Prototyping</a>
|
||||
<a href="index.html">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -215,7 +215,7 @@ following to see a list of all available formats:</p>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
10
docs/build/html/codestyle.html
vendored
10
docs/build/html/codestyle.html
vendored
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Code style guide — R3 Prototyping latest documentation</title>
|
||||
<title>Code style guide — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="index.html"/>
|
||||
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
||||
<link rel="next" title="Building the documentation" href="building-the-docs.html"/>
|
||||
<link rel="prev" title="Using the visualiser" href="visualiser.html"/>
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Prototyping
|
||||
<a href="index.html" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
@ -128,7 +128,7 @@
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Prototyping</a>
|
||||
<a href="index.html">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -332,7 +332,7 @@ really necessary. In other words, don’t do this:</p>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
166
docs/build/html/data-model.html
vendored
166
docs/build/html/data-model.html
vendored
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Data model — R3 Prototyping latest documentation</title>
|
||||
<title>Data model — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="index.html"/>
|
||||
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
||||
<link rel="next" title="Networking and messaging" href="messaging.html"/>
|
||||
<link rel="prev" title="Getting set up" href="getting-set-up.html"/>
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Prototyping
|
||||
<a href="index.html" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
@ -90,19 +90,23 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="inthebox.html">What’s included?</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="getting-set-up.html">Getting set up</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Data model</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#description">Description</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#overview">Overview</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#comparison-with-bitcoin">Comparison with Bitcoin</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#comparison-with-ethereum">Comparison with Ethereum</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#rationale-for-and-tradeoffs-in-adopting-a-utxo-style-model">Rationale for and tradeoffs in adopting a UTXO-style model</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#rationale">Rationale</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#pros">Pros</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#cons">Cons</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="messaging.html">Networking and messaging</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="node-administration.html">Node administration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="irs.html">The Interest Rate Swap Contract</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Tutorials</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial_contract.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="protocol-state-machines.html">Protocol state machines</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="oracles.html">Writing oracle services</a></li>
|
||||
</ul>
|
||||
@ -110,6 +114,7 @@
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="visualiser.html">Using the visualiser</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="codestyle.html">Code style guide</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="building-the-docs.html">Building the documentation</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@ -123,7 +128,7 @@
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Prototyping</a>
|
||||
<a href="index.html">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -156,11 +161,11 @@
|
||||
|
||||
<div class="section" id="data-model">
|
||||
<h1>Data model<a class="headerlink" href="#data-model" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="section" id="description">
|
||||
<h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This article covers the data model: how <em>states</em>, <em>transactions</em> and <em>code contracts</em> interact with each other and
|
||||
how they are represented in the code. It doesn’t attempt to give detailed design rationales or information on future
|
||||
design elements: please refer to the R3 wiki for background information.</p>
|
||||
<div class="section" id="overview">
|
||||
<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
|
||||
<p>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.</p>
|
||||
@ -170,15 +175,19 @@ are created and destroyed by digitally signed <strong>transactions</strong>. Eac
|
||||
consume/destroy, these are called <strong>inputs</strong>, and contains a set of new states that it will create, these are called
|
||||
<strong>outputs</strong>.</p>
|
||||
<p>States contain arbitrary data, but they always contain at minimum a hash of the bytecode of a
|
||||
<strong>code contract</strong>, which is a program expressed in some byte code that runs sandboxed inside a virtual machine. Code
|
||||
contracts (or just “contracts” in the rest of this document) are globally shared pieces of business logic. Contracts
|
||||
define a <strong>verify function</strong>, which is a pure function given the entire transaction as input.</p>
|
||||
<p>To be considered valid, the transaction must be <strong>accepted</strong> by the verify function of every contract pointed to by the
|
||||
input and output states. Beyond inputs and outputs, transactions may also contain <strong>commands</strong>, small data packets that
|
||||
<strong>contract code</strong> 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.</p>
|
||||
<p>Contracts define a <strong>verify function</strong>, which is a pure function given the entire transaction as input. To be considered
|
||||
valid, the transaction must be <strong>accepted</strong> by the verify function of every contract pointed to by the
|
||||
input and output states.</p>
|
||||
<p>Beyond inputs and outputs, transactions may also contain <strong>commands</strong>, 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 <strong>public keys</strong> associated with it. The platform ensures
|
||||
that the transaction is signed by every key listed in the commands before the contracts start to execute. Public keys
|
||||
may be random/identityless for privacy, or linked to a well known legal identity via a <em>public key infrastructure</em> (PKI).</p>
|
||||
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
|
||||
<em>public key infrastructure</em> (PKI).</p>
|
||||
<p>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 <strong>attachments</strong>. Every transaction can refer to zero or more
|
||||
attachments by hash. Attachments are always ZIP/JAR files, which may contain arbitrary content. Contract code can then
|
||||
@ -196,8 +205,8 @@ A TSA signs a transaction if a pre-defined timestamping command in it defines a
|
||||
attachment if the fact it’s creating is relatively static and may be referred to over and over again.</p>
|
||||
<p>As the same terminology often crops up in different distributed ledger designs, let’s compare this to other
|
||||
distributed ledger systems you may be familiar with. You can find more detailed design rationales for why the platform
|
||||
differs from existing systems in <a class="reference external" href="https://r3-cev.atlassian.net/wiki/">the R3 wiki</a>, but to summarise, the driving
|
||||
factors are:</p>
|
||||
differs from existing systems in <a class="reference external" href="https://r3-cev.atlassian.net/wiki/display/AWG/Platform+Stream%3A+Corda">the R3 wiki</a>,
|
||||
but to summarise, the driving factors are:</p>
|
||||
<ul class="simple">
|
||||
<li>Improved contract flexibility vs Bitcoin</li>
|
||||
<li>Improved scalability vs Ethereum, as well as ability to keep parts of the transaction graph private (yet still uniquely addressable)</li>
|
||||
@ -261,6 +270,125 @@ stateless i.e. it may not interact with any other part of the system whilst exec
|
||||
platform considers non-financial applications to be out of scope.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="rationale-for-and-tradeoffs-in-adopting-a-utxo-style-model">
|
||||
<h2>Rationale for and tradeoffs in adopting a UTXO-style model<a class="headerlink" href="#rationale-for-and-tradeoffs-in-adopting-a-utxo-style-model" title="Permalink to this headline">¶</a></h2>
|
||||
<p>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.</p>
|
||||
<p>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 <em>not</em> 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.</p>
|
||||
</div>
|
||||
<div class="section" id="rationale">
|
||||
<h2>Rationale<a class="headerlink" href="#rationale" title="Permalink to this headline">¶</a></h2>
|
||||
<p>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.</p>
|
||||
<p>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 <em>order</em> 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.</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<p>This becomes most obvious when we consider two models for representing cash balances and payments.</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<p>A UTXO model would define a data structure that represented an <em>instance</em> of a claim against the bank. An account
|
||||
holder could hold <em>many</em> 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.</p>
|
||||
<p>In what follows, further advantages and disadvantages of this design decision are explored.</p>
|
||||
</div>
|
||||
<div class="section" id="pros">
|
||||
<h2>Pros<a class="headerlink" href="#pros" title="Permalink to this headline">¶</a></h2>
|
||||
<p>The UTXO model has these advantages:</p>
|
||||
<ul class="simple">
|
||||
<li>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.</li>
|
||||
<li>Because there are no accounts, it’s very easy to apply transactions in parallel even for high traffic legal entities
|
||||
assuming sufficiently granular entries.</li>
|
||||
<li>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.</li>
|
||||
<li>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).</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="cons">
|
||||
<h2>Cons<a class="headerlink" href="#cons" title="Permalink to this headline">¶</a></h2>
|
||||
<p>It also comes with some pretty serious complexities that in practice must be abstracted from developers:</p>
|
||||
<ul class="simple">
|
||||
<li>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.</li>
|
||||
<li>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).</li>
|
||||
<li>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.</li>
|
||||
</ul>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<p>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 <a class="reference internal" href="protocol-state-machines.html"><span class="doc">protocol framework</span></a>
|
||||
may provide a vehicle to make such negotiations simpler.</p>
|
||||
<p>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.</p>
|
||||
<p>Mike Hearn wrote an article about this problem and techniques to minimise it in
|
||||
<a class="reference external" href="https://medium.com/@octskyward/merge-avoidance-7f95a386692f">this article</a> 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.</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@ -282,7 +410,7 @@ platform considers non-financial applications to be out of scope.</li>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
10
docs/build/html/genindex.html
vendored
10
docs/build/html/genindex.html
vendored
@ -9,7 +9,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Index — R3 Prototyping latest documentation</title>
|
||||
<title>Index — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="index.html"/>
|
||||
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
||||
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
@ -50,7 +50,7 @@
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Prototyping
|
||||
<a href="index.html" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
@ -118,7 +118,7 @@
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Prototyping</a>
|
||||
<a href="index.html">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -164,7 +164,7 @@
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
15
docs/build/html/getting-set-up.html
vendored
15
docs/build/html/getting-set-up.html
vendored
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Getting set up — R3 Prototyping latest documentation</title>
|
||||
<title>Getting set up — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="index.html"/>
|
||||
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
||||
<link rel="next" title="Data model" href="data-model.html"/>
|
||||
<link rel="prev" title="What’s included?" href="inthebox.html"/>
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Prototyping
|
||||
<a href="index.html" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
@ -95,13 +95,13 @@
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="data-model.html">Data model</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="messaging.html">Networking and messaging</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="node-administration.html">Node administration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="irs.html">The Interest Rate Swap Contract</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Tutorials</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial_contract.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="protocol-state-machines.html">Protocol state machines</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="oracles.html">Writing oracle services</a></li>
|
||||
</ul>
|
||||
@ -109,6 +109,7 @@
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="visualiser.html">Using the visualiser</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="codestyle.html">Code style guide</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="building-the-docs.html">Building the documentation</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@ -122,7 +123,7 @@
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Prototyping</a>
|
||||
<a href="index.html">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -212,7 +213,7 @@ found at something like</p>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
16
docs/build/html/index.html
vendored
16
docs/build/html/index.html
vendored
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Welcome to the R3 prototyping repository! — R3 Prototyping latest documentation</title>
|
||||
<title>Welcome to the R3 prototyping repository! — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="#"/>
|
||||
<link rel="top" title="R3 Corda latest documentation" href="#"/>
|
||||
<link rel="next" title="What’s included?" href="inthebox.html"/>
|
||||
|
||||
|
||||
@ -50,7 +50,7 @@
|
||||
|
||||
|
||||
|
||||
<a href="#" class="icon icon-home"> R3 Prototyping
|
||||
<a href="#" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
@ -118,7 +118,7 @@
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="#">R3 Prototyping</a>
|
||||
<a href="#">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -178,9 +178,13 @@ prove or disprove the following hypothesis:</p>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="data-model.html">Data model</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="data-model.html#description">Description</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="data-model.html#overview">Overview</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="data-model.html#comparison-with-bitcoin">Comparison with Bitcoin</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="data-model.html#comparison-with-ethereum">Comparison with Ethereum</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="data-model.html#rationale-for-and-tradeoffs-in-adopting-a-utxo-style-model">Rationale for and tradeoffs in adopting a UTXO-style model</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="data-model.html#rationale">Rationale</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="data-model.html#pros">Pros</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="data-model.html#cons">Cons</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="messaging.html">Networking and messaging</a><ul>
|
||||
@ -281,7 +285,7 @@ prove or disprove the following hypothesis:</p>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
15
docs/build/html/inthebox.html
vendored
15
docs/build/html/inthebox.html
vendored
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>What’s included? — R3 Prototyping latest documentation</title>
|
||||
<title>What’s included? — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="index.html"/>
|
||||
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
||||
<link rel="next" title="Getting set up" href="getting-set-up.html"/>
|
||||
<link rel="prev" title="Welcome to the R3 prototyping repository!" href="index.html"/>
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Prototyping
|
||||
<a href="index.html" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
@ -95,13 +95,13 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="getting-set-up.html">Getting set up</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="data-model.html">Data model</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="messaging.html">Networking and messaging</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="node-administration.html">Node administration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="irs.html">The Interest Rate Swap Contract</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Tutorials</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial_contract.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="protocol-state-machines.html">Protocol state machines</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="oracles.html">Writing oracle services</a></li>
|
||||
</ul>
|
||||
@ -109,6 +109,7 @@
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="visualiser.html">Using the visualiser</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="codestyle.html">Code style guide</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="building-the-docs.html">Building the documentation</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@ -122,7 +123,7 @@
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Prototyping</a>
|
||||
<a href="index.html">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -246,7 +247,7 @@ to write contracts in both Kotlin and Java. You can <a class="reference external
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
19
docs/build/html/irs.html
vendored
19
docs/build/html/irs.html
vendored
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>The Interest Rate Swap Contract — R3 Prototyping latest documentation</title>
|
||||
<title>The Interest Rate Swap Contract — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -30,8 +30,8 @@
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="index.html"/>
|
||||
<link rel="next" title="Writing a contract" href="tutorial.html"/>
|
||||
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
||||
<link rel="next" title="Writing a contract" href="tutorial_contract.html"/>
|
||||
<link rel="prev" title="Node administration" href="node-administration.html"/>
|
||||
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Prototyping
|
||||
<a href="index.html" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
@ -91,7 +91,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="getting-set-up.html">Getting set up</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="data-model.html">Data model</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="messaging.html">Networking and messaging</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="node-administration.html">Node administration</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">The Interest Rate Swap Contract</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#creating-an-instance-and-lifecycle">Creating an instance and lifecycle</a></li>
|
||||
@ -101,7 +101,7 @@
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Tutorials</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial_contract.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="protocol-state-machines.html">Protocol state machines</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="oracles.html">Writing oracle services</a></li>
|
||||
</ul>
|
||||
@ -109,6 +109,7 @@
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="visualiser.html">Using the visualiser</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="codestyle.html">Code style guide</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="building-the-docs.html">Building the documentation</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@ -122,7 +123,7 @@
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Prototyping</a>
|
||||
<a href="index.html">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -244,7 +245,7 @@ equivalent <code class="docutils literal"><span class="pre">FixedRatePaymentEven
|
||||
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
|
||||
<a href="tutorial.html" class="btn btn-neutral float-right" title="Writing a contract" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
|
||||
<a href="tutorial_contract.html" class="btn btn-neutral float-right" title="Writing a contract" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
|
||||
|
||||
|
||||
<a href="node-administration.html" class="btn btn-neutral" title="Node administration" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
||||
@ -256,7 +257,7 @@ equivalent <code class="docutils literal"><span class="pre">FixedRatePaymentEven
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
12
docs/build/html/messaging.html
vendored
12
docs/build/html/messaging.html
vendored
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Networking and messaging — R3 Prototyping latest documentation</title>
|
||||
<title>Networking and messaging — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="index.html"/>
|
||||
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
||||
<link rel="next" title="Running the demos" href="running-the-demos.html"/>
|
||||
<link rel="prev" title="Data model" href="data-model.html"/>
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Prototyping
|
||||
<a href="index.html" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
@ -103,7 +103,7 @@
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Tutorials</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial_contract.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="protocol-state-machines.html">Protocol state machines</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="oracles.html">Writing oracle services</a></li>
|
||||
</ul>
|
||||
@ -125,7 +125,7 @@
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Prototyping</a>
|
||||
<a href="index.html">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -285,7 +285,7 @@ updates the network map accordingly.</p>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
28
docs/build/html/node-administration.html
vendored
28
docs/build/html/node-administration.html
vendored
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Node administration — R3 Prototyping latest documentation</title>
|
||||
<title>Node administration — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -30,12 +30,12 @@
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="index.html"/>
|
||||
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
||||
<link rel="next" title="The Interest Rate Swap Contract" href="irs.html"/>
|
||||
<link rel="prev" title="Running the demos" href="running-the-demos.html"/>
|
||||
<link rel="prev" title="Running the demos" href="running-the-demos.html"/>
|
||||
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Prototyping
|
||||
<a href="index.html" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
@ -91,7 +91,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="getting-set-up.html">Getting set up</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="data-model.html">Data model</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="messaging.html">Networking and messaging</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Node administration</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#monitoring-your-node">Monitoring your node</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#uploading-and-downloading-attachments">Uploading and downloading attachments</a></li>
|
||||
@ -102,7 +102,7 @@
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Tutorials</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial_contract.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="protocol-state-machines.html">Protocol state machines</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="oracles.html">Writing oracle services</a></li>
|
||||
</ul>
|
||||
@ -110,6 +110,7 @@
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="visualiser.html">Using the visualiser</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="codestyle.html">Code style guide</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="building-the-docs.html">Building the documentation</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@ -123,7 +124,7 @@
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Prototyping</a>
|
||||
<a href="index.html">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -240,10 +241,9 @@ EURIBOR 2016-03-15 2M = 0.111
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
|
||||
<a href="irs.html" class="btn btn-neutral float-right" title="The Interest Rate Swap Contract" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
|
||||
|
||||
|
||||
<a href="running-the-demos.html" class="btn btn-neutral" title="Running the demos" accesskey="p"><span
|
||||
class="fa fa-arrow-circle-left"></span> Previous</a>
|
||||
|
||||
|
||||
<a href="running-the-demos.html" class="btn btn-neutral" title="Running the demos" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
||||
|
||||
</div>
|
||||
|
||||
@ -252,7 +252,7 @@ EURIBOR 2016-03-15 2M = 0.111
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
BIN
docs/build/html/objects.inv
vendored
BIN
docs/build/html/objects.inv
vendored
Binary file not shown.
15
docs/build/html/oracles.html
vendored
15
docs/build/html/oracles.html
vendored
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Writing oracle services — R3 Prototyping latest documentation</title>
|
||||
<title>Writing oracle services — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="index.html"/>
|
||||
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
||||
<link rel="next" title="Using the visualiser" href="visualiser.html"/>
|
||||
<link rel="prev" title="Protocol state machines" href="protocol-state-machines.html"/>
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Prototyping
|
||||
<a href="index.html" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
@ -91,13 +91,13 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="getting-set-up.html">Getting set up</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="data-model.html">Data model</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="messaging.html">Networking and messaging</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="node-administration.html">Node administration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="irs.html">The Interest Rate Swap Contract</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Tutorials</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial_contract.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="protocol-state-machines.html">Protocol state machines</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Writing oracle services</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#introduction">Introduction</a></li>
|
||||
@ -112,6 +112,7 @@
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="visualiser.html">Using the visualiser</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="codestyle.html">Code style guide</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="building-the-docs.html">Building the documentation</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@ -125,7 +126,7 @@
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Prototyping</a>
|
||||
<a href="index.html">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -337,7 +338,7 @@ band.</p>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
19
docs/build/html/protocol-state-machines.html
vendored
19
docs/build/html/protocol-state-machines.html
vendored
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Protocol state machines — R3 Prototyping latest documentation</title>
|
||||
<title>Protocol state machines — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -30,9 +30,9 @@
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="index.html"/>
|
||||
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
||||
<link rel="next" title="Writing oracle services" href="oracles.html"/>
|
||||
<link rel="prev" title="Writing a contract" href="tutorial.html"/>
|
||||
<link rel="prev" title="Writing a contract" href="tutorial_contract.html"/>
|
||||
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
@ -51,7 +51,7 @@
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Prototyping
|
||||
<a href="index.html" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
@ -91,13 +91,13 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="getting-set-up.html">Getting set up</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="data-model.html">Data model</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="messaging.html">Networking and messaging</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="node-administration.html">Node administration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="irs.html">The Interest Rate Swap Contract</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Tutorials</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial_contract.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Protocol state machines</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#introduction">Introduction</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#theory">Theory</a></li>
|
||||
@ -115,6 +115,7 @@
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="visualiser.html">Using the visualiser</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="codestyle.html">Code style guide</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="building-the-docs.html">Building the documentation</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@ -128,7 +129,7 @@
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Prototyping</a>
|
||||
<a href="index.html">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -694,7 +695,7 @@ surfaced to human operators for investigation and resolution.</p>
|
||||
<a href="oracles.html" class="btn btn-neutral float-right" title="Writing oracle services" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
|
||||
|
||||
|
||||
<a href="tutorial.html" class="btn btn-neutral" title="Writing a contract" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
||||
<a href="tutorial_contract.html" class="btn btn-neutral" title="Writing a contract" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
||||
|
||||
</div>
|
||||
|
||||
@ -703,7 +704,7 @@ surfaced to human operators for investigation and resolution.</p>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
492
docs/build/html/running-the-demos.html
vendored
492
docs/build/html/running-the-demos.html
vendored
@ -1,302 +1,280 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]>
|
||||
<html class="no-js lt-ie9" lang="en"> <![endif]-->
|
||||
<!--[if gt IE 8]><!-->
|
||||
<html class="no-js" lang="en"> <!--<![endif]-->
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Running the demos — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
|
||||
|
||||
<title>Running the demos — R3 Prototyping latest documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="_static/css/custom.css" type="text/css"/>
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="_static/css/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="index.html"/>
|
||||
<link rel="next" title="Node administration" href="node-administration.html"/>
|
||||
<link rel="prev" title="Networking and messaging" href="messaging.html"/>
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
||||
<link rel="next" title="Node administration" href="node-administration.html"/>
|
||||
<link rel="prev" title="Networking and messaging" href="messaging.html"/>
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Prototyping
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
latest
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="version">
|
||||
latest
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<a href="api/index.html">API reference</a>
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs"/>
|
||||
<input type="hidden" name="check_keywords" value="yes"/>
|
||||
<input type="hidden" name="area" value="default"/>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
<br>
|
||||
<a href="api/index.html">API reference</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">Overview</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="inthebox.html">What’s included?</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="getting-set-up.html">Getting set up</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="data-model.html">Data model</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="messaging.html">Networking and
|
||||
messaging</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Running the demos</a>
|
||||
<ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#trader-demo">Trader demo</a>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#irs-demo">IRS demo</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="node-administration.html">Node
|
||||
administration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="irs.html">The Interest Rate Swap
|
||||
Contract</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Tutorials</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Writing a contract</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="protocol-state-machines.html">Protocol
|
||||
state machines</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="oracles.html">Writing oracle services</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Appendix</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="visualiser.html">Using the visualiser</a>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="codestyle.html">Code style guide</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">Overview</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="inthebox.html">What’s included?</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="getting-set-up.html">Getting set up</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="data-model.html">Data model</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="messaging.html">Networking and messaging</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Running the demos</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#trader-demo">Trader demo</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#irs-demo">IRS demo</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="node-administration.html">Node administration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="irs.html">The Interest Rate Swap Contract</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Tutorials</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial_contract.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="protocol-state-machines.html">Protocol state machines</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="oracles.html">Writing oracle services</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Appendix</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="visualiser.html">Using the visualiser</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="codestyle.html">Code style guide</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="building-the-docs.html">Building the documentation</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Prototyping</a>
|
||||
</nav>
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="index.html">Docs</a> »</li>
|
||||
|
||||
<li>Running the demos</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="_sources/running-the-demos.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="running-the-demos">
|
||||
<h1>Running the demos<a class="headerlink" href="#running-the-demos"
|
||||
title="Permalink to this headline">¶</a></h1>
|
||||
<p>The repository contains a small number of demo programs that run two-node networks,
|
||||
demonstrating functionality developed
|
||||
so far. We have:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>The trader demo, which shows a delivery-vs-payment atomic swap of commercial paper
|
||||
for cash. You can learn more about
|
||||
how this works in <a class="reference internal" href="protocol-state-machines.html"><span
|
||||
class="doc">Protocol state machines</span></a>.
|
||||
</li>
|
||||
<li>The IRS demo, which shows two nodes establishing an interest rate swap between them
|
||||
and performing fixings with a
|
||||
rates oracle, all driven via the HTTP API.
|
||||
</li>
|
||||
</ol>
|
||||
<p>The demos have only been tested on MacOS X and Ubuntu Linux. If you have success on other
|
||||
platforms, please let us know.</p>
|
||||
<p>The demos create node data directories in the root of the project. If something goes
|
||||
wrong with them, blow away the
|
||||
directories and try again.</p>
|
||||
<p>For Windows users, the contents of the shell scripts are very trivial and can easily be
|
||||
done by hand from a command
|
||||
window. Essentially, it just runs Gradle to create the startup scripts, and then starts
|
||||
the node with one set of
|
||||
flags or another. Alternatively you could play with the new Linux syscall support in
|
||||
Windows 10!</p>
|
||||
<div class="section" id="trader-demo">
|
||||
<h2>Trader demo<a class="headerlink" href="#trader-demo"
|
||||
title="Permalink to this headline">¶</a></h2>
|
||||
<p>Open two terminals, and in the first run::</p>
|
||||
<div class="highlight-kotlin">
|
||||
<div class="highlight"><pre><span></span><span class="p">./</span><span class="n">scripts</span><span
|
||||
class="p">/</span><span class="n">trader</span><span class="p">-</span><span
|
||||
class="n">demo</span><span class="p">.</span><span class="n">sh</span> <span
|
||||
class="n">buyer</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
<p>It will compile things, if necessary, then create a directory named “buyer”
|
||||
with a bunch of files inside and start
|
||||
the node. You should see it waiting for a trade to begin.</p>
|
||||
<p>In the second terminal, run:</p>
|
||||
<div class="highlight-kotlin">
|
||||
<div class="highlight"><pre><span></span><span class="p">./</span><span class="n">scripts</span><span
|
||||
class="p">/</span><span class="n">trader</span><span class="p">-</span><span
|
||||
class="n">demo</span><span class="p">.</span><span class="n">sh</span> <span
|
||||
class="n">seller</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
<p>You should see some log lines scroll past, and within a few seconds the messages
|
||||
“Purchase complete - we are a
|
||||
happy customer!” and “Sale completed - we have a happy customer!”
|
||||
should be printed.</p>
|
||||
<p>If it doesn’t work, jump on the mailing list and let us know.</p>
|
||||
</div>
|
||||
<div class="section" id="irs-demo">
|
||||
<h2>IRS demo<a class="headerlink" href="#irs-demo"
|
||||
title="Permalink to this headline">¶</a></h2>
|
||||
<p>Open three terminals. In the first run::</p>
|
||||
<div class="highlight-kotlin">
|
||||
<div class="highlight"><pre><span></span><span class="p">./</span><span class="n">scripts</span><span
|
||||
class="p">/</span><span class="n">irs</span><span class="p">-</span><span
|
||||
class="n">demo</span><span class="p">.</span><span class="n">sh</span> <span
|
||||
class="n">nodeA</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
<p>And in the second run::</p>
|
||||
<div class="highlight-kotlin">
|
||||
<div class="highlight"><pre><span></span><span class="p">./</span><span class="n">scripts</span><span
|
||||
class="p">/</span><span class="n">irs</span><span class="p">-</span><span
|
||||
class="n">demo</span><span class="p">.</span><span class="n">sh</span> <span
|
||||
class="n">nodeB</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
<p>The node in the first terminal will complain that it didn’t know about nodeB,
|
||||
so restart it. It’ll then find the
|
||||
location and identity keys of nodeA and be happy. NodeB also doubles up as the
|
||||
interest rates oracle and you should
|
||||
see some rates data get loaded.</p>
|
||||
<p>Now in the third terminal run::</p>
|
||||
<div class="highlight-kotlin">
|
||||
<div class="highlight"><pre><span></span><span class="p">./</span><span class="n">scripts</span><span
|
||||
class="p">/</span><span class="n">irs</span><span class="p">-</span><span
|
||||
class="n">demo</span><span class="p">.</span><span class="n">sh</span> <span
|
||||
class="n">trade</span> <span class="n">trade1</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
<p>You should see some activity in the other two terminals as they set up the deal.
|
||||
Further instructions will be printed
|
||||
at this point showing how to advance the current date, so you can see them perform
|
||||
fixings and (eventually) complete
|
||||
the deal.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
|
||||
<a href="node-administration.html" class="btn btn-neutral float-right"
|
||||
title="Node administration" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
|
||||
|
||||
|
||||
<a href="messaging.html" class="btn btn-neutral" title="Networking and messaging" accesskey="p"><span
|
||||
class="fa fa-arrow-circle-left"></span> Previous</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a
|
||||
href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a
|
||||
href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="index.html">Docs</a> »</li>
|
||||
|
||||
<li>Running the demos</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="_sources/running-the-demos.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="running-the-demos">
|
||||
<h1>Running the demos<a class="headerlink" href="#running-the-demos" title="Permalink to this headline">¶</a></h1>
|
||||
<p>The repository contains a small number of demo programs that run two-node networks, demonstrating functionality developed
|
||||
so far. We have:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>The trader demo, which shows a delivery-vs-payment atomic swap of commercial paper for cash. You can learn more about
|
||||
how this works in <a class="reference internal" href="protocol-state-machines.html"><span class="doc">Protocol state machines</span></a>.</li>
|
||||
<li>The IRS demo, which shows two nodes establishing an interest rate swap between them and performing fixings with a
|
||||
rates oracle, all driven via the HTTP API.</li>
|
||||
</ol>
|
||||
<p>The demos have only been tested on MacOS X and Ubuntu Linux. If you have success on other platforms, please let us know.</p>
|
||||
<p>The demos create node data directories in the root of the project. If something goes wrong with them, blow away the
|
||||
directories and try again.</p>
|
||||
<p>For Windows users, the contents of the shell scripts are very trivial and can easily be done by hand from a command
|
||||
window. Essentially, it just runs Gradle to create the startup scripts, and then starts the node with one set of
|
||||
flags or another. Alternatively you could play with the new Linux syscall support in Windows 10!</p>
|
||||
<div class="section" id="trader-demo">
|
||||
<h2>Trader demo<a class="headerlink" href="#trader-demo" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Open two terminals, and in the first run::</p>
|
||||
<div class="highlight-kotlin"><div class="highlight"><pre><span></span><span class="p">./</span><span class="n">scripts</span><span class="p">/</span><span class="n">trader</span><span class="p">-</span><span class="n">demo</span><span class="p">.</span><span class="n">sh</span> <span class="n">buyer</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>It will compile things, if necessary, then create a directory named “buyer” with a bunch of files inside and start
|
||||
the node. You should see it waiting for a trade to begin.</p>
|
||||
<p>In the second terminal, run:</p>
|
||||
<div class="highlight-kotlin"><div class="highlight"><pre><span></span><span class="p">./</span><span class="n">scripts</span><span class="p">/</span><span class="n">trader</span><span class="p">-</span><span class="n">demo</span><span class="p">.</span><span class="n">sh</span> <span class="n">seller</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>You should see some log lines scroll past, and within a few seconds the messages “Purchase complete - we are a
|
||||
happy customer!” and “Sale completed - we have a happy customer!” should be printed.</p>
|
||||
<p>If it doesn’t work, jump on the mailing list and let us know.</p>
|
||||
</div>
|
||||
<div class="section" id="irs-demo">
|
||||
<h2>IRS demo<a class="headerlink" href="#irs-demo" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Open three terminals. In the first run::</p>
|
||||
<div class="highlight-kotlin"><div class="highlight"><pre><span></span><span class="p">./</span><span class="n">scripts</span><span class="p">/</span><span class="n">irs</span><span class="p">-</span><span class="n">demo</span><span class="p">.</span><span class="n">sh</span> <span class="n">nodeA</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>And in the second run::</p>
|
||||
<div class="highlight-kotlin"><div class="highlight"><pre><span></span><span class="p">./</span><span class="n">scripts</span><span class="p">/</span><span class="n">irs</span><span class="p">-</span><span class="n">demo</span><span class="p">.</span><span class="n">sh</span> <span class="n">nodeB</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The node in the first terminal will complain that it didn’t know about nodeB, so restart it. It’ll then find the
|
||||
location and identity keys of nodeA and be happy. NodeB also doubles up as the interest rates oracle and you should
|
||||
see some rates data get loaded.</p>
|
||||
<p>Now in the third terminal run::</p>
|
||||
<div class="highlight-kotlin"><div class="highlight"><pre><span></span><span class="p">./</span><span class="n">scripts</span><span class="p">/</span><span class="n">irs</span><span class="p">-</span><span class="n">demo</span><span class="p">.</span><span class="n">sh</span> <span class="n">trade</span> <span class="n">trade1</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>You should see some activity in the other two terminals as they set up the deal. Further instructions will be printed
|
||||
at this point showing how to advance the current date, so you can see them perform fixings and (eventually) complete
|
||||
the deal.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: './',
|
||||
VERSION: 'latest',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
|
||||
<a href="node-administration.html" class="btn btn-neutral float-right" title="Node administration" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
|
||||
|
||||
|
||||
<a href="messaging.html" class="btn btn-neutral" title="Networking and messaging" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'latest',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
HAS_SOURCE: true
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.StickyNav.enable();
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.StickyNav.enable();
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
10
docs/build/html/search.html
vendored
10
docs/build/html/search.html
vendored
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Search — R3 Prototyping latest documentation</title>
|
||||
<title>Search — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="index.html"/>
|
||||
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
||||
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
@ -49,7 +49,7 @@
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Prototyping
|
||||
<a href="index.html" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
@ -117,7 +117,7 @@
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Prototyping</a>
|
||||
<a href="index.html">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -167,7 +167,7 @@
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
2
docs/build/html/searchindex.js
vendored
2
docs/build/html/searchindex.js
vendored
File diff suppressed because one or more lines are too long
10
docs/build/html/tutorial_contract.html
vendored
10
docs/build/html/tutorial_contract.html
vendored
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Writing a contract — R3 Prototyping latest documentation</title>
|
||||
<title>Writing a contract — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="index.html"/>
|
||||
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
||||
<link rel="next" title="Protocol state machines" href="protocol-state-machines.html"/>
|
||||
<link rel="prev" title="The Interest Rate Swap Contract" href="irs.html"/>
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Prototyping
|
||||
<a href="index.html" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
@ -130,7 +130,7 @@
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Prototyping</a>
|
||||
<a href="index.html">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -923,7 +923,7 @@ be implemented once in a separate contract, with the controlling data being held
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
15
docs/build/html/visualiser.html
vendored
15
docs/build/html/visualiser.html
vendored
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Using the visualiser — R3 Prototyping latest documentation</title>
|
||||
<title>Using the visualiser — R3 Corda latest documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="R3 Prototyping latest documentation" href="index.html"/>
|
||||
<link rel="top" title="R3 Corda latest documentation" href="index.html"/>
|
||||
<link rel="next" title="Code style guide" href="codestyle.html"/>
|
||||
<link rel="prev" title="Writing oracle services" href="oracles.html"/>
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home"> R3 Prototyping
|
||||
<a href="index.html" class="icon icon-home"> R3 Corda
|
||||
|
||||
|
||||
|
||||
@ -91,13 +91,13 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="getting-set-up.html">Getting set up</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="data-model.html">Data model</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="messaging.html">Networking and messaging</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="running-the-demos.html">Running the demos</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="node-administration.html">Node administration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="irs.html">The Interest Rate Swap Contract</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Tutorials</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tutorial_contract.html">Writing a contract</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="protocol-state-machines.html">Protocol state machines</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="oracles.html">Writing oracle services</a></li>
|
||||
</ul>
|
||||
@ -105,6 +105,7 @@
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Using the visualiser</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="codestyle.html">Code style guide</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="building-the-docs.html">Building the documentation</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@ -118,7 +119,7 @@
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">R3 Prototyping</a>
|
||||
<a href="index.html">R3 Corda</a>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -235,7 +236,7 @@ feature).</li>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2015, R3 CEV.
|
||||
© Copyright 2016, Distributed Ledger Group, LLC.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user