Skip to content

Commit

Permalink
Merge pull request #31 from Arch-Network/brian/doc-updates
Browse files Browse the repository at this point in the history
Brian/doc updates
  • Loading branch information
hoffmabc authored Dec 22, 2024
2 parents 07f7975 + 3f3ce69 commit 08d1886
Show file tree
Hide file tree
Showing 9 changed files with 1,983 additions and 182 deletions.
11 changes: 9 additions & 2 deletions book.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,15 @@ git-repository-url = "https://github.com/arch-network/book"
git-repository-icon = "fa-github"
edit-url-template = "https://github.com/arch-network/book/edit/main/{path}"
additional-css = ["theme/custom.css"]
additional-js = ["theme/custom.js"]
additional-js = [
"theme/mermaid.min.js",
"theme/mermaid-init.js",
"theme/custom.js",
]
no-section-label = true
mathjax-support = true
copy-fonts = true
curly-quotes = true
smart-punctuation = true

[output.html.playground]
editable = true
Expand Down Expand Up @@ -51,5 +55,8 @@ follow-web-links = true
command = "mdbook-toc"
renderer = ["html"]

[preprocessor.mermaid]
command = "mdbook-mermaid"

[rust]
edition = "2021"
140 changes: 62 additions & 78 deletions src/concepts/bitcoin-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,52 +4,44 @@ Arch Network provides direct integration with Bitcoin, enabling programs to inte

## Architecture Overview

```ascii
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Bitcoin Network β”‚
β”‚ β–² β”‚
β”‚ β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Bitcoin Node β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Arch Network β”‚ β”‚
β”‚ β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Leader Node β”‚ β”‚
β”‚ β”‚ (Bitcoin Integration) β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Validator Network β”‚ β”‚
β”‚ β”‚ β”‚ β”‚
β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚
β”‚ β”‚ β”‚Program 1β”‚ ... β”‚Program Nβ”‚ β”‚ β”‚
β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```mermaid
flowchart TB
subgraph BN[Bitcoin Network]
BNode[Bitcoin Node]
end
subgraph AN[Arch Network]
LN[Leader Node\nBitcoin Integration]
subgraph VN[Validator Network]
P1[Program 1]
PN[Program N]
end
end
BNode <--> LN
LN <--> VN
P1 --- PN
```

## Core Components

### 1. UTXO Management
Arch Network manages Bitcoin UTXOs through a specialized system:

```ascii
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Bitcoin UTXO β”‚ β”‚ Arch Account β”‚
β”‚ β”‚ β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚Transactionβ”‚ β”‚ β”‚ β”‚ UTXO β”‚ β”‚
β”‚ β”‚ ID │──┼──────┼─►Meta β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚Output β”‚ β”‚ β”‚ β”‚Program β”‚ β”‚
β”‚ β”‚Index │──┼──────┼─►State β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```mermaid
flowchart LR
subgraph UTXO[Bitcoin UTXO]
TxID[Transaction\nID]
OutIdx[Output\nIndex]
end
subgraph Account[Arch Account]
Meta[UTXO\nMeta]
State[Program\nState]
end
TxID --> Meta
OutIdx --> State
```

```rust,ignore
Expand Down Expand Up @@ -85,20 +77,25 @@ pub trait UtxoOperations {

### 2. Bitcoin RPC Integration

```ascii
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Arch β”‚ β”‚ Bitcoin RPC β”‚ β”‚ Bitcoin β”‚
β”‚ Program │───►│ Interface │───►│ Node β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ β–² β”‚
β”‚ β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β” β”‚
└───────────►│ Configurationβ”‚ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Bitcoin β”‚
β”‚ Network β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```mermaid
flowchart LR
AP[Arch\nProgram]
RPC[Bitcoin RPC\nInterface]
BN[Bitcoin\nNode]
Config[Configuration]
Network[Bitcoin\nNetwork]
AP --> RPC
RPC --> BN
AP --> Config
Config --> RPC
BN --> Network
style AP fill:#f9f9f9,stroke:#333,stroke-width:2px
style RPC fill:#f9f9f9,stroke:#333,stroke-width:2px
style BN fill:#f9f9f9,stroke:#333,stroke-width:2px
style Config fill:#f9f9f9,stroke:#333,stroke-width:2px
style Network fill:#f9f9f9,stroke:#333,stroke-width:2px
```

Programs can interact with Bitcoin through RPC calls:
Expand Down Expand Up @@ -126,31 +123,18 @@ pub trait BitcoinRpc {

## Transaction Flow

```ascii
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Program β”‚ β”‚ Leader β”‚ β”‚Validator β”‚ β”‚ Bitcoin β”‚
β”‚ β”‚ β”‚ Node β”‚ β”‚ Network β”‚ β”‚ Network β”‚
β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜
β”‚ β”‚ β”‚ β”‚
β”‚ Create UTXO β”‚ β”‚ β”‚
│─────────────►│ β”‚ β”‚
β”‚ β”‚ β”‚ β”‚
β”‚ β”‚ Validate β”‚ β”‚
β”‚ │──────────────►│ β”‚
β”‚ β”‚ β”‚ β”‚
β”‚ β”‚ Sign β”‚ β”‚
β”‚ │◄─────────────│ β”‚
β”‚ β”‚ β”‚ β”‚
β”‚ β”‚ Submit TX β”‚ β”‚
β”‚ │─────────────────────────────►│
β”‚ β”‚ β”‚ β”‚
β”‚ β”‚ Confirmation β”‚ β”‚
│◄────────────────────────────────────────────│
β”‚ β”‚ β”‚ β”‚
β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”
β”‚ Program β”‚ β”‚ Leader β”‚ β”‚Validator β”‚ β”‚ Bitcoin β”‚
β”‚ β”‚ β”‚ Node β”‚ β”‚ Network β”‚ β”‚ Network β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```mermaid
sequenceDiagram
participant Program
participant Leader
participant Validator
participant Bitcoin
Program->>Leader: Create UTXO
Leader->>Validator: Validate
Validator->>Leader: Sign
Leader->>Bitcoin: Submit TX
Bitcoin-->>Program: Confirmation
```

### 1. Transaction Creation
Expand Down
Loading

0 comments on commit 08d1886

Please sign in to comment.