Contract
Keywords: net.corda.core.contracts.Contract interface
Date: 2023-09-18

net.corda.core.contracts

## Interface Contract

- All Known Subinterfaces:
    UpgradedContract<OldState,NewState>, UpgradedContractWithLegacyConstraint<OldState,NewState>
  All Known Implementing Classes:
    Cash, CommercialPaper, Obligation, OnLedgerAsset

      public Contract

  Implemented by a program that implements business logic on the shared ledger. All participants run this code for every `class LedgerTransaction` they see on the network, for every input and output state. All contracts must accept the transaction for it to be accepted: failure of any aborts the entire thing. The time is taken from a trusted time-window attached to the transaction itself i.e. it is NOT necessarily the current time.

  TODO: Contract serialization is likely to change, so the annotation is likely temporary.

  See Also:
    `class LedgerTransaction`

- - ### Constructor Detail

    - #### Contract

          public Contract()

  - ### Method Detail

    - #### verify

          void verify(@NotNull
                      LedgerTransaction tx)

      Takes an object that represents a state transition, and ensures the inputs/outputs/commands make sense. Must throw an exception if there's a problem that should prevent state transition. Takes a single object rather than an argument so that additional data can be added without breaking binary compatibility with existing contract code.