Skip to content

Distributed Ledger Technologies / Blockchain : Software Design Patterns

License

Notifications You must be signed in to change notification settings

kuip/dlt-design-patterns

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Distributed Ledger Technologies / Blockchain : Software Design Patterns

Written conform to the principles and terminology of Blockchain.

Data Patterns

Merkle Tree

Structure

Merkle Tree

Instance

Merkle Tree

Where node[1.1].signature = hash(concatenate(node[1.1.1].toString(),node[1.1.2].toString()))) etc.

Applications

  • Git
  • Modern File Systems

Merkle Trie / Blockchain

Structure

Merkle Trie

Instance

Merkle Trie

Where root[i+1].signature = hash(concatenate(root[i].toString(),block[i].toString())) etc.

Applications

  • Blockchain

Block

Block

Applications

  • Blockchain

Transaction

Transaction

Applications

  • Blockchain

Behavior Patterns

Singleton

Singleton

One single instance of:

  • data
  • behavior
  • events

Applications

  • Blockchain

(Smart) Contract

Contract

Mortal Contract

By default the contracts are immortal. They could trap funds if they cannot be stopped from operation.

Mortal Contract

Contract Interoperativity

ERC20 Contract1, 2, 3 are interoperable

Oracle

Oracle

Observer/Judge

Structure

Observer

Usage

Observer

A more detailed UML and implementation: ontrack-dapp

Composite Patterns

Twin Contracts

Twin smart contracts usually are born and die together. Also the transcations they initiate are born in synchronicity and atomically in mirror on their respective newtorks.

Twin Contracts

Contract Factory

Contract Factory

Contract of Contracts

A contract that implements contract factory for any number of contracts.

Structure

Contract of Contracts

Usage

Contract of Contracts

Thanks

Diagrams drawn using Nomnoml and JS Sequence Diagrams.

Releases

No releases published

Packages

No packages published