Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IBC architecture document #70

Merged
merged 37 commits into from Apr 25, 2019
Merged
Show file tree
Hide file tree
Changes from 34 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
1e1adc8
Add sections
cwgoes Apr 11, 2019
cfb7993
Merge branch 'master' into cwgoes/ibc-architecture-document-v2
cwgoes Apr 15, 2019
8f8806f
Notes from reading https://tools.ietf.org/pdf/rfc793.pdf
cwgoes Apr 15, 2019
7c8e691
Update .gitattributes
cwgoes Apr 15, 2019
7160dfb
Describe interfaces
cwgoes Apr 15, 2019
63b4a4c
Sections
cwgoes Apr 15, 2019
4cf364a
ASCII diagram
cwgoes Apr 15, 2019
6fa40e7
More ASCII diagramming
cwgoes Apr 15, 2019
8b96568
More motivation; fix links
cwgoes Apr 15, 2019
17d7dc7
Summarize remaining to-do
cwgoes Apr 15, 2019
69d6ccc
Finish motivation
cwgoes Apr 15, 2019
f83c250
Wording
cwgoes Apr 15, 2019
1354418
Fix links
cwgoes Apr 15, 2019
f20c584
Reorder
cwgoes Apr 15, 2019
54b050e
Update accordingly
cwgoes Apr 15, 2019
354919d
Add helpful pointers
cwgoes Apr 15, 2019
ea9f256
Update README
cwgoes Apr 15, 2019
39f6079
Merge branch 'master' into cwgoes/ibc-architecture-document-v2
cwgoes Apr 15, 2019
10f3362
Operation contd.
cwgoes Apr 16, 2019
23416f4
Authentication; connections
cwgoes Apr 16, 2019
e7cb7e0
Remove horizonal break
cwgoes Apr 16, 2019
5669d78
Start addressing comments
cwgoes Apr 17, 2019
54c5598
Address more comments
cwgoes Apr 17, 2019
b458831
Add state machine box
cwgoes Apr 17, 2019
4664b37
Longer title
cwgoes Apr 17, 2019
ba133b0
Add paragraph on sovereignty
cwgoes Apr 17, 2019
236c7fa
Clarify wording
cwgoes Apr 17, 2019
e528e93
Change section title
cwgoes Apr 17, 2019
38b1613
Define handler
cwgoes Apr 17, 2019
d2bcf9c
Note cryptographic accumulator
cwgoes Apr 17, 2019
25d9ca0
Address @vshvsh comment
cwgoes Apr 23, 2019
3b5bf19
Add use cases
cwgoes Apr 23, 2019
615cc2a
Clarify
cwgoes Apr 24, 2019
01e8e77
Address remaining @milosevic comments
cwgoes Apr 24, 2019
9310e65
Update docs/ibc/README.md
gamarin2 Apr 24, 2019
71ea9c9
Update README.md
cwgoes Apr 24, 2019
b130f53
Address @Liamsi comments
cwgoes Apr 24, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitattributes
@@ -1 +1,2 @@
_layouts/* linguist-vendored
*.pdf filter=lfs diff=lfs merge=lfs -text
6 changes: 3 additions & 3 deletions README.md
Expand Up @@ -17,9 +17,9 @@ See [PROCESS.md](PROCESS.md) for a description of the standardization process.
The subject of most initial interchain standards is the inter-blockchain communication protocol, "IBC".

If you are diving in or planning to review specifications, the following are recommended reading:
- [IBC Design Philosophy](./docs/ibc/1_IBC_DESIGN_PHILOSOPHY.md)
- [IBC Terminology](./docs/ibc/2_IBC_TERMINOLOGY.md)
- [IBC Architecture](./docs/ibc/3_IBC_ARCHITECTURE.md)
- [IBC Architecture](./docs/ibc/1_IBC_ARCHITECTURE.md)
- [IBC Design Principles](./docs/ibc/2_IBC_DESIGN_PRINCIPLES.md)
- [IBC Terminology](./docs/ibc/3_IBC_TERMINOLOGY.md)
- [IBC specification progress tracking](https://github.com/cosmos/ics/issues/26)

## Interchain Standards
Expand Down
1 change: 1 addition & 0 deletions docs/README.md
@@ -0,0 +1 @@
You might be looking for the [IBC documentation](./ibc).
154 changes: 154 additions & 0 deletions docs/ibc/1_IBC_ARCHITECTURE.md

Large diffs are not rendered by default.

@@ -1,10 +1,10 @@
# 1: IBC Design Philosophy
# 2: IBC Design Principles

> This is an explanation of the "design philosophy" of IBC.
**This is an explanation of the "design principles" of IBC.**

> For definitions of terms used in IBC specifications, see [here](./2_IBC_TERMINOLOGY.md).
**For an architectural overview, see [here](./1_IBC_ARCHITECTURE.md).**

> For an architectural overview, see [here](./3_IBC_ARCHITECTURE.md).
**For definitions of terms used in IBC specifications, see [here](./3_IBC_TERMINOLOGY.md).**

The design space of "interblockchain communication protocols" is wide, and the term itself has become a bit too all-encompassing. The "Interblockchain Communication Protocol" (IBC) is a very particular point in that design space, chosen to provide specific versatility, locality, modularity, and efficiency properties for the expected interchain ecosystem of interoperable blockchains. This document outlines the "why" of IBC and enumerates the primary high-level design goals.

Expand Down
69 changes: 0 additions & 69 deletions docs/ibc/3_IBC_ARCHITECTURE.md

This file was deleted.

12 changes: 6 additions & 6 deletions docs/ibc/2_IBC_TERMINOLOGY.md → docs/ibc/3_IBC_TERMINOLOGY.md
@@ -1,10 +1,10 @@
# 2: IBC Terminology
# 3: IBC Terminology

> This is an overview of terms used in IBC specifications.
**This is an overview of terms used in IBC specifications.**

> For the design rationale behind the protocol, see [here](./1_IBC_DESIGN_RATIONALE.md).
**For an architectural overview, see [here](./1_IBC_ARCHITECTURE.md).**

> For an architectural overview, see [here](./3_IBC_ARCHITECTURE.md).
**For a broad set of protocol design principles, see [here](./2_IBC_DESIGN_PRINCIPLES.md).**

This document provides definitions in plain English of key terms used throughout the IBC specification set.

Expand All @@ -14,9 +14,9 @@ This document provides definitions in plain English of key terms used throughout

An *actor*, or a *user* (used interchangeably), is an entity interacting with the IBC protocol. An actor can be a human end-user, a module or smart contract running on a blockchain, or an off-chain relayer process capable of signing transactions.

### Chain
### Chain / Ledger

A *chain*, or *ledger* (used interchangeably), is a distributed ledger (or "blockchain", although a strict chain of blocks may not be required) implementing part or all of the IBC specification as a component or module within its state machine.
A *chain*, *blockchain*, or *ledger* (used interchangeably), is a distributed ledger (or "blockchain", although a strict chain of blocks may not be required) implementing part or all of the IBC specification as a component or module within its state machine.

### State Machine

Expand Down
5 changes: 5 additions & 0 deletions docs/ibc/README.md
@@ -0,0 +1,5 @@
If you're looking for an overview of the IBC protocol, read the documents in numerical order.
cwgoes marked this conversation as resolved.
Show resolved Hide resolved

1. [IBC Architecture](./1_IBC_ARCHITECTURE.md)
1. [IBC Design Principles](./2_IBC_DESIGN_PRINCIPLES.md)
1. [IBC Terminology](./3_IBC_TERMINOLOGY.md)