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
Rick Parker b29713d7b9
ENT-6947 Intern common types to reduce heap footprint (#7239)
ENT-6947: Implement interning for SecureHash, CordaX500Name, PublicKey, AsbtractParty and SignatureAttachmentConstraint, including automatic detection of internable types off companion objects in AMQP & Kyro deserialization.  In some cases, add new factory methods to companion objects, and make main code base use them.

Performance tested in performance cluster with no negative impact visible (so default concurrency setting seems okay).

Testing suggests 5-6x memory saving for tokens in TokensSDK in memory selector.  Should see approx. 1 million tokens per GB or better (1.5 million for the tokens we tested with).
2022-10-18 09:28:41 +01:00
.ci ENT-6947 Intern common types to reduce heap footprint (#7239) 2022-10-18 09:28:41 +01:00
.github INFRA-1856: Update pr scanner version 2022-09-09 16:20:56 +01:00
.idea ENT-6947 Intern common types to reduce heap footprint (#7239) 2022-10-18 09:28:41 +01:00
buildSrc INFRA-803 Rebuild Docker image tasks (#6804) 2020-11-20 10:21:53 +00:00
client ENT-6947 Intern common types to reduce heap footprint (#7239) 2022-10-18 09:28:41 +01:00
common ENT-6947 Intern common types to reduce heap footprint (#7239) 2022-10-18 09:28:41 +01:00
confidential-identities Merge branch 'release/os/4.4' into chrisr3-44-merge 2020-03-04 16:27:44 +00:00
config ENT-6784: Change Artemis Server logging to WARN (#7215) 2022-07-12 15:06:55 +01:00
core ENT-6947 Intern common types to reduce heap footprint (#7239) 2022-10-18 09:28:41 +01:00
core-deterministic ENT-6947 Intern common types to reduce heap footprint (#7239) 2022-10-18 09:28:41 +01:00
core-tests Validate LedgerTransaction deserialised from AttachmentsClassLoader. (#7049) (#7052) 2022-01-31 09:40:01 +00:00
detekt-plugins NOTICK: Update Gradle files for DeteKt plugins. (#5970) 2020-02-16 08:21:05 +00:00
docker ENT-6975: Updated docker jdk version to 345 for zulu ubuntu and 8u342-al2 for amazon corretto. 2022-10-14 12:09:34 +01:00
docs ENT-6498 Fix API docs dependencies (#7054) 2022-02-08 10:25:07 +00:00
experimental NOTICK: Fix some Gradle technical debt. (#6430) 2020-07-07 09:08:58 +01:00
finance restored cash changelog v1 to its original state (#6822) 2020-11-27 12:16:50 +00:00
gradle/wrapper INFRA-1697: remove authentication details from gradlew wrapper download and add helper to add them in when ran on CI 2022-02-14 17:04:47 +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 NOTICK: Avoid configuring more tasks in the deterministic modules. (#6452) 2020-07-13 10:33:23 +01:00
lib CORDA-3938 Restrict Gradle dependency locations (#6554) 2020-08-03 21:28:26 +01:00
node ENT-6947 Intern common types to reduce heap footprint (#7239) 2022-10-18 09:28:41 +01:00
node-api ENT-6947 Intern common types to reduce heap footprint (#7239) 2022-10-18 09:28:41 +01:00
node-api-tests ENT-6588 Restrict database operations platform flag (#7053) 2022-02-08 10:06:44 +00:00
release-tools CORDA-3017 - Fix release tooling when product name != jira project (#5229) 2019-06-21 09:28:07 +01:00
samples NOTICK: release support optionally exclude shell dependency 2022-03-08 10:50:59 +00:00
serialization ENT-6947 Intern common types to reduce heap footprint (#7239) 2022-10-18 09:28:41 +01:00
serialization-deterministic ENT-6357: Deserialize LedgerTransaction elements for each Contract.verify(). (#6962) 2021-11-10 16:38:40 +00:00
serialization-djvm ENT-6357: Deserialize LedgerTransaction elements for each Contract.verify(). (#6962) 2021-11-10 16:38:40 +00:00
serialization-tests ENT-6947 Intern common types to reduce heap footprint (#7239) 2022-10-18 09:28:41 +01:00
testing ENT-6784: Change Artemis Server logging to WARN (#7215) 2022-07-12 15:06:55 +01:00
tools ENT-6631 - upgrade jackson version to get rid of databind vulnerability, keeping jackson-module-kotlin the same 2022-02-24 13:26:37 +00:00
.dockerignore WIP Kubenetes parallel build (#5396) 2019-09-03 15:40:08 +00:00
.gitignore INFRA-505: Move integration tests to unit tests (#6530) 2020-08-06 15:16:27 +01:00
build.gradle ENT-6903 - address security issues reported by Snyk (#7244) 2022-09-30 17:49:21 +01: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 Reverted netty back to 4.1.77.Final 2022-10-06 12:33:36 +01:00
CONTRIBUTING.md LEDG-67 updating contrib links (#7036) 2022-02-14 10:09:36 +00:00
CONTRIBUTORS.md EG-4168 Updating contributors.md list for OS 4.7 release branch (#6782) 2020-10-22 22:52:11 +01:00
detekt-baseline-config.yml TM-45 Make detektBaseline pass (#5561) 2019-10-15 15:49:31 +01:00
detekt-baseline.xml ENT-6286: OS: Upgrade version of Artemis to 2.19.1 (#6975) 2022-01-21 09:18:14 +00:00
detekt-config.yml [NOTICK] - Enable check in detekt for unused imports (#6106) 2020-03-26 15:46:33 +00:00
deterministic.gradle NOTICK: Avoid configuring more tasks in the deterministic modules. (#6452) 2020-07-13 10:33:23 +01:00
gradle.properties INFRA-424: Merge openj9 updates into 4.6 (#6683) 2020-09-02 14:35:30 +01:00
gradlew CORDA-3892: Upgrade Gradle 5.4.1 -> 5.6.4. (#6435) 2020-07-07 09:07:55 +01:00
gradlew.bat CORDA-3892: Upgrade Gradle 5.4.1 -> 5.6.4. (#6435) 2020-07-07 09:07:55 +01:00
java8.gradle NOTICK: Fix some Gradle technical debt. (#6430) 2020-07-07 09:08:58 +01:00
Jenkinsfile INFRA-1697: add call for second agent 2022-02-14 20:59:55 +00:00
LICENSE Use full Apache 2.0 license so GitHub recognizes it 2019-08-23 12:24:37 +02:00
README.md Update README.md 2022-06-13 16:53:12 +08:00
SECURITY.md CORDA-2958 Security policy for corda 2019-06-03 10:38:13 +02:00
settings.gradle NOTICK: Replace global dependency exclusions with dependency substitution. (#7099) 2022-03-08 12:04:26 +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.

Architecure Evolution

The code present in this repository reflects the first version of the implementation of the Corda model for DLT technology. This first architecture version covers Corda versions 1 through 4 and continues to deliver on the promise of DLT for both the open source community and industry as a whole.

However, like all things, Corda must evolve to serve the more stringent needs of today. This is why the second (and current) version of the Corda Arcchitecture can be found here and will form the basis of the Corda 5 release.

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.