diff --git a/packages/cacti-copm-core/README.md b/packages/cacti-copm-core/README.md
index c01c57fe20..e71a460897 100644
--- a/packages/cacti-copm-core/README.md
+++ b/packages/cacti-copm-core/README.md
@@ -18,10 +18,151 @@ Yarn:
yarn add --exact @hyperledger-cacti/cacti-copm-core
+## Data Sharing
+
+### COPM Command
+ - getVerifiedState
+
+### Figure: Data Sharing with getVerifiedState
+
+```mermaid
+sequenceDiagram
+ participant Alice
+ participant COPM gRPC A
+ participant Ledger A
+ participant Relay A
+ participant Relay B
+ participant Ledger B as Ledger B
+ Alice->>COPM gRPC A: getVerifiedState for State X on Ledger B
+ activate COPM gRPC A
+ COPM gRPC A->>Relay A: Read State X on Ledger B
+ activate Relay A
+ Relay A->>Relay B: Read State X
+ activate Relay B
+ Relay B->>Ledger B: Read State X
+ activate Ledger B
+ Ledger B->>Ledger B: Read State X
+ Ledger B->>Relay B: Return signed State X
+ deactivate Ledger B
+ Relay B->>Relay A: Return signed State X
+ deactivate Relay B
+ Relay A->>COPM gRPC A: Return signed State X
+ deactivate Relay A
+ COPM gRPC A->>Ledger A: Verify signature
+ activate Ledger A
+ Ledger A->>Ledger A: Verify signature
+ Ledger A->>COPM gRPC A: Signature Verified
+ deactivate Ledger A
+ COPM gRPC A->>Alice: Return State X
+ deactivate COPM gRPC A
+```
+
+## Asset Transfer
+
+ - Asset changes networks
+ - Asset burnt on Ledger A, minted on Ledger B
+ - Introduces 2 ledger data types:
+ - Pledge
+ - A record created on Ledger A when an asset is burnt
+ - Contains details about the asset, who it is promised to
+ - Claim
+ - A record created on Ledger B when the pledged asset is minted
+### COPM Commands
+ - Pledge
+ - ClaimPledge
+
+### Figure: Asset Transfer Pledge and ClaimPledge
+
+
+```mermaid
+sequenceDiagram
+ actor Alice
+ actor Bob
+ participant System A
+ participant Asset
+ participant System B
+ note right of System B:System: Ledger,
Relay, COPM gRPC
+ Alice->>Bob: Would you like my Asset?
+ Bob->>Alice: Yes, please.
+ Alice->>System A: Pledge Asset
+ activate System A
+ System A->>System A: Create Pledge
+ destroy Asset
+ System A-xAsset: Burn
+ deactivate System A
+ Alice->>Bob: You can claim it now!
+ Bob->>System B: Claim Pledge
+ activate System B
+ rect rgb(191, 223, 255)
+ System B->>System A: Read Pledge on System A
+ activate System A
+ note right of System B: A cross-network
'Data Sharing' flow
+ System A->>System A: Read Pledge
+ System A->>System B: Return signed pledge
+ deactivate System A
+ end
+ System B->>System B: Create Claim
+ create participant PB as Asset
+ System B->>PB: Mint
+ deactivate System B
+```
+
+## Asset Exchange
+
+ - Assets stay where they are
+ - Two parties swap asset ownership of two assets
+ - Assets can be on different networks
+ - Uses HTLC (Hash Time Lock Contract)
+ - Both parties have visibility of both assets/networks
+ - No inter-network communication needed
+ - no relays
+
+### COPM Commands
+ - Lock
+ - ClaimLock
+
+### Figure: Asset Exchange with Lock and ClamLock
+
+```mermaid
+sequenceDiagram
+ actor Alice
+ actor Bob
+ participant Token System
+ participant Bond System
+ note right of Bond System: System: Ledger and COPM gRPC
+ Alice->>Bob: Would you like to trade my Tokens for your Bond?
+ Bob->>Alice: Yes, please.
+ Alice->>Token System: Lock Tokens
+ activate Token System
+ Token System->>Token System: Lock Tokens
+ deactivate Token System
+ Bob->>Bond System: Lock Bond
+ activate Bond System
+ Bond System->>Bond System: Lock Bond
+ deactivate Bond System
+ Alice->>Bob: I've locked my Tokens, the secret is X.
+ Bob-->>Token System: Sees Tokens are Locked
+ Bob->>Alice: I've locked my Bond, the secret is Y.
+ Alice-->>Bond System: Sees Bond is Locked
+ Alice->>Bond System: Claim Lock for Bond with secret Y
+ activate Bond System
+ Bond System->>Bond System: Verify Lock
+ Bond System->>Bond System: Change Bond owner to Alice
+ deactivate Bond System
+ Bob->>Token System: Claim Lock for Tokens with secret X
+ activate Token System
+ Token System->>Token System: Verify Lock
+ Token System->>Token System: Change Token owner to Bob
+ deactivate Token System
+```
+
+
# Development
When implementing a new distributed ledger, the following interfaces must be implemented:
- DLTransactionContext: Implements running a transaction on the local network
- DLRemoteTransactionContext: Uses the weaver relays to run a transaction on another network
-- DLTransactionContextFactory: Factory to return either local or remote context for the specific DLT.
\ No newline at end of file
+- DLTransactionContextFactory: Factory to return either local or remote context for the specific DLT.
+
+