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
Dan Newton ca23612fe1
CORDA-3596 Record flow metadata (#6067)
* CORDA-3596 Record flow metadata

Record flow metadata during the zero'th checkpoint that occurs before
calling the flow's `call` function.

This required adding an RPC call's arguments to the `InvocationContext`
that gets created. These arguments are then accessible within the
statemachine and from the `Checkpoint` class. The arguments are then
extracted when recording a flow's metadata inside of
`DBCheckpointStorage`.

Updated the size of the started by column to 128 since it was not long
enough to hold the fully qualified class of a service that started a
flow.

* CORDA-3596 Remove arguments from in-memory checkpoint

When executing a flows first real suspend (from flow code) the arguments
 contained in the `InvocationContext` are removed. This saves holding
 these arguments for the whole lifecyle of a flow.

* CORDA-3596 Increase `cordapp_name` column to 128

* CORDA-3596 Join metadata by `flow_id`

Due to changes in where metadata is recorded, there is no need for
having `invocation_id` as the metadata table's primary key. The
`flow_id` is now the primary key of the table and is used to join to the
 main checkpoints table.

The `invocation_id` has been removed from the checkpoints table since it
 is not needed for the join anymore.

* CORDA-3596 Remove `received_time` from metadata table

* CORDA-3596 Remove unused `StartReason` enum

* CORDA-3596 Simple `DBCheckpointStorageTests` for metadata

* CORDA-3596 Truncate really long flow names
2020-03-17 17:28:32 +00:00
.ci Merge branch 'release/os/4.4' into chrisr3-44-merge 2020-03-04 16:27:44 +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 Merge commit '5b50ef49bcca2d1be8bb0604e1be167e3bb5da24' into chrisr3-44-merge 2020-03-06 09:55:00 +00:00
common ENT-5043 separate out test utils (#5998) 2020-03-03 15:55:17 +00:00
confidential-identities Merge branch 'release/os/4.4' into chrisr3-44-merge 2020-03-04 16:27:44 +00:00
config EG-71 - Changed the default file limit in the log4j2 configuration (#5996) 2020-03-02 09:26:46 +00:00
core CORDA-3596 Record flow metadata (#6067) 2020-03-17 17:28:32 +00:00
core-deterministic NOTICK: Fix more Gradle technical debt. (#5989) 2020-02-20 17:01:24 +00:00
core-tests Merge branch 'release/os/4.4' into chrisr3-44-merge 2020-03-04 16:27:44 +00:00
detekt-plugins NOTICK: Update Gradle files for DeteKt plugins. (#5970) 2020-02-16 08:21:05 +00:00
docker Merge branch 'release/os/4.4' into chrisr3-44-merge 2020-03-04 16:27:44 +00:00
docs [CORDA-3628] - Implement sendAll API (#5990) 2020-03-09 17:09:13 +00:00
experimental [NOTICK] Add a detekt rule to catch tests with no timeout (#5959) 2020-02-14 17:31:02 +00:00
finance ENT-5043 separate out test utils (#5998) 2020-03-03 15:55:17 +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-3596 Record flow metadata (#6067) 2020-03-17 17:28:32 +00:00
node-api Merge pull request #6030 from corda/chrisr3-44-merge 2020-03-06 09:50:39 +00:00
node-api-tests Merge branch 'release/os/4.5' into dan/merge-4.5-into-feature-branch 2020-03-12 08:56:59 +00:00
release-tools CORDA-3017 - Fix release tooling when product name != jira project (#5229) 2019-06-21 09:28:07 +01:00
samples Merge branch 'feature/checkpoint_table_improvements' into dan/merge-4.5-into-feature-branch 2020-03-13 14:29:18 +00:00
serialization [NOTICK] Add a detekt rule to catch tests with no timeout (#5959) 2020-02-14 17:31:02 +00:00
serialization-deterministic NOTICK: Fix more Gradle technical debt. (#5989) 2020-02-20 17:01:24 +00:00
serialization-djvm NOTICK: Better use of generics for DJVM Collection and Map serializers. 2020-03-08 20:14:22 +00:00
serialization-tests ENT-5043 separate out test utils (#5998) 2020-03-03 15:55:17 +00:00
testing Merge branch 'feature/checkpoint_table_improvements' into dan/merge-4.5-into-feature-branch 2020-03-13 14:29:18 +00:00
tools EG-464 Corda returns incorrect exit code in case if node is started with unknown/missing option (#6010) 2020-03-05 15:38:56 +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 TM-209: Dependx introduction for test running optimization (#6036) 2020-03-11 10:51:38 +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 Merge branch 'release/os/4.4' into chrisr3-44-merge 2020-03-04 16:27:44 +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 ENT-5043 separate out test utils (#5998) 2020-03-03 15:55:17 +00:00
detekt-config.yml NOTICK disable max line length check in detekt. (#5882) 2020-01-24 11:26:52 +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 TM-209: Dependx introduction for test running optimization (#6036) 2020-03-11 10:51:38 +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 ENT-4494 split nodeapi tests (#6024) 2020-03-04 17:59:15 +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.