corda/verifier
Shams Asari b3265314ce ENT-11445: Support legacy contract CorDapp dependencies
The `TransactionBuilder` has been updated to look for any missing dependencies to legacy contract attachments, in the same way it does for missing dependencies for CorDapps in the "cordapps" directory,

Since `TransactionBuilder` does verification on the `WireTransaction` and not a `SignedTransaction`, much of the verification logic in `SignedTransaction` had to moved to `WireTransaction` to allow the external verifier to be involved. The external verifier receives a `CoreTransaction` to verify instead of a `SignedTransaction`. `SignedTransaction.verify` does the signature checks first in-process, before then delegating the reset of the verification to the `CoreTransaction`.

A legacy contract dependency is defined as an attachment containing the missing class which isn't also a non-legacy Cordapp (i.e. a CorDapp which isn't in the "cordapp" directory).
2024-03-13 10:58:11 +00:00
..
src/main ENT-11445: Support legacy contract CorDapp dependencies 2024-03-13 10:58:11 +00:00
build.gradle ENT-11065: Remove the need for JVM flags in client code (#7635) 2024-01-03 11:22:03 +00:00
README.md ENT-11056: Compile the external verifier using Kotlin 1.2 (#7622) 2024-01-02 17:02:20 +00:00

This is the external verifier process, which the node kicks off when it needs to verify transactions which itself can't. This will be mainly due to differences in the Kotlin version used in the transaction contract compared to the Kotlin version used by the node.

This module is built with Kotlin 1.2 and so is only able to verify transactions which have contracts compiled with Kotlin 1.2. It relies on specially compiled versions of core and serialization also compiled with Kotlin 1.2 (core-1.2 and serialization-1.2 respectively) to ensure compatibility.