Corda is an open source blockchain project, designed for business from the start. Only Corda allows you to build interoperable blockchain networks that transact in strict privacy. Corda's smart contract technology allows businesses to transact directly, with value.
Go to file
Kyriakos Tharrouniatis 7f62046c2f CORDA-3329 Exceptions thrown in raw vault observers can cause critical issues (#5816)
Observers registered on NodeVaultService#rawUpdates, if they throw an exception when called from serviceHub#recordTransactions and if this exception is not handled by the flow hospital, then this leads to the transaction not being recorded in the local vault. This could get the ledger in an out of sync state.

In the specific case this happens within FinalityFlow#notariseAndRecord this leads to the transaction being notarized but not recorded in the local vault nor broadcasted in any counter party. The -failed to be recorded locally- transaction and its output states are not visible to any vault, and its input states not able to consumed by a new transaction, since they are recorded as consumed within the Notary. In this specific case we need not loose, by any means, the current transaction.

We will handle all cases by catching all exceptions thrown from serviceHub#recordTransactions, wrapping them with a HospitalizeFlowException and throwing it instead. The flow will get to the hospital for observation to be retried from previous checkpoint on next node restart.
2020-01-24 18:21:07 +00:00
.ci ENT-4601 Public API to run external operations from a flow (#5833) 2020-01-22 09:27:17 +00:00
.github Fixed broken links in GitHub PR template 2019-09-16 14:07:58 +12:00
.idea Merge remote-tracking branch 'origin/release/os/4.3' into my_merge_branch 2019-11-04 17:48:15 +00:00
client ENT-4822: Don't attempt RPC reconnect for NotSerializableException (#2991) (#5870) 2020-01-22 11:37:38 +00:00
common CORDA-2942: Node lifecycle events (#5846) 2020-01-21 13:38:02 +00:00
confidential-identities TM-23 Fail build on compiler warnings (#5453) 2019-09-11 16:34:51 +01:00
config CORDA-3246 - Missing logs on shutdown (#5501) 2019-10-08 10:18:19 +01:00
core ENT-4601 Public API to run external operations from a flow (#5833) 2020-01-22 09:27:17 +00:00
core-deterministic CORDA-3377: Upgrade to DJVM 1.0-RC06. (#5866) 2020-01-21 09:05:23 +00:00
core-tests ENT-4601 Public API to run external operations from a flow (#5833) 2020-01-22 09:27:17 +00:00
docker NOTICK: Refactor Gradle script for building Docker images. (#5813) 2019-12-16 14:34:51 +00:00
docs Slight rewording to underline the change for the better. 2020-01-24 16:19:42 +00:00
experimental NOTICK - Add C++ Serialiser Support for Maps and Arrays (#5775) 2019-12-13 00:32:25 +00:00
finance Merge remote-tracking branch 'origin/release/os/4.3' into my_merge_branch 2019-11-05 17:19:18 +00:00
gradle/wrapper WIP Kubenetes parallel build (#5396) 2019-09-03 15:40:08 +00:00
isolated CORDA-2893 Upgrade Corda to use Gradle 5.4.1 (Take 2) (#5137) 2019-05-20 14:26:42 +01:00
jdk8u-deterministic CORDA-3523: DJVM custom serializers and whitelists (#5858) 2020-01-16 17:48:15 +00:00
lib fix merge conflicts due to changes in Signed test cordapp creation 2019-11-05 17:42:38 +00:00
node CORDA-3329 Exceptions thrown in raw vault observers can cause critical issues (#5816) 2020-01-24 18:21:07 +00:00
node-api CORDA-3329 Exceptions thrown in raw vault observers can cause critical issues (#5816) 2020-01-24 18:21:07 +00:00
release-tools CORDA-3017 - Fix release tooling when product name != jira project (#5229) 2019-06-21 09:28:07 +01:00
samples ENT-4652: Provide an "attachment fixup" mechanism to repair broken transactions. (#5825) 2020-01-14 15:18:51 +00:00
serialization CORDA-3523: DJVM custom serializers and whitelists (#5858) 2020-01-16 17:48:15 +00:00
serialization-deterministic CORDA-3377: Upgrade to DJVM 1.0-RC06. (#5866) 2020-01-21 09:05:23 +00:00
serialization-djvm CORDA-3552: Reuse a single SerializerFactory when deserialising a LedgerTransaction into the DJVM sandbox. (#5874) 2020-01-23 09:21:01 +00:00
serialization-tests CORDA-2050 Upgrade Corda to Java 11 (compatibility mode) (#5356) 2019-09-18 10:26:26 +01:00
testing CORDA-3329 Exceptions thrown in raw vault observers can cause critical issues (#5816) 2020-01-24 18:21:07 +00:00
tools ENT-3828: Remove ability to SSH into standalone shell (#5876) 2020-01-24 10:44:25 +00:00
.dockerignore WIP Kubenetes parallel build (#5396) 2019-09-03 15:40:08 +00:00
.gitignore ENT-4595 Add git based version (#5799) 2019-12-11 17:50:27 +00:00
build.gradle CORDA-3520, CORDA-3550: SSH memory leak and security (#5873) 2020-01-22 14:40:25 +00:00
BUILD.md add a shared memory port allocator to allow multiple processes to sha… (#5223) 2019-07-02 18:38:33 +00:00
buildCacheSettings.gradle Explicitly disable remote gradle build cache when building locally. (#4095) 2018-10-19 16:40:06 +01:00
constants.properties CORDA-3377: Upgrade to DJVM 1.0-RC06. (#5866) 2020-01-21 09:05:23 +00:00
CONTRIBUTING.md Combines all contributing info in one place. Clean-up. (#4266) 2018-11-20 18:17:11 +00:00
CONTRIBUTORS.md Contract tutorial update and Contributors list update (#5338) 2019-07-30 14:51:34 +01:00
detekt-baseline-config.yml TM-45 Make detektBaseline pass (#5561) 2019-10-15 15:49:31 +01:00
detekt-baseline.xml CORDA-3329 Exceptions thrown in raw vault observers can cause critical issues (#5816) 2020-01-24 18:21:07 +00:00
detekt-config.yml Converting Groovy to Java in the Distributed testing plugin (#5642) 2019-11-05 16:59:19 +00:00
deterministic.gradle CORDA-2876: Ensure that sandboxable byte-code is compiled for Java 8. 2019-11-14 16:22:28 +00:00
gradle.properties Revert "Merge pull request #5145 from corda/jdk11-migration-gradle5-upgrade" (#5146) 2019-05-20 16:16:49 +01:00
gradlew CORDA-2893 Upgrade Corda to use Gradle 5.4.1 (Take 2) (#5137) 2019-05-20 14:26:42 +01:00
gradlew.bat CORDA-2893 Upgrade Corda to use Gradle 5.4.1 (Take 2) (#5137) 2019-05-20 14:26:42 +01:00
Jenkinsfile Allow taints on kubernetes nodes to determine scheduling of tests (#5755) 2019-11-25 09:39:37 +00:00
LICENSE Use full Apache 2.0 license so GitHub recognizes it 2019-08-23 12:24:37 +02:00
README.md Fix logo image in README.md 2019-10-02 13:05:45 +02:00
SECURITY.md CORDA-2958 Security policy for corda 2019-06-03 10:38:13 +02:00
settings.gradle Merge remote-tracking branch 'origin/release/os/4.3' into my_merge_branch 2019-11-05 17:19:18 +00:00
sizing.sh add a shared memory port allocator to allow multiple processes to sha… (#5223) 2019-07-02 18:38:33 +00:00
TRADEMARK Updated URL link to R3 trademark policy 2017-07-13 11:43:41 +01:00

Corda

License

Corda

Corda is an open source blockchain project, designed for business from the start. Only Corda allows you to build interoperable blockchain networks that transact in strict privacy. Corda's smart contract technology allows businesses to transact directly, with value.

Features

  • Smart contracts that can be written in Java and other JVM languages
  • Flow framework to manage communication and negotiation between participants
  • Peer-to-peer network of nodes
  • "Notary" infrastructure to validate uniqueness and sequencing of transactions without global broadcast
  • Enables the development and deployment of distributed apps called CorDapps
  • Written in Kotlin, targeting the JVM

Getting started

  1. Read the Getting Started documentation
  2. Run the Example CorDapp
  3. Read about Corda's Key Concepts
  4. Follow the Hello, World! tutorial

Contributing

Corda is an open-source project and contributions are welcome!

To find out how to contribute, please see our contributing docs.

License

Apache 2.0

Acknowledgements

YourKit

YourKit supports open source projects with its full-featured Java Profiler.

YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.