Skip to content
Merged
8 changes: 4 additions & 4 deletions docs-main/overview/understand/core-concepts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ title: "Core Concepts"
description: "Essential building blocks of Canton Network: parties, validators, synchronizers, and smart contracts"
---

import DamlOverviewUnderstandCoreConceptsL183 from "/snippets/daml-docs/overview_understand_core-concepts_L183.mdx";
import DamlPartyRolesAsset from "/snippets/external/daml/main/tutorials-smart-contracts-daml-daml-intro-choices-daml-party-roles-asset-begin.mdx";
import DamlPartyRolesTemplateStructure from "/snippets/external/daml/main/tutorials-smart-contracts-daml-daml-intro-choices-daml-party-roles-template-structure-begin.mdx";
import DamlOverviewUnderstandCoreConceptsL223 from "/snippets/daml-docs/overview_understand_core-concepts_L223.mdx";
import DamlOverviewUnderstandCoreConceptsL44 from "/snippets/daml-docs/overview_understand_core-concepts_L44.mdx";


Understanding Canton requires grasping four fundamental concepts: **parties**, **validator** node, **synchronizers**, and **templates** (smart contracts). This page introduces each and explains how they work together.
Expand Down Expand Up @@ -46,7 +46,7 @@ Unlike Ethereum addresses, parties create state on validators and have costs ass

Parties interact with contracts in three roles:

<DamlOverviewUnderstandCoreConceptsL44 />
<DamlPartyRolesAsset />

| Role | Can Create | Can See | Can Act |
|------|------------|---------|---------|
Expand Down Expand Up @@ -171,7 +171,7 @@ Smart contracts in Canton are defined using **Daml**, a purpose-built language f

### Template Structure

<DamlOverviewUnderstandCoreConceptsL183 />
<DamlPartyRolesTemplateStructure />

### Contracts Are Immutable

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
```haskell
-- Consuming: archives the contract
choice Transfer : ContractId Token
choice ChangeOwner : ContractId Token
controller owner
do create this with owner = newOwner

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
```haskell
[usdCid, chfCid] <- forA [usdCid, chfCid] (\cid -> submit alice do
exerciseCmd cid SetObservers with
newObservers = [bob]
)
[usdCid, chfCid] <- forA [usdCid, chfCid] (\cid -> submit alice do
exerciseCmd cid SetObservers with
newObservers = [bob]
)
```
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ template Asset
signatory issuer -- Must authorize creation; always sees contract
observer owner, auditor -- Can see contract

choice Transfer : ContractId Asset
choice ChangeOwner : ContractId Asset
with newOwner : Party
controller owner -- Only owner can exercise this choice
do create this with owner = newOwner
```
```
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ template Token
observer owner

-- Actions
choice Transfer : ContractId Token
choice ChangeOwner : ContractId Token
with
newOwner : Party
controller owner
do
create this with owner = newOwner
```
```