What is the 'core' of a transaction view?

Diving deep in the representation of transaction trees and views, I came across the term ‘core’ several places in Canton sources, such as:

 /* ...
  * @param createdCore
  *   associates contract ids of Create nodes in the core of the view to the corresponding contract
  *   instance. The elements are ordered in execution order.
  * ...
  */
final case class ViewParticipantData private (
    coreInputs: Map[LfContractId, InputContract],
    createdCore: Seq[CreatedContract],
    createdInSubviewArchivedInCore: Set[LfContractId],
    ...
) ...

Complete source: daml/sdk/canton/community/base/src/main/scala/com/digitalasset/canton/data/ViewParticipantData.scala at 9698fb75876cd1da541d823a005d375a9359ed62 · digital-asset/daml · GitHub

So how do you define the core of a view?

1 Like

Hi Artur

Linked below is a section from the Canton architecture docs in the Canton github repository. I’m not sure if similar content exists in docs.daml.com. There are certainly docs on transactions and views there, but I couldn’t find anything about “core of transaction views” after searching for several minutes (but I might have missed it).

Link: https://github.com/DACH-NY/canton/blob/main/docs/src/sphinx/arch/canton/tx-data-structures.rst#transaction-views

“The core of a view is the set of all subactions of the view that are not subactions of a proper subview of the view.”

This is explained in the docs with an example and pictures.

2 Likes