Commit Graph

598 Commits

Author SHA1 Message Date
Arshad Mahmood
91d4c33513 ENT-11264 Fixed initialization of field serializer 2023-12-13 16:34:44 +00:00
Shams Asari
11d0054fcc
ENT-11055: Basic external verification (#7545)
* ENT-11055: Basic external verification

Introduction of the external transaction verifier, a separate JVM process for verifying `SignedTransaction`s. The end goal is for this verifier to be built with Kotlin 1.2 so that it creates a compatible verification environment for transactions with 4.11 contracts. For now however the verifier is built against Kotlin 1.8, same as the node.

External verification is enabled when the the system property `net.corda.node.verification.external` is set to `true`. When enabled, all verification requests made via `SignedTransaction.verify` are sent to the external verifier, regardless of the transaction content. It will do the vast bulk of the verification and then send the result back, namely if an exception occurred. If it did, then it's re-thrown in the node.

The external verifier is a stateless process, with no connection to the node's database. All transaction resolution information needed to create the relevant ledger transaction object are made to the node, which waits in a loop servicing these requests until it receives the result. The verifier Jar is embedded in the Corda node Jar, and is extracted and run when needed for the first time. The node opens up a local port for the verifier to communicate with, which is specified to the verifier in the process command line. This all means there is no extra configuration or deployment required to support external verification.

The existing code had some initial attempts and abstractions to support a future external verification feature. However,
they were either incorrect or didn't quite fit. One such example was `TransactionVerifierService`. It incorrectly operated on the `LedgerTransaction` level, which doesn't work since the transaction needs to be first serialised. Instead a new abstraction, `VerificationSupport` has been introduced, which represents all the operations needed to resolve and verify a `SignedTransaction`, essentially replacing `ServicesForResolution` (a lot of the changes are due to this). The external verifier implements this with a simple RPC mechanism, whilst the node needed a new (internal) `ServiceHub` abstraction, `VerifyingServiceHub`. `ServicesForResolution` hasn't been deleted since it's public API, however all classes implementing it must also implement `VerifyingServiceHub`. This is possible to do without breaking compatibility since `ServicesForResolution` is annotated with  `@DoNotImplement`.

Changes to `api-current.txt` were made due to the removal of `TransactionVerifierService`, which was clearly indicated as an internal class, and returning `TransactionBuilder.toLedgerTransactionWithContext` back to an internal method.

* Address review comments

* One bulk load states method

* Merge fix
2023-12-07 11:29:27 +00:00
Shams Asari
755c7b73b0
ENT-11111: Reverted exposure of internal ConcurrencyUtils method (#7586) 2023-12-06 09:55:35 +00:00
Arshad Mahmood
1614bd5a63 Updated api definitions due to format change, 2023-11-06 10:45:00 +00:00
Arshad Mahmood
6dd33fb8f7 Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
   the bouncycastle (i2p) implementation. This PR removes the conflicting
   algorithms from the built-in JCE provider.

2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
   scripting to conditionally output additional diagnostic info if the MDC
   was populated. This PR has removed the scripting.

3. The artifactory plug-ins used are now deprecated, this PR has removed them
   and uses the same code as Corda 5 for publishing to artifactory.

4. Javadoc generation has been modified to use the latest dokka plug-ins.

5. Gradle 7.6 has implemented an incredibly annoying change where transitive
   dependencies are not put on the compile classpath, so that they have to be
   explicitly added as dependencies to projects.

6. Mockito has been updated, which sadly meant that quite a few source files
   have to changes to use the new (org.mockito.kotlin) package name. This makes
   this PR appear much larger than it is.

7. A number of tests have been marked as ignored to get a green, broadly they fall
   into 3 classes.

   The first is related to crypto keypair tests, it appears some logic
   in the JDK prefers to use the SunJCE implementation and we prefer to use
   bouncycastle. I believe this issue can be fixed with better test setup.

   The second group is related to our use of a method called "uncheckedCast(..)",
   the purpose of this method was to get rid of the annoying unchecked cast compiler
   warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
   inference differs and at runtime sometimes the type it infers is "Void" which causes
   an exception at runtime. The simplest solution is to use an explicit cast instead of
   unchecked cast, Corda 5 have removed unchecked cast from their codebase.

   The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-11-06 10:24:17 +00:00
r3-build
2f6d226f9d Merging forward updates from release/os/4.11 to release/os/4.12 - 2023-10-27 2023-10-27 12:29:00 +00:00
Jose Coll
be433c1fd0
ENT-10100 Filter out UNVERIFIED txns + move TransactionStatus package. (#7543) 2023-10-24 17:01:37 +01:00
r3-build
5ae5ca95ea Merging forward updates from release/os/4.11 to release/os/4.12 - 2023-10-17 2023-10-17 06:05:08 +00:00
Jose Coll
6a2bad8077
ENT-10110 Back-port changes from ENT + additional clean-up (#7532) 2023-10-17 07:03:49 +01:00
Ronan Browne
1fdc23692a ES-1351: set up 4.12 branch 2023-09-14 11:13:15 +01:00
Waldemar Zurowski
7175d56f6c ES-1313: Merging forward updates from release/os/4.10 to release/os/4.11
Conflicts:
* .ci/dev/forward-merge/Jenkinsfile
2023-09-08 09:09:58 +01:00
Waldemar Zurowski
9f395b5ec3 ES-1313: Merging forward updates from release/os/4.9 to release/os/4.10
Conflicts:
* .ci/dev/forward-merge/Jenkinsfile
2023-09-07 20:36:14 +01:00
Waldemar Zurowski
a7274c4ec2 ES-1313: Merging forward updates from release/os/4.8 to release/os/4.9
Conflicts:
* .ci/dev/forward-merge/Jenkinsfile
2023-09-07 18:30:28 +01:00
Waldemar Zurowski
fd55e4c8d4 ES-1313: Merging forward updates from release/os/4.7 to release/os/4.8
Conflicts:
* .ci/dev/forward-merge/Jenkinsfile
2023-09-07 16:08:20 +01:00
Waldemar Zurowski
1c903b0ff2 ES-1313: Merging forward updates from release/os/4.6 to release/os/4.7
Conflicts:
* .ci/dev/forward-merge/Jenkinsfile
2023-09-07 14:06:10 +01:00
Waldemar Żurowski
dfe0ed294e
ES-1313: changes for better future forward merges (#7486)
* add more comments as a form of documentation
* move variable names away from calling pipeline for better experience
of future forward merges if pipeline parameters were to change
2023-09-07 14:39:02 +02:00
Waldemar Zurowski
658e7217a3 ES-1313: Merging forward updates from release/os/4.6 to release/os/4.7
Conflicts:

* .ci/dev/forward-merge/Jenkinsfile
2023-09-07 11:27:57 +01:00
Ronan Browne
8e2115293a
ES-1313: Update Jenkinsfile for slack channel (#7484) 2023-09-07 11:49:33 +02:00
Waldemar Żurowski
d7a5428665
Updated for new branch 2023-09-04 12:08:52 +01:00
r3-build
33798df51d Merging forward updates from release/os/4.10 to release/os/4.11 - 2023-09-04 2023-09-04 10:21:44 +00:00
Waldemar Żurowski
8a01b25684
updated forward merger for current branch
* updated originBranch to match current branch
* updated targetBranch to match branch with the next version
19:11
2023-09-01 22:50:29 +02:00
r3-build
612cfcdb32 Merging forward updates from release/os/4.9 to release/os/4.10 - 2023-09-01 2023-09-01 20:47:47 +00:00
Waldemar Żurowski
3a093ef324
updated forward merged to new branch 2023-09-01 18:25:46 +02:00
r3-build
313d342b02 Merging forward updates from release/os/4.8 to release/os/4.9 - 2023-09-01 2023-09-01 16:23:11 +00:00
Waldemar Żurowski
3d8636c716
updated for new branch 2023-09-01 14:55:04 +02:00
r3-build
fe9483d331 Merging forward updates from release/os/4.7 to release/os/4.8 - 2023-09-01 2023-09-01 12:47:45 +00:00
Waldemar Żurowski
267b500c93
updated forward merged to new branch 2023-09-01 11:56:24 +02:00
r3-build
8349675a23 Merging forward updates from release/os/4.6 to release/os/4.7 - 2023-09-01 2023-09-01 09:51:40 +00:00
Waldemar Żurowski
b0f86e26f9
ES-412: added automatic forward merge for Corda 4 (#7469)
* uses an already existing shared pipeline
* will start automatic PR creation for changes between 4.6 and 4.7
2023-09-01 10:50:47 +01:00
Waldemar Zurowski
849f8666a6 INFRA-1804: Merging forward updates from release/os/4.7 to release/os/4.8 2023-08-30 16:40:20 +01:00
Waldemar Zurowski
5daa091fdc INFRA-1804: Merging forward updates from release/os/4.6 to release/os/4.7 2023-08-30 14:30:31 +01:00
Waldemar Żurowski
00b1f3d2c7
INFRA-1804: revert back to standard agent (#7463)
* Snyk binaries have been already incorporated into standard Jenkins
agent
2023-08-30 15:28:29 +02:00
Jose Coll
3b78b46619 Merge remote-tracking branch 'origin/release/os/4.11' into colljos/encryption_receiver_self_recovery 2023-08-23 11:20:16 +01:00
Rick Parker
ec261cb0c3
ENT-10306 Swap logic from receive finality to receive transaction flows (#7451)
* Swap logic from receive finality to receive transaction flows

* Remote TPV check

* Make finality check more robust

* Make emulation of finality in tests compliant with changes

* Improve deferring of ack when issue transaction

* Remove API checking of SignedTransactionWithDistributionList as added it 4.11 so cannot be incompatible, yet.

* Regenerated API file from 4.10 to check only compatibility with 4.10

* Move function to private

* Revert "Regenerated API file from 4.10 to check only compatibility with 4.10"

This reverts commit 6428f957e1.

* Reset ReceiveTransactionFlow and ReceiveFinalityFlow APIs
2023-08-23 10:09:42 +01:00
Jose Coll
06e43eb9e2 Fixes following merge. 2023-08-17 08:47:58 +01:00
Shams Asari
e0e4f51ba2
ENT-10285: Remove experimental DJVM support (#7442) 2023-08-09 08:44:32 +01:00
Ronan Browne
2f80e5a252 ES-657: Merging forward updates from 4.10 to 4.11 (2023-07-18) 2023-07-18 08:48:54 +01:00
Ronan Browne
e59145dd61 ES-657: Merging forward updates from 4.9 to 4.10 (2023-07-17) 2023-07-17 18:37:05 +01:00
Ronan Browne
306951c97d
ES-657: add auto import and snyk scanning for c4 corda community docker images (#7415) 2023-07-17 18:27:28 +01:00
Ronan Browne
991aa9fff9 ES-853: Merging forward updates from 4.10 to 4.11 (2023-07-17) 2023-07-17 14:35:59 +01:00
Connel McGovern
b01f85fb11 Merge branch 'release/os/4.9' into connelm/merge-4.9-4.10-2023-07-14
# Conflicts:
#	build.gradle
2023-07-14 18:19:55 +01:00
Ronan Browne
befae353ac ES-853: Merging forward updates from 4.8 to 4.9 (2023-07-13) 2023-07-13 15:25:55 +01:00
Ronan Browne
6bcc843f19 ES-853: Merging forward updates from 4.7 to 4.8 (2023-07-13) 2023-07-13 07:07:17 +01:00
Ronan Browne
010a9a6c08 ES-853: Merging forward updates from 4.6 to 4.7 (2023-07-12) 2023-07-12 20:02:32 +01:00
Ronan Browne
33df909cee
ES-757: update paramater in line with latest shared lib change (#7417) 2023-07-12 20:01:56 +01:00
Ronan Browne
9dd0bd8509
ES-757: ensure correct method is called with extra paramater 2023-07-11 13:11:02 +01:00
Ronan Browne
5e3ee980b3 INFRA-2040: Merging forward updates from 4.7 to 4.8 (2023-07-05) 2023-07-05 20:54:02 +01:00
Ronan Browne
56c6eb42ef
ES-757: remove extra paramater (#7403) 2023-07-05 16:28:51 +01:00
Ronan Browne
6b1a2cb027
ES-839: Disable Internal docker publishing for 4.7 ( only supported post 4.9 pacthes) (#7410)
* ES-839: Disable Docker publishing for 4.7
* ES-839: remove broken repo
2023-07-05 16:28:08 +01:00
Ronan Browne
1dc94b438c INFRA-2040: Merging forward updates from 4.6 to 4.7 (2023-06-23) 2023-06-23 20:50:53 +01:00