diff --git a/docs/build/doctrees/clientrpc.doctree b/docs/build/doctrees/clientrpc.doctree index e595d5606b..dc90584d50 100644 Binary files a/docs/build/doctrees/clientrpc.doctree and b/docs/build/doctrees/clientrpc.doctree differ diff --git a/docs/build/doctrees/corda-plugins.doctree b/docs/build/doctrees/corda-plugins.doctree new file mode 100644 index 0000000000..81e70de0f6 Binary files /dev/null and b/docs/build/doctrees/corda-plugins.doctree differ diff --git a/docs/build/doctrees/creating-a-cordapp.doctree b/docs/build/doctrees/creating-a-cordapp.doctree index 371fe90d2f..7eb0eceb31 100644 Binary files a/docs/build/doctrees/creating-a-cordapp.doctree and b/docs/build/doctrees/creating-a-cordapp.doctree differ diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 55fc0bcaf8..207b67d742 100644 Binary files a/docs/build/doctrees/environment.pickle and b/docs/build/doctrees/environment.pickle differ diff --git a/docs/build/doctrees/flow-state-machines.doctree b/docs/build/doctrees/flow-state-machines.doctree index ff6386200c..88f175a717 100644 Binary files a/docs/build/doctrees/flow-state-machines.doctree and b/docs/build/doctrees/flow-state-machines.doctree differ diff --git a/docs/build/doctrees/flow-testing.doctree b/docs/build/doctrees/flow-testing.doctree new file mode 100644 index 0000000000..6136790524 Binary files /dev/null and b/docs/build/doctrees/flow-testing.doctree differ diff --git a/docs/build/doctrees/further-notes-on-kotlin.doctree b/docs/build/doctrees/further-notes-on-kotlin.doctree index 79ca2b7ffc..c821773917 100644 Binary files a/docs/build/doctrees/further-notes-on-kotlin.doctree and b/docs/build/doctrees/further-notes-on-kotlin.doctree differ diff --git a/docs/build/doctrees/getting-set-up-fault-finding.doctree b/docs/build/doctrees/getting-set-up-fault-finding.doctree index 2ee693ba24..634532cba5 100644 Binary files a/docs/build/doctrees/getting-set-up-fault-finding.doctree and b/docs/build/doctrees/getting-set-up-fault-finding.doctree differ diff --git a/docs/build/doctrees/getting-set-up.doctree b/docs/build/doctrees/getting-set-up.doctree index 99c916d6a1..82f7cfba57 100644 Binary files a/docs/build/doctrees/getting-set-up.doctree and b/docs/build/doctrees/getting-set-up.doctree differ diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree index ac6662b26d..5f9781beb3 100644 Binary files a/docs/build/doctrees/index.doctree and b/docs/build/doctrees/index.doctree differ diff --git a/docs/build/doctrees/loadtesting.doctree b/docs/build/doctrees/loadtesting.doctree index 5f962c5d4c..9beba04587 100644 Binary files a/docs/build/doctrees/loadtesting.doctree and b/docs/build/doctrees/loadtesting.doctree differ diff --git a/docs/build/doctrees/network-simulator.doctree b/docs/build/doctrees/network-simulator.doctree index 8dbd787779..f1c3d7ef84 100644 Binary files a/docs/build/doctrees/network-simulator.doctree and b/docs/build/doctrees/network-simulator.doctree differ diff --git a/docs/build/doctrees/node-administration.doctree b/docs/build/doctrees/node-administration.doctree index d0b1b0c968..a1512c5b68 100644 Binary files a/docs/build/doctrees/node-administration.doctree and b/docs/build/doctrees/node-administration.doctree differ diff --git a/docs/build/doctrees/node-explorer.doctree b/docs/build/doctrees/node-explorer.doctree index baf9ce87b3..307cdce765 100644 Binary files a/docs/build/doctrees/node-explorer.doctree and b/docs/build/doctrees/node-explorer.doctree differ diff --git a/docs/build/doctrees/tutorial-contract.doctree b/docs/build/doctrees/tutorial-contract.doctree index 3ba5d4f1f0..460138e34e 100644 Binary files a/docs/build/doctrees/tutorial-contract.doctree and b/docs/build/doctrees/tutorial-contract.doctree differ diff --git a/docs/build/html/_images/contract-cp-state.png b/docs/build/html/_images/contract-cp-state.png new file mode 100644 index 0000000000..767d87b5cf Binary files /dev/null and b/docs/build/html/_images/contract-cp-state.png differ diff --git a/docs/build/html/_images/contract-cp.png b/docs/build/html/_images/contract-cp.png new file mode 100644 index 0000000000..54fbb8e836 Binary files /dev/null and b/docs/build/html/_images/contract-cp.png differ diff --git a/docs/build/html/_images/dashboard.png b/docs/build/html/_images/dashboard.png index 12e28f8cd0..8a7e801a92 100644 Binary files a/docs/build/html/_images/dashboard.png and b/docs/build/html/_images/dashboard.png differ diff --git a/docs/build/html/_images/login.png b/docs/build/html/_images/login.png index a2779c3e13..6f08bdb285 100644 Binary files a/docs/build/html/_images/login.png and b/docs/build/html/_images/login.png differ diff --git a/docs/build/html/_images/network.png b/docs/build/html/_images/network.png new file mode 100644 index 0000000000..f72e90e985 Binary files /dev/null and b/docs/build/html/_images/network.png differ diff --git a/docs/build/html/_images/newTransaction.png b/docs/build/html/_images/newTransaction.png index b01da505f9..166dea4a31 100644 Binary files a/docs/build/html/_images/newTransaction.png and b/docs/build/html/_images/newTransaction.png differ diff --git a/docs/build/html/_images/settings.png b/docs/build/html/_images/settings.png new file mode 100644 index 0000000000..6cdf15e631 Binary files /dev/null and b/docs/build/html/_images/settings.png differ diff --git a/docs/build/html/_images/transactionView.png b/docs/build/html/_images/transactionView.png index 2fbbdf2a6f..3ca439d6e0 100644 Binary files a/docs/build/html/_images/transactionView.png and b/docs/build/html/_images/transactionView.png differ diff --git a/docs/build/html/_images/vault.png b/docs/build/html/_images/vault.png index 7909d92d3b..d0f7210e02 100644 Binary files a/docs/build/html/_images/vault.png and b/docs/build/html/_images/vault.png differ diff --git a/docs/build/html/_sources/corda-plugins.txt b/docs/build/html/_sources/corda-plugins.txt new file mode 100644 index 0000000000..bddc9cce4b --- /dev/null +++ b/docs/build/html/_sources/corda-plugins.txt @@ -0,0 +1,98 @@ +The Corda Plugin Framework +========================== + +The intention is that Corda is a common platform, which will be extended +by numerous application extensions (CorDapps). These extensions will +package together all of the Corda contract code, state structures, +protocols/flows to create and modify state as well as RPC extensions for +node clients. Details of writing these CorDapps is given elsewhere +:doc:`creating-a-cordapp`. + +To enable these plugins to register dynamically with the Corda framework +the node uses the Java ``ServiceLoader`` to locate and load the plugin +components during the ``AbstractNode.start`` call. Therefore, +to be recognised as a plugin the component must: + +1. Include a default constructable class extending from +``net.corda.core.node.CordaPluginRegistry`` which overrides the relevant +registration methods. + +2. Include a resource file named +``net.corda.core.node.CordaPluginRegistry`` in the ``META-INF.services`` +path. This must include a line containing the fully qualified name of +the ``CordaPluginRegistry`` implementation class. Multiple plugin +registries are allowed in this file if desired. + +3. The plugin component must be on the classpath. In the normal use this +means that it should be present within the plugins subfolder of the +node's workspace. + +4. As a plugin the registered components are then allowed access to some +of the node internal subsystems. + +5. The overridden properties on the registry class information about the different +extensions to be created, or registered at startup. In particular: + + a. The ``webApis`` property is a list of JAX-RS annotated REST access + classes. These classes will be constructed by the embedded web server + and must have a single argument constructor taking a ``ServiceHub`` + reference. This reference provides acccess to functions such as querying + for states through the ``VaultService`` interface, or access to the + ``NetworkMapCache`` to identify services on remote nodes. The framework will + provide a database transaction in scope during the lifetime of the web + call, so full access to database data is valid. Unlike + ``servicePlugins`` the ``webApis`` cannnot register new protocols, or + initiate threads. (N.B. The intent is to move the Web support into a + separate helper process using the RPC mechanism to control access.) + + b. The ``staticServeDirs`` property maps static web content to virtual + paths and allows simple web demos to be distributed within the CorDapp + jars. (N.B. The intent is to move the Web support into a separate helper + process using the RPC mechanism to control access.) + + c. The ``requiredFlows`` property is used to declare new protocols in + the plugin jar. Specifically the property must return a map with a key + naming each exposed top level flow class and a value which is a set + naming every parameter class that will be passed to the flow's + constructor. Standard ``java.lang.*`` and ``kotlin.*`` types do not need + to be included, but all other parameter types, or concrete interface + implementations need declaring. Declaring a specific flow in this map + white lists it for activation by the ``FlowLogicRefFactory``. White + listing is not strictly required for ``subFlows`` used internally, but + is required for any top level flow, or a flow which is invoked through + the scheduler. + + d. The ``servicePlugins`` property returns a list of classes which will + be instantiated once during the ``AbstractNode.start`` call. These + classes must provide a single argument constructor which will receive a + ``PluginServiceHub`` reference. These singleton instances are regarded + as trusted components and can be used for a number of purposes. + + i. Firstly, they can call ``PluginServiceHub.registerFlowInitiator`` and + register flows that will be initiated locally in response to remote flow + requests. + + ii. Second, the service can hold a long lived reference to the + PluginServiceHub and to other private data, so the service can be used + to provide Oracle functionality. This Oracle functionality would + typically be exposed to other nodes by flows which are given a reference + to the service plugin when initiated (as defined by the + ``registerFlowInitiator`` call). The flow can then call into functions + on the plugin service singleton. Note, care should be taken to not allow + flows to hold references to plugin services, or fields which are not + also ``SingletonSerializeAsToken``, otherwise Quasar suspension in the + ``StateMachineManager`` will fail with exceptions. An example oracle can + be seen in ``NodeInterestRates.kt`` in the irs-demo sample. + + iii. The final + use case for service plugins is that they can spawn threads, or register + to monitor vault updates. This allows them to provide long lived active + functions inside the node, for instance to initiate workflows when + certain conditions are met. + + e. The ``registerRPCKryoTypes`` function allows custom Kryo serialisers + to be registered and whitelisted for the RPC client interface. For + instance new state types passed to flows started via RPC will need + to be explicitly registered. This will be called at various points on + various threads and needs to be stable and thread safe. + diff --git a/docs/build/html/_sources/creating-a-cordapp.txt b/docs/build/html/_sources/creating-a-cordapp.txt index 4a9ea9c8bf..cae637d740 100644 --- a/docs/build/html/_sources/creating-a-cordapp.txt +++ b/docs/build/html/_sources/creating-a-cordapp.txt @@ -178,9 +178,6 @@ To build against Corda and the plugins that cordapps use, update your build.grad ... your tasks ... - // Sets the classes for Quasar to scan. Loaded by the the quasar-utils plugin. - quasarScan.dependsOn('classes', ... your dependent subprojects...) - // Standard way to publish Cordapps to maven local with the maven-publish and publish-utils plugin. publishing { publications { diff --git a/docs/build/html/_sources/flow-state-machines.txt b/docs/build/html/_sources/flow-state-machines.txt index 3f39a15bd7..1e3c3500d8 100644 --- a/docs/build/html/_sources/flow-state-machines.txt +++ b/docs/build/html/_sources/flow-state-machines.txt @@ -4,10 +4,10 @@ -Flow state machines -=================== +Writing flows +============= -This article explains our experimental approach to modelling financial flows in code. It explains how the +This article explains our approach to modelling financial flows in code. It explains how the platform's state machine framework is used, and takes you through the code for a simple 2-party asset trading flow which is included in the source. @@ -91,7 +91,7 @@ Our flow has two parties (B and S for buyer and seller) and will proceed as foll it lacks a signature from S authorising movement of the asset. 3. S signs it and hands the now finalised ``SignedTransaction`` back to B. -You can find the implementation of this flow in the file ``finance/src/main/kotlin/net.corda.flows/TwoPartyTradeFlow.kt``. +You can find the implementation of this flow in the file ``finance/src/main/kotlin/net/corda/flows/TwoPartyTradeFlow.kt``. Assuming no malicious termination, they both end the flow being in posession of a valid, signed transaction that represents an atomic asset swap. @@ -120,13 +120,13 @@ each side. data class SellerTradeInfo( val assetForSale: StateAndRef, val price: Amount, - val sellerOwnerKey: PublicKey + val sellerOwnerKey: CompositeKey ) data class SignaturesFromSeller(val sellerSig: DigitalSignature.WithKey, val notarySig: DigitalSignature.LegallyIdentifiable) - open class Seller(val otherSide: Party, + open class Seller(val otherParty: Party, val notaryNode: NodeInfo, val assetToSell: StateAndRef, val price: Amount, @@ -138,7 +138,7 @@ each side. } } - open class Buyer(val otherSide: Party, + open class Buyer(val otherParty: Party, val notary: Party, val acceptablePrice: Amount, val typeToBuy: Class) : FlowLogic() { @@ -154,7 +154,7 @@ simply flow messages or exceptions. The other two represent the buyer and seller Going through the data needed to become a seller, we have: -- ``otherSide: Party`` - the party with which you are trading. +- ``otherParty: Party`` - the party with which you are trading. - ``notaryNode: NodeInfo`` - the entry in the network map for the chosen notary. See ":doc:`consensus`" for more information on notaries. - ``assetToSell: StateAndRef`` - a pointer to the ledger entry that represents the thing being sold. @@ -197,20 +197,23 @@ when messages arrive. It provides the send/receive/sendAndReceive calls that let interaction and it will save/restore serialised versions of the fiber at the right times. Flows can be invoked in several ways. For instance, they can be triggered by scheduled events, -see ":doc:`event-scheduling`" to learn more about this. Or they can be triggered via the HTTP API. Or they can -be triggered directly via the Java-level node APIs from your app code. +see ":doc:`event-scheduling`" to learn more about this. Or they can be triggered directly via the Java-level node RPC +APIs from your app code. -You request a flow to be invoked by using the ``ServiceHub.invokeFlowAsync`` method. This takes a +You request a flow to be invoked by using the ``CordaRPCOps.startFlowDynamic`` method. This takes a Java reflection ``Class`` object that describes the flow class to use (in this case, either ``Buyer`` or ``Seller``). It also takes a set of arguments to pass to the constructor. Because it's possible for flow invocations to be requested by untrusted code (e.g. a state that you have been sent), the types that can be passed into the -flow are checked against a whitelist, which can be extended by apps themselves at load time. +flow are checked against a whitelist, which can be extended by apps themselves at load time. There are also a series +of inlined extension functions of the form ``CordaRPCOps.startFlow`` which help with invoking flows in a type +safe manner. -The process of starting a flow returns a ``ListenableFuture`` that you can use to either block waiting for -the result, or register a callback that will be invoked when the result is ready. +The process of starting a flow returns a ``FlowHandle`` that you can use to either observe +the result, observe its progress and which also contains a permanent identifier for the invoked flow in the form +of the ``StateMachineRunId``. -In a two party flow only one side is to be manually started using ``ServiceHub.invokeFlowAsync``. The other side -has to be registered by its node to respond to the initiating flow via ``ServiceHubInternal.registerFlowInitiator``. +In a two party flow only one side is to be manually started using ``CordaRPCOps.startFlow``. The other side +has to be registered by its node to respond to the initiating flow via ``PluginServiceHub.registerFlowInitiator``. In our example it doesn't matter which flow is the initiator and which is the initiated. For example, if we are to take the seller as the initiator then we would register the buyer as such: @@ -218,8 +221,7 @@ take the seller as the initiator then we would register the buyer as such: .. sourcecode:: kotlin - val services: ServiceHubInternal = TODO() - + val services: PluginServiceHub = TODO() services.registerFlowInitiator(Seller::class) { otherParty -> val notary = services.networkMapCache.notaryNodes[0] val acceptablePrice = TODO() @@ -266,25 +268,21 @@ Let's fill out the ``receiveAndCheckProposedTransaction()`` method. @Suspendable private fun receiveAndCheckProposedTransaction(): SignedTransaction { // Make the first message we'll send to kick off the flow. - val hello = SellerTradeInfo(assetToSell, price, myKeyPair.public) + val myPublicKey = myKeyPair.public.composite + val hello = SellerTradeInfo(assetToSell, price, myPublicKey) val maybeSTX = sendAndReceive(otherSide, hello) maybeSTX.unwrap { // Check that the tx proposed by the buyer is valid. - val missingSigs: Set = it.verifySignatures(throwIfSignaturesAreMissing = false) - val expected = setOf(myKeyPair.public, notaryNode.identity.owningKey) - if (missingSigs != expected) - throw SignatureException("The set of missing signatures is not as expected: ${missingSigs.toStringsShort()} vs ${expected.toStringsShort()}") - - val wtx: WireTransaction = it.tx + val wtx: WireTransaction = it.verifySignatures(myPublicKey, notaryNode.notaryIdentity.owningKey) logger.trace { "Received partially signed transaction: ${it.id}" } // Download and check all the things that this transaction depends on and verify it is contract-valid, // even though it is missing signatures. - subFlow(ResolveTransactionsFlow(wtx, otherSide)) + subFlow(ResolveTransactionsFlow(wtx, otherParty)) - if (wtx.outputs.map { it.data }.sumCashBy(myKeyPair.public).withoutIssuer() != price) + if (wtx.outputs.map { it.data }.sumCashBy(myPublicKey).withoutIssuer() != price) throw IllegalArgumentException("Transaction is not sending us the right amount of cash") return it @@ -306,7 +304,9 @@ needs human interaction! .. note:: There are a couple of rules you need to bear in mind when writing a class that will be used as a continuation. The first is that anything on the stack when the function is suspended will be stored into the heap and kept alive by - the garbage collector. So try to avoid keeping enormous data structures alive unless you really have to. + the garbage collector. So try to avoid keeping enormous data structures alive unless you really have to. You can + always use private methods to keep the stack uncluttered with temporary variables, or to avoid objects that + Kryo is not able to serialise correctly. The second is that as well as being kept on the heap, objects reachable from the stack will be serialised. The state of the function call may be resurrected much later! Kryo doesn't require objects be marked as serialisable, but even so, @@ -372,18 +372,18 @@ Here's the rest of the code: .. sourcecode:: kotlin - open fun computeOurSignature(partialTX: SignedTransaction) = myKeyPair.signWithECDSA(partialTX.txBits) + open fun calculateOurSignature(partialTX: SignedTransaction) = myKeyPair.signWithECDSA(partialTX.id) @Suspendable private fun sendSignatures(allPartySignedTX: SignedTransaction, ourSignature: DigitalSignature.WithKey, - notarySignature: DigitalSignature.LegallyIdentifiable): SignedTransaction { + notarySignature: DigitalSignature.WithKey): SignedTransaction { val fullySigned = allPartySignedTX + notarySignature logger.trace { "Built finished transaction, sending back to secondary!" } send(otherSide, SignaturesFromSeller(ourSignature, notarySignature)) return fullySigned } -It's all pretty straightforward from now on. Here ``txBits`` is the raw byte array representing the serialised +It's all pretty straightforward from now on. Here ``id`` is the secure hash representing the serialised transaction, and we just use our private key to calculate a signature over it. As a reminder, in Corda signatures do not cover other signatures: just the core of the transaction data. @@ -405,98 +405,15 @@ Implementing the buyer OK, let's do the same for the buyer side: -.. container:: codeset - - .. sourcecode:: kotlin - - @Suspendable - override fun call(): SignedTransaction { - val tradeRequest = receiveAndValidateTradeRequest() - val (ptx, cashSigningPubKeys) = assembleSharedTX(tradeRequest) - val stx = signWithOurKeys(cashSigningPubKeys, ptx) - - val signatures = swapSignaturesWithSeller(stx) - - logger.trace { "Got signatures from seller, verifying ... " } - - val fullySigned = stx + signatures.sellerSig + signatures.notarySig - fullySigned.verifySignatures() - - logger.trace { "Signatures received are valid. Trade complete! :-)" } - return fullySigned - } - - @Suspendable - private fun receiveAndValidateTradeRequest(): SellerTradeInfo { - // Wait for a trade request to come in from the other side - val maybeTradeRequest = receive(otherParty) - maybeTradeRequest.unwrap { - // What is the seller trying to sell us? - val asset = it.assetForSale.state.data - val assetTypeName = asset.javaClass.name - logger.trace { "Got trade request for a $assetTypeName: ${it.assetForSale}" } - - if (it.price > acceptablePrice) - throw UnacceptablePriceException(it.price) - if (!typeToBuy.isInstance(asset)) - throw AssetMismatchException(typeToBuy.name, assetTypeName) - - // Check the transaction that contains the state which is being resolved. - // We only have a hash here, so if we don't know it already, we have to ask for it. - subFlow(ResolveTransactionsFlow(setOf(it.assetForSale.ref.txhash), otherSide)) - - return it - } - } - - @Suspendable - private fun swapSignaturesWithSeller(stx: SignedTransaction): SignaturesFromSeller { - progressTracker.currentStep = SWAPPING_SIGNATURES - logger.trace { "Sending partially signed transaction to seller" } - - // TODO: Protect against the seller terminating here and leaving us in the lurch without the final tx. - - return sendAndReceive(otherSide, stx).unwrap { it } - } - - private fun signWithOurKeys(cashSigningPubKeys: List, ptx: TransactionBuilder): SignedTransaction { - // Now sign the transaction with whatever keys we need to move the cash. - for (k in cashSigningPubKeys) { - val priv = serviceHub.keyManagementService.toPrivate(k) - ptx.signWith(KeyPair(k, priv)) - } - - return ptx.toSignedTransaction(checkSufficientSignatures = false) - } - - private fun assembleSharedTX(tradeRequest: SellerTradeInfo): Pair> { - val ptx = TransactionType.General.Builder(notary) - // Add input and output states for the movement of cash, by using the Cash contract to generate the states. - val wallet = serviceHub.walletService.currentWallet - val cashStates = wallet.statesOfType() - val cashSigningPubKeys = Cash().generateSpend(ptx, tradeRequest.price, tradeRequest.sellerOwnerKey, cashStates) - // Add inputs/outputs/a command for the movement of the asset. - ptx.addInputState(tradeRequest.assetForSale) - // Just pick some new public key for now. This won't be linked with our identity in any way, which is what - // we want for privacy reasons: the key is here ONLY to manage and control ownership, it is not intended to - // reveal who the owner actually is. The key management service is expected to derive a unique key from some - // initial seed in order to provide privacy protection. - val freshKey = serviceHub.keyManagementService.freshKey() - val (command, state) = tradeRequest.assetForSale.state.data.withNewOwner(freshKey.public) - ptx.addOutputState(state, tradeRequest.assetForSale.state.notary) - ptx.addCommand(command, tradeRequest.assetForSale.state.data.owner) - - // And add a request for timestamping: it may be that none of the contracts need this! But it can't hurt - // to have one. - val currentTime = serviceHub.clock.instant() - ptx.setTime(currentTime, 30.seconds) - return Pair(ptx, cashSigningPubKeys) - } +.. literalinclude:: ../../finance/src/main/kotlin/net/corda/flows/TwoPartyTradeFlow.kt + :language: kotlin + :start-after: DOCSTART 1 + :end-before: DOCEND 1 This code is longer but no more complicated. Here are some things to pay attention to: 1. We do some sanity checking on the received message to ensure we're being offered what we expected to be offered. -2. We create a cash spend in the normal way, by using ``Cash().generateSpend``. See the contracts tutorial if this +2. We create a cash spend in the normal way, by using ``VaultService.generateSpend``. See the vault documentation if this part isn't clear. 3. We access the *service hub* when we need it to access things that are transient and may change or be recreated whilst a flow is suspended, things like the wallet or the network map. @@ -559,108 +476,6 @@ and linked ahead of time. In future, the progress tracking framework will become a vital part of how exceptions, errors, and other faults are surfaced to human operators for investigation and resolution. -Unit testing ------------- - -A flow can be a fairly complex thing that interacts with many services and other parties over the network. That -means unit testing one requires some infrastructure to provide lightweight mock implementations. The MockNetwork -provides this testing infrastructure layer; you can find this class in the node module - -A good example to examine for learning how to unit test flows is the ``ResolveTransactionsFlow`` tests. This -flow takes care of downloading and verifying transaction graphs, with all the needed dependencies. We start -with this basic skeleton: - -.. container:: codeset - - .. sourcecode:: kotlin - - class ResolveTransactionsFlowTest { - lateinit var net: MockNetwork - lateinit var a: MockNetwork.MockNode - lateinit var b: MockNetwork.MockNode - lateinit var notary: Party - - @Before - fun setup() { - net = MockNetwork() - val nodes = net.createSomeNodes() - a = nodes.partyNodes[0] - b = nodes.partyNodes[1] - notary = nodes.notaryNode.info.identity - net.runNetwork() - } - - @After - fun tearDown() { - net.stopNodes() - } - } - -We create a mock network in our ``@Before`` setup method and create a couple of nodes. We also record the identity -of the notary in our test network, which will come in handy later. We also tidy up when we're done. - -Next, we write a test case: - -.. container:: codeset - - .. sourcecode:: kotlin - - @Test - fun resolveFromTwoHashes() { - val (stx1, stx2) = makeTransactions() - val p = ResolveTransactionsFlow(setOf(stx2.id), a.info.identity) - val future = b.services.startFlow("resolve", p) - net.runNetwork() - val results = future.get() - assertEquals(listOf(stx1.id, stx2.id), results.map { it.id }) - assertEquals(stx1, b.storage.validatedTransactions.getTransaction(stx1.id)) - assertEquals(stx2, b.storage.validatedTransactions.getTransaction(stx2.id)) - } - -We'll take a look at the ``makeTransactions`` function in a moment. For now, it's enough to know that it returns two -``SignedTransaction`` objects, the second of which spends the first. Both transactions are known by node A -but not node B. - -The test logic is simple enough: we create the flow, giving it node A's identity as the target to talk to. -Then we start it on node B and use the ``net.runNetwork()`` method to bounce messages around until things have -settled (i.e. there are no more messages waiting to be delivered). All this is done using an in memory message -routing implementation that is fast to initialise and use. Finally, we obtain the result of the flow and do -some tests on it. We also check the contents of node B's database to see that the flow had the intended effect -on the node's persistent state. - -Here's what ``makeTransactions`` looks like: - -.. container:: codeset - - .. sourcecode:: kotlin - - private fun makeTransactions(): Pair { - // Make a chain of custody of dummy states and insert into node A. - val dummy1: SignedTransaction = DummyContract.generateInitial(MEGA_CORP.ref(1), 0, notary).let { - it.signWith(MEGA_CORP_KEY) - it.signWith(DUMMY_NOTARY_KEY) - it.toSignedTransaction(false) - } - val dummy2: SignedTransaction = DummyContract.move(dummy1.tx.outRef(0), MINI_CORP_PUBKEY).let { - it.signWith(MEGA_CORP_KEY) - it.signWith(DUMMY_NOTARY_KEY) - it.toSignedTransaction() - } - a.services.recordTransactions(dummy1, dummy2) - return Pair(dummy1, dummy2) - } - -We're using the ``DummyContract``, a simple test smart contract which stores a single number in its states, along -with ownership and issuer information. You can issue such states, exit them and re-assign ownership (move them). -It doesn't do anything else. This code simply creates a transaction that issues a dummy state (the issuer is -``MEGA_CORP``, a pre-defined unit test identity), signs it with the test notary and MegaCorp keys and then -converts the builder to the final ``SignedTransaction``. It then does so again, but this time instead of issuing -it re-assigns ownership instead. The chain of two transactions is finally committed to node A by sending them -directly to the ``a.services.recordTransaction`` method (note that this method doesn't check the transactions are -valid). - -And that's it: you can explore the documentation for the `MockNode API `_ here. - Versioning ---------- @@ -684,11 +499,10 @@ The flow framework is a key part of the platform and will be extended in major w the features we have planned: * Identity based addressing -* Exposing progress trackers to local (inside the firewall) clients using message queues and/or WebSockets * Exception propagation and management, with a "flow hospital" tool to manually provide solutions to unavoidable problems (e.g. the other side doesn't know the trade) -* Being able to interact with internal apps and tools via HTTP and similar +* Being able to interact with internal apps and tools via RPC * Being able to interact with people, either via some sort of external ticketing system, or email, or a custom UI. For example to implement human transaction authorisations. * A standard library of flows that can be easily sub-classed by local developers in order to integrate internal - reporting logic, or anything else that might be required as part of a communications lifecycle. + reporting logic, or anything else that might be required as part of a communications lifecycle. \ No newline at end of file diff --git a/docs/build/html/_sources/flow-testing.txt b/docs/build/html/_sources/flow-testing.txt new file mode 100644 index 0000000000..010d83c886 --- /dev/null +++ b/docs/build/html/_sources/flow-testing.txt @@ -0,0 +1,83 @@ +.. highlight:: kotlin +.. raw:: html + + + + +Writing flow tests +================== + +A flow can be a fairly complex thing that interacts with many services and other parties over the network. That +means unit testing one requires some infrastructure to provide lightweight mock implementations. The MockNetwork +provides this testing infrastructure layer; you can find this class in the test-utils module. + +A good example to examine for learning how to unit test flows is the ``ResolveTransactionsFlow`` tests. This +flow takes care of downloading and verifying transaction graphs, with all the needed dependencies. We start +with this basic skeleton: + +.. container:: codeset + + .. sourcecode:: kotlin + + class ResolveTransactionsFlowTest { + lateinit var net: MockNetwork + lateinit var a: MockNetwork.MockNode + lateinit var b: MockNetwork.MockNode + lateinit var notary: Party + + @Before + fun setup() { + net = MockNetwork() + val nodes = net.createSomeNodes() + a = nodes.partyNodes[0] + b = nodes.partyNodes[1] + notary = nodes.notaryNode.info.notaryIdentity + net.runNetwork() + } + + @After + fun tearDown() { + net.stopNodes() + } + } + +We create a mock network in our ``@Before`` setup method and create a couple of nodes. We also record the identity +of the notary in our test network, which will come in handy later. We also tidy up when we're done. + +Next, we write a test case: + +.. literalinclude:: ../../core/src/test/kotlin/net/corda/core/flows/ResolveTransactionsFlowTest.kt + :language: kotlin + :start-after: DOCSTART 1 + :end-before: DOCEND 1 + +We'll take a look at the ``makeTransactions`` function in a moment. For now, it's enough to know that it returns two +``SignedTransaction`` objects, the second of which spends the first. Both transactions are known by node A +but not node B. + +The test logic is simple enough: we create the flow, giving it node A's identity as the target to talk to. +Then we start it on node B and use the ``net.runNetwork()`` method to bounce messages around until things have +settled (i.e. there are no more messages waiting to be delivered). All this is done using an in memory message +routing implementation that is fast to initialise and use. Finally, we obtain the result of the flow and do +some tests on it. We also check the contents of node B's database to see that the flow had the intended effect +on the node's persistent state. + +Here's what ``makeTransactions`` looks like: + +.. literalinclude:: ../../core/src/test/kotlin/net/corda/core/flows/ResolveTransactionsFlowTest.kt + :language: kotlin + :start-after: DOCSTART 2 + :end-before: DOCEND 2 + +We're using the ``DummyContract``, a simple test smart contract which stores a single number in its states, along +with ownership and issuer information. You can issue such states, exit them and re-assign ownership (move them). +It doesn't do anything else. This code simply creates a transaction that issues a dummy state (the issuer is +``MEGA_CORP``, a pre-defined unit test identity), signs it with the test notary and MegaCorp keys and then +converts the builder to the final ``SignedTransaction``. It then does so again, but this time instead of issuing +it re-assigns ownership instead. The chain of two transactions is finally committed to node A by sending them +directly to the ``a.services.recordTransaction`` method (note that this method doesn't check the transactions are +valid) inside a ``databaseTransaction``. All node flows run within a database transaction in the nodes themselves, +but any time we need to use the database directly from a unit test, you need to provide a database transaction as shown +here. + +And that's it: you can explore the documentation for the `MockNode API `_ here. diff --git a/docs/build/html/_sources/index.txt b/docs/build/html/_sources/index.txt index 8da12fa870..112b1043ab 100644 --- a/docs/build/html/_sources/index.txt +++ b/docs/build/html/_sources/index.txt @@ -49,6 +49,7 @@ Read on to learn: persistence node-administration corda-configuration-files + corda-plugins node-services .. toctree:: @@ -67,6 +68,7 @@ Read on to learn: tutorial-test-dsl tutorial-clientrpc-api flow-state-machines + flow-testing oracles tutorial-attachments event-scheduling diff --git a/docs/build/html/_sources/node-administration.txt b/docs/build/html/_sources/node-administration.txt index 28651bc625..e950131de0 100644 --- a/docs/build/html/_sources/node-administration.txt +++ b/docs/build/html/_sources/node-administration.txt @@ -7,11 +7,14 @@ you can upload and download attachments, access a REST API and so on. Logging ------- -Logs are stored to the logs subdirectory of the node directory and are rotated from time to time. You can +In the default configuration logs are stored to the logs subdirectory of the node directory and are rotated from time to time. You can have logging printed to the console as well by passing the ``--log-to-console`` command line flag. Corda -uses the log4j2 framework to manage its logging, so you can also configure it in more detail by writing -a custom logging configuration file and passing ``-Dlog4j.configurationFile=my-config-file.xml`` on the -command line as well. +uses the SL4J logging façade which is configured with the log4j2 binding framework to manage its logging, +so you can also configure it in more detail by writing a custom log4j2 logging configuration file and passing ``-Dlog4j.configurationFile=my-config-file.xml`` +on the command line as well. The default configuration is copied during the build from ``config/dev/log4j2.xml``, or for the test sourceSet from ``config/test/log4j2.xml``. + +In corda code a logger is typically instantiated via the ``net.corda.core.utilities.loggerFor`` utility method which will create an SL4J ``Logger`` with a name based on the type parameter. +Also, available in ``net.corda.core.utilities``, are extension methods to take a lazily evaluated logging lambda for trace and debug level, which will not evaluate the lambda if the LogLevel threshold is higher. Database access --------------- diff --git a/docs/build/html/_sources/node-explorer.txt b/docs/build/html/_sources/node-explorer.txt index 18141dc460..b9152c9d6a 100644 --- a/docs/build/html/_sources/node-explorer.txt +++ b/docs/build/html/_sources/node-explorer.txt @@ -34,18 +34,19 @@ Running Demo Nodes Interface --------- Login - User can login to any Corda node using the explorer, alternately, `gradlew explorer:runDemoNodes` can be used to start up demo nodes for testing. + User can login to any Corda node using the explorer. Alternatively, ``gradlew explorer:runDemoNodes`` can be used to start up demo nodes for testing. Corda node address, username and password are required for login, the address is defaulted to localhost:0 if leave blank. - Username and password can be configured in node's configuration file; for demo nodes, it is defaulted to ``user1`` and ``test``. - + Username and password can be configured via the ``rpcUsers`` field in node's configuration file; for demo nodes, it is defaulted to ``user1`` and ``test``. + .. note:: If you are connecting to the demo nodes, only Alice and Bob (20004, 20006) are accessible using user1 credential, you won't be able to connect to the notary. .. image:: resources/explorer/login.png :scale: 50 % :align: center -Home - Home view shows the top level state of node and vault; currently, it shows your cash balance and the numbers of transaction executed. +Dashboard + The dashboard shows the top level state of node and vault. + Currently, it shows your cash balance and the numbers of transaction executed. The dashboard is intended to house widgets from different CordApp's and provide useful information to system admin at a glance. .. image:: resources/explorer/dashboard.png @@ -56,6 +57,13 @@ Cash .. image:: resources/explorer/vault.png +New cash transaction + This is where you can create new cash transactions. + The user can choose from three transaction types (issue, pay and exit) and any party visible on the network. + The result of the transaction will be visible in the transaction screen when executed. + +.. image:: resources/explorer/newTransaction.png + Transactions The transaction view contains all transactions handled by the node in a table view. It shows basic information on the table e.g. Transaction ID, command type, USD equivalence value etc. User can expand the row by double clicking to view the inputs, @@ -63,9 +71,17 @@ Transactions .. image:: resources/explorer/transactionView.png -New Transaction - This is where you can create new transaction; currently only the cash contract is supported. - The user can choose from three transaction types (issue, move and exit) and any party visible on the network. - The result of the transaction will be visible in the transaction screen when executed. +Network + The network view shows the network information on the world map. Currently only the user's node is rendered on the map. + This will be extended to other peers in a future release. + The map provides a intuitive way of visualizing the Corda network and the participants. -.. image:: resources/explorer/newTransaction.png +.. image:: resources/explorer/network.png + + +Settings + User can configure the client preference in this view. +.. note:: Although the reporting currency is configurable, FX conversion won't be applied to the values as we don't have an FX service yet. + + +.. image:: resources/explorer/settings.png diff --git a/docs/build/html/_sources/tutorial-contract.txt b/docs/build/html/_sources/tutorial-contract.txt index 63799f2f03..2db18bdf4f 100644 --- a/docs/build/html/_sources/tutorial-contract.txt +++ b/docs/build/html/_sources/tutorial-contract.txt @@ -7,28 +7,52 @@ Writing a contract ================== -This tutorial will take you through how the commercial paper contract works. This uses a simple contract structure of -everything being in one contract class, while most actual contracts in Corda are broken into clauses (which we'll -discuss in the next tutorial). Clauses help reduce tedious boilerplate, but it's worth understanding how a -contract is built without them before starting. +This tutorial will take you through writing a contract, using a simple commercial paper contract as an example. +Smart contracts in Corda have three key elements: -You can see the full Kotlin version of this contract in the code as ``CommercialPaperLegacy``. The code in this -tutorial is available in both Kotlin and Java. You can quickly switch between them to get a feeling for how -Kotlin syntax works. +* Executable code (validation logic) +* State objects +* Commands + +The core of a smart contract is the executable code which validates changes to state objects in transactions. State +objects are the data held on the ledger, which represent the current state of an instance of a contract, and are used as +inputs and outputs of transactions. Commands are additional data included in transactions to describe what is going on, +used to instruct the executable code on how to verify the transaction. For example an ``Issue`` command may indicate +that the validation logic should expect to see an output which does not exist as an input, issued by the same entity +that signed the command. + +The first thing to think about with a new contract is the lifecycle of contract states, how are they issued, what happens +to them after they are issued, and how are they destroyed (if applicable). For the commercial paper contract, states are +issued by a legal entity which wishes to create a contract to pay money in the future (the maturity date), in return for +a lesser payment now. They are then transferred (moved) to another owner as part of a transaction where the issuer +receives funds in payment, and later (after the maturity date) are destroyed (redeemed) by paying the owner the face +value of the commercial paper. + +This lifecycle for commercial paper is illustrated in the diagram below: + +.. image:: contract-cp.png Where to put your code ---------------------- -A CorDapp is a collection of contracts, state definitions, flows and other ways to extend the server. To create -one you would just create a Java-style project as normal, with your choice of build system (Maven, Gradle, etc). -Then add a dependency on ``net.corda.core:0.X`` where X is the milestone number you are depending on. The core -module defines the base classes used in this tutorial. +A CorDapp is a collection of contracts, state definitions, flows and other ways to extend the Corda platform. +To create one you would typically clone the CorDapp template project ("cordapp-template"), which provides an example +structure for the code. Alternatively you can just create a Java-style project as normal, with your choice of build +system (Maven, Gradle, etc), then add a dependency on ``net.corda.core:0.X`` where X is the milestone number you are +depending on. The core module defines the base classes used in this tutorial. Starting the commercial paper class ----------------------------------- -A smart contract is a class that implements the ``Contract`` interface. This can be either implemented directly, or -by subclassing an abstract contract such as ``OnLedgerAsset``. +A smart contract is a class that implements the ``Contract`` interface. This can be either implemented directly, as done +here, or by subclassing an abstract contract such as ``OnLedgerAsset``. The heart of any contract in Corda is the +``verify()`` function, which determined whether any given transaction is valid. This example shows how to write a +``verify()`` function from scratch. A later tutorial will introduce "clauses", which are reusable chunks of verification +logic, but first it's worth understanding how a contract is built without them. + +You can see the full Kotlin version of this contract in the code as ``CommercialPaperLegacy``. The code in this +tutorial is available in both Kotlin and Java. You can quickly switch between them to get a feeling for how +Kotlin syntax works. .. container:: codeset @@ -71,7 +95,10 @@ piece of issued paper. States ------ -A state is a class that stores data that is checked by the contract. +A state is a class that stores data that is checked by the contract. A commercial paper state is structured as below: + +.. image:: contract-cp-state.png + .. container:: codeset @@ -174,7 +201,7 @@ A state is a class that stores data that is checked by the contract. We define a class that implements the ``ContractState`` interface. The ``ContractState`` interface requires us to provide a ``getContract`` method that returns an instance of the -contract class itself. In future, this will change to support dynamic loading of contracts with versioning +contract class itself. In future, this may change to support dynamic loading of contracts with versioning and signing constraints, but for now this is how it's written. We have four fields in our state: @@ -202,8 +229,9 @@ The Java code compiles to almost identical bytecode as the Kotlin version, but a Commands -------- -The logic for a contract may vary depending on what stage of a lifecycle it is automating. So it can be useful to -pass additional data into the contract code that isn't represented by the states which exist permanently in the ledger. +The validation logic for a contract may vary depending on what stage of a state's lifecycle it is automating. So it can +be useful to pass additional data into the contract code that isn't represented by the states which exist permanently +in the ledger, in order to clarify intent of a transaction. For this purpose we have commands. Often they don't need to contain any data at all, they just need to exist. A command is a piece of data associated with some *signatures*. By the time the contract runs the signatures have already been diff --git a/docs/build/html/api/index-outline.html b/docs/build/html/api/index-outline.html index 95334d55eb..82fb30949b 100644 --- a/docs/build/html/api/index-outline.html +++ b/docs/build/html/api/index-outline.html @@ -684,6 +684,7 @@ protected fun parseKeyFromQueueName(name: String): CompositeKey
protected fun tcpTransport(direction: ConnectionDirection, host: String, port: Int): <ERROR CLASS>
fun toHostAndPort(target: MessageRecipients): <ERROR CLASS>
+protected fun toMyAddress(myIdentity: CompositeKey?, myHostPort: <ERROR CLASS>): SingleMessageRecipient
protected fun toQueueName(target: MessageRecipients): <ERROR CLASS>
@@ -696,7 +697,7 @@ -ArtemisMessagingServer(config: NodeConfiguration, myHostPort: <ERROR CLASS>, networkMapCache: NetworkMapCache, userService: RPCUserService)
+ArtemisMessagingServer(config: NodeConfiguration, myHostPort: <ERROR CLASS>, myIdentity: CompositeKey?, networkMapCache: NetworkMapCache, userService: RPCUserService)
class NodeLoginModule : LoginModule
@@ -4895,8 +4898,10 @@ NetworkIdentityModel()
-fun lookup(compositeKey: CompositeKey): NodeInfo?
+fun lookup(compositeKey: CompositeKey): ObservableValue<NodeInfo?>
+fun lookup(publicKey: PublicKey): ObservableValue<NodeInfo?>
val myIdentity: ObservableValue<NodeInfo?>
+val networkIdentities: ObservableList<NodeInfo>
val notaries: ObservableList<NodeInfo>
val parties: ObservableList<NodeInfo>
@@ -7050,7 +7055,7 @@ -class Requirements
+object Requirements
@@ -9720,6 +9724,7 @@ fun <A, B> ObservableValue<out A>.bind(function: (A) -> ObservableValue<B>): ObservableValue<B>
fun <A, B> ObservableValue<out A>.bindOut(function: (A) -> ObservableValue<out B>): ObservableValue<out B>
+fun ObservableValue<*>.isNotNull(): BooleanBinding
fun <A, B> ObservableValue<out A>.map(function: (A) -> B): ObservableValue<B>
@@ -9740,6 +9745,8 @@ fun <A> ObservableList<out A>.filter(predicate: ObservableValue<(A) -> Boolean>): ObservableList<A>
fun <A> ObservableList<out A?>.filterNotNull(): ObservableList<A>
fun <A> ObservableList<A>.first(): ObservableValue<A?>
+fun <A> ObservableList<A>.firstOrDefault(default: ObservableValue<A?>, predicate: (A) -> Boolean): ObservableValue<A?>
+fun <A> ObservableList<A>.firstOrNullObservable(predicate: (A) -> Boolean): ObservableValue<A?>
fun <A> ObservableList<out ObservableValue<out A>>.flatten(): ObservableList<A>
fun <A, B> ObservableList<out A>.foldObservable(initial: B, folderFunction: (B, A) -> B): ObservableValue<B>
fun <A> ObservableList<A>.getValueAt(index: Int): ObservableValue<A?>
@@ -10314,6 +10321,7 @@ fun <A, B> ObservableValue<out A>.bind(function: (A) -> ObservableValue<B>): ObservableValue<B>
fun <A, B> ObservableValue<out A>.bindOut(function: (A) -> ObservableValue<out B>): ObservableValue<out B>
+fun ObservableValue<*>.isNotNull(): BooleanBinding
fun <A, B> ObservableValue<out A>.map(function: (A) -> B): ObservableValue<B>
@@ -10334,6 +10342,8 @@ fun <A> ObservableList<out A>.filter(predicate: ObservableValue<(A) -> Boolean>): ObservableList<A>
fun <A> ObservableList<out A?>.filterNotNull(): ObservableList<A>
fun <A> ObservableList<A>.first(): ObservableValue<A?>
+fun <A> ObservableList<A>.firstOrDefault(default: ObservableValue<A?>, predicate: (A) -> Boolean): ObservableValue<A?>
+fun <A> ObservableList<A>.firstOrNullObservable(predicate: (A) -> Boolean): ObservableValue<A?>
fun <A> ObservableList<out ObservableValue<out A>>.flatten(): ObservableList<A>
fun <A, B> ObservableList<out A>.foldObservable(initial: B, folderFunction: (B, A) -> B): ObservableValue<B>
fun <A> ObservableList<A>.getValueAt(index: Int): ObservableValue<A?>
@@ -10469,8 +10479,9 @@ EventGenerator(parties: List<Party>, notary: Party)
val amountGenerator: <ERROR CLASS>
val amountIssuedGenerator: <ERROR CLASS>
+val bankOfCordaCommandGenerator: <ERROR CLASS>
val cashStateGenerator: <ERROR CLASS>
-val clientToServiceCommandGenerator: <ERROR CLASS>
+val clientCommandGenerator: <ERROR CLASS>
val consumedGenerator: Generator<Set<StateRef>>
val currencies: <ERROR CLASS>
val currencyGenerator: <ERROR CLASS>
@@ -10635,7 +10646,7 @@ GatheredTransactionDataModel()
-val gatheredTransactionDataList: <ERROR CLASS>
+val partiallyResolvedTransactions: <ERROR CLASS>
@@ -10662,8 +10673,10 @@ NetworkIdentityModel()
-fun lookup(compositeKey: CompositeKey): NodeInfo?
+fun lookup(compositeKey: CompositeKey): ObservableValue<NodeInfo?>
+fun lookup(publicKey: PublicKey): ObservableValue<NodeInfo?>
val myIdentity: ObservableValue<NodeInfo?>
+val networkIdentities: ObservableList<NodeInfo>
val notaries: ObservableList<NodeInfo>
val parties: ObservableList<NodeInfo>
@@ -13236,8 +13249,7 @@ -val R: Requirements
-class Requirements
+object Requirements
@@ -18525,6 +18536,7 @@ protected fun parseKeyFromQueueName(name: String): CompositeKey
protected fun tcpTransport(direction: ConnectionDirection, host: String, port: Int): <ERROR CLASS>
fun toHostAndPort(target: MessageRecipients): <ERROR CLASS>
+protected fun toMyAddress(myIdentity: CompositeKey?, myHostPort: <ERROR CLASS>): SingleMessageRecipient
protected fun toQueueName(target: MessageRecipients): <ERROR CLASS>
@@ -18537,7 +18549,7 @@ -ArtemisMessagingServer(config: NodeConfiguration, myHostPort: <ERROR CLASS>, networkMapCache: NetworkMapCache, userService: RPCUserService)
+ArtemisMessagingServer(config: NodeConfiguration, myHostPort: <ERROR CLASS>, myIdentity: CompositeKey?, networkMapCache: NetworkMapCache, userService: RPCUserService)
class NodeLoginModule : LoginModule
    @@ -18559,6 +18571,7 @@ fun bridgeToNetworkMapService(networkMapService: SingleMessageRecipient?): Unit
    val config: NodeConfiguration
    val myHostPort: <ERROR CLASS>
    +val myIdentity: CompositeKey?
    val networkMapCache: NetworkMapCache
    fun start(): Unit
    fun stop(): Unit
    diff --git a/docs/build/html/api/net.corda.client.fxutils/-aggregated-list/index.html b/docs/build/html/api/net.corda.client.fxutils/-aggregated-list/index.html index 222f023576..131ebfd251 100644 --- a/docs/build/html/api/net.corda.client.fxutils/-aggregated-list/index.html +++ b/docs/build/html/api/net.corda.client.fxutils/-aggregated-list/index.html @@ -151,6 +151,22 @@ val owners: ObservableList = dogs.map(Dog::owner).filterNotNull()

    +firstOrDefault + +fun <A> ObservableList<A>.firstOrDefault(default: ObservableValue<A?>, predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return provided default value if the list is empty.

    + + + + +firstOrNullObservable + +fun <A> ObservableList<A>.firstOrNullObservable(predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return ObservableValue(null) if the list is empty.

    + + + + foldObservable fun <A, B> ObservableList<out A>.foldObservable(initial: B, folderFunction: (B, A) -> B): ObservableValue<B>

    val people: ObservableList = (..) diff --git a/docs/build/html/api/net.corda.client.fxutils/-chosen-list/index.html b/docs/build/html/api/net.corda.client.fxutils/-chosen-list/index.html index 8571040058..5e73e5da1d 100644 --- a/docs/build/html/api/net.corda.client.fxutils/-chosen-list/index.html +++ b/docs/build/html/api/net.corda.client.fxutils/-chosen-list/index.html @@ -108,6 +108,22 @@ val owners: ObservableList = dogs.map(Dog::owner).filterNotNull()

    +firstOrDefault + +fun <A> ObservableList<A>.firstOrDefault(default: ObservableValue<A?>, predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return provided default value if the list is empty.

    + + + + +firstOrNullObservable + +fun <A> ObservableList<A>.firstOrNullObservable(predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return ObservableValue(null) if the list is empty.

    + + + + foldObservable fun <A, B> ObservableList<out A>.foldObservable(initial: B, folderFunction: (B, A) -> B): ObservableValue<B>

    val people: ObservableList = (..) diff --git a/docs/build/html/api/net.corda.client.fxutils/-concatenated-list/index.html b/docs/build/html/api/net.corda.client.fxutils/-concatenated-list/index.html index b2a9656dd1..771a2102e7 100644 --- a/docs/build/html/api/net.corda.client.fxutils/-concatenated-list/index.html +++ b/docs/build/html/api/net.corda.client.fxutils/-concatenated-list/index.html @@ -110,6 +110,22 @@ val owners: ObservableList = dogs.map(Dog::owner).filterNotNull()

    +firstOrDefault + +fun <A> ObservableList<A>.firstOrDefault(default: ObservableValue<A?>, predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return provided default value if the list is empty.

    + + + + +firstOrNullObservable + +fun <A> ObservableList<A>.firstOrNullObservable(predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return ObservableValue(null) if the list is empty.

    + + + + foldObservable fun <A, B> ObservableList<out A>.foldObservable(initial: B, folderFunction: (B, A) -> B): ObservableValue<B>

    val people: ObservableList = (..) diff --git a/docs/build/html/api/net.corda.client.fxutils/-flattened-list/index.html b/docs/build/html/api/net.corda.client.fxutils/-flattened-list/index.html index 533ac3b9bf..5484a47566 100644 --- a/docs/build/html/api/net.corda.client.fxutils/-flattened-list/index.html +++ b/docs/build/html/api/net.corda.client.fxutils/-flattened-list/index.html @@ -136,6 +136,22 @@ val owners: ObservableList = dogs.map(Dog::owner).filterNotNull()

    +firstOrDefault + +fun <A> ObservableList<A>.firstOrDefault(default: ObservableValue<A?>, predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return provided default value if the list is empty.

    + + + + +firstOrNullObservable + +fun <A> ObservableList<A>.firstOrNullObservable(predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return ObservableValue(null) if the list is empty.

    + + + + foldObservable fun <A, B> ObservableList<out A>.foldObservable(initial: B, folderFunction: (B, A) -> B): ObservableValue<B>

    val people: ObservableList = (..) diff --git a/docs/build/html/api/net.corda.client.fxutils/-map-values-list/index.html b/docs/build/html/api/net.corda.client.fxutils/-map-values-list/index.html index 6899d6ba06..8560314b65 100644 --- a/docs/build/html/api/net.corda.client.fxutils/-map-values-list/index.html +++ b/docs/build/html/api/net.corda.client.fxutils/-map-values-list/index.html @@ -86,6 +86,22 @@ val owners: ObservableList = dogs.map(Dog::owner).filterNotNull()

    +firstOrDefault + +fun <A> ObservableList<A>.firstOrDefault(default: ObservableValue<A?>, predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return provided default value if the list is empty.

    + + + + +firstOrNullObservable + +fun <A> ObservableList<A>.firstOrNullObservable(predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return ObservableValue(null) if the list is empty.

    + + + + foldObservable fun <A, B> ObservableList<out A>.foldObservable(initial: B, folderFunction: (B, A) -> B): ObservableValue<B>

    val people: ObservableList = (..) diff --git a/docs/build/html/api/net.corda.client.fxutils/-mapped-list/index.html b/docs/build/html/api/net.corda.client.fxutils/-mapped-list/index.html index 91864018a2..8232eb6657 100644 --- a/docs/build/html/api/net.corda.client.fxutils/-mapped-list/index.html +++ b/docs/build/html/api/net.corda.client.fxutils/-mapped-list/index.html @@ -118,6 +118,22 @@ val owners: ObservableList = dogs.map(Dog::owner).filterNotNull()

    +firstOrDefault + +fun <A> ObservableList<A>.firstOrDefault(default: ObservableValue<A?>, predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return provided default value if the list is empty.

    + + + + +firstOrNullObservable + +fun <A> ObservableList<A>.firstOrNullObservable(predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return ObservableValue(null) if the list is empty.

    + + + + foldObservable fun <A, B> ObservableList<out A>.foldObservable(initial: B, folderFunction: (B, A) -> B): ObservableValue<B>

    val people: ObservableList = (..) diff --git a/docs/build/html/api/net.corda.client.fxutils/-replayed-list/index.html b/docs/build/html/api/net.corda.client.fxutils/-replayed-list/index.html index 1bb7bb49fe..febe76758f 100644 --- a/docs/build/html/api/net.corda.client.fxutils/-replayed-list/index.html +++ b/docs/build/html/api/net.corda.client.fxutils/-replayed-list/index.html @@ -116,6 +116,22 @@ val owners: ObservableList = dogs.map(Dog::owner).filterNotNull()

    +firstOrDefault + +fun <A> ObservableList<A>.firstOrDefault(default: ObservableValue<A?>, predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return provided default value if the list is empty.

    + + + + +firstOrNullObservable + +fun <A> ObservableList<A>.firstOrNullObservable(predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return ObservableValue(null) if the list is empty.

    + + + + foldObservable fun <A, B> ObservableList<out A>.foldObservable(initial: B, folderFunction: (B, A) -> B): ObservableValue<B>

    val people: ObservableList = (..) diff --git a/docs/build/html/api/net.corda.client.fxutils/javafx.beans.value.-observable-value/index.html b/docs/build/html/api/net.corda.client.fxutils/javafx.beans.value.-observable-value/index.html index 343e330fa2..4241ff19dc 100644 --- a/docs/build/html/api/net.corda.client.fxutils/javafx.beans.value.-observable-value/index.html +++ b/docs/build/html/api/net.corda.client.fxutils/javafx.beans.value.-observable-value/index.html @@ -28,6 +28,12 @@ propagate variance constraints and type inference fails.

    +isNotNull + +fun ObservableValue<*>.isNotNull(): BooleanBinding + + + map fun <A, B> ObservableValue<out A>.map(function: (A) -> B): ObservableValue<B>

    val person: ObservableValue = (..) diff --git a/docs/build/html/api/net.corda.client.fxutils/javafx.beans.value.-observable-value/is-not-null.html b/docs/build/html/api/net.corda.client.fxutils/javafx.beans.value.-observable-value/is-not-null.html new file mode 100644 index 0000000000..565247656d --- /dev/null +++ b/docs/build/html/api/net.corda.client.fxutils/javafx.beans.value.-observable-value/is-not-null.html @@ -0,0 +1,15 @@ + + +isNotNull - + + + +net.corda.client.fxutils / javafx.beans.value.ObservableValue / isNotNull
    +
    +

    isNotNull

    + +fun ObservableValue<*>.isNotNull(): BooleanBinding
    +
    +
    + + diff --git a/docs/build/html/api/net.corda.client.fxutils/javafx.collections.-observable-list/first-or-default.html b/docs/build/html/api/net.corda.client.fxutils/javafx.collections.-observable-list/first-or-default.html new file mode 100644 index 0000000000..4726f3d268 --- /dev/null +++ b/docs/build/html/api/net.corda.client.fxutils/javafx.collections.-observable-list/first-or-default.html @@ -0,0 +1,17 @@ + + +firstOrDefault - + + + +net.corda.client.fxutils / javafx.collections.ObservableList / firstOrDefault
    +
    +

    firstOrDefault

    + +fun <A> ObservableList<A>.firstOrDefault(default: ObservableValue<A?>, predicate: (A) -> Boolean): ObservableValue<A?>
    +

    Return first element of the observable list as observable value. +Return provided default value if the list is empty.

    +
    +
    + + diff --git a/docs/build/html/api/net.corda.client.fxutils/javafx.collections.-observable-list/first-or-null-observable.html b/docs/build/html/api/net.corda.client.fxutils/javafx.collections.-observable-list/first-or-null-observable.html new file mode 100644 index 0000000000..0db4181f44 --- /dev/null +++ b/docs/build/html/api/net.corda.client.fxutils/javafx.collections.-observable-list/first-or-null-observable.html @@ -0,0 +1,17 @@ + + +firstOrNullObservable - + + + +net.corda.client.fxutils / javafx.collections.ObservableList / firstOrNullObservable
    +
    +

    firstOrNullObservable

    + +fun <A> ObservableList<A>.firstOrNullObservable(predicate: (A) -> Boolean): ObservableValue<A?>
    +

    Return first element of the observable list as observable value. +Return ObservableValue(null) if the list is empty.

    +
    +
    + + diff --git a/docs/build/html/api/net.corda.client.fxutils/javafx.collections.-observable-list/index.html b/docs/build/html/api/net.corda.client.fxutils/javafx.collections.-observable-list/index.html index b4012b10c9..2f4b3a8665 100644 --- a/docs/build/html/api/net.corda.client.fxutils/javafx.collections.-observable-list/index.html +++ b/docs/build/html/api/net.corda.client.fxutils/javafx.collections.-observable-list/index.html @@ -65,6 +65,22 @@ val owners: ObservableList = dogs.map(Dog::owner).filterNotNull()

    +firstOrDefault + +fun <A> ObservableList<A>.firstOrDefault(default: ObservableValue<A?>, predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return provided default value if the list is empty.

    + + + + +firstOrNullObservable + +fun <A> ObservableList<A>.firstOrNullObservable(predicate: (A) -> Boolean): ObservableValue<A?>

    Return first element of the observable list as observable value. +Return ObservableValue(null) if the list is empty.

    + + + + flatten fun <A> ObservableList<out ObservableValue<out A>>.flatten(): ObservableList<A>

    data class Person(val height: ObservableValue) diff --git a/docs/build/html/api/net.corda.client.mock/-event-generator/bank-of-corda-command-generator.html b/docs/build/html/api/net.corda.client.mock/-event-generator/bank-of-corda-command-generator.html new file mode 100644 index 0000000000..88a0ae9782 --- /dev/null +++ b/docs/build/html/api/net.corda.client.mock/-event-generator/bank-of-corda-command-generator.html @@ -0,0 +1,15 @@ + + +EventGenerator.bankOfCordaCommandGenerator - + + + +net.corda.client.mock / EventGenerator / bankOfCordaCommandGenerator
    +
    +

    bankOfCordaCommandGenerator

    + +val bankOfCordaCommandGenerator: <ERROR CLASS>
    +
    +
    + + diff --git a/docs/build/html/api/net.corda.client.mock/-event-generator/client-command-generator.html b/docs/build/html/api/net.corda.client.mock/-event-generator/client-command-generator.html new file mode 100644 index 0000000000..d477078bce --- /dev/null +++ b/docs/build/html/api/net.corda.client.mock/-event-generator/client-command-generator.html @@ -0,0 +1,15 @@ + + +EventGenerator.clientCommandGenerator - + + + +net.corda.client.mock / EventGenerator / clientCommandGenerator
    +
    +

    clientCommandGenerator

    + +val clientCommandGenerator: <ERROR CLASS>
    +
    +
    + + diff --git a/docs/build/html/api/net.corda.client.mock/-event-generator/index.html b/docs/build/html/api/net.corda.client.mock/-event-generator/index.html index 1ec658733e..3e0003b6d7 100644 --- a/docs/build/html/api/net.corda.client.mock/-event-generator/index.html +++ b/docs/build/html/api/net.corda.client.mock/-event-generator/index.html @@ -42,15 +42,21 @@ state/ref pairs, but it doesnt necessarily generate "correct" events

    +bankOfCordaCommandGenerator + +val bankOfCordaCommandGenerator: <ERROR CLASS> + + + cashStateGenerator val cashStateGenerator: <ERROR CLASS> -clientToServiceCommandGenerator +clientCommandGenerator -val clientToServiceCommandGenerator: <ERROR CLASS> +val clientCommandGenerator: <ERROR CLASS> diff --git a/docs/build/html/api/net.corda.client.model/-gathered-transaction-data-model/index.html b/docs/build/html/api/net.corda.client.model/-gathered-transaction-data-model/index.html index 3da60fd7cb..713b17e777 100644 --- a/docs/build/html/api/net.corda.client.model/-gathered-transaction-data-model/index.html +++ b/docs/build/html/api/net.corda.client.model/-gathered-transaction-data-model/index.html @@ -28,10 +28,9 @@ -gatheredTransactionDataList +partiallyResolvedTransactions -val gatheredTransactionDataList: <ERROR CLASS>

    We JOIN the transaction list with state machines

    - +val partiallyResolvedTransactions: <ERROR CLASS> diff --git a/docs/build/html/api/net.corda.client.model/-gathered-transaction-data-model/partially-resolved-transactions.html b/docs/build/html/api/net.corda.client.model/-gathered-transaction-data-model/partially-resolved-transactions.html new file mode 100644 index 0000000000..5ad3cd7a4c --- /dev/null +++ b/docs/build/html/api/net.corda.client.model/-gathered-transaction-data-model/partially-resolved-transactions.html @@ -0,0 +1,15 @@ + + +GatheredTransactionDataModel.partiallyResolvedTransactions - + + + +net.corda.client.model / GatheredTransactionDataModel / partiallyResolvedTransactions
    +
    +

    partiallyResolvedTransactions

    + +val partiallyResolvedTransactions: <ERROR CLASS>
    +
    +
    + + diff --git a/docs/build/html/api/net.corda.client.model/-network-identity-model/index.html b/docs/build/html/api/net.corda.client.model/-network-identity-model/index.html index 8ea5d97f4b..b6e499b007 100644 --- a/docs/build/html/api/net.corda.client.model/-network-identity-model/index.html +++ b/docs/build/html/api/net.corda.client.model/-network-identity-model/index.html @@ -32,6 +32,12 @@ +networkIdentities + +val networkIdentities: ObservableList<NodeInfo> + + + notaries val notaries: ObservableList<NodeInfo> @@ -51,7 +57,8 @@ lookup -fun lookup(compositeKey: CompositeKey): NodeInfo? +fun lookup(compositeKey: CompositeKey): ObservableValue<NodeInfo?>
    +fun lookup(publicKey: PublicKey): ObservableValue<NodeInfo?> diff --git a/docs/build/html/api/net.corda.client.model/-network-identity-model/lookup.html b/docs/build/html/api/net.corda.client.model/-network-identity-model/lookup.html index a682869315..50c3995f7e 100644 --- a/docs/build/html/api/net.corda.client.model/-network-identity-model/lookup.html +++ b/docs/build/html/api/net.corda.client.model/-network-identity-model/lookup.html @@ -8,7 +8,9 @@

    lookup

    -fun lookup(compositeKey: CompositeKey): NodeInfo?
    +fun lookup(compositeKey: CompositeKey): ObservableValue<NodeInfo?>
    + +fun lookup(publicKey: PublicKey): ObservableValue<NodeInfo?>


    diff --git a/docs/build/html/api/net.corda.client.model/-network-identity-model/network-identities.html b/docs/build/html/api/net.corda.client.model/-network-identity-model/network-identities.html new file mode 100644 index 0000000000..1d67baa658 --- /dev/null +++ b/docs/build/html/api/net.corda.client.model/-network-identity-model/network-identities.html @@ -0,0 +1,15 @@ + + +NetworkIdentityModel.networkIdentities - + + + +net.corda.client.model / NetworkIdentityModel / networkIdentities
    +
    +

    networkIdentities

    + +val networkIdentities: ObservableList<NodeInfo>
    +
    +
    + + diff --git a/docs/build/html/api/net.corda.core.contracts/-requirements/by.html b/docs/build/html/api/net.corda.core.contracts/-requirements/by.html index 4a3c5b3f07..da04f15262 100644 --- a/docs/build/html/api/net.corda.core.contracts/-requirements/by.html +++ b/docs/build/html/api/net.corda.core.contracts/-requirements/by.html @@ -8,7 +8,7 @@

    by

    -infix fun String.by(expr: Boolean): Unit
    +inline infix fun String.by(expr: Boolean): Unit


    diff --git a/docs/build/html/api/net.corda.core.contracts/-requirements/index.html b/docs/build/html/api/net.corda.core.contracts/-requirements/index.html index 5fe2179d24..e3431f8403 100644 --- a/docs/build/html/api/net.corda.core.contracts/-requirements/index.html +++ b/docs/build/html/api/net.corda.core.contracts/-requirements/index.html @@ -7,20 +7,9 @@ net.corda.core.contracts / Requirements

    Requirements

    -class Requirements
    +object Requirements


    -

    Constructors

    - - - - - - - -
    -<init> -Requirements()

    Functions

    diff --git a/docs/build/html/api/net.corda.core.contracts/index.html b/docs/build/html/api/net.corda.core.contracts/index.html index e8812380fa..264a4377ea 100644 --- a/docs/build/html/api/net.corda.core.contracts/index.html +++ b/docs/build/html/api/net.corda.core.contracts/index.html @@ -314,7 +314,7 @@ ledger. The reference is intended to be encrypted so its meaningless to anyone o +object Requirements - - - - diff --git a/docs/build/html/api/net.corda.flows/-abstract-state-replacement-flow/-acceptor/index.html b/docs/build/html/api/net.corda.flows/-abstract-state-replacement-flow/-acceptor/index.html index ae3482b3e4..6157f42f0b 100644 --- a/docs/build/html/api/net.corda.flows/-abstract-state-replacement-flow/-acceptor/index.html +++ b/docs/build/html/api/net.corda.flows/-abstract-state-replacement-flow/-acceptor/index.html @@ -130,8 +130,8 @@ will do as long as the other side registers with it.

    +fun <T : Any> receive(otherParty: Party): UntrustworthyData<T>
    +fun <T : Any> receive(otherParty: Party, receiveType: Class<T>): UntrustworthyData<T> +fun <T : Any> receive(otherParty: Party, receiveType: Class<T>): UntrustworthyData<T>
    +fun <T : Any> receive(otherParty: Party): UntrustworthyData<T> +fun <T : Any> receive(otherParty: Party): UntrustworthyData<T>
    +fun <T : Any> receive(otherParty: Party, receiveType: Class<T>): UntrustworthyData<T> +fun <T : Any> sendAndReceive(otherParty: Party, payload: Any): UntrustworthyData<T>
    +fun <T : Any> sendAndReceive(otherParty: Party, payload: Any, receiveType: Class<T>): UntrustworthyData<T> +fun <T : Any> receive(otherParty: Party, receiveType: Class<T>): UntrustworthyData<T>
    +fun <T : Any> receive(otherParty: Party): UntrustworthyData<T> +fun <T : Any> sendAndReceive(otherParty: Party, payload: Any, receiveType: Class<T>): UntrustworthyData<T>
    +fun <T : Any> sendAndReceive(otherParty: Party, payload: Any): UntrustworthyData<T> +fun <T : Any> receive(otherParty: Party): UntrustworthyData<T>
    +fun <T : Any> receive(otherParty: Party, receiveType: Class<T>): UntrustworthyData<T> +fun <T : Any> sendAndReceive(otherParty: Party, payload: Any): UntrustworthyData<T>
    +fun <T : Any> sendAndReceive(otherParty: Party, payload: Any, receiveType: Class<T>): UntrustworthyData<T> +fun <T : Any> sendAndReceive(otherParty: Party, payload: Any, receiveType: Class<T>): UntrustworthyData<T>
    +fun <T : Any> sendAndReceive(otherParty: Party, payload: Any): UntrustworthyData<T> +fun <T : Any> receive(otherParty: Party, receiveType: Class<T>): UntrustworthyData<T>
    +fun <T : Any> receive(otherParty: Party): UntrustworthyData<T> +fun <T : Any> sendAndReceive(otherParty: Party, payload: Any, receiveType: Class<T>): UntrustworthyData<T>
    +fun <T : Any> sendAndReceive(otherParty: Party, payload: Any): UntrustworthyData<T> +fun <T : Any> sendAndReceive(otherParty: Party, payload: Any): UntrustworthyData<T>
    +fun <T : Any> sendAndReceive(otherParty: Party, payload: Any, receiveType: Class<T>): UntrustworthyData<T> + + + + @@ -59,6 +59,12 @@ a fully connected network, trusted network or on localhost.

    + + + + diff --git a/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-server/my-identity.html b/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-server/my-identity.html new file mode 100644 index 0000000000..3c863f744a --- /dev/null +++ b/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-server/my-identity.html @@ -0,0 +1,15 @@ + + +ArtemisMessagingServer.myIdentity - + + + +net.corda.node.services.messaging / ArtemisMessagingServer / myIdentity
    +
    +

    myIdentity

    + +val myIdentity: CompositeKey?
    +
    +
    + + diff --git a/docs/build/html/api/net.corda.node.services.persistence/-data-vending/-service/-notify-transaction-handler/index.html b/docs/build/html/api/net.corda.node.services.persistence/-data-vending/-service/-notify-transaction-handler/index.html index cd011b3d7a..b247856190 100644 --- a/docs/build/html/api/net.corda.node.services.persistence/-data-vending/-service/-notify-transaction-handler/index.html +++ b/docs/build/html/api/net.corda.node.services.persistence/-data-vending/-service/-notify-transaction-handler/index.html @@ -98,8 +98,8 @@ will do as long as the other side registers with it.

    +fun <T : Any> receive(otherParty: Party): UntrustworthyData<T>
    +fun <T : Any> receive(otherParty: Party, receiveType: Class<T>): UntrustworthyData<T> +fun <T : Any> sendAndReceive(otherParty: Party, payload: Any): UntrustworthyData<T>
    +fun <T : Any> sendAndReceive(otherParty: Party, payload: Any, receiveType: Class<T>): UntrustworthyData<T>
    Requirements -class Requirements
    @@ -529,12 +529,6 @@ different external IDs, it would indicate a problem with handling of IDs.

    -R -val R: Requirements
    USD val USD: Currency receive -fun <T : Any> receive(otherParty: Party, receiveType: Class<T>): UntrustworthyData<T>
    -fun <T : Any> receive(otherParty: Party): UntrustworthyData<T>
    diff --git a/docs/build/html/api/net.corda.flows/-abstract-state-replacement-flow/-instigator/index.html b/docs/build/html/api/net.corda.flows/-abstract-state-replacement-flow/-instigator/index.html index bbcd10bf4d..a8b9523304 100644 --- a/docs/build/html/api/net.corda.flows/-abstract-state-replacement-flow/-instigator/index.html +++ b/docs/build/html/api/net.corda.flows/-abstract-state-replacement-flow/-instigator/index.html @@ -133,8 +133,8 @@ will do as long as the other side registers with it.

    receive -fun <T : Any> receive(otherParty: Party): UntrustworthyData<T>
    -fun <T : Any> receive(otherParty: Party, receiveType: Class<T>): UntrustworthyData<T>
    diff --git a/docs/build/html/api/net.corda.flows/-broadcast-transaction-flow/index.html b/docs/build/html/api/net.corda.flows/-broadcast-transaction-flow/index.html index 26122ec185..7d2a266813 100644 --- a/docs/build/html/api/net.corda.flows/-broadcast-transaction-flow/index.html +++ b/docs/build/html/api/net.corda.flows/-broadcast-transaction-flow/index.html @@ -127,8 +127,8 @@ will do as long as the other side registers with it.

    receive -fun <T : Any> receive(otherParty: Party, receiveType: Class<T>): UntrustworthyData<T>
    -fun <T : Any> receive(otherParty: Party): UntrustworthyData<T>
    @@ -140,8 +140,8 @@ will do as long as the other side registers with it.

    sendAndReceive -fun <T : Any> sendAndReceive(otherParty: Party, payload: Any, receiveType: Class<T>): UntrustworthyData<T>
    -fun <T : Any> sendAndReceive(otherParty: Party, payload: Any): UntrustworthyData<T>
    diff --git a/docs/build/html/api/net.corda.flows/-cash-flow/index.html b/docs/build/html/api/net.corda.flows/-cash-flow/index.html index df702c4435..e0947f12b9 100644 --- a/docs/build/html/api/net.corda.flows/-cash-flow/index.html +++ b/docs/build/html/api/net.corda.flows/-cash-flow/index.html @@ -103,8 +103,8 @@ will do as long as the other side registers with it.

    receive -fun <T : Any> receive(otherParty: Party): UntrustworthyData<T>
    -fun <T : Any> receive(otherParty: Party, receiveType: Class<T>): UntrustworthyData<T>
    @@ -116,8 +116,8 @@ will do as long as the other side registers with it.

    sendAndReceive -fun <T : Any> sendAndReceive(otherParty: Party, payload: Any): UntrustworthyData<T>
    -fun <T : Any> sendAndReceive(otherParty: Party, payload: Any, receiveType: Class<T>): UntrustworthyData<T>
    diff --git a/docs/build/html/api/net.corda.flows/-fetch-data-flow/index.html b/docs/build/html/api/net.corda.flows/-fetch-data-flow/index.html index d2db1e192d..d7747a3355 100644 --- a/docs/build/html/api/net.corda.flows/-fetch-data-flow/index.html +++ b/docs/build/html/api/net.corda.flows/-fetch-data-flow/index.html @@ -179,8 +179,8 @@ will do as long as the other side registers with it.

    receive -fun <T : Any> receive(otherParty: Party, receiveType: Class<T>): UntrustworthyData<T>
    -fun <T : Any> receive(otherParty: Party): UntrustworthyData<T>
    diff --git a/docs/build/html/api/net.corda.flows/-notary-flow/-client/index.html b/docs/build/html/api/net.corda.flows/-notary-flow/-client/index.html index e0b30e6d45..45b1c8c178 100644 --- a/docs/build/html/api/net.corda.flows/-notary-flow/-client/index.html +++ b/docs/build/html/api/net.corda.flows/-notary-flow/-client/index.html @@ -136,8 +136,8 @@ will do as long as the other side registers with it.

    sendAndReceive -fun <T : Any> sendAndReceive(otherParty: Party, payload: Any, receiveType: Class<T>): UntrustworthyData<T>
    -fun <T : Any> sendAndReceive(otherParty: Party, payload: Any): UntrustworthyData<T>
    diff --git a/docs/build/html/api/net.corda.flows/-notary-flow/-service/index.html b/docs/build/html/api/net.corda.flows/-notary-flow/-service/index.html index 5a7011870a..3ade5fe2a3 100644 --- a/docs/build/html/api/net.corda.flows/-notary-flow/-service/index.html +++ b/docs/build/html/api/net.corda.flows/-notary-flow/-service/index.html @@ -143,8 +143,8 @@ will do as long as the other side registers with it.

    sendAndReceive -fun <T : Any> sendAndReceive(otherParty: Party, payload: Any): UntrustworthyData<T>
    -fun <T : Any> sendAndReceive(otherParty: Party, payload: Any, receiveType: Class<T>): UntrustworthyData<T>
    diff --git a/docs/build/html/api/net.corda.flows/-two-party-deal-flow/-primary/index.html b/docs/build/html/api/net.corda.flows/-two-party-deal-flow/-primary/index.html index fed98421a0..897945ad65 100644 --- a/docs/build/html/api/net.corda.flows/-two-party-deal-flow/-primary/index.html +++ b/docs/build/html/api/net.corda.flows/-two-party-deal-flow/-primary/index.html @@ -187,8 +187,8 @@ will do as long as the other side registers with it.

    receive -fun <T : Any> receive(otherParty: Party): UntrustworthyData<T>
    -fun <T : Any> receive(otherParty: Party, receiveType: Class<T>): UntrustworthyData<T>
    @@ -200,8 +200,8 @@ will do as long as the other side registers with it.

    sendAndReceive -fun <T : Any> sendAndReceive(otherParty: Party, payload: Any): UntrustworthyData<T>
    -fun <T : Any> sendAndReceive(otherParty: Party, payload: Any, receiveType: Class<T>): UntrustworthyData<T>
    diff --git a/docs/build/html/api/net.corda.flows/-two-party-trade-flow/-buyer/index.html b/docs/build/html/api/net.corda.flows/-two-party-trade-flow/-buyer/index.html index cb25d01851..2297fa134a 100644 --- a/docs/build/html/api/net.corda.flows/-two-party-trade-flow/-buyer/index.html +++ b/docs/build/html/api/net.corda.flows/-two-party-trade-flow/-buyer/index.html @@ -158,8 +158,8 @@ will do as long as the other side registers with it.

    sendAndReceive -fun <T : Any> sendAndReceive(otherParty: Party, payload: Any, receiveType: Class<T>): UntrustworthyData<T>
    -fun <T : Any> sendAndReceive(otherParty: Party, payload: Any): UntrustworthyData<T>
    diff --git a/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-component/index.html b/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-component/index.html index 253250541d..08156dc6fb 100644 --- a/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-component/index.html +++ b/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-component/index.html @@ -158,6 +158,13 @@ N.B. Marked as JvmStatic to allow use in the inherited classes.

    +toMyAddress +fun toMyAddress(myIdentity: CompositeKey?, myHostPort: <ERROR CLASS>): SingleMessageRecipient

    Convert the identity, host and port of this node into the appropriate SingleMessageRecipient.

    +
    toQueueName fun toQueueName(target: MessageRecipients): <ERROR CLASS>

    Assuming the passed in target address is actually an ArtemisAddress will extract the queue name used. diff --git a/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-component/to-my-address.html b/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-component/to-my-address.html new file mode 100644 index 0000000000..5912df4fd9 --- /dev/null +++ b/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-component/to-my-address.html @@ -0,0 +1,19 @@ + + +ArtemisMessagingComponent.toMyAddress - + + + +net.corda.node.services.messaging / ArtemisMessagingComponent / toMyAddress
    +
    +

    toMyAddress

    + +protected fun toMyAddress(myIdentity: CompositeKey?, myHostPort: <ERROR CLASS>): SingleMessageRecipient
    +

    Convert the identity, host and port of this node into the appropriate SingleMessageRecipient.

    +

    N.B. Marked as JvmStatic to allow use in the inherited classes.

    +
    +
    +
    +
    + + diff --git a/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-server/-init-.html b/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-server/-init-.html index 527b2be3ad..dce0760e94 100644 --- a/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-server/-init-.html +++ b/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-server/-init-.html @@ -7,7 +7,7 @@ net.corda.node.services.messaging / ArtemisMessagingServer / <init>

    <init>

    -ArtemisMessagingServer(config: NodeConfiguration, myHostPort: <ERROR CLASS>, networkMapCache: NetworkMapCache, userService: RPCUserService)
    +ArtemisMessagingServer(config: NodeConfiguration, myHostPort: <ERROR CLASS>, myIdentity: CompositeKey?, networkMapCache: NetworkMapCache, userService: RPCUserService)

    This class configures and manages an Apache Artemis message queue broker.

    Nodes communication is managed using an Artemis specific protocol, but it supports other protocols like AMQP/1.0 as well for interop.

    diff --git a/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-server/index.html b/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-server/index.html index a369a5002b..6e30bc6e10 100644 --- a/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-server/index.html +++ b/docs/build/html/api/net.corda.node.services.messaging/-artemis-messaging-server/index.html @@ -36,7 +36,7 @@ a fully connected network, trusted network or on localhost.

    <init> -ArtemisMessagingServer(config: NodeConfiguration, myHostPort: <ERROR CLASS>, networkMapCache: NetworkMapCache, userService: RPCUserService)

    This class configures and manages an Apache Artemis message queue broker.

    +ArtemisMessagingServer(config: NodeConfiguration, myHostPort: <ERROR CLASS>, myIdentity: CompositeKey?, networkMapCache: NetworkMapCache, userService: RPCUserService)

    This class configures and manages an Apache Artemis message queue broker.

    +myIdentity +val myIdentity: CompositeKey?
    networkMapCache val networkMapCache: NetworkMapCache receive -fun <T : Any> receive(otherParty: Party, receiveType: Class<T>): UntrustworthyData<T>
    -fun <T : Any> receive(otherParty: Party): UntrustworthyData<T>
    @@ -111,8 +111,8 @@ will do as long as the other side registers with it.

    sendAndReceive -fun <T : Any> sendAndReceive(otherParty: Party, payload: Any, receiveType: Class<T>): UntrustworthyData<T>
    -fun <T : Any> sendAndReceive(otherParty: Party, payload: Any): UntrustworthyData<T>
    diff --git a/docs/build/html/clientrpc.html b/docs/build/html/clientrpc.html index bb8a1d9587..486bb209b7 100644 --- a/docs/build/html/clientrpc.html +++ b/docs/build/html/clientrpc.html @@ -114,6 +114,7 @@
  • Persistence
  • Node administration
  • The Corda Configuration File
  • +
  • The Corda Plugin Framework
  • A Brief Introduction To The Node Services
  • CorDapps

    @@ -128,7 +129,8 @@
  • Writing a contract using clauses
  • Writing a contract test
  • Client RPC API Tutorial
  • -
  • Flow state machines
  • +
  • Writing flows
  • +
  • Writing flow tests
  • Writing oracle services
  • Using attachments
  • Event scheduling
  • diff --git a/docs/build/html/consensus.html b/docs/build/html/consensus.html index e110b545e8..48bfbfdf60 100644 --- a/docs/build/html/consensus.html +++ b/docs/build/html/consensus.html @@ -116,6 +116,7 @@
  • Persistence
  • Node administration
  • The Corda Configuration File
  • +
  • The Corda Plugin Framework
  • A Brief Introduction To The Node Services
  • CorDapps

    @@ -130,7 +131,8 @@
  • Writing a contract using clauses
  • Writing a contract test
  • Client RPC API Tutorial
  • -
  • Flow state machines
  • +
  • Writing flows
  • +
  • Writing flow tests
  • Writing oracle services
  • Using attachments
  • Event scheduling
  • diff --git a/docs/build/html/corda-configuration-files.html b/docs/build/html/corda-configuration-files.html index 6e9a6bd4e0..d7e7050c74 100644 --- a/docs/build/html/corda-configuration-files.html +++ b/docs/build/html/corda-configuration-files.html @@ -31,7 +31,7 @@ - + @@ -111,6 +111,7 @@
  • Configuration File Fields
  • +
  • The Corda Plugin Framework
  • A Brief Introduction To The Node Services
  • CorDapps

    @@ -125,7 +126,8 @@
  • Writing a contract using clauses
  • Writing a contract test
  • Client RPC API Tutorial
  • -
  • Flow state machines
  • +
  • Writing flows
  • +
  • Writing flow tests
  • Writing oracle services
  • Using attachments
  • Event scheduling
  • @@ -351,7 +353,7 @@ following fields:

    diff --git a/docs/build/html/node-services.html b/docs/build/html/node-services.html index 485cfbdd04..1804911b8e 100644 --- a/docs/build/html/node-services.html +++ b/docs/build/html/node-services.html @@ -32,7 +32,7 @@ - + @@ -105,6 +105,7 @@
  • Persistence
  • Node administration
  • The Corda Configuration File
  • +
  • The Corda Plugin Framework
  • A Brief Introduction To The Node Services

    CorDapps

    @@ -125,7 +126,8 @@
  • Writing a contract using clauses
  • Writing a contract test
  • Client RPC API Tutorial
  • -
  • Flow state machines
  • +
  • Writing flows
  • +
  • Writing flow tests
  • Writing oracle services
  • Using attachments
  • Event scheduling
  • @@ -204,7 +206,7 @@ so far. We have:

    1. 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 Flow state machines.
    2. +how this works in Writing flows.
    3. 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.
    4. The IRS demo web interface - a web interface to the IRS demo.
    5. diff --git a/docs/build/html/search.html b/docs/build/html/search.html index 3b2eb9bdb0..17b4fe20c8 100644 --- a/docs/build/html/search.html +++ b/docs/build/html/search.html @@ -103,6 +103,7 @@
    6. Persistence
    7. Node administration
    8. The Corda Configuration File
    9. +
    10. The Corda Plugin Framework
    11. A Brief Introduction To The Node Services
    12. CorDapps

      @@ -117,7 +118,8 @@
    13. Writing a contract using clauses
    14. Writing a contract test
    15. Client RPC API Tutorial
    16. -
    17. Flow state machines
    18. +
    19. Writing flows
    20. +
    21. Writing flow tests
    22. Writing oracle services
    23. Using attachments
    24. Event scheduling
    25. diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index 6b159fcbb5..62f5271a71 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:49,filenames:["building-the-docs","clientrpc","codestyle","consensus","contract-catalogue","contract-irs","corda-configuration-files","creating-a-cordapp","data-model","event-scheduling","flow-state-machines","further-notes-on-kotlin","getting-set-up","getting-set-up-fault-finding","glossary","index","initial-margin-agreement","inthebox","loadtesting","merkle-trees","messaging","network-simulator","node-administration","node-explorer","node-services","oracles","persistence","release-notes","release-process","running-the-demos","secure-coding-guidelines","transaction-data-types","tutorial-attachments","tutorial-clientrpc-api","tutorial-contract","tutorial-contract-clauses","tutorial-test-dsl","where-to-start"],objects:{},objnames:{},objtypes:{},terms:{"00z":34,"0_xx":13,"10000l":18,"1000l":32,"17t16":34,"1mb":10,"300px":[],"5000l":18,"8u45":[],"_before_":10,"_do_":10,"_foo":2,"abstract":[8,10,24,26,27,34,35],"boolean":[8,18,27,33,34],"break":[10,25,28],"byte":[2,8,10,36],"case":[2,3,6,7,8,10,12,16,18,25,26,27,31,32,34,35],"catch":[2,10,12,30],"class":[],"default":[1,2,4,6,7,10,12,14,16,18,19,21,22,23,24,27,30,31,34],"enum":[27,33],"export":[10,22,26,37],"final":[3,5,8,10,13,19,27,29,33,34,36],"float":[4,5,9],"function":[],"import":[2,8,9,10,13,26,27,31,34,35,36,37],"instanceof":34,"int":[2,3,18,26,34],"long":[2,4,8,9,18,26,34],"new":[2,3,5,6,7,8,10,11,20,22,23,24,27,28,29,31,32,33,34,35,36,37],"null":[6,9,18,26,32,34],"public":[2,6,7,8,10,14,17,20,22,24,27,31,34,35,36],"return":[1,2,3,5,9,10,18,22,24,26,27,30,32,33,34,35,36,37],"short":[9,16,28],"static":[7,8,10,16,25,34,36,37],"super":[2,35],"switch":[10,27,34],"throw":[1,2,3,10,18,19,33,34,35],"transient":10,"true":[3,6,8,14,18,25,33,34],"try":[1,2,8,10,13,27,33,37],"var":[10,26,33],"void":[34,35,36],"while":[21,31,33,34],abil:8,abl:[3,6,7,8,10,16,19,22,23,24,25,27,29,34],abort:[3,25],about:[],abov:[2,5,8,10,16,19,22,34,35,36],absent:6,absolut:[3,6,8],abstractnod:24,abstractstatereplacementprotocol:27,accept:[2,3,4,8,12,14,29,34],acceptablepric:10,access:[],accid:10,accident:[2,30],accompani:[2,34],accord:37,accordingli:35,account:[8,18,27,31],accrual:5,accur:[3,16],accuraci:8,achiev:[3,8,31],achiv:19,ack:27,acknowledg:[10,24],acquir:29,acronym:16,across:[4,6,8,18,24,26,27,32],act:[3,6,8,10,24,25],action:[9,18,24,34,37],activ:[5,6,9,12,18,24,26,27,29,34],actor:[2,8,10],actual:[3,5,10,16,18,24,25,30,32,34,35,36],adapt:[2,10,25],add:[2,7,8,10,14,16,18,19,20,22,24,30,32,33,34,35,36],addattach:32,addcommand:[10,34],addedg:33,adding:[],addinputst:[10,34],addit:[2,3,6,7,8,24,26,27,31,33,34],addition:[8,10,11,12,26,28],addmessagehandl:27,addnod:33,addoutputst:[10,34],address:[3,6,7,8,10,20,23,24,27,34],addvaulttransactionnot:33,adjust:[2,5,28,34,37],admin:[23,24],administr:[],advanc:[4,5],advantag:8,adventur:37,advertis:[1,6,24,33,34],advertisedservic:[7,33],advic:28,affect:[13,25],affinityexecutor:2,afraid:2,after:[3,4,5,7,9,10,11,13,14,18,19,24,25,34],again:[5,8,10,18,24,25,34],against:[],agent:[18,22,24],agentlib:7,aggreg:[8,16,34,35],agre:[5,9,10,14,16,29,30],agree:[5,16],agreement:[],ahead:[10,34],aid:27,aim:[2,8,18],aka:14,albeit:27,albertsen:27,alert:13,algorithm:[8,17,27,31,34],alia:6,alice:[14,23,31,33,34],alice_key:32,align:15,aliv:10,all:[0,1,2,3,4,5,6,7,8,10,11,13,14,18,19,22,23,24,25,26,27,28,29,30,31,32,33,34,35,37],allclaus:35,allcomposit:35,allevi:3,allow:[1,2,3,4,5,6,7,8,9,10,14,16,18,20,24,25,26,27,30,31,34,36,37],allpartysignedtx:10,almost:34,along:[3,10,12,25,34],alongsid:34,alreadi:[2,7,9,10,15,16,19,25,27,32,34,35,36],alright:10,also:[1,2,3,4,5,6,7,8,9,10,12,13,14,16,18,19,20,21,22,23,24,26,27,29,31,32,34,35,36,37],alter:[6,10,22],altern:[0,2,6,15,20,21,22,23,31,34],although:[5,6,8,10,12,13,24,32,34,35,37],alwai:[2,8,9,10,15,22,26,31,34],amount:[],amqp:[20,27],analysi:8,analyt:16,andresen:8,ani:[1,2,3,4,5,8,9,10,12,14,16,22,23,24,25,26,27,28,29,30,31,32,33,34,37],annot:[1,2,10,26],announc:28,anonym:[8,24],anonymis:24,anoth:[1,2,3,7,8,10,13,14,16,22,24,25,27,29,32,34,36],answer:[2,25],anticip:2,any:[1,4,9,16,22,24,33],anybodi:8,anyclaus:35,anycomposit:35,anyon:[3,34],anyth:[3,8,10,30,31,34,35],anywher:[25,27,34],apach:20,apart:3,api:[],app:[],appear:[13,34],append:[10,22],appendix:15,apple:12,appli:[2,4,5,7,8,18,34,35],applic:[7,8,14,20,24,25,27,30,37],applicat:14,applyfix:5,appoint:3,approach:[],appropri:[2,20,24,26,35],approv:[8,9,10],approxim:3,april:27,arbitrari:[2,8,10,25,30,31,33],arbitrarili:8,architectur:[1,15,25],area:26,aren:[1,9,17,34,37],arg:[7,27,33],argument:[1,2,8,10,18,33,34],aris:[8,12],around:[3,8,10,19,27,28,31,33,34,35],arrai:[8,10,33],arrang:10,arriv:[10,14,25],arrow:[5,13],art:31,artemi:[7,14,20],artemisaddress:[6,33],artemismq:[6,24],artemisport:7,articl:[3,8,9,10,25,27,34,37],artifact:7,ask:[2,10,25,34],aspect:[10,37],assembl:[8,19,34],assemblesharedtx:10,assert:[],assertequ:[10,32],asset:[],assetforsal:10,assetmismatchexcept:10,assettosel:10,assettypenam:10,assign:[8,10,25],assist:[9,10,26,31],associ:[3,8,9,20,26,27,31,34],assum:[3,8,10,15,18,19,30,33,34],assume:[10,19],assumpt:10,assur:16,asynchron:18,atom:[3,8,10,27,29,34],attach:[],attachment:[],attachmentdemo:32,attachmentstorag:24,attack:[3,30],attch:19,attempt:[8,13,30],attent:10,attest:3,attribut:2,audit:8,authent:[1,3,24,27,33],authenticatedobject:[31,34,35],author:[2,3,12,24,28,37],authoris:[6,10,24,31],auto:[2,34],autoclos:1,autom:[8,9,34,37],automat:[0,1,3,6,7,9,10,20,21,24,26,27,32,34,37],auxiliari:24,avail:[0,3,5,6,7,9,10,12,21,22,24,27,28,30,32,34],avoid:[1,2,8,10,26],awai:[1,8,10,33],await:7,awar:[1,2,9,10,24,27,34],awg:28,awkward:[2,10],axi:5,back:[1,2,8,10,16,24,25,27,30,31,34],backend:27,background:[1,2,8,15],backoff:20,backport:28,backward:[10,28],bad:[2,10,34,36],balanc:[3,4,8,23,34,36],banana:31,bananast:31,banco:27,band:10,bandwidth:2,banish:14,bank:[5,6,8,27,29,31,32,34,37],bankrupt:34,bankruptci:[3,8,16,25],bar:13,barreca:27,barrel:27,base:[2,3,5,6,7,8,9,10,14,18,20,24,27,31,34],basedir:[6,7],basedirectori:33,basi:[5,9,12,21,22,24],basic:[],bat:[7,16,21,23,29],batch:18,bbva:27,bear:10,becaus:[2,3,8,9,10,13,15,22,24,25,31,34,35,36],becom:[2,5,8,9,10,28,31],been:[3,5,6,8,10,12,14,16,25,27,28,31,34,35],befor:[3,5,7,8,9,10,18,24,27,28,31,32,34,35],begin:[2,8,15,24,34,37],behav:34,behaviour:[3,4,6,18,22,35,36],behind:[10,14,20,34],believ:27,belong:19,below:[2,5,7,8,9,10,12,16,19,24,31,37],beneath:14,beneficiari:4,benefit:[3,10],best:[2,37],bet:25,better:[2,11,27,34],between:[2,3,5,8,9,10,14,20,21,24,25,26,27,28,29,30,31,33,34],beyond:8,big:[2,8,10,27,34],bigdecim:[25,31],bilater:[4,5,27],bill:34,bin:[29,33],binari:[8,19,24,25,33],bind:[3,6,8,25],bip:8,bit:[31,34,36,37],bitbucket:[],bitcoinj:10,blah:2,blank:[2,22,23,34],block:[1,2,3,7,8,10,24,25,27,29,30],blockchain:[8,10,17,19,34],bloom:2,bloomfilt:2,blotter:29,blue:[5,19],bob:[14,23,31,34],bodi:[2,16],boil:[8,18],boilerpl:[7,34],bond:34,bookkeep:34,boost:17,bootstrap:[6,7],bore:34,boss:15,both:[3,4,5,8,10,11,14,18,25,26,27,29,30,31,34],bottom:13,bounc:10,bound:[3,10,27,34],box:37,branch:[15,19,27,28],breach:8,bread:37,breakpoint:16,breviti:35,bridg:24,brief:[1,15],briefli:[15,20],bring:[8,18,29],broadcast:[3,8,34],broadcasttransactionflow:3,broadcasttransactionprotocol:[],broke:2,broken:[27,34],broker:[6,20,24],brows:[16,22],browser:6,buffer:1,bug:[2,27,28],bugfix:28,bui:[10,37],buildcordajar:6,builder:[10,27,30,32],buildmerkletransact:19,buildscript:[7,14],built:[3,6,7,10,19,27,30,34],bulk:[8,35],bullet:2,bundl:8,busi:[8,9,10,14,17,25,26,27,31,34,37],businesscalendar:31,butter:37,button:29,buyer:[],bytearrai:26,bytecod:[8,10,34],cach:[20,32],calcul:[3,5,9,10,16,19,30,31,34],calendar:[5,25,31],call:[1,2,3,5,8,10,11,22,24,27,28,30,31,32,33,34,35,36],callback:[1,2,10,24,27],caller:[3,34],came:10,camel:2,can:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,29,30,31,32,33,34,35,36,37],candid:26,cannot:[3,4,8,14,25,27,30,31,34],capabl:34,capit:2,capitan:0,capsul:21,capsule_cache_dir:7,captur:9,cardon:27,care:[2,3,8,10,30,36],carefulli:11,carri:24,cash_stat:26,cashcommand:[18,33],cashflow:33,cashkt:34,cashprotocol:[],cashschema:26,cashschemav1:26,cashsigningpubkei:10,cashstat:10,cast:1,catastroph:16,caught:1,caus:[2,14,16,29,34],cbc:18,ccy_cod:26,cent:31,center:34,central:[31,34],ceo:31,cer:6,certain:[2,16,27,34],certainli:7,certainti:3,certif:[6,18,24,27,33],certificatespath:33,cev:[],chain:[],chaincash:36,chaincashdoublespend:36,chaincashdoublespendfailswith:36,challeng:8,chanc:[2,10],chang:[],changenotari:3,channel:10,charact:[2,6],characterist:14,charg:25,charli:31,check:[],checkabl:[25,27],checknotnul:34,checkpoint:[24,27],checkstat:34,checksufficientsignatur:[3,10,31],child:[10,31],children:[10,31],childrenfor:10,choic:[2,3,8,12,34],choos:[3,23,34],choreographi:14,chosen:[3,8,10,18],chronolog:9,chunk:[34,35,37],circl:21,claim:[8,34],clash:[2,26],classic:34,classpath:[1,7,8],claus:[],clauseverifi:35,clean:[10,27],cleaner:27,cleanup:27,clear:[1,10,18,30,31],cleardatabasebeforerun:18,clearer:10,clearli:2,cli:[],click:[13,23,29],clock:[3,8,9,10,29],clone:[2,13],close:[1,3,4],closeabl:1,closer:3,closur:[2,36],cloud:22,cluster:[],cmd:[19,34,35],coars:8,code:[],codebas:[2,26],cognit:8,coin:8,collabor:27,collaps:18,colleagu:2,collect:[1,2,14,18,22,26,27,34,35],collector:[2,10,22],collis:2,column:[7,22,26],com:[0,12,13],combin:[8,14,31,34],come:[1,8,10,27,28,30,34],command:[],commanddata:[25,34,35],commercial_pap:[34,35],commercialpap:[4,26,34,35],commercialpaperlegaci:34,commit:[3,6,9,10,24,28],committe:16,common:[4,5,8,10,24,26,27,31,34,35,36],commonleg:5,commun:[6,10,14,24,27,30],compani:25,companion:[10,34,35],compar:[8,15,19,34],compat:[1,14,28],compel:3,compet:8,complementari:9,complet:[1,8,9,10,24,25,27,29,31,32,33,34,35,36],complex:[2,4,8,10,16,26,31,32,34],complic:[10,34,35],compon:[7,9,14,15,20,24,27],compos:[10,27,31,34,35],composit:14,compositeclaus:35,compositekei:[24,31],compound:27,compris:5,comput:[5,14,25],computeoursignatur:10,concaten:19,concept:[3,4,8,9,10,15,19,25,27,34],concern:[8,10,34],concis:27,conclus:[3,8,25],concret:24,concurr:18,concurrenthashmap:2,condit:[3,18,24,25,27,35,36],conf:[6,7,24],confgur:26,config:[6,7,18,22,29,33],configur:[],configurationfil:22,confirm:[3,13,14,16],conflict:[3,8,18],confus:10,connect:[1,6,7,17,18,22,23,24,33],consid:[2,5,8,9,14,25,27,28,31,34],consider:34,consist:[5,6,8,10,14,16,18,24,25,27,35],consol:[22,29,33],consortium:14,constant:[2,26,34],constantli:25,constraint:[10,25,27,34],construct:[],constructor:[9,10],consum:[1,3,8,9,14,24,27,31,34],consumingtx:3,consumpt:[9,25],contact:[10,24,27],contain:[3,5,6,7,8,10,14,19,20,22,23,24,25,27,28,29,31,32,34,35,36,37],content:[2,3,7,8,9,10,13,22,25,31],context:[2,8,22,24,25,31],continu:[],contract:[],contractreject:36,contractst:[3,9,19,26,27,31,33,34],contrast:[8,10,25],contribut:31,control:[1,2,3,6,7,8,10],conveni:[2,8,31,34],convent:[5,10,35],convers:31,convert:[3,4,5,10,24,26,27,31,34],convinc:[10,19,31],coordin:6,copi:[2,3,8,10,20,24,32,34,36,37],copyonwritearraylist:2,copyright:2,copyvault:18,corda:[],corda_dev_ca:6,corda_vers:7,cordacadevpass:[6,33],cordapluginregistri:[7,33],cordarpccli:[1,33],cordarpcop:[1,33],cordarpcopsimpl:24,core:[4,7,8,10,13,18,24,25,26,27,31,32,34,36],corner:13,correct:[4,8,10,13,25,27,28,34,36],correctli:[8,13,14,24,25,27,34],correspond:[1,14,18,31,34],correspondingli:[2,32],cost:[1,25,34],could:[2,3,4,8,10,18,25,30,31,34],couldn:19,count:5,countabl:27,counter:[2,10],counterparti:[4,5,14,16,30],countri:[25,31],coupl:[10,18,33],cours:[10,18,22,25,26,34,37],coven:34,cover:[3,4,8,10,16,25,31,34,37],cpu:18,crash:[10,24],creat:[],createdummyirs:5,createsomenod:10,creation:[5,8,19,34],creator:25,credenti:23,credit:[16,27],crisi:16,crisp:34,criteria:4,critic:[8,28],crop:8,crypto:27,cryptograph:[14,19,31],cryptographi:[],csr:27,curl:22,currenc:[4,5,10,18,23,26,27,31,34],current:[1,2,3,5,6,7,8,9,10,15,17,18,19,20,21,23,24,25,26,27,28,30,31,33,34,36],currentstep:10,currenttim:10,currentwallet:10,curv:5,custodi:[10,31],custom:[1,3,10,22,24,26,27,29,31],customis:[1,26,33,37],cut:[],cutoff:18,cycl:[2,10,34],dai:[3,5,10,22,25,28,31],daniel:27,danks:27,dashboard:[22,23],data:[],databas:[],databaseschema:26,dataset:[5,16],datasourc:6,datasourceclassnam:6,datasourceproperti:6,datastructur:18,date:[],dateoffset:27,daterollconvent:31,david:27,dcapsul:7,dead:20,deadlin:31,deal:[2,10,25,29,31,34],dealstat:31,debt:[4,16],debugg:7,decd098666b9657314870e192ced0c3519c2c9d395507a238338f8d003929de9:22,decd:22,decentralis:[8,25,27],decid:[13,19,25,26,34],decis:[3,8,34],declar:[2,6,24,36],dedic:2,dedupl:[24,27],defaultissu:34,defin:[2,3,8,10,17,18,22,24,26,27,31,33,34,35,36,37],definit:[3,10,14,27,31,34,35],delai:[5,25],deleg:[3,35],delet:[2,8,10,24,27,34],deliber:[8,36],deliv:[4,10,24,31],deliveri:[10,17,20,29],demand:[3,8,10,27],demo:[],demonstr:[12,16,27,29,37],denial:3,denot:19,dens:2,depend:[2,3,7,8,9,10,12,13,14,16,25,27,34],dependson:7,deploi:[7,14],deploy:[7,14],deploynod:[6,7,16,29],deployvisualis:21,deposit:[34,36],deprec:27,deregist:20,deriv:[5,10,14,26,27,31,34],describ:[2,3,8,9,10,15,16,18,19,24,30,31,33,34],descript:2,deserv:[18,28],design:[2,3,8,11,14,15,25,27,30,34,35,37],desir:[10,31],desktop:22,despit:[10,32,34],destroi:[4,8,34],destructur:34,detail:[],detect:2,determin:[4,5,9,13,14,35],determinist:[1,18],dev:[6,18],develop:[2,6,7,8,10,11,12,15,24,26,27,28,29,34],devic:[6,8],devis:8,diagram:5,diamond:14,did:19,didn:[2,10,19,28,34],differ:[2,3,4,5,6,7,8,9,10,12,18,23,25,26,27,31,33,34,36],difficult:10,difficulti:35,digest:3,digit:[8,10,25,27,34],digitalsignatur:[3,10,25],direct:[2,14,24,26],directli:[1,2,3,10,14,20,22,24,27,31,33,34,35],directori:[0,6,7,13,16,18,22,24,29,37],directthreadexecutor:2,dirnam:7,dirti:34,disabl:[24,31],disadvantag:8,disagr:16,disambigu:26,discard:30,discov:8,discoveri:21,discuss:[8,10,31,34],disk:[10,20,27,31],disobei:25,displai:[3,33],disput:[3,5,34],disrupt:[18,20],disruptionpattern:18,disruptionspec:18,distinct:[2,35],distribut:[3,6,7,8,10,14,15,17,25,27],distrust:[3,10],divid:3,divis:31,dlog4j:22,doc:[0,1,2,15,27,33],docker:22,docsit:[0,28],doe:[2,3,4,5,6,7,8,9,10,15,16,17,22,24,25,26,30,34,36,37],doesn:[2,3,8,10,13,17,22,30,34,36],dokka:0,dollar:[31,34,36],dollars:[34,36],domain:[14,27,31,34],domicil:34,domino:16,don:[1,2,8,10,11,13,18,25,28,29,30,31,34,35,36],done:[0,1,8,10,12,18,19,27,29,33,34],dot:[5,19],doubl:[8,10,17,23,24,34],doubt:2,down:[2,6,8,10,18,23,32,34,35],download:[],downsid:[2,8],drain:[1,10],draw:[27,33],drawn:33,drive:[8,37],driven:29,driver:[6,22,26,27,33,37],driverdirectori:33,drm:25,dsl:[7,14,27,36],dt_socket:7,due:[2,3,5,8,9,10,11,12,16,24,26,34,35],dummi:[4,10,36],dummy1:10,dummy2:10,dummy_cash_issuer:36,dummy_notary_key:10,dummy_pubkey_1:[34,36],dummy_pubkey_2:36,dummycontract:10,dump:33,duplic:[10,19],durat:[9,25],durationsecond:18,dure:[2,5,6,7,10,21,22,24,27,34],dynam:[8,27,34,37],each:[1,2,3,5,6,7,8,9,10,14,18,19,21,24,25,26,27,28,31,33,34,35,36,37],earli:[2,4,24,37],earlier:30,earliest:[5,9],easi:[2,8,11,25,27,34],easier:[2,7,10,12,27,34],easiest:[1,34],easili:[2,10,16,34],econom:5,ed25519:27,edg:33,edge:33,edit:22,edition:[],editor:13,effect:[5,6,8,10,16,26,36],effort:12,either:[1,2,3,4,5,6,8,10,13,14,18,19,26,29,31,33,34,36,37],elbonia:31,element:[2,8,14,19,35],elimin:[17,27],els:[3,7,8,10,24,25,31,33,34,35],email:10,embed:[6,8,17,19,22,25,27],embedd:20,emit:[1,27],emoji:32,empti:[3,6,27,34,36],emptyledg:36,emptyset:[3,32],enabl:[6,7,24,32,35],enact:16,enc:18,encapsul:[2,31],enclos:2,encod:25,encount:[9,24],encourag:[26,32],encumb:34,encumberedst:34,encumbr:[26,34],encumbranc:[],end:[2,3,5,8,10,15,18,24,25,28,35,37],endpoint:[7,20,22],enforc:[2,8,34],enforceverifyorfail:36,engin:16,english:[2,34],enjoy:27,enorm:10,enough:[2,10,16,34,37],ensur:[2,3,8,10,13,14,19,24,27,28,30,31,34,35],ensure:[3,13,16],enter:[7,16,36,37],entir:[3,5,8,10,15,24,25,34],entireti:5,entiti:[3,8,19,25,26,31,34],entri:[5,6,7,8,10,26,30,34],enumer:[5,26],environ:[2,7,10,12,25],envisag:34,equal:[3,10,27,31,34,35,36],equiti:26,equival:[2,5,23,24,31,34],especi:31,essenti:[22,24,25,34,35],establish:[9,12,20,29],etc:[2,3,4,5,10,14,16,17,23,25,27,28,31,34,35],euribor:[22,25],euro:31,evalu:[5,25,35],even:[1,3,8,10,11,16,19,24,25,26,27,34,36],event:[],eventu:[18,24],eventual:[3,28],ever:[2,8],everi:[1,3,8,10,18,19,20,24,25,26,27,28,30,31,34,37],everybodi:8,everyon:[3,25,34],everyth:[3,30,33,34,37],evid:25,evolut:8,evolv:[26,34,37],exact:3,exactli:[8,24,31,34],examin:[2,7,8,10,34],exampl:[],examplerpccordapluginregistri:33,examplerpcvalu:33,exce:18,excel:25,except:[1,2,10,30,34],exception:[2,10],excess:2,exchang:[5,10,14,24,31],exclud:[6,26],exclus:4,execut:[3,7,8,9,10,14,18,21,23,24,27,31,32,34],executor:2,exhaust:[24,27],exist:[2,3,4,5,7,8,9,15,24,26,27,31,33,34,36,37],exit:[4,10,23,24,27,33,34],exitcash:33,expand:23,expect:[1,2,4,6,9,10,18,24,26,27,28,29,30,31,32,34,35,36],expectedtypenam:10,expens:[1,2],experi:[7,12,27,28,37],experienc:8,experiment:[2,10,27],explain:[2,9,10,18,27],explan:[2,33],explicit:[2,8,10,34],explicitli:[2,8,36],explor:[2,8,10,13,17,22,23,27,34,37],explorer:[],expos:[2,7,8,9,10,22,24,26,27,31,33],expose:[10,31],exposur:[4,5,14],expound:12,express:[3,5,8,14,27,31,34,36],ext:7,extend:[2,3,7,10,11,24,27,31,34,35],extens:[2,14,24,27,30,31,34],extent:8,extern:[6,10,24,32,37],extraadvertisedserviceid:[6,24],extract:[8,22,25,31,34],extractcommand:35,extrem:[3,8,11,14,18],face:34,facevalu:34,facil:[14,24],fact:[2,3,5,8,10,14,25,34,36],factor:[5,8,16],fail:[32,34,35,36],failswith:36,failur:[10,14,32,36],fairli:[2,10,16],fake:37,fals:[2,3,6,10,25,31,34],famili:26,familiar:[1,8,34],famou:[8,27],fanci:34,far:[10,29,34],fashion:[2,16,26],fast:[8,10],fault:10,faultfind:12,fear:14,featur:[],feed:[3,25],feedback:27,feel:[34,37],fetch:[20,22,24,25,32],fetchtransactionsflow:32,fetchtransactionsprotocol:[],few:[2,10,11,22,25,28,29,34],fiber:[10,24],field:[],file:[],fill:[2,10,29,34],filter:[2,18,19,26,27],filtercommand:19,filteredleav:19,filteredtransact:19,filterfun:19,filterisinst:34,finalis:[3,5,10,27],finalisetransact:3,finalityflow:[3,32],finalityprotocol:[],financ:[7,10,27,37],financi:[8,9,10,14,16,27,31],find:[0,8,10,11,12,15,17,22,30],fine:[1,8,36],finish:[10,27],fire:10,firewal:10,first:[1,2,3,5,6,7,9,10,11,12,13,14,20,22,25,26,27,29,31,32,33,34,35,37],firstli:34,fit:[2,8],fix:[],fixabledealst:31,fixedleg:5,fixedlegpaymentschedul:5,fixedratepaymentev:5,fixingroledecid:9,fixingsessioninitiationhandl:9,fixof:[19,25],flag:[22,37],flat:26,flesh:31,flexibl:[3,8,31],flight:[1,8],floatingleg:[5,9],floatinglegpaymentschedul:5,floatingratepaymentev:5,flow:[2,3,5,7,8,9],flowhandl:33,flowlog:[9,10,24,33],flowlogicreffactori:9,flowstatemachineimpl:24,flowtrack:10,flux:[7,37],fly:10,focu:19,fold:[2,33],folder:[0,6,7,24],follow:[0,2,3,6,7,8,9,10,12,13,18,22,23,24,34,35,36],font:2,foo:[2,33],foobrokenexcept:2,foot:30,fooutil:34,forc:[8,22,27,34,36],fordai:[9,25],foreach:33,forev:28,forget:[10,34],form:[1,3,7,8,9,19,24,29,34,35],format:[],former:33,formula:27,forth:[1,10],fortun:16,forward:[10,20,24,25,28,29],found:[6,10,12,13,22,25,28,31,37],four:34,fourpmtimelock:34,fraction:31,frame:[2,10,16,24],framework:[8,10,14,15,17,18,20,22,23],free:[3,8,10,12],freed:1,freeli:25,frequenc:5,frequent:34,fresh:[25,34,36],freshkei:10,freshli:31,friendli:24,from:[0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,18,19,21,22,23,24,25,26,27,28,29,30,31,32],fromcountri:31,front:34,frontend:17,frustrat:8,ftx:19,fulfil:[4,8],full:[2,3,4,6,10,16,19,20,24,33,34,35],fulli:[2,3,6,8,10,14,24,26,27,31],fullnodeconfigur:33,fullysign:10,fun:[3,9,10,18,19,25,26,32,33,34,35,36],fund:[8,16],fundament:[3,8,34],fungibl:[4,14,31,34,35],fungibleasset:[],further:[5,8],futur:[],futuretransact:33,fuzz:27,gain:17,garbag:[1,2,10,22],gather:[18,34],gatherfrequ:18,gatherremotest:18,gavin:8,gcd:8,gear:28,gener:[],generatecount:18,generateiniti:10,generateirsandfixsom:5,generateissu:34,generatemappedobject:26,generatemov:34,generateredeem:34,generatespend:[10,34],generatetransact:33,genuin:2,get:[],getamount:36,getbefor:34,getbloomfilters:2,getclass:34,getcommand:[34,35],getcontract:34,getdummy_cash_issuer:36,getdummy_pubkey_1:36,getdummy_pubkey_2:36,getencumbr:34,getfacevalu:34,getfix:5,getflowtrack:10,getinput:[27,34],getinstat:27,getissuanc:34,getkei:34,getlegalcontractrefer:[34,35],getmaturityd:34,getmega_corp:36,getmega_corp_pubkey:36,getnotarysignatur:[3,10],getoutput:[27,34],getoutst:27,getowner:[34,35],getparticip:34,getprotocoltrack:[],getprotocolvers:1,getrequiredcommand:35,getresourceasstream:32,getresultorthrow:18,getsign:[34,35],getter:[26,34],gettimestamp:34,gettransact:10,getvalu:[34,35],getvaulttransactionnot:33,git:[],github:[0,6,12,13],giusepp:27,give:[3,7,8,10,20,24,27,32,34],given:[3,8,10,19,25,26,31,33,34],givenpric:10,glanc:23,global:[2,3,8,27,31],glue:10,gnu:0,goal:[2,8,14,17,28],goe:1,gone:[10,27,34],good:[2,10,19,34,36,37],got:[10,19,22],gover:34,govern:16,gps:3,grade:31,gradl:[],gradlew:[7,13,16,18,21,23,29,33],grain:1,grammar:2,granular:8,graph:[1,8,10,17,22,26,27,33],graphit:22,graphstream:33,great:[16,27],greater:2,greatest:8,green:13,grip:12,groom:8,group:[],groupclaus:35,groupclauseverifi:35,groupingkei:35,groupstat:[34,35],guarante:[14,28,31],guava:[2,34],gui:10,guidelin:[],hack:[8,27],had:[3,10,27,31,34],hand:[9,10,12,21,24,34],handa:27,handi:10,handler:[7,9,10,24],happen:[],happi:[29,32],hard:[2,8,10,28],harder:[8,30,34],hardwar:6,hase:5,hash:[3,8,10,14,17,19,22,25,27,31,33,34],hashcod:34,hashmap:18,haskel:27,hasn:18,hassl:10,hat:28,have:[1,2,3,4,5,7,8,9,10,12,13,14,15,16,17,18,19,20,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37],haven:34,head:33,heap:10,hearn:8,heart:34,heavi:28,heavili:8,hedg:[4,5],heirarchi:2,held:[24,26],hell:10,hello:10,help:[2,8,9,10,29,34],helper:[5,10,24,31,34],henc:[3,5,8,24],her:34,here:[2,3,6,7,8,10,11,13,14,15,19,22,25,26,27,31,33,34,36,37],herself:33,hidden:[20,24],hide:[],hierarch:10,hierarchi:10,high:[8,10],higher:[1,2,3],highest:15,highli:27,highlight:27,histori:3,hit:[8,32],hoc:27,hocon:6,hold:[8,18,19,24,27],holder:[2,8,34],holidai:[5,25,31],home:[13,23,29],homepath:7,hood:36,hope:24,hopefulli:37,hospit:10,host1:18,host2:18,host:[6,7,18,24],hostandport:6,hostil:30,hotspot:2,hour:10,hous:23,how:[],howev:[3,4,5,6,8,10,19,24,25,26,31,32,34,35,36],html:[0,2],http:[0,6,10,12,13,16,22,24,25,29,32,34,35,37],https:6,hub:[10,14],human:[3,6,8,10,25],hundr:10,hurt:10,icon:12,ide:[11,12,13,22,27],idea:[2,8,10,12,17,37],ideal:[10,34],ident:[3,6,8,10,14,18,19,20,24,25,27,31,33,34,35,36],identicon:27,identifi:[5,8,14,16,19,20,22,24,25,26,31],identiti:[3,10,15],identityless:8,identityservic:24,ifmatch:27,ifnotmatch:27,ignor:[6,10,33,34,35],illegalargumentexcept:[2,10,33,34,35,36],illegalstateexcept:[2,34,35],illustr:31,illustrat:2,imag:19,imagin:[2,10,34],immedi:[1,8,24],immut:[2,5,8,25,34],immutabl:[2,8],immutablelist:34,imper:2,implement:[],impli:[10,26],implic:[3,8,10],implicitli:5,important:28,importattach:32,impos:[25,34],imposs:[8,19,25],improv:[27,28,34,35],improve:8,improvement:27,inact:24,inadvert:34,includ:[],inclus:19,incom:[24,27],incompat:36,incomplet:18,inconveni:34,incorpor:[12,25],increas:[2,16],increment:1,indent:2,independ:[3,16,25,26,35],index:[5,8,9,13,26,28,34],indexsourc:9,indic:[1,2,5,9,10,27,34],indicat:18,individu:[],indivis:31,industri:[11,12,14,16,22],infer:36,influenc:22,info:[10,26,33],inform:[2,3,8,10,13,23,24,27,31,32,34],infrastructur:[1,8,10,17,22,24,27,34],inher:8,inherit:[2,34,35],initi:[3,10,13,16,18,24,27,29,33,37],initial:[],initialis:[10,21,24,26],inmemorynetworkmapservic:24,inner:35,inoutgroup:[34,35],input:[3,4,8,10,14,16,18,19,23,25,27,32,33,34,35,36],inputcash:36,inputindex:3,insert:[2,3,10,22,24,25,26],insid:[1,8,10,19,24,29,30,34],inspect:18,instal:[0,6,7,9,12,13,27,29,33,34],installdist:[29,33],instanc:[],instance:36,instant:[2,9,10,31,34],instanti:[8,9,10,27],instat:36,instead:[2,8,10,17,20,24,27,31,34,37],instigat:3,institut:8,instruct:[12,13,14,22,32],instrument:[4,5,9,24],insuffici:8,insufficientbalanceexcept:34,integ:[1,27,31,34],integer:34,integr:[2,6,8,10,12,13,16,19,22,25,26,27,32],intellig:2,intend:[2,4,7,8,10,15,22,23,24,25,26,30,31,36],intent:[25,27,34],intention:2,inter:27,interact:[1,2,8,10,20,25,27,34],interchang:[14,31],interest:[],interest_r:6,interfac:[],interior:27,interleav:18,interledg:27,intermediari:[16,31],intern:[2,7,10,20,22,24,26,27,31,34],internalis:2,interop:[11,27,34],interoper:24,interpol:31,interpret:[2,8,18],intersect:34,interv:[18,31],intervent:24,intesa:27,introduc:[2,3,9,14,25,27,34],introductori:15,intuit:2,invalid:[3,10,25,31,34],invari:[18,34],investig:10,invoc:[1,10],invoic:32,invok:[1,2,8,9,10,22,24,27],invoke:10,invokeflowasync:10,invokeprotocolasync:[],involv:[3,4,8,10,24,31,34,37],ipsa:25,irrelev:9,irs:[],irsdemo:[6,19,29],irsexport:5,irstest:5,irsutil:5,isbefor:34,isconsist:18,isda:[16,27],isempti:34,isinstanc:10,isn:[1,2,8,10,30,31,34,37],isnotari:33,isnotempti:32,isol:35,issu:[3,4,8,10,12],issuanc:[4,31,34,35],issue:[4,14,18,33,34,35],issuecash:[18,33],issuedbi:36,issuer:[4,8,10,23,31,34,36],issuer_kei:26,issuer_ref:26,issueref:33,issuerparti:26,issuerref:26,item:[14,34],iter:[10,27,28,34],iterabl:[26,33],itself:[1,3,5,6,8,9,10,16,20,22,24,25,26,27,32,33,34,36],jar:[0,6,7,8,21,22,27,32],jarandsourc:7,java:[1,2,7,8,9,10,11,12,14,22,24,26,27,31,32,33,34,35,36,37],javaclass:[10,26],javacommercialpap:34,javadoc:[2,7],javadocjar:7,javafx:27,javatesthelp:36,javax:26,jdbc:[6,7,22,26,27],jdbcdatasourc:6,jdbcx:6,jdk1:13,jdk:[12,13,27,31,34],jdwp:7,jetbrain:[11,12,13],jms:20,jmx2graphit:22,jmx:22,jmxtran:22,job:[10,18,37],jobs:18,johann:27,join:[6,20,26,27,34],jolokia:22,jpa:26,json:[6,22,24,37],judgement:2,jump:29,just:[1,2,8,10,13,16,18,20,22,27,29,30,31,32,33,34,36,37],jvm:[1,7,8,10,11],kdoc:2,keep:[8,10,34],kei:[],kept:10,keymanagementservic:[10,24],keypair:[10,24,34],keystor:[6,24],keystorepassword:[6,33],keyword:[2,36],kick:10,kill:18,kind:[8,10,15,25,30,31,34,37],knob:18,know:[1,3,8,9,10,11,19,25,29,30,34,35,36],knowledg:25,known:[5,8,10,12,14,16,19,24,28],koan:12,korea:34,kotlin:[],kryo:[],label:[10,36],lack:[],lambda:[10,36],land:5,lang:36,languag:[1,2,7,8,10,11,12,13,14,27,31,34,37],larg:[8,10,20,25,27,29,31,32,34,37],larger:[2,8,30],last:[10,18,28,36],lateinit:10,latenc:3,later:[1,2,10,12,17,25,26,27,30,31,33,34,35],latest:[2,12,13,27],latex:27,latter:[2,33,34],launch:9,layer:[6,8,10,20,24,25,26,27],layout:[7,21],ldap:27,lead:[2,8],leader:6,leaf:[14,19],leak:[1,3,8,10],learn:[8,10,11,15,29,31,34,37],least:[6,15,18,32,34],leav:[2,10,19,23,31],ledger:[3,4,5,8,10,14,15,22,25,26,27,29,31,32,34,36],ledgertransact:[10,27,31],leewai:30,left:[10,21,29,35,36],leg:[5,9],legaci:24,legal:[3,6,8,24,25,31,34],legalcontractrefer:[34,35],legalident:33,legallyidentifi:[3,10,25],less:[10,27,32],let:[2,8,9,10,18,19,20,22,25,27,29,31,32,33,34,36],letmein:6,letter:[2,20],level:[2,3,5,10,13,15,16,18,19,20,23,24,30,31,34,35,36],lib:[0,7,21],liber:2,libor:[5,22,25],librari:[1,2,6,10,14,15,16,22,24,25,27,31,33,34],licens:[2,16],life:[10,34,37],lifecycl:[],lifecyl:4,lifetim:5,lightweight:[10,14],like:[1,2,3,5,8,9,10,12,18,19,20,22,25,27,28,31,33,34,35,37],likewis:34,limit:[4,8,14,18,34],line:[],linear:[24,31],linearst:31,liner:2,link:[2,8,10,25,27,31],linkabl:8,linkag:8,linux:[7,22,27],list:[0,3,6,8,10,18,19,24,25,26,27,28,29,31,33,34,35],listen:[2,24,33],listenablefutur:[3,10],listof:[10,26,33,34],liter:8,littl:[2,10,34,36],live:[5,10,16,24,27],livelock:8,lizard:14,load:[],loadtest:18,loan:[4,5,25],local:[0,6,7,8,10,13,14,18,22,24,26,27,36],localcertificatesbasedirectori:18,locald:25,localhost:[6,16,22,23,29],localtunnelstartingport:18,lock:[2,4,6,26,34],log4j2:22,log4j:27,log:[1,6,7,10,13,15],log_sender:32,logger:10,logic:[3,8,9,10,14,20,26,27,30,31,32,34,35,37],logictyp:33,login:[7,23,33],london:[6,7,32],longer:[2,5,6,10,27],longrang:18,look:[2,5,10,18,20,22,25,28,29,31,32,34,35,36,37],lookup:6,loop:[2,5,18,33,34],loquitur:25,loss:25,lot:[2,5,8,12,27,29,30,34,37],low:[3,10],lower:2,lowest:[15,20],lurch:10,mac:[13,22,29],machin:[],macos:7,made:[2,5,8,10,24,27,28,31],mai:[1,2,3,7,8,10,12,13,14,15,18,20,21,22,24,25,26,27,28,30,31,33,34,35,36,37],mail:[28,29],mailbox:24,main:[6,9,10,12,18,20,24,27,32,33,37],mainstream:17,maintain:[3,8,14,34],maintan:25,mainten:20,major:[10,28],make:[],maker:11,maketransact:10,malici:[10,30],manag:[6,8,10,12,14,15,18,20,22],mandatori:34,mani:[2,3,7,8,9,10,18,25,27,31,32,34],manipul:31,manner:[8,10,27,34],manual:[3,7,9,10,21],map:[],mapchang:33,mappabl:34,mappedschema:26,mappedtyp:26,margin:[],mark:[1,2,4,10,14,26,34],markdown:2,marker:[10,30],market:15,marshal:1,master:[15,28],match:[1,8,10,19,30,31,32,35],math:[],mathemat:31,matter:[10,16,34],matur:[3,4,5,22,25,34],maturityd:34,maven:[7,13,27,34],mavenloc:7,mavenpubl:7,maximis:8,maximum:8,maybestx:10,maybetraderequest:10,mbean:22,mean:[1,2,3,8,9,10,12,14,16,18,19,25,31,33],meandref:33,meaning:[3,4],meaningfulli:32,meant:[10,18],meanwhil:33,measur:[5,16],mechan:[14,27],meet:[24,34],mega_corp:[10,36],mega_corp_key:10,mega_corp_pubkey:36,megacorp:10,member:[5,6,27],memori:[3,10,20,24],menlo:2,mention:[9,10,12,34],menu:12,mere:5,merg:[8,27,31,34],mergeabl:34,merkl:[],merkleroot:19,merkletreeexcept:19,mess:10,messag:[],messagingserveraddress:[6,24],messagingservic:[20,24],met:31,metadata:32,method:[1,2,3,6,9,10,18,22,24,26,27,30,31,34],metric:[16,22],micro:[27,35],mid:3,middl:[2,10],middlewar:[14,24],might:[2,5,8,10,13,25,26,30,34],mike:8,mileston:[],min:33,mind:[2,10,25],mine:8,miner:8,mini_corp_pubkey:10,minim:[8,10],minimis:[3,4,8,20],minimum:[1,5,8,31],minor:[27,28],minu:34,minut:[10,11,25],mismatch:[8,34,36],miss:[2,6,10,13,26,34,36,37],missingsig:10,mission:22,mistak:[27,30],mix:[2,27],mock:10,mocknetwork:10,mocknod:[10,24],mockservic:31,mode:[21,27],model:[],modest:8,modif:[24,31,34],modifi:[3,4,5,7,10,13,14,31,34,35],modul:[2,6,10,27,34],moment:[10,27],monei:[25,34],monitor:[],month:[5,10,28],more:[1,2,3,4,5,6,7,8,10,11,12,13,14,16,19,22,24,25,26,27,29,31,32,33,34],moreexecutor:2,mortensen:27,most:[2,5,8,10,12,22,34],mostli:34,motiv:15,move:[4,8,10,23,27,28,33,34,35,36],movement:[10,34],much:[2,8,10,11,26,27,29,30,34,37],multi:[],multigraph:33,multilater:[4,27],multipl:[],multipli:5,must:[1,2,3,4,6,7,8,9,10,22,24,25,26,27,30,31,32,34,35,37],mustafa:27,mutabl:[2,8,31,34],mutat:[8,24],mutual:[3,4,10,30],myfil:22,mykei:31,mykeypair:10,mylegalnam:6,mysql:17,nail:2,namedbyhash:[],nameserv:6,namespac:10,narrow:[2,23],nativ:[10,12],natixi:27,natur:34,naval:3,navig:[7,16,29],navistar:3,nearestc:[6,7],neat:36,necessari:[2,3,14,27,28],necessarili:[26,31],nee:27,need:[0,2,3,5,8,9,10,12,13,14,16,18,19,22,24,26,27,28,30,31,32,33,34,35,36,37],neg:31,negoti:[8,31],neither:10,nest:10,net:[4,5,7,10,24,26,27,32,34,36],network:[],networkmap:7,networkmapaddress:[6,7],networkmapcach:[6,10,24,33],networkmapservic:6,networkmapupd:33,neutral:17,never:[2,3,8,14,34],newli:9,newnotari:3,newowner:34,newsecurerandom:27,next:[2,5,9,10,13,19,21,27,30,34],nextdoubl:33,nextfixingof:9,nextlong:33,nextscheduledact:9,nfinal:32,nice:[25,34],nio:2,noddi:22,node:[],node_dir:7,nodea:[6,7],nodeb:7,nodefilt:18,nodehandl:18,nodehost:18,nodeident:33,nodeinfo:[6,10,24,33],nodeinterestr:25,nodeservic:25,nodesslconfigur:33,nodisruptionwindowm:18,non:[],none:[9,10,16,19,26,35],nonemptyset:27,nordea:27,normal:[1,3,4,5,7,10,18,19,21,24,27,31,32,34,35],north:34,notabl:2,notaris:[3,8,10,27,29,31,34],notary:10,notarychang:27,notarychangeflow:3,notarychangeprotocol:[],notaryclusteraddress:[6,24],notaryexcept:3,notaryflow:[3,10,24],notaryident:33,notarynod:10,notarynodeaddress:6,notaryprotocol:[],notaryservic:[],notarysig:10,notarysignatur:10,notarytous:31,note:[],noth:[2,8,9,10,27,30,34],notic:2,notif:[18,20,24,32],notifi:[3,20,21],notion:[5,8,27,34],notnul:[34,35],now:[2,7,8,10,15,19,22,27,29,31,33,34,36,37],nugget:34,nullabl:34,nullpublickei:34,number:[2,4,5,8,10,14,16,18,23,24,25,26,28,29,31,34],numer:8,obj:34,object:[],oblig:[4,5,27,31],obligor:4,observ:[1,3,5,8,9,10,18,27,33],observatori:3,obsolet:[9,27],obtain:[],obviou:[2,3,8,25],obvious:[5,14],occasion:[12,13],occur:[3,9,10,24,34],occurr:3,odd:34,off:[],offer:[10,13,24,26],offlin:20,offset:5,often:[2,4,5,8,10,13,25,34],oftenor:25,oil:[27,36],old:[3,10,14,27,34],omit:[9,16],onc:[1,2,3,10,14,28,31,34],once:[0,3,5,7,9,10,14,21,26,31,32,34,37],onchainasset:4,one:[3,13,19],ongo:1,onledgerasset:34,onli:[1,2,3,5,6,7,8,9,10,11,14,19,20,21,22,23,24,25,27,28,30,31,34,35,37],only:[10,24],onto:[1,2,10,34],opaquebyt:33,open:[1,3,7,8,10,13,16,22,24,27,29],openattach:32,opengamma:[16,27],openjdk:[],openssl:18,oper:[5,6,9,10,12,14,22,24,25,27,30,31,34],opt:[7,18],optim:2,option:[0,2,5,6,9,10,14,18,21,26,27,34,35,37],oracl:[],orchestr:[17,27,37],ordain:5,order:[0,1,2,3,4,5,8,10,13,16,17,18,21,24,25,26,27,29,31,32,33,34,35],ordinari:[8,10,27,34],org:[0,6,34,35],organis:26,orient:[],origin:[19,26,27,31,32,34],originalst:3,orm:26,otc:26,other:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,21,23,24,25,26,27,29,30,31,32,34,36],otherparti:10,othersid:[10,32],otherwis:[1,2,6,7,9,10,24,30,33,34],our:[2,3,8,9,10,11,12,18,19,24,27,28,29,31,33,34,36],ourselv:[10,34,37],oursignatur:10,out:[2,3,4,8,9,10,12,16,19,20,22,24,25,27,28,30,31,33,34,35],outcom:10,outer:35,outermost:35,outlin:[8,10],outpoint:8,output:[3,4,7,8,10,14,19,23,25,27,29,32,33,34,35,36],outref:10,outsid:[7,8,10,24,25,37],outstand:4,over:[2,3,5,6,7,8,10,14,18,19,20,22,25,26,29,31,34],overal:[3,9,36],overdu:9,overflow:2,overidden:[6,7],overload:[10,31],overlord:14,overnight:31,overrid:[9,10,18,26,33,34,35],overutilis:18,overwhelm:8,own:[2,3,4,7,9,10,12,18,22,23,24,25,26,27,28,31,33,34,36,37],ownablest:[10,31,34],ownedquant:33,owner:[9,10,26,31,34,35,36],owner_kei:26,ownership:[10,34],owningkei:[10,19,34],ozturk:27,p2p:27,pack:34,packag:[12,26,27,31],packet:8,page:[13,25,28,29],pai:[],paid:[4,5,8,16,34],pair:[8,10,24,31,33,34],paragraph:18,parallel:[1,8,18,25],parallelis:8,param:[18,26],paramet:[1,2,9,10,18,31,34,35],parameteris:[8,18],parent:[10,14],pars:[6,25,31,34,37],part:[1,2,3,4,7,8,9,10,15,18,19,24,26,27,29,30,31,37],parti:[],partial:[3,8,10,19,30,34,36],partialtx:[10,19],particip:[3,8,24,27,34,37],particular:[],partner:16,partyandrefer:[2,33,34],partynod:10,partyrefer:[2,34],pascal:2,pass:[3,10,18,19,22,24,26,29,32,34,35],password:[1,6,7,22,23,27,33],past:[2,29,34,37],patch:[2,27],path:[2,6,7,9,13,18,20,22,27,33,34],path_to_loadtest_conf:18,pattern:[2,8,33],paus:[7,21],paycash:33,paye:8,payer:[5,8],payment:[4,5,8,9,10,14,16,25,29,34],pdf:[25,32],peer:[10,17,19,24,25,34],penni:[26,31,34],peopl:[2,8,10,11,14,34],per:[],perform:[2,3,5,8,9,10,12,14,16,18,25,27,29,31,32,34,35],perhap:[2,8,20,34],period:[5,29],perman:[32,34],permiss:[1,6,17,27,33],persist:[],persistentcashst:26,persistentst:26,perspect:[8,10,24,34],phase:27,phrase:25,physic:[3,24,27],pick:[10,20,27,28,34,37],piec:[2,3,8,10,14,18,31,34,36],pip:0,pki:[8,27],place:[0,2,5,8,9,10,12,16,17,19,20,25,27,28,29,31,33,34,37],plai:[],plain:6,plan:[8,10,25,27],platform:[3,5,7,8,9,10,11,12,19,25,30,31,34],pleas:[2,8,26,27,29,32],ploadtest:18,plu:[6,24,31],pluggabl:27,plugin:[],pluginservicehub:[24,27],point:[1,2,3,4,7,8,10,14,18,22,24,25,26,28,30,33,34],pointer:[3,10,31],pointless:2,polish:27,polit:16,poll:18,pool:[2,8],poor:8,pop:13,popul:24,popular:11,popup:13,port:[6,7,18,23,24,27,28],portfolio:[],posess:10,posit:[2,3,8,10,34],possess:3,possibl:[8,10,12,16,18,24,25,32,34],post:24,postgr:17,potenti:[2,3,10,11,16,34],pound:[31,34],power:[6,8,24],practic:[6,8,16,27,34],pre:[0,5,10,34,36,37],preced:34,precis:[3,8,17],precondit:[2,34],predict:18,predominantli:12,prefer:[2,13,26],prefix:[2,26],preliminari:16,prepar:[8,27,34],present:[1,3,4,5,6,7,10,17,18,26,27,31,34,35],preserv:[3,8],press:12,pretend:[22,31],pretti:[8,10],prevent:[16,30,34],previou:[8,10,18,27,31,36],previous:[5,9,25,27],price:[8,10,25],primari:[12,25],primarili:4,primit:[31,36],print:[1,22,27,29,30,33],println:[32,33],printorvisualis:33,priv:10,privaci:[2,3,8,10,17,27,34],privat:[2,6,8,10,26,32,34,37],privatefoo:2,privatekei:24,probabl:[34,37],problem:[3,8,10,12,13,25],proce:10,procedur:[10,34],process:[],processor:[8,18],produc:[0,9,21,34,36],product:[2,7,9,11,12,16,17,27,28,31],profound:8,program:[1,2,8,22,24,27,29,31,34,37],progress:[],progresstrack:10,project:[7,12,13,15,16,24,27,29,34],prolif:27,promis:27,prompt:12,proof:[4,8,19],propag:[1,10,22,34,35],properli:[10,24,30],properti:[],proport:16,propos:[10,15,24,30],proprietari:[16,27],prose:[25,31,34],prospectus_hash:32,protect:[10,16,24],protocolhandl:[],protocollog:[],protocollogicreffactori:[],protocoltrack:[],protocolvers:1,prototyp:[2,17,25,27,34],prove:[3,8,34],proven:16,provid:[0,1,2,3,4,5,6,7,8,10,12,14,18,19,20,21,22,23,24,25,26,27,30,31,34,37],provision:31,proxi:[1,33],pseudo:25,pseudonom:31,ptx:[3,10,32],pubkei:36,publicfoo:2,publickei:[],publickeytre:[],publish:7,pull:13,punish:25,purchas:[10,29],pure:[4,8,25],purpos:[3,4,10,14,26,31,33,34],push:[1,28],put:[],python:0,qualifi:[6,26],quantiti:[8,18,31,33,34],quasar:[7,10,14,24],quasarscan:7,queri:[1,5,6,9,24,25,26,27,33],queryablest:[24,26],question:[2,3,9,13,25,31],queu:[14,20],queue:[1,2,10,20,24],quick:25,quickcheck:27,quickli:[8,14,30,34],quit:[1,2,3,10,12,34],r3cev:18,r3corda:7,r3dlg:28,r3prototyp:0,r3repositori:[],raft:[6,24,27],rais:[3,35],random:[8,9,18,27,31,33],randomis:27,randomli:[18,33],rang:[3,26],rapid:[2,7,17,28],rare:[6,31],rate:[],ratesfixflow:19,ratesfixprotocol:[],rather:[2,8,10,20,27,33,34],raw:[10,20,22],rdbms:[26,27],rdms:27,reach:[3,5,8,9,16,25],reachabl:10,react:18,reactiv:27,read:[2,6,7,8,10,11,15,17,19,22,24,27,29,34,37],readabl:[6,10,11],readi:[3,10,28,34],readili:[31,35],readme:2,real:[2,16,25,27,31,34,37],realis:10,realist:31,realiti:5,realli:[2,3,8,10,19,34],reason:[2,3,5,8,10,12,18,27,30,31,34],reassign:34,recal:5,receipt:24,receiv:[1,4,5,8,10,14,16,18,24,25,27,28,29,30,32,34],receiveandcheckproposedtransact:10,receiveandvalidatetraderequest:10,recent:[12,27],recipi:[4,8,29,32,34],recognis:[8,10,12,34],recommend:[2,12,20,29,37],record:[3,9,10,14,24,26,32,33],recordtransact:[10,24],recreat:10,red:[5,19],redeem:[4,34,35],redempt:34,redesign:27,reduc:[2,7,16,34],redund:2,ref:[10,31,33,36],refactor:27,refer:[2,3,4,5,6,8,9,10,12,14,16,24,25,27,31,32,34,36],referenc:[3,32],refin:27,reflect:[10,15,18,27,34,35],refresh:[12,27],refus:13,regard:[3,12],regardless:10,regener:[5,28],regist:[],registerflowiniti:10,registerprotocoliniti:[],registerrpckryotyp:33,registr:24,regul:34,regular:[10,14,22,29,31,34],reissu:34,reissuanc:8,reject:[24,34],rel:[6,7,8,11,12,35],relabelablestep:10,relai:32,relat:[],relationship:[24,34],relax:[18,27],releas:[],relev:[7,8,9,14,15,24,27,31,34,35],reli:[1,7,8,16,27,30],reliabl:24,relianc:8,relic:22,religi:2,remain:[7,9,10,34],remeb:[],rememb:[2,9,13,30],remind:[10,30],remot:[6,7,13,18,24,32],remotemessagingport:18,remotenodedirectori:18,remotesystemdservicenam:18,remov:[10,19,27,28,33,34],renam:[10,27],render:[2,10,21,27],renderifsupport:32,repeat:[2,5,10],replac:[1,3,5,12,16,22,27,28,31,33,34],replai:27,replic:[6,8],repoint:3,report:[10,35],repositori:[2,7,12,13,27,28,29],repres:[2,4,5,8,10,18,24,25,26,27,31,33,34],represent:[1,5,26],request:[1,3,8,10,18,20,24,25,26,27,30,32,33],requestingparti:3,requiredcommand:[27,35],requiresinglecommand:[34,35],requirethat:[34,35],research:27,resel:25,resend:24,resent:24,reset:[5,21],reshap:8,resid:24,resolut:[3,8,10],resolv:[2,10,16,31,34],resolvefromtwohash:10,resolvetransactionsflow:[10,32],resolvetransactionsflowtest:10,resolvetransactionsprotocol:[],resolvetransactionsprotocoltest:[],resourc:[1,6,8,10,18],respect:[2,8,10,29],respend:8,respond:[10,24],respons:[1,3,8,9,10,20,24,26,33],rest:[3,8,10,17,22,27,37],restart:[10,24],restor:[10,14],restrict:[2,16],restructur:35,restructuredtext:0,result:[2,3,5,6,8,10,16,23,24,25,26,27,30,33,34,35],resum:[10,24,27],resurrect:10,resync:12,retain:20,rethrown:1,retri:[10,17,20],retriev:[3,5,10,32,33],retrieveoutput:36,reus:[1,8,36],reusabl:[14,25,27,32],reveal:[3,8,10,19,27],revers:[10,24],revert:4,review:[2,27,28],revis:[5,13],rewrit:10,richer:7,right:[2,10,12,13,22,27,28,30,37],rightmost:19,rigid:8,rigidli:2,risk:[10,16],robert:27,robust:27,role:[8,9,24,29,32,37],roll:[5,10,27,29],rollov:[31,34],root:[6,7,19,24,28],rotat:[22,27],roughli:[3,28],rout:[10,12,20,27],row:[22,23,26,31,34],rpcexception:1,rpckryo:1,rpcreturnsobserv:[1,33],rpcsincevers:1,rpcuser:[6,33],rui:27,ruin:36,rule:[2,10,16,24,25,27,34],run:[],runbuy:29,rundemonod:[23,27],runnetwork:10,runnod:[7,16,29],runparamet:18,runrecipi:[29,32],runsel:29,runsend:[29,32],runshellcommandgetoutput:18,runtim:[2,10],safe:[1,2,8,10,30,33],sai:[2,3,8,12,16,18,29,34],sake:16,sale:[29,34],same:[1,2,3,4,5,6,8,9,10,18,24,25,27,31,34,35,36],sampl:[7,10,16,21,27,29],sanction:34,sandbox:[8,9,17,27,30],saniti:10,santiago:27,satisfi:[31,34],save:[2,10,27,34],scala:[11,34],scalabl:[2,8],scale:[5,30],scan:7,scenario:[8,24,31,37],scene:[10,34],schedul:[],schedulablest:[9,24],scheduledact:9,schedulerservic:24,schema:[],schemafamili:26,schemaopt:26,schemaservic:26,scheme:[19,24],scope:[8,23,35],scotiabank:27,scrape:22,scratch:[31,37],screen:[2,13,23,27,34],script:[0,7,8],scroll:29,scrub:10,seamless:11,search:[23,24,34],second:[5,10,18,29,31,34],secondari:10,secp256r1:27,secret:6,section:[6,8,15,18,27,28],securehash:[3,19,31,33,34,35],securerandom:27,see:[0,1,2,3,4,5,6,7,9,10,12,13,18,19,25,26,27,29,31,32,33,34,35,37],seed:10,seek:[8,27],seem:8,seemless:12,seemlessli:12,seen:[2,5,10,25,34],segment:7,select:[3,12,13,26,27,34,35],selectschema:26,self:[7,18,27,29],selfissuecommand:18,selfissuest:18,selfissuetest:18,sell:[10,34,37],seller:[],sellerownerkei:10,sellersig:10,sellertradeinfo:10,semi:8,send:[2,3,8,10,19,20,22,24,25,27,28,29,32,34,36],sendandrec:10,sender:[8,10,29,32],sendsignatur:10,sens:[5,25,34],sensit:[9,16,19,30],sent:[9,10,27,31,34],separ:[3,6,7,8,10,19,20,22,25,31,34],septemb:16,sequenc:[8,24,27],sequenti:10,seri:10,serial:[1,17,24,34],serialis:[1,2,8,10,14,17,34],seriou:[8,28],serious:37,serv:7,server:[1,6,7,17,20,22,24,27,34,37],servicehub:[3,7,10,20,24,32],servicehubintern:[3,7,10,27],serviceinfo:33,servicetyp:[6,24],session:[9,20,24,27],sessionid:9,set:[],setof:[10,32,33,35],setter:[26,34],settim:[10,31],settl:[4,10,31,32],settlement:[4,10],setup:[7,9,10,21],sever:[6,7,8,10,24,26,33,34,36,37],sha256:[19,31,34,35],sha256sum:22,sha:[8,22],shape:8,share:[4,5,8,10,14,16,24,25,27,30,32,34,37],shasum:22,she:34,shell:[16,18],shoot:30,shortcut:17,shorthand:36,should:[2,3,4,7,8,9,10,13,15,16,17,18,19,24,26,27,29,30,31,33,34,35,36,37],shoulder:2,shouldn:[10,19,34],show:[8,11,13,21,23,24,27,29],shown:[1,6,10,21,31],shut:32,shutdown:[10,24],side:[1,8,9,10,12,21,25,29,30,31,32],sidebar:21,sig:[27,34],sign:[3,5,8,10,14,17,19,20,24,25,27,29,30,31,34,35,36],signal:14,signatureexcept:10,signaturesfromsel:10,signedtransact:[3,10,31,33,34],signer:[19,25,34,35],signific:[8,27],significantli:[5,18,31,32],signoff:3,signwith:[10,31,32,34],signwithecdsa:10,signwithourkei:10,silver:2,similar:[2,8,10,27,34,35],similarli:26,simm:[],simmvaluationdemo:[16,29],simpl:[1,2,4,5,6,8,10,12,16,17,18,22,24,27,31,32,33,34,35],simplecash:36,simplecashdoesntcompil:36,simplecashfailswith:36,simplecashsuccess:36,simplecashtweaksuccess:36,simplecashtweaksuccesstopleveltransact:36,simplenam:26,simplenotaryservic:3,simpler:[8,11],simplest:[8,10,34,37],simpli:[2,7,8,10,18,20,24,26,27,31,34,36],simplif:27,simplifi:[2,4,8,24,31,34,37],simul:[],simultan:[8,10,31,34],sinc:34,singl:[],singlemessagerecipi:20,singleton:[10,34,35],site:[2,27,28],situat:[2,8,19],size:[2,5,8,10,33,34,35],skeleton:10,skip:[10,31,34],sleep:[18,32,33],slf4j:10,slightli:34,slip:28,slot:27,slow:[2,8,18],slowest:8,small:[1,8,9,10,25,29,30,34],smaller:[27,35],smallest:31,smart:[],smooth:34,snake:36,snapshot:[8,27,28,33],snide:0,snippet:[3,10],socket:22,softwar:[8,10,28,30,37],sofu:27,sold:[10,31],solut:10,solv:[8,10,25],solvenc:25,some:[1,2,3,4,8,9,10,12,16,17,18,19,22,24,25,26,27,29,31,33,34,35,36,37],somed:34,somehow:18,someon:[3,8,34],someth:[1,2,5,8,10,27,29,34,35,37],sometim:[8,10,14,22,31],someusernam:18,somewhat:[1,8,10,18,27],somewher:34,soon:[27,34],sophist:8,sort:[10,25,27],sound:[2,10,34],sourc:[5,6,7,9,10],sourcejar:7,sparingli:2,speak:27,spec:27,special:[1,3,8,10,36],specif:[1,3,4,7,8,9,10,12,14,18,20,22,24,27,31,32,34,35],specifi:[0,1,2,3,4,6,7,8,10,14,17,18,19,26,27,31,34,35,36,37],speed:[8,10,11],spend:[8,10,17,24,30,34],spent:[8,34,36],sphinx:0,sphinx_rtd_them:0,spin:18,spirit:27,spline:31,split:[8,19,20,27,31,34,35],splittabl:34,splittablerandom:[18,33],spot:27,spread:[3,10],spreadsheet:25,sql:[17,26,27],src:[6,10,24,32,37],ssh:18,sshuser:18,ssl:27,sslconfig:33,sslkeystor:6,stabilis:28,stabl:[1,28,33],stack:[10,24],stage:[2,4,10,31,34,37],stai:[8,24,34],stake:8,standalon:[21,25,27],standard:[2,7,10,12,14,16,22,24,27,29,31,33,34,35],standardis:[8,31],start:[],startflow:[3,10,32,33],startflowdynam:33,startflowpermiss:33,startnod:33,startprotocol:[],startprotocoldynam:[],startprotocolpermiss:[],startup:[22,27],startwith:33,state:[],stateandref:[3,10,31,33,34],statehistori:3,stateless:8,statemachineinfo:33,statemachinemanag:10,statemachinerecordedtransactionmap:33,statemachinesandupd:33,statemachinetransactionmap:33,statemachineupd:33,statement:[2,8,10,25,34],stateref:[3,8,9,19,26,31],statesoftyp:[10,34],statist:22,status:8,stem:34,step:[],still:[3,8,9,10,13,25,27,34,37],stock:[8,25],stone:18,stood:26,stop:[2,10,24,32],stopnod:10,storag:[6,8,10,14,15],storageservic:32,store:[3,6,7,10,22,24,27,31,32,34],stori:[2,27],straightforward:[10,34],strain:18,straincpu:18,stream:[1,10,20,27,33],stress:[2,18],strictli:[5,8],string:[6,10,18,25,26,31,33,34],strip:34,strong:11,strongli:12,structur:[2,8,10,13,14,17,19,25,27,31,34],stub:[16,27],studi:34,stuff:2,stx1:10,stx2:10,stx:[10,31],sub:[1,2],subclass:[4,10,26,31,34],subclaus:35,subdirectori:22,subflow:[3,10,24],subfold:24,subgroup:8,subject:[6,7,14,16],submiss:25,submit:[2,3,10,18,20,27,29],subproject:7,subprotocol:[],subscrib:[1,20,27,32,33],subsequ:[14,34,36],subset:[4,19],substitut:6,subsystem:20,subtask:10,subtl:[2,8],subtract:31,subvert:30,success:32,successfulli:33,successor:[3,9,11],succinct:2,sudo:0,suffer:[8,16],suffic:10,suffici:[8,25,28,31,33],suggest:[7,12,20,34],suggestinterestrateannouncementtimewindow:9,suit:[27,32],suitabl:[9,20,24,28],sukrit:27,sum:[16,18,33,34,36],sumcashbi:[10,34],summari:[],summaris:8,sun:2,superclass:[4,27,31],superior:2,supersed:8,supertyp:34,suppli:[4,18],support:[],supportedschema:26,suppos:[10,34],suppress:[2,27],suppresswarn:2,sure:[3,27,28,30,32,34,37],surfac:10,surround:2,surviv:10,suspend:[],suspens:24,swapping_signatures:10,swapsignatureswithsel:10,symbol:[],sync:[24,34],synchronis:[2,3,8,24],syntax:[11,34],system:[1,3,6,7,8,10,12,15,17,18,19,22,23,24,26,27,32,34],systemd:18,tab:[2,7,12,13,29],tabl:[7,22,23,24,26,27],tableprefix:26,tackl:[27,35],tag:[1,2,14,28],take:[2,5,9,10,17,18,19,27,28,29,30,31,34,35,36],taken:34,talk:10,tamper:10,target:[0,2,6,8,10,11,16,21,22],task:[6,7,8,9,10,12],tcp:[7,22],team:[],tear:[],teardown:10,techniqu:[2,8,17,25],technolog:15,tediou:34,tell:[0,10,33],templat:[],temporari:7,temporarili:[10,28],tempt:[30,34],ten:34,tend:14,tenor:[5,22,25,31],term:[4,6,8,9,14,16,20,31,35],termin:[5,7,10,22,24,29],terminolog:8,test:[],testnam:18,testnet:[7,27],testtimelock:34,text:[2,13,22,27,36],than:[1,2,3,7,8,10,20,22,27,31,34],thank:27,thedao:27,thei:[1,2,3,4,5,7,8,9,10,14,16,18,19,21,22,24,25,26,27,28,29,30,31,32,34,35],them:[1,2,3,5,6,8,9,10,12,13,17,18,19,20,22,24,26,27,28,29,31,32,33,34,35,36,37],theme:30,themselv:[1,10,18,20,21,24,25,29,30,31,33,34],theori:[],therefor:[1,7,8,10,13,14,16,17,24,28,30,34],thi:[0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],thin:20,thing:[],think:[2,8,10,13,20,30,34],third:[8,16,19,27],thisstateref:9,thorough:10,those:[1,3,8,9,10,16,22,30,34],though:[10,19,22,34],thought:[8,11],thousand:36,threadsaf:2,three:[7,10,19,23,29,31,34],threshold:[14,24,27,31],through:[1,5,8,9,10,12,20,21,22,24,27,32,34,35,36,37],throughput:[3,8],throwifsignaturesaremiss:10,thrown:[1,10,30,34],thu:[2,3,6,8,9,22,24,25,27,31,34],ticket:10,tidi:10,tighten:34,tightli:10,time:[],timelin:34,timem:34,timeout:1,timestamp:[],titl:13,tls1:24,tls:[20,27],todo:[2,10,34],togeth:[4,8,12,19,27,29,34,35],token:[10,31,35],told:2,toledgertransact:31,toler:[3,9],too:[2,10,34],took:10,tool:[10,11,12,14,18,20,21,22,23,26,27,29],toolbar:13,top:[2,8,10,13,18,20,23,27,29,33,35],topic:[20,34,37],topicsess:[20,27],toplevel:36,topriv:10,torn:27,tosignedtransact:[3,10,31,32,34],tostr:[2,10,26,34],tostringsshort:10,total:[8,18,31],toward:[27,28],towiretransact:[19,31],trace:[10,35],track:[],tracker:10,trade:[],tradeoff:[],trader:[],traderdemo:37,traderequest:10,tradit:8,traffic:[6,8,21],transac:14,transact:[],transactionbuild:[3,10,27,31,32,34],transactionforcontract:[34,35],transactionforverif:34,transactionst:[3,19,27,31],transactionstorag:24,transactiontyp:[10,27,32],transactionverificationexcept:36,transfer:[30,34,36],transit:[24,30,31,34,37],translat:24,transmit:[],transport:[6,7],travel:34,treat:[7,30,34],tree:[],tri:[8,12,27,34],tricki:[8,10],trigger:[3,4,9,10,18,24,25,29,35],trim:35,trivial:[2,8,32],troubl:13,trust:[4,6,8,24,30],trustpass:[6,33],truststor:[6,24],truststorepassword:[6,33],truth:10,tupl:2,ture:8,turn:[8,10,31,34,35,36,37],tutori:[],tweak:[18,27,36],twice:36,two:[],twopartydealflow:9,twopartydealprotocol:[],twopartytradeflow:10,twopartytradeprotocol:[],txb:31,txbit:10,txhash:[8,10,33,34],txnid:33,txnnote:33,txt:22,type:[],typenam:10,typeonlycommanddata:34,typesaf:6,typetobui:10,typic:[8,9,10,20,22,24,26,30,31,32,34,37],ugli:10,ultim:24,ultimat:22,unaccept:10,unacceptablepriceexcept:10,unavoid:10,unconsum:[24,26],under:[0,7,16,18,24,27,28,29,31,34,35,36,37],underli:[4,5,8,10,27,31],underscor:2,understand:[8,21,22,34,35,37],unencrypt:6,unexpect:[10,30],unfinish:10,unfortun:[10,30,34],unicredit:27,unifi:[27,37],uniform:9,unindex:13,uniqu:[3,8,10,24,25,27,31,32],uniqueidentifi:[],uniquenessprovid:24,unit:[],univers:27,unix:[7,16,22,29],unknow:3,unknown:31,unless:[2,10,25,28,34,37],unlik:[24,34],unlike:4,unlink:13,unlock:6,unnatur:8,unpack:[7,24,34],unprocess:35,unqiu:9,unread:10,unrecognis:34,unrel:34,unschedul:9,unserialis:10,unset:5,unspent:[8,14],unstarted:10,unsubscrib:1,unsubscript:1,unsupportedoperationexcept:[1,34],until:[1,3,5,8,9,10,24,27,28,36,37],untrust:10,untrustworthydata:[10,27,30],unverifiedtransact:36,unwrap:[10,27],upcom:[9,27],updat:[1,7,8,10,13,18,20,24,27,28,32,33,34],update:[12,33],upgrad:[10,13,26,27,34],upgrade:27,uphold:34,upload:[],uploadrat:29,upon:[5,7,10,14,24,34],upward:28,urandom:18,url:[6,7,22,27],usabl:[27,28,34],usag:[],usage:33,usd:[18,23,33],use:[2,4,8],used:14,usehttps:6,useless:34,user1:[6,23],user:[0,1,2,6,7,8,10,15,17,18,23,25,27,29,33],usernam:[1,6,22,23],usr:0,usual:[2,8,34],usualli:28,utc:9,util:[3,7,12,24,27,31,33,34],utilis:33,uuid:[27,31],vagu:2,val:[2,3,9,10,18,19,25,26,31,32,33,34,35,36],valid:[],validatedtransact:[10,32],validatingnotaryservic:3,validfrom:34,valu:[2,3,4,5,6,8,10,16,19,23,24,25,27,29,34,35,36],valuabl:25,valuat:[5,16,27,29],valueof:33,vanilla:[4,5],vararg:33,vari:[],variabl:[2,5,7,8,10,34],variant:[24,34],variou:[2,8,10,16,22,24,30,34],vault:[15,18,23],vaultandupdat:33,vaultservic:24,vaultsselfissu:18,vcs:12,vega:27,vehicl:8,vendor:[17,22],verbos:34,veri:[2,4,8,10,12,14,16,24,25,30,34,36,37],verif:[],verifi:[],verifiedtransact:33,verifyclaus:35,verifypropos:27,verifysignatur:10,versa:[4,5,8,10,31],versu:10,vertic:2,vet:30,via:[0,1,2,5,8,9,10],vice:[4,5,8,10,31],view:[],virtual:[8,14,30],visibl:[3,8,19,23,24,33],vision:15,visual:27,visualis:[20,21,33],vital:10,wai:[1,2,3,7,8,9,10,13,14,16,18,19,20,22,25,26,27,29,34,36,37],wait:[9,10,13,18,24,27,29],waitforallnodestofinish:33,wake:27,wallet:[8,9,10,14,27,34],walletservic:10,want:[1,2,8,10,13,18,19,22,25,27,29,30,31,34,36,37],warn:[],watch:30,weak:[25,31],wear:28,web:[6,7,16,17,22,24,25,27,29],webaddress:6,webapp:27,webport:7,websit:[12,13],websocket:10,week:11,weekend:5,weight:31,well:[0,2,3,5,8,9,10,12,14,17,19,22,24,26,27,32,33,34,35],went:2,were:[2,8,10,16,24,25,34],what:[],whatev:[2,10,21,24,31],when:[1,2,3,4,5,6,7,8,9,10,13,16,18,20,21,22,23,24,25,26,27,29,30,31,32,33,34,36],whenev:[2,12],where:[],wherea:[5,13],wherev:22,whether:[1,3,4,10,18,24,25,31,35],which:[0,1,2,3,4,5,6,7,8,9,10,12,13,14,16,17,18,19,20,21,22,24,25,26,27,28,29,31,32,33,34,35,36,37],whilst:[8,10,24,25,27,30,34],white:[15,27],whitelist:[4,7,9,10],who:[2,6,8,10,11,16,27,31,34],whole:[3,19,24,36],whom:[4,8],whose:[4,22,31],why:[2,8,11,15],wide:[1,2,19],widescreen:2,widespread:2,widget:23,width:2,wiki:[8,34,35],wikipedia:[34,35],window:[3,7,8,10,13,16,21,22,23,29],wiretransact:[3,10,19,25,31],wish:[7,8,10,15,16,25,26,27,31,34,37],within:[0,2,3,6,8,11,12],withitem:[31,34],withkei:10,withnewown:[10,34],without:[],withoutissu:[10,34],withoutown:[34,35],withowner:34,won:[10,20,23,25,27,33,34,36],word:[2,3,6],work:[1,2,3,5,6,7,8,9,10,12,17,18,22,24,25,27,29,31,32,33,34],worker:2,workspac:[6,7,24],world:[6,8,10,16,21,25,34,36],worn:34,worri:[2,10,34],worst:8,worth:[2,30,34],worthless:25,would:[1,2,3,4,5,7,8,10,12,14,16,17,22,25,30,31,32,34,35,37],wouldn:25,wrap:[2,10,20,22,24,27,30,31,34,35,37],wrapper:[2,3,10,33],write:[],written:[0,1,5,8,11,12,27,34],wrong:[1,2,10,36],wrote:8,wtx:[3,10,19,25],www:0,xcode:12,xml:22,xterm:7,year:[5,10],yet:[2,3,5,8,10,14,17,27,31],yield:8,york:7,you:[0,1,2,3,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,23,25,26,27,29,30,31,33,34,35,36,37],your:[],your_usernam:[],yourself:[8,9,30,31],zero:[8,14,34],zip:[8,22,32],zone:9,zoneddatetim:9},titles:["Building the documentation","Client RPC","Code style guide","Consensus model","Contract catalogue","Interest Rate Swaps","The Corda Configuration File","Creating a Cordapp","Data model","Event scheduling","Flow state machines","Further notes on Kotlin","Getting set up","Getting Set Up : Faultfinding","Glossary","Welcome to the Corda!","Initial Margin Agreements","What’s included?","Load testing","Transaction Tear-offs","Networking and messaging","Network Simulator","Node administration","Node Explorer","A Brief Introduction To The Node Services","Writing oracle services","Persistence","Release notes","Release process","Running the demos","Secure coding guidelines","Data types","Using attachments","Client RPC API Tutorial","Writing a contract","Writing a contract using clauses","Writing a contract test","Where to start"],titleterms:{"class":[1,33,34,35],"function":[10,34],about:13,access:22,adding:34,administr:22,adopt:8,against:7,agreement:16,amount:31,api:[33,34],app:[7,16],approach:25,artemismessagingserv:24,assert:25,assertion:2,asset:34,attach:[22,32],attachment:[29,32],basic:25,bitcoin:8,brief:24,build:[0,7],buyer:10,cash:[4,31],catalogu:4,chain:36,chang:3,check:34,claus:[34,35],cli:13,client:[1,33],cluster:18,code:[2,12,30,34],command:34,comment:2,commerci:[4,34,35],commod:4,comparison:8,compil:2,complain:13,composit:31,con:8,configur:[6,18],consensu:3,construct:34,continu:25,contract:[4,30,34,35,36],control:12,corda:[6,7,12,15,19],cordapp:[7,33],cordform:7,creat:[5,7],cryptographi:31,cut:28,data:[8,19,25,31],databas:22,date:31,dbcheckpointstorag:24,dbtransactionmappingstorag:24,dbtransactionstorag:24,debug:[7,35],demo:[23,29,32,37],detail:5,document:0,download:22,e2etestkeymanagementservic:24,encumbranc:34,error:[1,2],ethereum:8,event:[9,24],exampl:[6,9,19],explorer:23,faultfind:13,featur:10,field:6,file:6,fix:22,flow:[10,24,30],format:6,framework:24,from:33,fungibleasset:31,further:11,futur:10,gener:[2,34],get:[12,13],git:12,glossari:14,gradl:[7,12,13],group:[34,35],guid:2,guidelin:30,handl:1,happen:34,hibernateobserv:24,hide:19,how:[9,18,34],identiti:24,implement:[9,10,24],includ:17,individu:18,initial:16,inmemoryidentityservic:24,inmemorynetworkmapcach:24,inmemorystatemachinerecordedtransactionmappingstorag:24,inmemoryuniquenessprovid:24,install:7,installat:13,instanc:5,intellij:[12,13],interest:[4,5,22],interfac:[21,23],introduct:[9,10,16,24,25],irs:29,issu:13,jvm:12,kei:[24,31],kotlin:[11,12,13],kryo:[1,33],lack:13,length:2,lifecycl:[5,31],line:2,load:18,locat:6,log:22,machin:10,make:34,manag:24,map:[20,26],margin:16,math:31,merkl:19,messag:[20,24],mileston:27,model:[3,8],monitor:22,multi:[31,34],multipl:3,name:2,namedbyhash:31,network:[20,21,24],networkmapservic:24,node:[7,22,23,24],nodeattachmentservic:24,nodemessagingcli:24,nodeschedulerservic:24,nodeschemaservic:24,nodevaultservic:24,non:34,notari:[3,24],notaryservic:24,note:[11,27],object:26,obligat:4,observabl:1,obtain:3,off:19,oracl:25,orient:34,overview:8,pai:25,paper:[4,34,35],parti:[10,31,34],particular:34,per:25,persist:[7,24,26],persistentkeymanagementservic:24,persistentnetworkmapservic:24,persistentuniquenessprovid:24,plai:25,plugin:7,portfolio:29,pro:8,process:[16,28],progress:10,properti:2,protocol:1,publickei:31,put:34,raftuniquenessprovid:24,raftvalidatingnotaryservic:24,rate:[4,5,22],rational:8,regist:[1,33],relat:[24,26],releas:[27,28],requir:[0,34],rpc:[1,33],run:[3,16,18,23,29],safeti:1,schedul:[9,24],schema:26,sdk:13,secur:[1,30],seller:10,servic:[3,7,20,24,25],set:[12,13],signatur:[3,31],simm:[16,29],simplenotaryservic:24,simul:21,singl:36,smart:34,sourc:12,space:2,start:[7,10,34,37],state:[7,10,31,34],statemachinemanag:24,step:[16,28],storag:24,storageserviceimpl:24,style:[2,8],sub:10,subprotocol:[],summari:35,support:31,suspend:10,swap:[4,5],tear:19,technic:5,templat:7,test:[10,18,34,36],theori:10,thing:34,thread:[1,2],time:34,timestamp:3,track:10,trade:10,tradeoff:8,trader:[29,37],transact:[19,31,34,36],transmit:34,tree:19,troubleshoot:12,tutori:33,two:[10,25],type:[20,31],uniqueidentifi:31,unit:10,upload:22,usag:19,using:[7,32,34],utxo:8,valid:3,validatingnotaryservic:24,vari:25,vault:24,verif:31,verifi:34,version:[1,10,12],via:[12,13],view:7,warn:2,welcom:15,what:17,where:[34,37],wire:1,within:[13,24],without:13,write:[18,25,34,35,36],your:[7,10,22,33,34]}}) \ No newline at end of file +Search.setIndex({envversion:49,filenames:["building-the-docs","clientrpc","codestyle","consensus","contract-catalogue","contract-irs","corda-configuration-files","corda-plugins","creating-a-cordapp","data-model","event-scheduling","flow-state-machines","flow-testing","further-notes-on-kotlin","getting-set-up","getting-set-up-fault-finding","glossary","index","initial-margin-agreement","inthebox","loadtesting","merkle-trees","messaging","network-simulator","node-administration","node-explorer","node-services","oracles","persistence","release-notes","release-process","running-the-demos","secure-coding-guidelines","transaction-data-types","tutorial-attachments","tutorial-clientrpc-api","tutorial-contract","tutorial-contract-clauses","tutorial-test-dsl","where-to-start"],objects:{},objnames:{},objtypes:{},terms:{"00z":36,"0_xx":15,"10000l":20,"1000l":34,"17t16":36,"1mb":11,"300px":[],"5000l":20,"8u45":[],"_before_":11,"_do_":11,"_foo":2,"abstract":[9,11,26,28,29,36,37],"boolean":[9,12,20,29,35,36],"break":[11,27,30],"byte":[2,9,11,38],"case":[2,3,6,7,8,9,11,12,14,18,20,27,28,29,33,34,36,37],"catch":[2,11,14,32],"class":[],"default":[1,2,4,6,7,8,11,14,16,18,20,21,23,24,25,26,29,32,33,36],"enum":[29,35],"export":[11,24,28,39],"fa\u00e7ad":24,"final":[3,5,7,9,11,12,15,21,29,31,35,36,38],"float":[4,5,10],"function":[],"import":[2,9,10,11,15,28,29,33,36,37,38,39],"instanceof":36,"int":[2,3,20,28,36],"long":[2,4,7,9,10,20,28,36],"new":[2,3,5,6,7,8,9,11,13,22,24,25,26,29,30,31,33,34,35,36,37,38,39],"null":[6,10,12,20,28,34,36],"public":[2,6,8,9,11,16,19,22,24,26,29,33,36,37,38],"return":[1,2,3,5,7,10,11,12,20,24,26,28,29,32,34,35,36,37,38,39],"short":[10,18,30],"static":[7,8,9,11,18,27,36,38,39],"super":[2,37],"switch":[11,29,36],"throw":[1,2,3,11,20,21,35,36,37],"transient":11,"true":[3,6,9,12,16,20,27,35,36],"try":[1,2,9,11,15,29,35,39],"var":[12,28,35],"void":[36,37,38],"while":[23,33,35],abil:9,abl:[3,6,8,9,11,18,21,24,25,26,27,29,31,36],abort:[3,27],about:[],abov:[2,5,9,11,18,21,24,36,37,38],absent:6,absolut:[3,6,9],abstractnod:[7,26],abstractstatereplacementprotocol:29,acccess:7,accept:[2,3,4,9,14,16,31,36],acceptablepric:11,access:[],accid:11,accident:[2,32],accompani:[2,36],accord:39,accordingli:37,account:[9,20,29,33],accrual:5,accur:[3,18],accuraci:9,achiev:[3,9,33],achiv:21,ack:29,acknowledg:[11,26],acquir:31,acronym:18,across:[4,6,9,20,26,28,29,34],act:[3,6,9,11,26,27],action:[10,20,26,36,39],activ:[5,6,7,10,14,20,26,28,29,31,36],actor:[2,9,11],actual:[3,5,11,18,20,26,27,32,34,36,37,38],adapt:[2,11,27],add:[2,8,9,11,16,18,20,21,22,24,26,32,34,35,36,37,38],addattach:[12,34],addcommand:[11,36],addedg:35,adding:[],addinputst:[11,36],addit:[2,3,6,8,9,26,28,29,33,35,36],addition:[9,11,13,14,28,30],addmessagehandl:29,addnod:35,addoutputst:[11,36],address:[3,6,8,9,11,22,25,26,29,36],addvaulttransactionnot:35,adjust:[2,5,30,36,39],admin:[25,26],administr:[],advanc:[4,5],advantag:9,adventur:39,advertis:[1,6,26,35,36],advertisedservic:[8,35],advic:30,affect:[15,27],affinityexecutor:2,afraid:2,after:[3,4,5,8,10,11,12,13,15,16,20,21,26,27,36],again:[5,9,11,12,20,26,27,36],against:[],agent:[20,24,26],agentlib:8,aggreg:[9,18,36,37],agre:[5,10,11,16,18,31,32],agree:[5,18],agreement:[],ahead:[11,36],aid:29,aim:[2,9,20],aka:16,albeit:29,albertsen:29,alert:15,algorithm:[9,19,29,33,36],alia:6,alice:[16,25,33,35,36],alice_key:34,align:17,aliv:11,all:[0,1,2,3,4,5,6,7,8,9,11,12,13,15,16,20,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37,39],allclaus:37,allcomposit:37,allevi:3,allow:[1,2,3,4,5,6,7,8,9,10,11,16,18,20,22,26,27,28,29,32,33,36,38,39],allpartysignedtx:11,almost:36,along:[3,11,12,14,27,36],alongsid:36,alreadi:[2,8,10,11,17,18,21,27,29,34,36,37,38],alright:11,also:[1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,18,20,21,22,23,24,25,26,28,29,31,33,34,36,37,38,39],alter:[6,11,24],altern:[0,2,6,17,22,23,24,25,33,36],although:[5,6,9,11,14,15,25,26,34,36,37,39],alwai:[2,9,10,11,17,24,28,33,36],amount:[],amqp:[22,29],analysi:9,analyt:18,andresen:9,ani:[1,2,3,4,5,7,9,10,11,12,14,16,18,24,25,26,27,28,29,30,31,32,33,34,35,36,39],annot:[1,2,7,11,28],announc:30,anonym:[9,26],anonymis:26,anoth:[1,2,3,8,9,11,15,16,18,24,26,27,29,31,34,36,38],answer:[2,27],anticip:2,any:[1,4,10,18,24,26,35],anybodi:9,anyclaus:37,anycomposit:37,anyon:[3,36],anyth:[3,9,11,12,32,33,36,37],anywher:[27,29,36],apach:22,apart:3,api:[],app:[],appear:[15,36],append:[11,24],appendix:17,apple:14,appli:[2,4,5,8,9,20,25,36,37],applic:[7,8,9,16,22,26,27,29,32,36,39],applicat:16,applyfix:5,appoint:3,approach:[],appropri:[2,22,26,28,37],approv:[9,10,11],approxim:3,april:29,arbitrari:[2,9,11,27,32,33,35],arbitrarili:9,architectur:[1,17,27],area:28,aren:[1,10,19,36,39],arg:[8,29,35],argument:[1,2,7,9,11,20,35,36],aris:[9,14],around:[3,9,11,12,21,29,30,33,35,36,37],arrai:[9,35],arrang:11,arriv:[11,16,27],arrow:[5,15],art:33,artemi:[8,16,22],artemisaddress:[6,35],artemismq:[6,26],artemisport:8,articl:[3,9,10,11,27,29,36,39],artifact:8,ask:[2,11,27,36],aspect:[11,39],assembl:[9,21,36],assemblesharedtx:11,assert:[],assertequ:[12,34],asset:[],assetforsal:11,assetmismatchexcept:11,assettosel:11,assettypenam:11,assign:[9,12,27],assist:[10,11,28,33],associ:[3,9,10,22,28,29,33,36],assum:[3,9,11,17,20,21,32,35,36],assume:[11,21],assumpt:11,assur:18,asynchron:20,atom:[3,9,11,29,31,36],attach:[],attachment:[],attachmentdemo:34,attachmentstorag:26,attack:[3,32],attch:21,attempt:[9,15,32],attent:11,attest:3,attribut:2,audit:9,authent:[1,3,26,29,35],authenticatedobject:[33,36,37],author:[2,3,14,26,30,39],authoris:[6,11,26,33],auto:[2,36],autoclos:1,autom:[9,10,36,39],automat:[0,1,3,6,8,10,11,22,23,26,28,29,34,36,39],auxiliari:26,avail:[0,3,5,6,8,10,11,14,23,24,26,29,30,32,34,36],avoid:[1,2,9,11,28],awai:[1,9,11,35],await:8,awar:[1,2,10,11,26,29,36],awg:30,awkward:[2,11],axi:5,back:[1,2,9,11,18,26,27,29,32,33,36],backend:29,background:[1,2,9,17],backoff:22,backport:30,backward:[11,30],bad:[2,11,36,38],balanc:[3,4,9,25,36,38],banana:33,bananast:33,banco:29,band:11,bandwidth:2,banish:16,bank:[5,6,9,29,31,33,34,36,39],bankrupt:36,bankruptci:[3,9,18,27],bar:15,barreca:29,barrel:29,base:[2,3,5,6,8,9,10,11,16,20,22,24,26,29,33,36],basedir:[6,8],basedirectori:35,basi:[5,10,14,23,24,26],basic:[],bat:[8,18,23,25,31],batch:20,bbva:29,bear:11,becaus:[2,3,9,10,11,15,17,24,26,27,33,36,37,38],becom:[2,5,9,10,11,30,33],been:[3,5,6,9,11,14,16,18,27,29,30,33,36,37],befor:[3,5,8,9,10,11,12,20,26,29,30,33,34,36,37],begin:[2,9,17,26,36,39],behav:36,behaviour:[3,4,6,20,24,37,38],behind:[11,16,22,36],believ:29,belong:21,below:[2,5,8,9,10,11,14,18,21,26,33,36,39],beneath:16,beneficiari:4,benefit:[3,11],best:[2,39],bet:27,better:[2,13,29,36],between:[2,3,5,9,10,11,16,22,23,26,27,28,29,30,31,32,33,35,36],beyond:9,big:[2,9,11,29,36],bigdecim:[27,33],bilater:[4,5,29],bill:36,bin:[31,35],binari:[9,21,26,27,35],bind:[3,6,9,24,27],bip:9,bit:[33,36,38,39],bitbucket:[],bitcoinj:11,blah:2,blank:[2,24,25,36],block:[1,2,3,8,9,11,26,27,29,31,32],blockchain:[9,11,19,21,36],bloom:2,bloomfilt:2,blotter:31,blue:[5,21],bob:[16,25,33,36],bodi:[2,18],boil:[9,20],boilerpl:8,bond:36,bookkeep:36,boost:19,bootstrap:[6,8],bore:36,boss:17,both:[3,4,5,9,11,12,13,16,20,27,28,29,31,32,33,36],bottom:15,bounc:12,bound:[3,11,29,36],box:39,branch:[17,21,29,30],breach:9,bread:39,breakpoint:18,breviti:37,bridg:26,brief:[],briefli:[17,22],bring:[9,20,31],broadcast:[3,9,36],broadcasttransactionflow:3,broadcasttransactionprotocol:[],broke:2,broken:29,broker:[6,22,26],brows:[18,24],browser:6,buffer:1,bug:[2,29,30],bugfix:30,bui:[11,39],buildcordajar:6,builder:[11,12,29,32,34],buildmerkletransact:21,buildscript:[8,16],built:[3,6,8,11,21,29,32,36],bulk:[9,37],bullet:2,bundl:9,busi:[9,10,11,16,19,27,28,29,33,36,39],businesscalendar:33,butter:39,button:31,buyer:[],bytearrai:28,bytecod:[9,11,36],cach:[22,34],calcul:[3,5,10,11,18,21,32,33,36],calculateoursignatur:11,calendar:[5,27,33],call:[1,2,3,5,7,9,11,13,24,26,29,30,32,33,34,35,36,37,38],callback:[1,2,11,26,29],caller:[3,36],came:11,camel:2,can:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39],candid:28,cannnot:7,cannot:[3,4,9,16,27,29,32,33,36],capabl:36,capit:2,capitan:0,capsul:23,capsule_cache_dir:8,captur:10,cardon:29,care:[2,3,7,9,11,12,32,38],carefulli:13,carri:26,cash_stat:28,cashcommand:[20,35],cashflow:35,cashkt:36,cashprotocol:[],cashschema:28,cashschemav1:28,cashsigningpubkei:11,cashstat:[],cast:1,catastroph:18,caught:1,caus:[2,16,18,31,36],cbc:20,ccy_cod:28,cent:33,center:36,central:[33,36],ceo:33,cer:6,certain:[2,7,18,29,36],certainli:8,certainti:3,certif:[6,20,26,29,35],certificatespath:35,cev:[],chain:[],chaincash:38,chaincashdoublespend:38,chaincashdoublespendfailswith:38,challeng:9,chanc:[2,11],chang:[],changenotari:3,channel:11,charact:[2,6],characterist:16,charg:27,charli:33,check:[],checkabl:[27,29],checknotnul:36,checkpoint:[26,29],checkstat:36,checksufficientsignatur:[3,11,33],child:[11,33],children:[11,33],childrenfor:11,choic:[2,3,9,14,36],choos:[3,25,36],choreographi:16,chosen:[3,9,11,20],chronolog:10,chunk:[36,37,39],circl:23,claim:[9,36],clarifi:36,clash:[2,28],classic:36,classpath:[1,7,8,9],claus:[],clauseverifi:37,clean:[11,29],cleaner:29,cleanup:29,clear:[1,11,20,32,33],cleardatabasebeforerun:20,clearer:11,clearli:2,cli:[],click:[15,25,31],clock:[3,9,10,11,31],clone:[2,15,36],close:[1,3,4],closeabl:1,closer:3,closur:[2,38],cloud:24,cluster:[],cmd:[21,36,37],coars:9,code:[],codebas:[2,28],cognit:9,coin:9,collabor:29,collaps:20,colleagu:2,collect:[1,2,16,20,24,28,29,36,37],collector:[2,11,24],collis:2,column:[8,24,28],com:[0,14,15],combin:[9,16,33,36],come:[1,9,11,12,29,30,32,36],command:[],commanddata:[27,36,37],commercial_pap:[36,37],commercialpap:[4,28,36,37],commercialpaperlegaci:36,commit:[3,6,10,12,26,30],committe:18,common:[4,5,7,9,11,26,28,29,33,36,37,38],commonleg:5,commun:[6,11,16,26,29,32],compani:27,companion:[11,36,37],compar:[9,17,21,36],compat:[1,16,30],compel:3,compet:9,complementari:10,complet:[1,9,10,11,26,27,29,31,33,34,35,36,37,38],complex:[2,4,9,12,18,28,33,34,36],complic:[11,36,37],compon:[7,8,10,16,17,22,26,29],compos:[11,29,33,36,37],composit:[],compositeclaus:37,compositekei:[11,26,33],compound:29,compris:5,comput:[5,16,27],computeoursignatur:11,concaten:21,concept:[3,4,9,10,11,17,21,27,29,36],concern:[9,11,36],concis:29,conclus:[3,9,27],concret:[7,26],concurr:20,concurrenthashmap:2,condit:[3,7,20,26,27,29,37,38],conf:[6,8,26],confgur:28,config:[6,8,20,24,31,35],configur:[],configurationfil:24,confirm:[3,15,16,18],conflict:[3,9,20],confus:11,connect:[1,6,8,19,20,24,25,26,35],consid:[2,5,9,10,16,27,29,30,33,36],consider:36,consist:[5,6,9,11,16,18,20,26,27,29,37],consol:[24,31,35],consortium:16,constant:[2,28,36],constantli:27,constraint:[11,27,29,36],construct:[],constructor:[7,10,11],consum:[1,3,9,10,16,26,29,33,36],consumingtx:3,consumpt:[10,27],contact:[11,26,29],contain:[3,5,6,7,8,9,11,16,21,22,24,25,26,27,29,30,31,33,34,36,37,38,39],content:[2,3,7,8,9,10,12,15,24,27,33],context:[2,9,24,26,27,33],continu:[],contract:[],contractreject:38,contractst:[3,10,21,28,29,33,35,36],contrast:[9,11,27],contribut:33,control:2,conveni:[2,9,33,36],convent:[5,11,37],convers:[25,33],convert:[3,4,5,12,26,28,29,33,36],convinc:[11,21,33],coordin:6,copi:[2,3,9,11,22,24,26,34,36,38,39],copyonwritearraylist:2,copyright:2,copyvault:20,corda:[],corda_dev_ca:6,corda_vers:8,cordacadevpass:[6,35],cordapluginregistri:[7,8,35],cordarpccli:[1,35],cordarpcop:[1,11,35],cordarpcopsimpl:26,core:[4,7,8,9,11,15,20,24,26,27,28,29,33,34,36,38],corner:15,correct:[4,9,11,15,27,29,30,36,38],correctli:[9,11,15,16,26,27,29,36],correspond:[1,16,20,33,36],correspondingli:[2,34],cost:[1,27,36],could:[2,3,4,9,11,20,27,32,33,36],couldn:21,count:5,countabl:29,counter:[2,11],counterparti:[4,5,16,18,32],countri:[27,33],coupl:[11,12,20,35],cours:[11,20,24,27,28,36,39],coven:36,cover:[3,4,9,11,18,27,33,36,39],cpu:20,crash:[11,26],creat:[],createdummyirs:5,createsomenod:12,creation:[5,9,21,36],creator:27,credenti:25,credit:[18,29],crisi:18,crisp:36,criteria:4,critic:[9,30],crop:9,crypto:29,cryptograph:[16,21,33],cryptographi:[],csr:29,curl:24,currenc:[4,5,11,20,25,28,29,33,36],current:[1,2,3,5,6,8,9,10,11,17,19,20,21,22,23,25,26,27,28,29,30,32,33,35,36,38],currentstep:11,currenttim:11,currentwallet:[],curv:5,custodi:[12,33],custom:[1,3,7,11,24,26,28,29,31,33],customis:[1,28,35,39],cut:[],cutoff:20,cycl:[2,11,36],dai:[3,5,11,24,27,30,33],daniel:29,danks:29,dashboard:[24,25],data:[],databas:[],databaseschema:28,databasetransact:12,dataset:[5,18],datasourc:6,datasourceclassnam:6,datasourceproperti:6,datastructur:20,date:[],dateoffset:29,daterollconvent:33,david:29,dcapsul:8,dead:22,deadlin:33,deal:[2,11,27,31,33,36],dealstat:33,debt:[4,18],debugg:8,decd098666b9657314870e192ced0c3519c2c9d395507a238338f8d003929de9:24,decd:24,decentralis:[9,27,29],decid:[15,21,27,28,36],decis:[3,9,36],declar:[2,6,7,26,38],dedic:2,dedupl:[26,29],defaultissu:36,defin:[2,3,7,9,11,12,19,20,24,26,28,29,33,35,36,37,38,39],definit:[3,11,16,29,33,36,37],delai:[5,27],deleg:[3,37],delet:[2,9,11,26,29,36],deliber:[9,38],deliv:[4,12,26,33],deliveri:[11,19,22,31],demand:[3,9,11,29],demo:[],demonstr:[14,18,29,31,39],denial:3,denot:21,dens:2,depend:[2,3,8,9,10,11,12,14,15,16,18,27,29,36],dependson:8,deploi:[8,16],deploy:[8,16],deploynod:[6,8,18,31],deployvisualis:23,deposit:[36,38],deprec:29,deregist:22,deriv:[5,11,16,28,29,33,36],describ:[2,3,9,10,11,17,18,20,21,26,32,33,35,36],descript:2,deserv:[20,30],design:[2,3,9,13,16,17,27,29,32,36,37,39],desir:[7,11,33],desktop:24,despit:[11,34,36],destroi:[4,9,36],destructur:36,detail:[],detect:2,determin:[4,5,10,15,16,36,37],determinist:[1,20],dev:[6,20,24],develop:[2,6,8,9,11,13,14,17,26,28,29,30,31,36],devic:[6,9],devis:9,diagram:[5,36],diamond:16,did:21,didn:[2,11,21,30,36],differ:[2,3,4,5,6,7,8,9,10,11,14,20,25,27,28,29,33,35,36,38],difficult:11,difficulti:37,digest:3,digit:[9,11,27,29,36],digitalsignatur:[3,11,27],direct:[2,16,26,28],directli:[1,2,3,11,12,16,22,24,26,29,33,35,36,37],directori:[0,6,8,15,18,20,24,26,31,39],directthreadexecutor:2,dirnam:8,dirti:36,disabl:[26,33],disadvantag:9,disagr:18,disambigu:28,discard:32,discov:9,discoveri:23,discuss:[9,11,33],disk:[11,22,29,33],disobei:27,displai:[3,35],disput:[3,5,36],disrupt:[20,22],disruptionpattern:20,disruptionspec:20,distinct:[2,37],distribut:[3,6,7,8,9,11,16,17,19,27,29],distrust:[3,11],divid:3,divis:33,dlog4j:24,doc:[0,1,2,17,29,35],docker:24,docsit:[0,30],doe:[2,3,4,5,6,8,9,10,11,12,17,18,19,24,26,27,28,32,36,38,39],doesn:[2,3,9,11,12,15,19,24,32,36,38],dokka:0,dollar:[33,36,38],dollars:[36,38],domain:[16,29,33,36],domicil:36,domino:18,don:[1,2,9,11,13,15,20,25,27,30,31,32,33,36,37,38],done:[0,1,9,11,12,14,20,21,29,31,35,36],dot:[5,21],doubl:[9,11,19,25,26,36],doubt:2,down:[2,6,9,11,20,25,34,36,37],download:[],downsid:[2,9],drain:[1,11],draw:[29,35],drawn:35,drive:[9,39],driven:31,driver:[6,24,28,29,35,39],driverdirectori:35,drm:27,dsl:[8,16,29,38],dt_socket:8,due:[2,3,5,9,10,11,13,14,18,26,28,36,37],dummi:[4,12,38],dummy1:12,dummy2:12,dummy_cash_issuer:38,dummy_notary_key:12,dummy_pubkey_1:[36,38],dummy_pubkey_2:38,dummycontract:12,dump:35,duplic:[11,21],durat:[10,27],durationsecond:20,dure:[2,5,6,7,8,11,23,24,26,29,36],dynam:[7,9,29,36,39],each:[1,2,3,5,6,7,8,9,10,11,16,20,21,23,26,27,28,29,30,33,35,36,37,38,39],earli:[2,4,26,39],earlier:32,earliest:[5,10],easi:[2,9,13,27,29,36],easier:[2,8,11,14,29,36],easiest:[1,36],easili:[2,11,18,36],econom:5,ed25519:29,edg:35,edge:35,edit:24,edition:[],editor:15,effect:[5,6,9,11,12,18,28,38],effort:14,either:[1,2,3,4,5,6,9,11,15,16,20,21,28,31,33,35,36,38,39],elbonia:33,element:[2,9,16,21,36,37],elimin:[19,29],els:[3,8,9,11,12,26,27,33,35,36,37],elsewher:7,email:11,embed:[6,7,9,19,21,24,27,29],embedd:22,emit:[1,29],emoji:34,empti:[3,6,29,36,38],emptyledg:38,emptyset:[3,34],enabl:[6,7,8,26,34,37],enact:18,enc:20,encapsul:[2,33],enclos:2,encod:27,encount:[10,26],encourag:[28,34],encumb:36,encumberedst:36,encumbr:[28,36],encumbranc:[],end:[2,3,5,9,11,17,20,26,27,30,37,39],endpoint:[8,22,24],enforc:[2,9,36],enforceverifyorfail:38,engin:18,english:[2,36],enjoy:29,enorm:11,enough:[2,11,12,18,36,39],ensur:[2,3,9,11,15,16,21,26,29,30,32,33,36,37],ensure:[3,15,18],enter:[8,18,38,39],entir:[3,5,9,11,17,26,27,36],entireti:5,entiti:[3,9,21,27,28,33,36],entri:[5,6,8,9,11,28,32,36],enumer:[5,28],environ:[2,8,11,14,27],envisag:36,equal:[3,11,29,33,36,37,38],equiti:28,equival:[2,5,25,26,33,36],especi:33,essenti:[24,26,27,36,37],establish:[10,14,22,31],etc:[2,3,4,5,11,16,18,19,25,27,29,30,33,36,37],euribor:[24,27],euro:33,evalu:[5,24,27,37],even:[1,3,9,11,13,18,21,26,27,28,29,36,38],event:[],eventu:[20,26],eventual:[3,30],ever:[2,9],everi:[1,3,7,9,11,20,21,22,26,27,28,29,30,32,33,36,39],everybodi:9,everyon:[3,27,36],everyth:[3,32,35,36,39],evid:27,evolut:9,evolv:[28,36,39],exact:3,exactli:[9,26,33,36],examin:[2,8,9,12,36],exampl:[],examplerpccordapluginregistri:35,examplerpcvalu:35,exce:20,excel:27,except:[1,2,7,11,32,36],exception:[2,11],excess:2,exchang:[5,11,16,26,33],exclud:[6,28],exclus:4,execut:[3,8,9,10,11,16,20,23,25,26,29,33,34,36],executor:2,exhaust:[26,29],exist:[2,3,4,5,8,9,10,17,26,28,29,33,35,36,38,39],exit:[4,12,25,26,29,35,36],exitcash:35,expand:25,expect:[1,2,4,6,10,11,20,26,28,29,30,31,32,33,34,36,37,38],expectedtypenam:11,expens:[1,2],experi:[8,14,29,30,39],experienc:9,experiment:[2,29],explain:[2,10,11,20,29],explan:[2,35],explicit:[2,9,11,36],explicitli:[2,7,9,38],explor:[2,9,12,15,19,24,25,29,36,39],explorer:[],expos:[2,7,8,9,10,11,24,26,28,29,33,35],expose:33,exposur:[4,5,16],expound:14,express:[3,5,9,16,29,33,36,38],ext:8,extend:[2,3,7,8,11,13,25,26,29,33,36,37],extens:[2,7,11,16,24,26,29,32,33,36],extent:9,extern:[6,11,26,34,39],extraadvertisedserviceid:[6,26],extract:[9,24,27,33,36],extractcommand:37,extrem:[3,9,13,16,20],face:36,facevalu:36,facil:[16,26],fact:[2,3,5,9,11,16,27,36,38],factor:[5,9,18],fail:[7,34,36,37,38],failswith:38,failur:[11,16,34,38],fairli:[2,12,18],fake:39,fals:[2,3,6,11,12,27,33,36],famili:28,familiar:[1,9,36],famou:[9,29],fanci:36,far:[11,31,36],fashion:[2,18,28],fast:[9,12],fault:11,faultfind:[],fear:16,featur:[],feed:[3,27],feedback:29,feel:[36,39],fetch:[22,24,26,27,34],fetchtransactionsflow:34,fetchtransactionsprotocol:[],few:[2,11,13,24,27,30,31,36],fiber:[11,26],field:[],file:[],fill:[2,11,31,36],filter:[2,20,21,28,29],filtercommand:21,filteredleav:21,filteredtransact:21,filterfun:21,filterisinst:36,finalis:[3,5,11,29],finalisetransact:3,finalityflow:[3,34],finalityprotocol:[],financ:[8,11,29,39],financi:[9,10,11,16,18,29,33],find:[0,9,11,12,13,14,17,19,24,32],fine:[1,9,38],finish:[11,29],fire:11,firewal:[],first:[1,2,3,5,6,8,10,11,12,13,14,15,16,22,24,27,28,29,31,33,34,35,36,37,39],firstli:[7,36],fit:[2,9],fix:[],fixabledealst:33,fixedleg:5,fixedlegpaymentschedul:5,fixedratepaymentev:5,fixingroledecid:10,fixingsessioninitiationhandl:10,fixof:[21,27],flag:[24,39],flat:28,flesh:33,flexibl:[3,9,33],flight:[1,9],floatingleg:[5,10],floatinglegpaymentschedul:5,floatingratepaymentev:5,flow:[2,5],flowhandl:[11,35],flowlog:[10,11,26,35],flowlogicreffactori:[7,10],flowstatemachineimpl:26,flowtrack:11,flux:[8,39],fly:11,focu:21,fold:[2,35],folder:[0,6,8,26],follow:[0,2,3,6,8,9,10,11,14,15,20,24,25,26,36,37,38],font:2,foo:[2,35],foobrokenexcept:2,foot:32,fooutil:36,forc:[9,24,29,36,38],fordai:[10,27],foreach:35,forev:30,forget:[11,36],form:[1,3,8,9,10,11,21,26,31,36,37],format:[],former:35,formula:29,forth:[1,11],fortun:18,forward:[11,22,26,27,30,31],found:[6,11,14,15,24,27,30,33,39],four:36,fourpmtimelock:36,fraction:33,frame:[2,11,18,26],framework:[],free:[3,9,11,14],freed:1,freeli:27,frequenc:5,frequent:36,fresh:[27,36,38],freshkei:11,freshli:33,friendli:26,from:[0,2,4,5,27,29,30],fromcountri:33,front:36,frontend:19,frustrat:9,ftx:21,fulfil:[4,9],full:[2,3,4,6,7,11,18,21,22,26,35,36,37],fulli:[2,3,6,7,9,11,16,26,28,29,33],fullnodeconfigur:35,fullysign:11,fun:[3,10,11,12,20,21,27,28,34,35,36,37,38],fund:[9,18,36],fundament:[3,9,36],fungibl:[4,16,33,36,37],fungibleasset:[],further:5,futur:[],futuretransact:35,fuzz:29,gain:19,garbag:[1,2,11,24],gather:[20,36],gatherfrequ:20,gatherremotest:20,gavin:9,gcd:9,gear:30,gener:[],generatecount:20,generateiniti:12,generateirsandfixsom:5,generateissu:36,generatemappedobject:28,generatemov:36,generateredeem:36,generatespend:[11,36],generatetransact:35,genuin:2,get:[],getamount:38,getbefor:36,getbloomfilters:2,getclass:36,getcommand:[36,37],getcontract:36,getdummy_cash_issuer:38,getdummy_pubkey_1:38,getdummy_pubkey_2:38,getencumbr:36,getfacevalu:36,getfix:5,getflowtrack:11,getinput:[29,36],getinstat:29,getissuanc:36,getkei:36,getlegalcontractrefer:[36,37],getmaturityd:36,getmega_corp:38,getmega_corp_pubkey:38,getnotarysignatur:[3,11],getoutput:[29,36],getoutst:29,getowner:[36,37],getparticip:36,getprotocoltrack:[],getprotocolvers:1,getrequiredcommand:37,getresourceasstream:34,getresultorthrow:20,getsign:[36,37],getter:[28,36],gettimestamp:36,gettransact:12,getvalu:[36,37],getvaulttransactionnot:35,git:[],github:[0,6,14,15],giusepp:29,give:[3,8,9,12,22,26,29,34,36],given:[3,7,9,11,21,27,28,33,35,36],givenpric:11,glanc:25,global:[2,3,9,29,33],glue:11,gnu:0,goal:[2,9,16,19,30],goe:1,gone:[11,29,36],good:[2,11,12,21,36,38,39],got:[11,21,24],gover:36,govern:18,gps:3,grade:33,gradl:[],gradlew:[8,15,18,20,23,25,31,35],grain:1,grammar:2,granular:9,graph:[1,9,12,19,24,28,29,35],graphit:24,graphstream:35,great:[18,29],greater:2,greatest:9,green:15,grip:14,groom:9,group:[],groupclaus:37,groupclauseverifi:37,groupingkei:37,groupstat:[36,37],guarante:[16,30,33],guava:[2,36],gui:11,guidelin:[],hack:[9,29],had:[3,11,12,29,33,36],hand:[10,11,14,23,26,36],handa:29,handi:12,handler:[8,10,11,26],happen:[],happi:[31,34],hard:[2,9,11,30],harder:[9,32,36],hardwar:6,hase:5,hash:[3,9,11,12,16,19,21,24,27,29,33,35,36],hashcod:36,hashmap:20,haskel:29,hasn:20,hassl:11,hat:30,have:[1,2,3,4,5,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],haven:36,head:35,heap:11,hearn:9,heart:36,heavi:30,heavili:9,hedg:[4,5],heirarchi:2,held:[26,28,36],hell:11,hello:11,help:[2,9,10,11,31,36],helper:[5,7,11,26,33,36],henc:[3,5,9,26],her:36,here:[2,3,6,8,9,11,12,13,15,16,17,21,24,27,28,29,33,35,36,38,39],herself:35,hidden:[22,26],hide:[],hierarch:11,hierarchi:11,high:[9,11],higher:[1,2,3,24],highest:17,highli:29,highlight:29,histori:3,hit:[9,34],hoc:29,hocon:6,hold:[7,9,20,21,26,29],holder:[2,9,36],holidai:[5,27,33],home:[15,31],homepath:8,hood:38,hope:26,hopefulli:39,hospit:11,host1:20,host2:20,host:[6,8,20,26],hostandport:6,hostil:32,hotspot:2,hour:11,hous:25,how:[],howev:[3,4,5,6,9,11,21,26,27,28,33,34,36,37,38],html:[0,2],http:[0,6,14,15,18,24,26,27,31,34,36,37,39],https:6,hub:[11,16],human:[3,6,9,11,27],hundr:11,hurt:11,icon:14,ide:[13,14,15,24,29],idea:[2,9,11,14,19,39],ideal:[11,36],ident:[3,6,9,11,12,16,20,21,22,26,27,29,33,35,36,37,38],identicon:29,identifi:[5,7,9,11,16,18,21,22,24,26,27,28,33],identiti:[],identityless:9,identityservic:26,ifmatch:29,ifnotmatch:29,ignor:[6,11,35,36,37],iii:7,illegalargumentexcept:[2,11,35,36,37,38],illegalstateexcept:[2,36,37],illustr:[33,36],illustrat:2,imag:21,imagin:[2,11,36],immedi:[1,9,26],immut:[2,5,9,27,36],immutabl:[2,9],immutablelist:36,imper:2,implement:[],impli:[11,28],implic:[3,9,11],implicitli:5,important:30,importattach:34,impos:[27,36],imposs:[9,21,27],improv:[29,30,36,37],improve:9,improvement:29,inact:26,inadvert:36,includ:[],include:7,inclus:21,incom:[26,29],incompat:38,incomplet:20,inconveni:36,incorpor:[14,27],increas:[2,18],increment:1,indent:2,independ:[3,18,27,28,37],index:[5,9,10,15,28,30,36],indexsourc:10,indic:[1,2,5,10,11,29,36],indicat:20,individu:[],indivis:33,industri:[13,14,16,18,24],inf:7,infer:38,influenc:24,info:[11,12,28,35],inform:[2,3,7,9,11,12,15,25,26,29,33,34,36],infrastructur:[1,9,12,19,24,26,29,36],inher:9,inherit:[2,36,37],initi:[3,7,11,15,18,20,26,29,31,35,39],initial:[],initialis:[12,23,26,28],inlin:11,inmemorynetworkmapservic:26,inner:37,inoutgroup:[36,37],input:[3,4,9,11,16,18,20,21,25,27,29,34,35,36,37,38],inputcash:38,inputindex:3,insert:[2,3,12,24,26,27,28],insid:[1,7,9,11,12,21,26,31,32,36],inspect:20,instal:[0,6,8,10,14,15,29,31,35,36],installdist:[31,35],instanc:[],instance:38,instant:[2,10,11,33,36],instanti:[7,9,10,11,24,29],instat:38,instead:[2,9,11,12,19,22,26,29,33,36,39],instigat:3,institut:9,instruct:[14,15,16,24,34,36],instrument:[4,5,10,26],insuffici:9,insufficientbalanceexcept:36,integ:[1,29,33,36],integer:36,integr:[2,6,9,11,14,15,18,21,24,27,28,29,34],intellig:2,intend:[2,4,8,9,11,12,17,24,25,26,27,28,32,33,38],intent:[7,27,29,36],intention:2,inter:29,interact:[1,2,9,11,12,22,27,29,36],interchang:[16,33],interest:[],interest_r:6,interfac:[],interior:29,interleav:20,interledg:29,intermediari:[18,33],intern:[2,7,8,11,22,24,26,28,29,33,36],internalis:2,interop:[13,29,36],interoper:26,interpol:33,interpret:[2,9,20],intersect:36,interv:[20,33],intervent:26,intesa:29,introduc:[2,3,10,16,27,29,36],introductori:17,intuit:[2,25],invalid:[3,11,27,33,36],invari:[20,36],investig:11,invoc:[1,11],invoic:34,invok:[1,2,7,9,10,11,24,26,29],invoke:11,invokeflowasync:[],invokeprotocolasync:[],involv:[3,4,9,11,26,33,36,39],ipsa:27,irrelev:10,irs:[],irsdemo:[6,21,31],irsexport:5,irstest:5,irsutil:5,isbefor:36,isconsist:20,isda:[18,29],isempti:36,isinstanc:11,isn:[1,2,9,11,32,33,36,39],isnotari:35,isnotempti:34,isol:37,issu:4,issuanc:[4,33,36,37],issue:[4,16,20,35,36,37],issuecash:[20,35],issuedbi:38,issuer:[4,9,11,12,25,33,36,38],issuer_kei:28,issuer_ref:28,issueref:35,issuerparti:28,issuerref:28,item:[16,36],iter:[11,29,30,36],iterabl:[28,35],itself:[1,3,5,6,9,10,11,18,22,24,26,27,28,29,34,35,36,38],jar:[0,6,7,8,9,23,24,29,34],jarandsourc:8,java:[1,2,7,8,9,10,11,13,14,16,24,26,28,29,33,34,35,36,37,38,39],javaclass:[11,28],javacommercialpap:36,javadoc:[2,8],javadocjar:8,javafx:29,javatesthelp:38,javax:28,jax:7,jdbc:[6,8,24,28,29],jdbcdatasourc:6,jdbcx:6,jdk1:15,jdk:[14,15,29,33,36],jdwp:8,jetbrain:[13,14,15],jms:22,jmx2graphit:24,jmx:24,jmxtran:24,job:[11,20,39],jobs:20,johann:29,join:[6,22,28,29,36],jolokia:24,jpa:28,json:[6,24,26,39],judgement:2,jump:31,just:[1,2,9,11,15,18,20,22,24,29,31,32,33,34,35,36,38,39],jvm:[],kdoc:2,keep:[9,11,36],kei:[],kept:11,keymanagementservic:[11,26],keypair:[11,26,36],keystor:[6,26],keystorepassword:[6,35],keyword:[2,38],kick:11,kill:20,kind:[9,11,17,27,32,33,36,39],knob:20,know:[1,3,9,10,11,12,13,21,27,31,32,36,37,38],knowledg:27,known:[5,9,12,14,16,18,21,26,30],koan:14,korea:36,kotlin:[],kryo:[],label:[11,38],lack:[],lambda:[11,24,38],land:5,lang:[7,38],languag:[1,2,8,9,11,13,14,15,16,29,33,36,39],larg:[9,11,22,27,29,31,33,34,36,39],larger:[2,9,32],last:[11,20,30,38],lateinit:12,latenc:3,later:[1,2,11,12,14,19,27,28,29,32,33,35,36,37],latest:[2,14,15,29],latex:29,latter:[2,35,36],launch:10,layer:[6,9,11,12,22,26,27,28,29],layout:[8,23],lazili:24,ldap:29,lead:[2,9],leader:6,leaf:[16,21],leak:[1,3,9,11],learn:[9,11,12,13,17,31,33,36,39],least:[6,17,20,34,36],leav:[2,11,21,25,33],ledger:[3,4,5,9,11,16,17,24,27,28,29,31,33,34,36,38],ledgertransact:[11,29,33],leewai:32,left:[11,23,31,37,38],leg:[5,10],legaci:26,legal:[3,6,9,26,27,33,36],legalcontractrefer:[36,37],legalident:[12,35],legallyidentifi:[3,11,27],less:[11,29,34],lesser:36,let:[2,9,10,11,12,20,21,22,24,27,29,31,33,34,35,36,38],letmein:6,letter:[2,22],level:[2,3,5,7,11,15,17,18,20,21,22,24,25,26,32,33,36,37,38],lib:[0,8,23],liber:2,libor:[5,24,27],librari:[1,2,6,11,16,17,18,24,26,27,29,33,35,36],licens:[2,18],life:[11,36,39],lifecycl:[],lifecyl:4,lifetim:[5,7],lightweight:[12,16],like:[1,2,3,5,9,10,11,12,14,20,21,22,24,27,29,30,33,35,36,37,39],likewis:36,limit:[4,9,16,20,36],line:[],linear:[26,33],linearst:33,liner:2,link:[2,9,11,27,29,33],linkabl:9,linkag:9,linux:[8,24,29],list:[0,3,6,7,9,11,20,21,26,27,28,29,30,31,33,35,36,37],listen:[2,26,35],listenablefutur:3,listof:[12,28,35,36],liter:9,littl:[2,11,36,38],live:[5,7,11,18,26,29],livelock:9,lizard:16,load:[],loadtest:20,loan:[4,5,27],local:[0,6,7,8,9,11,15,16,20,24,26,28,29,38],localcertificatesbasedirectori:20,locald:27,localhost:[6,18,24,25,31],localtunnelstartingport:20,lock:[2,4,6,28,36],log4j2:24,log4j:29,log:[],log_sender:34,logger:[11,24],loggerfor:24,logic:[3,9,10,11,12,16,22,28,29,32,33,34,36,37,39],logictyp:35,login:[8,25,35],loglevel:24,london:[6,8,34],longer:[2,5,6,11,29],longrang:20,look:[2,5,11,12,20,22,24,27,30,31,33,34,36,37,38,39],lookup:6,loop:[2,5,20,35,36],loquitur:27,loss:27,lot:[2,5,9,14,29,31,32,36,39],low:[3,11],lower:2,lowest:[17,22],lurch:11,mac:[15,24,31],machin:[],macos:8,made:[2,5,9,11,26,29,30,33],mai:[1,2,3,8,9,11,14,15,16,17,20,22,23,24,26,27,28,29,30,32,33,35,36,37,38,39],mail:[30,31],mailbox:26,main:[6,10,11,14,20,22,26,29,34,35,39],mainstream:19,maintain:[3,9,16,36],maintan:27,mainten:22,major:[11,30],make:[],maker:13,maketransact:12,malici:[11,32],manag:[],mandatori:36,mani:[2,3,8,9,10,11,12,20,27,29,33,34,36],manipul:33,manner:[9,11,29,36],manual:[3,8,10,11,23],map:[],mapchang:35,mappabl:36,mappedschema:28,mappedtyp:28,margin:[],mark:[1,2,4,11,16,28,36],markdown:2,marker:[11,32],market:17,marshal:1,master:[17,30],match:[1,9,11,21,32,33,34,37],math:[],mathemat:33,matter:[11,18,36],matur:[3,4,5,24,27,36],maturityd:36,maven:[8,15,29,36],mavenloc:8,mavenpubl:8,maximis:9,maximum:9,maybestx:11,maybetraderequest:11,mbean:24,mean:[1,2,3,7,9,10,11,12,14,16,18,20,21,27,33,35],meandref:35,meaning:[3,4],meaningfulli:34,meant:[11,20],meanwhil:35,measur:[5,18],mechan:[7,16,29],meet:[26,36],mega_corp:[12,38],mega_corp_key:12,mega_corp_pubkey:38,megacorp:12,member:[5,6,29],memori:[3,11,12,22,26],menlo:2,mention:[10,11,14,36],menu:14,mere:5,merg:[9,29,33,36],mergeabl:36,merkl:[],merkleroot:21,merkletreeexcept:21,mess:11,messag:[],messagingserveraddress:[6,26],messagingservic:[22,26],met:[7,33],meta:7,metadata:34,method:[1,2,3,6,7,10,11,12,20,24,26,28,29,32,33,36],metric:[18,24],micro:[29,37],mid:3,middl:[2,11],middlewar:[16,26],might:[2,5,9,11,15,27,28,32,36],mike:9,mileston:[],min:35,mind:[2,11,27],mine:9,miner:9,mini_corp_pubkey:12,minim:[9,11],minimis:[3,4,9,22],minimum:[1,5,9,33],minor:[29,30],minu:36,minut:[11,13,27],mismatch:[9,36,38],miss:[2,6,11,15,28,36,38,39],missingsig:[],mission:24,mistak:[29,32],mix:[2,29],mock:12,mocknetwork:12,mocknod:[12,26],mockservic:33,mode:[23,29],model:[],modest:9,modif:[26,33,36],modifi:[3,4,5,7,8,11,15,16,33,36,37],modul:[2,6,12,29,36],moment:[11,12,29],monei:[27,36],monitor:[],month:[5,11,30],more:[1,2,3,4,5,6,8,9,11,12,13,14,15,16,18,21,24,26,27,28,29,31,33,34,35,36],moreexecutor:2,mortensen:29,most:[2,5,9,11,14,24,36],mostli:36,motiv:17,move:[4,7,9,11,12,25,29,30,35,36,37,38],movement:[11,36],much:[2,9,11,13,28,29,31,32,36,39],multi:[],multigraph:35,multilater:[4,29],multipl:[],multipli:5,must:[1,2,3,4,6,7,8,9,10,11,24,26,27,28,29,32,33,34,36,37,39],mustafa:29,mutabl:[2,9,33,36],mutat:[9,26],mutual:[3,4,11,32],myfil:24,mykei:33,mykeypair:11,mylegalnam:6,mypublickei:11,mysql:19,nail:2,namedbyhash:[],nameserv:6,namespac:11,narrow:[2,25],nativ:[11,14],natixi:29,natur:36,naval:3,navig:[8,18,31],navistar:3,nearestc:[6,8],neat:38,necessari:[2,3,16,29,30],necessarili:[28,33],nee:29,need:[0,2,3,5,7,9,10,11,12,14,15,16,18,20,21,24,26,28,29,30,32,33,34,35,36,37,38,39],neg:33,negoti:[9,33],neither:11,nest:11,net:[4,5,7,8,11,12,24,26,28,29,34,36,38],network:[],networkmap:8,networkmapaddress:[6,8],networkmapcach:[6,7,11,26,35],networkmapservic:[],networkmapupd:35,neutral:19,never:[2,3,9,16,36],newli:10,newnotari:3,newowner:36,newsecurerandom:29,next:[2,5,10,12,15,21,23,29,32,36],nextdoubl:35,nextfixingof:10,nextlong:35,nextscheduledact:10,nfinal:34,nice:[27,36],nio:2,noddi:24,node:[],node_dir:8,nodea:[6,8],nodeb:8,nodefilt:20,nodehandl:20,nodehost:20,nodeident:35,nodeinfo:[6,11,26,35],nodeinterestr:[7,27],nodeservic:27,nodesslconfigur:35,nodisruptionwindowm:20,non:[],none:[10,11,18,21,28,37],nonemptyset:29,nordea:29,normal:[1,3,4,5,7,8,11,20,21,23,26,29,33,34,36,37],north:36,notabl:2,notaris:[3,9,11,29,31,33,36],notary:11,notarychang:29,notarychangeflow:3,notarychangeprotocol:[],notaryclusteraddress:[6,26],notaryexcept:3,notaryflow:[3,11,26],notaryident:[11,12,35],notarynod:[11,12],notarynodeaddress:6,notaryprotocol:[],notaryservic:[],notarysig:11,notarysignatur:11,notarytous:33,note:[],noth:[2,9,10,11,29,32,36],notic:2,notif:[20,22,26,34],notifi:[3,22,23],notion:[5,9,29,36],notnul:[36,37],now:[2,8,9,11,12,17,21,24,29,31,33,35,36,38,39],nugget:36,nullabl:36,nullpublickei:36,number:[2,4,5,7,9,12,16,18,20,25,26,27,28,30,31,33,36],numer:[7,9],obj:36,object:[],oblig:[4,5,29,33],obligor:4,observ:[1,3,5,9,10,11,20,29,35],observatori:3,obsolet:[10,29],obtain:[],obviou:[2,3,9,27],obvious:[5,16],occasion:[14,15],occur:[3,10,11,26,36],occurr:3,odd:36,off:[],offer:[11,15,26,28],offlin:22,offset:5,often:[2,4,5,9,11,15,27,36],oftenor:27,oil:[29,38],old:[3,11,16,29,36],omit:[10,18],onc:[1,2,3,7,11,16,30,33,36],once:[0,3,5,8,10,11,16,23,28,33,34,36,39],onchainasset:4,one:[3,15,21],ongo:1,onledgerasset:36,onli:[1,2,3,5,6,8,9,10,11,13,16,21,22,23,24,25,26,27,29,30,32,33,36,37,39],only:[11,26],onto:[1,2,11,36],opaquebyt:35,open:[1,3,8,9,11,15,18,24,26,29,31],openattach:34,opengamma:[18,29],openjdk:[],openssl:20,oper:[5,6,10,11,14,16,24,26,27,29,32,33,36],opt:[8,20],optim:2,option:[0,2,5,6,10,11,16,20,23,28,29,36,37,39],oracl:[],orchestr:[19,29,39],ordain:5,order:[0,1,2,3,4,5,9,11,15,18,19,20,23,26,27,28,29,31,33,34,35,36,37],ordinari:[9,11,29,36],org:[0,6,36,37],organis:28,orient:[],origin:[21,28,29,33,34,36],originalst:3,orm:28,otc:28,other:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,23,25,26,27,28,29,31,32,33,34,36,38],otherparti:11,othersid:[11,34],otherwis:[1,2,6,7,8,10,11,26,32,35,36],our:[2,3,9,10,11,12,13,14,20,21,26,29,30,31,33,35,36,38],ourselv:[11,36,39],oursignatur:11,out:[2,3,4,9,10,11,14,18,21,22,24,26,27,29,30,32,33,35,36,37],outcom:11,outer:37,outermost:37,outlin:[9,11],outpoint:9,output:[3,4,8,9,11,16,21,25,27,29,31,34,35,36,37,38],outref:12,outsid:[8,9,11,26,27,39],outstand:4,over:[2,3,5,6,8,9,11,12,16,20,21,22,24,27,28,31,33,36],overal:[3,10,38],overdu:10,overflow:2,overidden:[6,8],overload:[11,33],overlord:16,overnight:33,overrid:[7,10,11,20,28,35,36,37],overridden:7,overutilis:20,overwhelm:9,own:[2,3,4,8,10,11,14,20,24,25,26,27,28,29,30,33,35,36,38,39],ownablest:[11,33,36],ownedquant:35,owner:[10,11,28,33,36,37,38],owner_kei:28,ownership:[11,12,36],owningkei:[11,21,36],ozturk:29,p2p:29,pack:36,packag:[7,14,28,29,33],packet:9,page:[15,27,30,31],pai:[],paid:[4,5,9,18,36],pair:[9,11,12,26,33,35,36],paragraph:20,parallel:[1,9,20,27],parallelis:9,param:[20,28],paramet:[1,2,7,10,11,20,24,33,36,37],parameteris:[9,20],parent:[11,16],pars:[6,27,33,36,39],part:[1,2,3,4,8,9,10,11,17,20,21,26,28,29,31,32,33,36,39],parti:[],partial:[3,9,11,21,32,36,38],partialtx:[11,21],particip:[3,9,25,26,29,36,39],particular:[],partner:18,partyandrefer:[2,35,36],partynod:12,partyrefer:[2,36],pascal:2,pass:[3,7,11,20,21,24,26,28,31,34,36,37],password:[1,6,8,24,25,29,35],past:[2,31,36,39],patch:[2,29],path:[2,6,7,8,10,15,20,22,24,29,35,36],path_to_loadtest_conf:20,pattern:[2,9,35],paus:[8,23],paycash:35,paye:9,payer:[5,9],payment:[4,5,9,10,11,16,18,27,31,36],pdf:[27,34],peer:[11,19,21,25,26,27,36],penni:[28,33,36],peopl:[2,9,11,13,16,36],per:[],perform:[2,3,5,9,10,11,14,16,18,20,27,29,31,33,34,36,37],perhap:[2,9,22,36],period:[5,31],perman:[11,34,36],permiss:[1,6,19,29,35],persist:[],persistentcashst:28,persistentst:28,perspect:[9,11,26,36],phase:29,phrase:27,physic:[3,26,29],pick:[11,22,29,30,36,39],piec:[2,3,9,11,16,20,33,36,38],pip:0,pki:[9,29],place:[0,2,5,9,10,11,14,18,19,21,22,27,29,30,31,33,35,36,39],plai:[],plain:6,plan:[9,11,27,29],platform:[3,5,7,8,9,10,11,13,14,21,27,32,33,36],pleas:[2,9,28,29,31,34],ploadtest:20,plu:[6,26,33],pluggabl:29,plugin:[],pluginservicehub:[7,11,26,29],point:[1,2,3,4,7,8,9,11,16,20,24,26,27,28,30,32,35,36],pointer:[3,11,33],pointless:2,polish:29,polit:18,poll:20,pool:[2,9],poor:9,pop:15,popul:26,popular:13,popup:15,port:[6,8,20,25,26,29,30],portfolio:[],posess:11,posit:[2,3,9,11,36],possess:3,possibl:[9,11,14,18,20,26,27,34,36],post:26,postgr:19,potenti:[2,3,11,13,18,36],pound:[33,36],power:[6,9,26],practic:[6,9,18,29,36],pre:[0,5,11,12,36,38,39],preced:36,precis:[3,9,19],precondit:[2,36],predict:20,predominantli:14,prefer:[2,15,25,28],prefix:[2,28],preliminari:18,prepar:[9,29,36],present:[1,3,4,5,6,7,8,11,19,20,28,29,33,36,37],preserv:[3,9],press:14,pretend:[24,33],pretti:[9,11],prevent:[18,32,36],previou:[9,11,20,29,33,38],previous:[5,10,27,29],price:[9,11,27],primari:[14,27],primarili:4,primit:[33,38],print:[1,24,29,31,32,35],println:[34,35],printorvisualis:35,priv:[],privaci:[2,3,9,11,19,29,36],privat:[2,6,7,9,11,12,28,34,36,39],privatefoo:2,privatekei:[11,26],probabl:[36,39],problem:[3,9,11,14,15,27],proce:11,procedur:[11,36],process:[],processor:[9,20],produc:[0,10,23,36,38],product:[2,8,10,13,14,18,19,29,30,33],profound:9,program:[1,2,9,24,26,29,31,33,36,39],progress:[],progresstrack:11,project:[8,14,15,17,18,26,29,31,36],prolif:29,promis:29,prompt:14,proof:[4,9,21],propag:[1,11,24,36,37],properli:[11,26,32],properti:[],proport:18,propos:[11,17,26,32],proprietari:[18,29],prose:[27,33,36],prospectus_hash:34,protect:[11,18,26],protocolhandl:[],protocollog:[],protocollogicreffactori:[],protocoltrack:[],protocolvers:1,prototyp:[2,19,27,29,36],prove:[3,9,36],proven:18,provid:[0,1,2,3,4,5,6,7,8,9,11,12,14,16,20,21,22,23,24,25,26,27,28,29,32,33,36,39],provision:33,proxi:[1,35],pseudo:27,pseudonom:33,ptx:[3,11,34],pubkei:38,publicfoo:2,publickei:[],publickeytre:[],publish:8,pull:15,punish:27,purchas:[11,31],pure:[4,9,27],purpos:[3,4,7,11,16,28,33,35,36],push:[1,30],put:[],python:0,qualifi:[6,7,28],quantiti:[9,20,33,35,36],quasar:[7,8,11,16,26],quasarscan:[],queri:[1,5,6,7,10,26,27,28,29,35],queryablest:[26,28],question:[2,3,10,15,27,33],queu:[16,22],queue:[1,2,11,22,26],quick:27,quickcheck:29,quickli:[9,16,32,36],quit:[1,2,3,11,14,36],r3cev:20,r3corda:8,r3dlg:30,r3prototyp:0,r3repositori:[],raft:[6,26,29],rais:[3,37],random:[9,10,20,29,33,35],randomis:29,randomli:[20,35],rang:[3,28],rapid:[2,8,19,30],rare:[6,33],rate:[],ratesfixflow:21,ratesfixprotocol:[],rather:[2,9,11,22,29,35,36],raw:[22,24],rdbms:[28,29],rdms:29,reach:[3,5,9,10,18,27],reachabl:11,react:20,reactiv:29,read:[2,6,8,9,11,13,17,19,21,24,26,29,31,36,39],readabl:[6,11,13],readi:[3,30,36],readili:[33,37],readme:2,real:[2,18,27,29,33,36,39],realis:11,realist:33,realiti:5,realli:[2,3,9,11,21,36],reason:[2,3,5,9,11,14,20,29,32,33,36],reassign:36,recal:5,receipt:26,receiv:[1,4,5,7,9,11,16,18,20,26,27,29,30,31,32,34,36],receiveandcheckproposedtransact:11,receiveandvalidatetraderequest:11,receiving:11,recent:[14,29],recipi:[4,9,31,34,36],recognis:[7,9,11,14,36],recommend:[2,14,22,31,39],record:[3,10,12,16,26,28,34,35],recordtransact:[12,26],recreat:11,red:[5,21],redeem:[4,36,37],redempt:36,redesign:29,reduc:[2,8,18],redund:2,ref:[11,12,33,35,38],refactor:29,refer:[2,3,4,5,6,7,9,10,11,14,16,18,26,27,29,33,34,36,38],referenc:[3,34],refin:29,reflect:[11,17,20,29,36,37],refresh:[14,29],refus:15,regard:[3,7,14],regardless:11,regener:[5,30],regist:[],registerflowiniti:[7,11],registerprotocoliniti:[],registerrpckryotyp:[7,35],registr:[7,26],registri:7,regul:36,regular:[11,16,24,31,33,36],reissu:36,reissuanc:9,reject:[26,36],rel:[6,8,9,13,14,37],relabelablestep:11,relai:34,relat:[],relationship:[26,36],relax:[20,29],releas:[],relev:[7,8,9,10,16,17,26,29,33,36,37],reli:[1,8,9,18,29,32],reliabl:26,relianc:9,relic:24,religi:2,remain:[8,10,11,36],remeb:[],rememb:[2,10,15,32],remind:[11,32],remot:[6,7,8,15,20,26,34],remotemessagingport:20,remotenodedirectori:20,remotesystemdservicenam:20,remov:[11,21,29,30,35,36],renam:[11,29],render:[2,11,23,25,29],renderifsupport:34,repeat:[2,5,11],replac:[1,3,5,14,18,24,29,30,33,35,36],replai:29,replic:[6,9],repoint:3,report:[11,25,37],repositori:[2,8,14,15,29,30,31],repres:[2,4,5,9,11,20,26,27,28,29,33,35,36],represent:[1,5,28],request:[1,3,7,9,11,20,22,26,27,28,29,32,34,35],requestingparti:3,requiredcommand:[29,37],requiredflow:7,requiresinglecommand:[36,37],requirethat:[36,37],research:29,resel:27,resend:26,resent:26,reset:[5,23],reshap:9,resid:26,resolut:[3,9,11],resolv:[2,11,12,18,33,36],resolvefromtwohash:[],resolvetransactionsflow:[11,12,34],resolvetransactionsflowtest:12,resolvetransactionsprotocol:[],resolvetransactionsprotocoltest:[],resourc:[1,6,7,9,11,20],respect:[2,9,11,31],respend:9,respond:[11,26],respons:[1,3,7,9,10,11,22,26,28,35],rest:[3,7,9,11,19,24,29,39],restart:[11,26],restor:[11,16],restrict:[2,18],restructur:37,restructuredtext:0,result:[2,3,5,6,9,11,12,18,25,26,27,28,29,32,35,36,37],resultfutur:12,resum:[11,26,29],resurrect:11,resync:14,retain:22,rethrown:1,retri:[11,19,22],retriev:[3,5,11,34,35],retrieveoutput:38,reus:[1,9,38],reusabl:[16,27,29,34,36],reveal:[3,9,11,21,29],revers:[11,26],revert:4,review:[2,29,30],revis:[5,15],rewrit:11,richer:8,right:[2,11,14,15,24,29,30,32,39],rightmost:21,rigid:9,rigidli:2,risk:[11,18],robert:29,robust:29,role:[9,10,26,31,34,39],roll:[5,11,29,31],rollov:[33,36],root:[6,8,21,26,30],rotat:[24,29],roughli:[3,30],rout:[11,12,14,22,29],row:[24,25,28,33,36],rpcexception:1,rpckryo:1,rpcreturnsobserv:[1,35],rpcsincevers:1,rpcuser:[6,25,35],rui:29,ruin:38,rule:[2,11,18,26,27,29,36],run:[],runbuy:31,rundemonod:[25,29],runnetwork:12,runnod:[8,18,31],runparamet:20,runrecipi:[31,34],runsel:31,runsend:[31,34],runshellcommandgetoutput:20,runtim:[2,11],safe:[1,2,7,9,11,32,35],sai:[2,3,9,14,18,20,31,36],sake:18,sale:[31,36],same:[1,2,3,4,5,6,9,10,11,20,26,27,29,33,36,37,38],sampl:[7,8,11,18,23,29,31],sanction:36,sandbox:[9,10,19,29,32],saniti:11,santiago:29,satisfi:[33,36],save:[2,11,29,36],scala:[13,36],scalabl:[2,9],scale:[5,32],scan:[],scenario:[9,26,33,39],scene:[11,36],schedul:[],schedulablest:[10,26],scheduledact:10,schedulerservic:26,schema:[],schemafamili:28,schemaopt:28,schemaservic:28,scheme:[21,26],scope:[7,9,25,37],scotiabank:29,scrape:24,scratch:[33,36,39],screen:[2,15,25,29,36],script:[0,8,9],scroll:31,scrub:11,seamless:13,search:[25,26,36],second:[5,7,11,12,20,31,33,36],secondari:11,secp256r1:29,secret:6,section:[6,9,17,20,29,30],securehash:[3,12,21,33,35,36,37],securerandom:29,see:[0,1,2,3,4,5,6,8,10,11,12,14,15,20,21,27,28,29,31,33,34,35,36,37,39],seed:11,seek:[9,29],seem:9,seemless:14,seemlessli:14,seen:[2,5,7,11,27,36],segment:8,select:[3,14,15,28,29,36,37],selectschema:28,self:[8,20,29,31],selfissuecommand:20,selfissuest:20,selfissuetest:20,sell:[11,36,39],seller:[],sellerownerkei:11,sellersig:11,sellertradeinfo:11,semi:9,send:[2,3,9,11,12,21,22,24,26,27,29,30,31,34,36,38],sendandrec:11,sender:[9,11,31,34],sendsignatur:11,sens:[5,27,36],sensit:[10,18,21,32],sent:[10,11,29,33,36],separ:[3,6,7,8,9,11,21,22,24,27,33,36],septemb:18,sequenc:[9,26,29],sequenti:11,seri:11,serial:[1,19,26,36],serialis:[1,2,7,9,11,16,19,36],seriou:[9,30],serious:39,serv:8,server:[1,6,7,8,19,22,24,26,29,39],servicehub:[3,7,8,11,22,26,34],servicehubintern:[3,8,29],serviceinfo:35,serviceload:7,serviceplugin:7,servicetyp:[6,26],session:[10,22,26,29],sessionid:10,set:[],setof:[11,12,34,35,37],setter:[28,36],settim:[11,33],settl:[4,12,33,34],settlement:[4,11],setup:[8,10,12,23],sever:[6,8,9,11,26,28,35,36,38,39],sha256:[21,33,36,37],sha256sum:24,sha:[9,24],shape:9,share:[4,5,9,11,16,18,26,27,29,32,34,36,39],shasum:24,she:36,shell:[18,20],shoot:32,shortcut:19,shorthand:38,should:[2,3,4,7,8,9,10,11,15,17,18,19,20,21,26,28,29,31,32,33,35,36,37,38,39],shoulder:2,shouldn:[11,21,36],show:[9,13,15,23,25,26,29,31,36],shown:[1,6,11,12,23,33],shut:34,shutdown:[11,26],side:[1,9,10,11,14,23,27,31,32,33,34],sidebar:23,sig:[29,36],sign:[3,5,9,11,12,16,19,21,22,26,27,29,31,32,33,36,37,38],signal:16,signatureexcept:[],signaturesfromsel:11,signedtransact:[3,11,12,33,35,36],signer:[21,27,36,37],signfirsttx:12,signific:[9,29],significantli:[5,20,33,34],signing:11,signoff:3,signwith:[11,12,33,34,36],signwithecdsa:11,signwithourkei:11,silver:2,similar:[2,9,11,29,36,37],similarli:28,simm:[],simmvaluationdemo:[18,31],simpl:[1,2,4,5,6,7,9,11,12,14,18,19,20,24,26,29,33,34,35,36,37],simplecash:38,simplecashdoesntcompil:38,simplecashfailswith:38,simplecashsuccess:38,simplecashtweaksuccess:38,simplecashtweaksuccesstopleveltransact:38,simplenam:28,simplenotaryservic:[],simpler:[9,13],simplest:[9,11,36,39],simpli:[2,8,9,11,12,20,22,26,28,29,33,36,38],simplif:29,simplifi:[2,4,9,26,33,36,39],simul:[],simultan:[9,11,33,36],sinc:36,singl:[],singlemessagerecipi:22,singleton:[7,11,36,37],singletonserializeastoken:7,site:[2,29,30],situat:[2,9,21],size:[2,5,9,11,35,36,37],skeleton:12,skip:[11,33,36],sl4j:24,sleep:[20,34,35],slf4j:11,slightli:36,slip:30,slot:29,slow:[2,9,20],slowest:9,small:[1,9,10,11,27,31,32,36],smaller:[29,37],smallest:33,smart:[],smooth:36,snake:38,snapshot:[9,29,30,35],snide:0,snippet:[3,11],socket:24,softwar:[9,11,30,32,39],sofu:29,sold:[11,33],solut:11,solv:[9,11,27],solvenc:27,some:[1,2,3,4,7,9,10,11,12,14,18,19,20,21,24,26,27,28,29,31,33,35,36,37,38,39],somed:36,somehow:20,someon:[3,9,36],someth:[1,2,5,9,11,29,31,36,37,39],sometim:[9,11,16,24,33],someusernam:20,somewhat:[1,9,11,20,29],somewher:36,soon:[29,36],sophist:9,sort:[11,27,29],sound:[2,11,36],sourc:5,sourcejar:8,sourceset:24,sparingli:2,spawn:7,speak:29,spec:29,special:[1,3,9,11,38],specif:[1,3,4,7,8,9,10,11,14,16,20,22,24,26,29,33,34,36,37],specifi:[0,1,2,3,4,6,8,9,11,16,19,20,21,28,29,33,36,37,38,39],speed:[9,11,13],spend:[9,11,12,19,26,32,36],spent:[9,36,38],sphinx:0,sphinx_rtd_them:0,spin:20,spirit:29,spline:33,split:[9,21,22,29,33,36,37],splittabl:36,splittablerandom:[20,35],spot:29,spread:[3,11],spreadsheet:27,sql:[19,28,29],src:[6,11,26,34,39],ssh:20,sshuser:20,ssl:29,sslconfig:35,sslkeystor:6,stabilis:30,stabl:[1,7,30,35],stack:[11,26],stage:[2,4,11,33,36,39],stai:[9,26,36],stake:9,standalon:[23,27,29],standard:[2,7,8,11,14,16,18,24,26,29,31,33,35,36,37],standardis:[9,33],start:[],startflow:[3,11,12,34,35],startflowdynam:[11,35],startflowpermiss:35,startnod:35,startprotocol:[],startprotocoldynam:[],startprotocolpermiss:[],startup:[7,24,29],startwith:35,state:[],stateandref:[3,11,33,35,36],statehistori:3,stateless:9,statemachineinfo:35,statemachinemanag:[],statemachinerecordedtransactionmap:35,statemachinerunid:11,statemachinesandupd:35,statemachinetransactionmap:35,statemachineupd:35,statement:[2,9,11,27,36],stateref:[3,9,10,21,28,33],statesoftyp:36,staticservedir:7,statist:24,status:9,stem:36,step:[],still:[3,9,10,11,15,27,29,36,39],stock:[9,27],stone:20,stood:28,stop:[2,11,26,34],stopnod:12,storag:[],storageservic:34,store:[3,6,8,11,12,24,26,29,33,34,36],stori:[2,29],straightforward:[11,36],strain:20,straincpu:20,stream:[1,11,22,29,35],stress:[2,20],strictli:[5,7,9],string:[6,11,20,27,28,33,35,36],strip:36,strong:13,strongli:14,structur:[2,7,9,11,15,16,19,21,27,29,33,36],stub:[18,29],studi:36,stuff:2,stx1:12,stx2:12,stx:[11,33],sub:2,subclass:[4,11,28,33,36],subclaus:37,subdirectori:24,subflow:[3,7,11,26],subfold:[7,26],subgroup:9,subject:[6,8,16,18],submiss:27,submit:[2,3,11,20,22,29,31],subproject:[],subprotocol:[],subscrib:[1,22,29,34,35],subsequ:[16,36,38],subset:[4,21],substitut:6,subsystem:[7,22],subtask:11,subtl:[2,9],subtract:33,subvert:32,success:34,successfulli:35,successor:[3,10,13],succinct:2,sudo:0,suffer:[9,18],suffic:11,suffici:[9,27,30,33,35],suggest:[8,14,22,36],suggestinterestrateannouncementtimewindow:10,suit:[29,34],suitabl:[10,22,26,30],sukrit:29,sum:[18,20,35,36,38],sumcashbi:[11,36],summari:[],summaris:9,sun:2,superclass:[4,29,33],superior:2,supersed:9,supertyp:36,suppli:[4,20],support:[],supportedschema:28,suppos:[11,36],suppress:[2,29],suppresswarn:2,sure:[3,29,30,32,34,36,39],surfac:11,surround:2,surviv:11,suspend:[],suspens:[7,26],swapping_signatures:11,swapsignatureswithsel:11,symbol:[],sync:[26,36],synchronis:[2,3,9,26],syntax:[13,36],system:[1,3,6,8,9,11,14,17,19,20,21,24,25,26,28,29,34,36],systemd:20,tab:[2,8,14,15,31],tabl:[8,24,25,26,28,29],tableprefix:28,tackl:[29,37],tag:[1,2,16,30],take:[2,5,7,10,11,12,19,20,21,24,29,30,31,32,33,36,37,38],taken:[7,36],talk:12,tamper:11,target:[0,2,6,9,12,13,18,23,24],task:[6,8,9,10,11,14],tcp:[8,24],team:[],tear:[],teardown:12,techniqu:[2,9,19,27],technolog:17,tediou:[],tell:[0,11,35],templat:[],temporari:[8,11],temporarili:[11,30],tempt:[32,36],ten:36,tend:16,tenor:[5,24,27,33],term:[4,6,9,10,16,18,22,33,37],termin:[5,8,11,24,26,31],terminolog:9,test:[],testnam:20,testnet:[8,29],testtimelock:36,text:[2,15,24,29,38],than:[1,2,3,8,9,11,22,24,29,33,36],thank:29,thedao:29,thei:[1,2,3,4,5,7,8,9,10,11,16,18,20,21,23,24,26,27,28,29,30,31,32,33,34,36,37],them:[1,2,3,5,6,7,9,10,11,12,14,15,19,20,21,22,24,26,28,29,30,31,33,34,35,36,37,38,39],theme:32,themselv:[1,11,12,20,22,23,26,27,31,32,33,35,36],theori:[],therefor:[1,7,8,9,11,15,16,18,19,26,30,32,36],thi:[0,1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],thin:22,thing:[],think:[2,9,11,15,22,32,36],third:[9,18,21,29],thisstateref:10,thorough:11,those:[1,3,9,10,11,18,24,32,36],though:[11,21,24,36],thought:[9,13],thousand:38,threadsaf:2,three:[8,11,21,25,31,33,36],threshold:[16,24,26,29,33],through:[1,5,7,9,10,11,14,22,23,24,26,29,34,36,37,38,39],throughput:[3,9],throwifsignaturesaremiss:[],thrown:[1,11,32,36],thu:[2,3,6,9,10,24,26,27,29,33,36],ticket:11,tidi:12,tighten:36,tightli:11,time:[],timelin:36,timem:36,timeout:1,timestamp:[],titl:15,tls1:26,tls:[22,29],todo:[2,11,36],togeth:[4,7,9,14,21,29,31,36,37],token:[11,33,37],told:2,toledgertransact:33,toler:[3,10],too:[2,11,36],took:11,tool:[11,13,14,16,20,22,23,24,25,28,29,31],toolbar:15,top:[2,7,9,11,15,20,22,25,29,31,35,37],topic:[22,36,39],topicsess:[22,29],toplevel:38,topriv:11,torn:29,tosignedtransact:[3,11,12,33,34,36],tostr:[2,11,28,36],tostringsshort:[],total:[9,20,33],toward:[29,30],towiretransact:[21,33],trace:[11,24,37],track:[],tracker:11,trade:[],tradeoff:[],trader:[],traderdemo:39,traderequest:11,tradit:9,traffic:[6,9,23],transac:16,transact:[],transactionbuild:[3,11,29,33,34,36],transactionforcontract:[36,37],transactionforverif:36,transactionst:[3,21,29,33],transactionstorag:26,transactiontyp:[11,29,34],transactionverificationexcept:38,transfer:[32,36,38],transit:[26,32,33,36,39],translat:26,transmit:[],transport:[6,8],travel:36,treat:[8,32,36],tree:[],tri:[9,14,29,36],tricki:[9,11],trigger:[3,4,10,11,20,26,27,31,37],trim:37,trivial:[2,9,34],troubl:15,trust:[4,6,7,9,26,32],trustpass:[6,35],truststor:[6,26],truststorepassword:[6,35],truth:11,tupl:2,ture:9,turn:[9,11,33,36,37,38,39],tutori:[],tweak:[20,29,38],twice:38,two:[],twopartydealflow:10,twopartydealprotocol:[],twopartytradeflow:11,twopartytradeprotocol:[],txb:33,txbit:[],txhash:[9,11,35,36],txnid:35,txnnote:35,txt:24,type:[],typenam:11,typeonlycommanddata:36,typesaf:6,typetobui:11,typic:[7,9,10,11,22,24,26,28,32,33,34,36,39],ugli:11,ultim:26,ultimat:24,unaccept:11,unacceptablepriceexcept:11,unavoid:11,unclutt:11,unconsum:[26,28],under:[0,8,18,20,26,29,30,31,33,36,37,38,39],underli:[4,5,9,11,29,33],underscor:2,understand:[9,23,24,36,37,39],unencrypt:6,unexpect:[11,32],unfinish:11,unfortun:[11,32,36],unicredit:29,unifi:[29,39],uniform:10,unindex:15,uniqu:[3,9,11,26,27,29,33,34],uniqueidentifi:[],uniquenessprovid:26,unit:[],univers:29,unix:[8,18,24,31],unknow:3,unknown:33,unless:[2,11,27,30,36,39],unlik:[26,36],unlike:[4,7],unlink:15,unlock:6,unnatur:9,unpack:[8,26,36],unprocess:37,unqiu:10,unread:11,unrecognis:36,unrel:36,unschedul:10,unserialis:11,unset:5,unspent:[9,16],unstarted:11,unsubscrib:1,unsubscript:1,unsupportedoperationexcept:[1,36],until:[1,3,5,9,10,11,12,26,29,30,38,39],untrust:11,untrustworthydata:[11,29,32],unverifiedtransact:38,unwrap:[11,29],upcom:[10,29],updat:[1,7,8,9,11,15,20,22,26,29,30,34,35,36],update:[14,35],upgrad:[11,15,28,29,36],upgrade:29,uphold:36,upload:[],uploadrat:31,upon:[5,8,11,16,26,36],upward:30,urandom:20,url:[6,8,24,29],usabl:[29,30,36],usag:[],usage:35,usd:[20,25,35],use:[2,4,9],used:16,usehttps:6,useless:36,user1:[6,25],user:[0,1,2,6,8,9,11,17,19,20,25,27,29,31,35],usernam:[1,6,24,25],usr:0,usual:[2,9,36],usualli:30,utc:10,util:[3,8,12,14,24,26,29,33,35,36],utilis:35,uuid:[29,33],vagu:2,val:[2,3,10,11,12,20,21,27,28,33,34,35,36,37,38],valid:[],validatedtransact:[12,34],validatingnotaryservic:[],validfrom:36,valu:[2,3,4,5,6,7,9,11,18,21,25,26,27,29,31,36,37,38],valuabl:27,valuat:[5,18,29,31],valueof:35,vanilla:[4,5],vararg:35,vari:[],variabl:[2,5,8,9,11,36],variant:[26,36],variou:[2,7,9,11,18,24,26,32,36],vault:[],vaultandupdat:35,vaultservic:[7,11,26],vaultsselfissu:20,vcs:14,vega:29,vehicl:9,vendor:[19,24],verbos:36,veri:[2,4,9,11,14,16,18,26,27,32,36,38,39],verif:[],verifi:[],verifiedtransact:35,verifyclaus:37,verifying:11,verifypropos:29,verifysignatur:11,versa:[4,5,9,11,33],versu:11,vertic:2,vet:32,via:[0,2,5],vice:[4,5,9,11,33],view:[],virtual:[7,9,16,32],visibl:[3,9,21,25,26,35],vision:17,visual:[25,29],visualis:[22,23,35],vital:11,wai:[1,2,3,8,9,10,11,15,16,18,20,21,22,24,25,27,28,29,31,36,38,39],wait:[10,11,12,15,20,26,29,31],waitforallnodestofinish:35,wake:29,wallet:[9,10,11,16,29,36],walletservic:[],want:[1,2,9,11,15,20,21,24,27,29,31,32,33,36,38,39],warn:[],watch:32,weak:[27,33],wear:30,web:[6,7,8,18,19,24,26,27,29,31],webaddress:6,webapi:7,webapp:29,webport:8,websit:[14,15],websocket:[],week:13,weekend:5,weight:33,well:[0,2,3,5,7,9,10,11,14,16,19,21,24,26,28,29,34,35,36,37],went:2,were:[2,9,11,18,26,27,36],what:[],whatev:[2,11,23,26,33],when:[1,2,3,4,5,6,7,8,9,10,11,12,15,18,20,22,23,24,25,26,27,28,29,31,32,33,34,35,36,38],whenev:[2,14],where:[],wherea:[5,15],wherev:24,whether:[1,3,4,11,20,26,27,33,36,37],which:[0,1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,18,19,20,21,22,23,24,26,27,28,29,30,31,33,34,35,36,37,38,39],whilst:[9,11,26,27,29,32,36],white:[7,17,29],whitelist:[4,7,8,10,11],who:[2,6,9,11,13,18,29,33,36],whole:[3,21,26,38],whom:[4,9],whose:[4,24,33],why:[2,9,13,17],wide:[1,2,21],widescreen:2,widespread:2,widget:25,width:2,wiki:[9,36,37],wikipedia:[36,37],window:[3,8,9,11,15,18,23,24,25,31],wiretransact:[3,11,21,27,33],wish:[8,9,11,17,18,27,28,29,33,36,39],withattach:12,within:[0,2],withitem:[33,36],withkei:11,withnewown:[11,36],without:[],withoutissu:[11,36],withoutown:[36,37],withowner:36,won:[11,22,25,27,29,35,36,38],word:[2,3,6],work:[1,2,3,5,6,8,9,10,11,14,19,20,24,26,27,29,31,33,34,35,36],worker:2,workflow:7,workspac:[6,7,8,26],world:[6,9,11,18,23,25,27,36,38],worn:36,worri:[2,11,36],worst:9,worth:[2,32,36],worthless:27,would:[1,2,3,4,5,7,8,9,11,14,16,18,19,24,27,32,33,34,36,37,39],wouldn:27,wrap:[2,11,22,24,26,29,32,33,36,37,39],wrapper:[2,3,11,35],write:[],written:[0,1,5,9,13,14,29,36],wrong:[1,2,11,38],wrote:9,wtx:[3,11,21,27],www:0,xcode:14,xml:24,xterm:8,year:[5,11],yet:[2,3,5,9,11,16,19,25,29,33],yield:9,york:8,you:[0,1,2,3,8,9,10,11,12,13,14,15,17,18,19,20,21,22,23,24,25,27,28,29,31,32,33,35,36,37,38,39],your:[],your_usernam:[],yourself:[9,10,32,33],zero:[9,16,36],zip:[9,24,34],zone:10,zoneddatetim:10},titles:["Building the documentation","Client RPC","Code style guide","Consensus model","Contract catalogue","Interest Rate Swaps","The Corda Configuration File","The Corda Plugin Framework","Creating a Cordapp","Data model","Event scheduling","Writing flows","Writing flow tests","Further notes on Kotlin","Getting set up","Getting Set Up : Faultfinding","Glossary","Welcome to the Corda!","Initial Margin Agreements","What’s included?","Load testing","Transaction Tear-offs","Networking and messaging","Network Simulator","Node administration","Node Explorer","A Brief Introduction To The Node Services","Writing oracle services","Persistence","Release notes","Release process","Running the demos","Secure coding guidelines","Data types","Using attachments","Client RPC API Tutorial","Writing a contract","Writing a contract using clauses","Writing a contract test","Where to start"],titleterms:{"class":[1,35,36,37],"function":[11,36],about:15,access:24,adding:36,administr:24,adopt:9,against:8,agreement:18,amount:33,api:[35,36],app:[8,18],approach:27,artemismessagingserv:26,assert:27,assertion:2,asset:36,attach:[24,34],attachment:[31,34],basic:27,bitcoin:9,brief:26,build:[0,8],buyer:11,cash:[4,33],catalogu:4,chain:38,chang:3,check:36,claus:[36,37],cli:15,client:[1,35],cluster:20,code:[2,14,32,36],command:36,comment:2,commerci:[4,36,37],commod:4,comparison:9,compil:2,complain:15,composit:33,con:9,configur:[6,20],consensu:3,construct:36,continu:27,contract:[4,32,36,37,38],control:14,corda:[6,7,8,14,17,21],cordapp:[8,35],cordform:8,creat:[5,8],cryptographi:33,cut:30,data:[9,21,27,33],databas:24,date:33,dbcheckpointstorag:26,dbtransactionmappingstorag:26,dbtransactionstorag:26,debug:[8,37],demo:[25,31,34,39],detail:5,document:0,download:24,e2etestkeymanagementservic:26,encumbranc:36,error:[1,2],ethereum:9,event:[10,26],exampl:[6,10,21],explorer:25,faultfind:15,featur:11,field:6,file:6,fix:24,flow:[11,12,26,32],format:6,framework:[7,26],from:35,fungibleasset:33,further:13,futur:11,gener:[2,36],get:[14,15],git:14,glossari:16,gradl:[8,14,15],group:[36,37],guid:2,guidelin:32,handl:1,happen:36,hibernateobserv:26,hide:21,how:[10,20,36],identiti:26,implement:[10,11,26],includ:19,individu:20,initial:18,inmemoryidentityservic:26,inmemorynetworkmapcach:26,inmemorystatemachinerecordedtransactionmappingstorag:26,inmemoryuniquenessprovid:26,install:8,installat:15,instanc:5,intellij:[14,15],interest:[4,5,24],interfac:[23,25],introduct:[10,11,18,26,27],irs:31,issu:15,jvm:14,kei:[26,33],kotlin:[13,14,15],kryo:[1,35],lack:15,length:2,lifecycl:[5,33],line:2,load:20,locat:6,log:24,machin:[],make:36,manag:26,map:[22,28],margin:18,math:33,merkl:21,messag:[22,26],mileston:29,model:[3,9],monitor:24,multi:[33,36],multipl:3,name:2,namedbyhash:33,network:[22,23,26],networkmapservic:26,node:[8,24,25,26],nodeattachmentservic:26,nodemessagingcli:26,nodeschedulerservic:26,nodeschemaservic:26,nodevaultservic:26,non:36,notari:[3,26],notaryservic:26,note:[13,29],object:28,obligat:4,observabl:1,obtain:3,off:21,oracl:27,orient:36,overview:9,pai:27,paper:[4,36,37],parti:[11,33,36],particular:36,per:27,persist:[8,26,28],persistentkeymanagementservic:26,persistentnetworkmapservic:26,persistentuniquenessprovid:26,plai:27,plugin:[7,8],portfolio:31,pro:9,process:[18,30],progress:11,properti:2,protocol:1,publickei:33,put:36,raftuniquenessprovid:26,raftvalidatingnotaryservic:26,rate:[4,5,24],rational:9,regist:[1,35],relat:[26,28],releas:[29,30],requir:[0,36],rpc:[1,35],run:[3,18,20,25,31],safeti:1,schedul:[10,26],schema:28,sdk:15,secur:[1,32],seller:11,servic:[3,8,22,26,27],set:[14,15],signatur:[3,33],simm:[18,31],simplenotaryservic:26,simul:23,singl:38,smart:36,sourc:14,space:2,start:[8,11,36,39],state:[8,33,36],statemachinemanag:26,step:[18,30],storag:26,storageserviceimpl:26,style:[2,9],sub:11,subprotocol:[],summari:37,support:33,suspend:11,swap:[4,5],tear:21,technic:5,templat:8,test:[12,20,36,38],theori:11,thing:36,thread:[1,2],time:36,timestamp:3,track:11,trade:11,tradeoff:9,trader:[31,39],transact:[21,33,36,38],transmit:36,tree:21,troubleshoot:14,tutori:35,two:[11,27],type:[22,33],uniqueidentifi:33,unit:[],upload:24,usag:21,using:[8,34,36],utxo:9,valid:3,validatingnotaryservic:26,vari:27,vault:26,verif:33,verifi:36,version:[1,11,14],via:[14,15],view:8,warn:2,welcom:17,what:19,where:[36,39],wire:1,within:[15,26],without:15,write:[11,12,20,27,36,37,38],your:[8,11,24,35,36]}}) \ No newline at end of file diff --git a/docs/build/html/secure-coding-guidelines.html b/docs/build/html/secure-coding-guidelines.html index 5f40910fbd..a6d9b8f3f5 100644 --- a/docs/build/html/secure-coding-guidelines.html +++ b/docs/build/html/secure-coding-guidelines.html @@ -105,6 +105,7 @@
    26. Persistence
    27. Node administration
    28. The Corda Configuration File
    29. +
    30. The Corda Plugin Framework
    31. A Brief Introduction To The Node Services
    32. CorDapps

      @@ -119,7 +120,8 @@
    33. Writing a contract using clauses
    34. Writing a contract test
    35. Client RPC API Tutorial
    36. -
    37. Flow state machines
    38. +
    39. Writing flows
    40. +
    41. Writing flow tests
    42. Writing oracle services
    43. Using attachments
    44. Event scheduling
    45. @@ -206,7 +208,7 @@ harder to scale up your operations later when you might want to add counterparti extensive vetting.

      Flows

      -

      Flow state machines are how your app communicates with other parties on the network. Therefore they +

      Writing flows are how your app communicates with other parties on the network. Therefore they are the typical entry point for malicious data into your app and must be treated with care.

      The receive methods return data wrapped in the UntrustworthyData<T> marker type. This type doesn’t add any functionality, it’s only there to remind you to properly validate everything that you get from the network. diff --git a/docs/build/html/transaction-data-types.html b/docs/build/html/transaction-data-types.html index be621f1c26..5961421d6e 100644 --- a/docs/build/html/transaction-data-types.html +++ b/docs/build/html/transaction-data-types.html @@ -120,6 +120,7 @@

    46. Persistence
    47. Node administration
    48. The Corda Configuration File
    49. +
    50. The Corda Plugin Framework
    51. A Brief Introduction To The Node Services
    52. CorDapps

      @@ -134,7 +135,8 @@
    53. Writing a contract using clauses
    54. Writing a contract test
    55. Client RPC API Tutorial
    56. -
    57. Flow state machines
    58. +
    59. Writing flows
    60. +
    61. Writing flow tests
    62. Writing oracle services
    63. Using attachments
    64. Event scheduling
    65. diff --git a/docs/build/html/tutorial-attachments.html b/docs/build/html/tutorial-attachments.html index cfac4b0dd5..23e0e04e8b 100644 --- a/docs/build/html/tutorial-attachments.html +++ b/docs/build/html/tutorial-attachments.html @@ -105,6 +105,7 @@
    66. Persistence
    67. Node administration
    68. The Corda Configuration File
    69. +
    70. The Corda Plugin Framework
    71. A Brief Introduction To The Node Services
    72. CorDapps

      @@ -119,7 +120,8 @@
    73. Writing a contract using clauses
    74. Writing a contract test
    75. Client RPC API Tutorial
    76. -
    77. Flow state machines
    78. +
    79. Writing flows
    80. +
    81. Writing flow tests
    82. Writing oracle services
    83. Using attachments

      CorDapps

      @@ -122,7 +123,8 @@
    84. Registering classes from your Cordapp with RPC Kryo
    85. -
    86. Flow state machines
    87. +
    88. Writing flows
    89. +
    90. Writing flow tests
    91. Writing oracle services
    92. Using attachments
    93. Event scheduling
    94. @@ -410,7 +412,7 @@ customisation point will either go away completely or change.