mirror of
https://github.com/corda/corda.git
synced 2024-12-24 07:06:44 +00:00
f30ba33929
The node now sends a transaction to the verifier if any of its attachments were compiled with Kotlin 1.2 (the net.corda.node.verification.external system property has been removed). It uses kotlinx-metadata to read the Kotlin metadata in the attachment to determine this. For now this scanning is done each time the attachment is loaded from the database. The existing external verification integration tests were converted into smoke tests so that 4.11 nodes could be involved. This required various improvements to NodeProcess.Factory. A new JAVA_8_HOME environment variable, pointing to JDK 8, is required to run these tests. There is still some follow-up work that needs to be done: Sending transactions from a 4.11 node to a 4.12 node works, but not the other way round. A new WireTransaction component group needs to be introduced for storing 4.12 attachments so that they can be safely ignored by 4.11 nodes, and the 4.12 node needs to be able to load both 4.11 and 4.12 versions of the same contracts CorDapp so that they can be both attached to the transaction. Even though attachments are cached when retrieved from the database, the Kotlin metadata version should be stored in the attachments db table, rather than being scanned each time. Finally, VerificationService was refactored into NodeVerificationSupport and can be passed into SignedTransaction.verifyInternal, instead of needing the much heavier VerifyingServiceHub. This makes it easier for internal tools to verify transactions and spawn the verifier if necessary.
132 lines
4.6 KiB
Groovy
132 lines
4.6 KiB
Groovy
pluginManagement {
|
|
ext.artifactory_contextUrl = 'https://software.r3.com/artifactory'
|
|
ext.publicArtifactURL = 'https://download.corda.net/maven'
|
|
|
|
repositories {
|
|
// Use system environment to activate caching with Artifactory,
|
|
// because it is actually easier to pass that during parallel build.
|
|
// NOTE: it has to be a name of a virtual repository with all
|
|
// required remote or local repositories!
|
|
if (System.getenv("CORDA_USE_CACHE")) {
|
|
maven {
|
|
name "R3 Maven remote repositories"
|
|
url "${artifactory_contextUrl}/${System.getenv("CORDA_USE_CACHE")}"
|
|
authentication {
|
|
basic(BasicAuthentication)
|
|
}
|
|
credentials {
|
|
username = System.getenv('CORDA_ARTIFACTORY_USERNAME')
|
|
password = System.getenv('CORDA_ARTIFACTORY_PASSWORD')
|
|
}
|
|
}
|
|
} else {
|
|
mavenLocal()
|
|
gradlePluginPortal()
|
|
maven { url "${publicArtifactURL}/corda-dependencies" }
|
|
maven { url "${publicArtifactURL}/corda-dependencies-dev" }
|
|
}
|
|
}
|
|
|
|
plugins {
|
|
id 'org.jetbrains.kotlin.jvm' version kotlin_version
|
|
id 'org.jetbrains.kotlin.plugin.allopen' version kotlin_version
|
|
id 'org.jetbrains.kotlin.plugin.jpa' version kotlin_version
|
|
}
|
|
}
|
|
// The project is named 'corda-project' and not 'corda' because if this is named the same as the
|
|
// output JAR from the capsule then the buildCordaJAR task goes into an infinite loop.
|
|
rootProject.name = 'corda-project'
|
|
include 'opentelemetry'
|
|
include 'opentelemetry:opentelemetry-driver'
|
|
include 'confidential-identities'
|
|
include 'finance:contracts'
|
|
include 'finance:workflows'
|
|
include 'core'
|
|
include 'core-1.2'
|
|
include 'core-tests'
|
|
include 'docs'
|
|
include 'node-api'
|
|
include 'node-api-tests'
|
|
include 'node'
|
|
include 'node:capsule'
|
|
include 'verifier'
|
|
include 'client:jackson'
|
|
include 'client:jfx'
|
|
include 'client:mock'
|
|
include 'client:rpc'
|
|
include 'docker'
|
|
include 'testing:testserver'
|
|
include 'testing:testserver:testcapsule:'
|
|
include 'experimental'
|
|
include 'experimental:avalanche'
|
|
include 'experimental:blobwriter'
|
|
include 'experimental:quasar-hook'
|
|
include 'experimental:corda-utils'
|
|
include 'experimental:nodeinfo'
|
|
include 'experimental:netparams'
|
|
include 'test-common'
|
|
include 'test-cli'
|
|
include 'test-utils'
|
|
include 'test-db'
|
|
include 'smoke-test-utils'
|
|
include 'node-driver'
|
|
include 'core-test-utils'
|
|
// Avoid making 'testing' a project, and allow build.gradle files to refer to these by their simple names:
|
|
['test-common', 'core-test-utils', 'test-utils', 'test-cli', 'test-db', 'smoke-test-utils', 'node-driver'].each {
|
|
project(":$it").projectDir = new File("$settingsDir/testing/$it")
|
|
}
|
|
include 'tools:explorer'
|
|
include 'tools:explorer:capsule'
|
|
//include 'tools:demobench'
|
|
include 'tools:loadtest'
|
|
include 'tools:graphs'
|
|
include 'tools:bootstrapper'
|
|
include 'tools:blobinspector'
|
|
include 'tools:network-builder'
|
|
include 'tools:cliutils'
|
|
include 'tools:worldmap'
|
|
include 'tools:checkpoint-agent'
|
|
include 'samples:attachment-demo:contracts'
|
|
include 'samples:attachment-demo:workflows'
|
|
include 'samples:trader-demo:workflows-trader'
|
|
// include 'samples:irs-demo'
|
|
// include 'samples:irs-demo:cordapp:contracts-irs'
|
|
// include 'samples:irs-demo:cordapp:workflows-irs'
|
|
// include 'samples:irs-demo:web'
|
|
include 'samples:simm-valuation-demo'
|
|
include 'samples:simm-valuation-demo:flows'
|
|
include 'samples:simm-valuation-demo:contracts-states'
|
|
include 'samples:notary-demo:contracts'
|
|
include 'samples:notary-demo:workflows'
|
|
include 'samples:bank-of-corda-demo'
|
|
include 'samples:cordapp-configuration:workflows'
|
|
include 'samples:network-verifier:contracts'
|
|
include 'samples:network-verifier:workflows'
|
|
include 'serialization'
|
|
include 'serialization-1.2'
|
|
include 'serialization-tests'
|
|
include 'testing:cordapps:dbfailure:dbfcontracts'
|
|
include 'testing:cordapps:dbfailure:dbfworkflows'
|
|
include 'testing:cordapps:missingmigration'
|
|
include 'testing:cordapps:sleeping'
|
|
include 'testing:cordapps:cashobservers'
|
|
include 'testing:cordapps:4.11-workflows'
|
|
|
|
// Common libraries - start
|
|
include 'common-validation'
|
|
project(":common-validation").projectDir = new File("$settingsDir/common/validation")
|
|
|
|
include 'common-configuration-parsing'
|
|
project(":common-configuration-parsing").projectDir = new File("$settingsDir/common/configuration-parsing")
|
|
|
|
|
|
include 'common-logging'
|
|
project(":common-logging").projectDir = new File("$settingsDir/common/logging")
|
|
// Common libraries - end
|
|
|
|
apply from: 'buildCacheSettings.gradle'
|
|
|
|
include 'detekt-plugins'
|
|
include 'tools:error-tool'
|
|
|