mirror of
https://github.com/aljazceru/ark.git
synced 2025-12-18 20:54:20 +01:00
docs: various improvements (#28)
* more improvements * md fixes * improve boarding wording * improve blog desc * add developers section * imrpove links * fix edit links * Update website/docusaurus.config.js Co-authored-by: João Bordalo <bordalix@users.noreply.github.com> Signed-off-by: Marco Argentieri <3596602+tiero@users.noreply.github.com> * Update website/blog/2023-11-10-liquidity-requirements/index.md Co-authored-by: João Bordalo <bordalix@users.noreply.github.com> Signed-off-by: Marco Argentieri <3596602+tiero@users.noreply.github.com> * Update website/docs/intro.md Co-authored-by: João Bordalo <bordalix@users.noreply.github.com> Signed-off-by: Marco Argentieri <3596602+tiero@users.noreply.github.com> * Update website/docs/intro.md Co-authored-by: João Bordalo <bordalix@users.noreply.github.com> Signed-off-by: Marco Argentieri <3596602+tiero@users.noreply.github.com> * fix JSX * add ark banner as og-image of website * add og:image --------- Signed-off-by: Marco Argentieri <3596602+tiero@users.noreply.github.com> Co-authored-by: João Bordalo <bordalix@users.noreply.github.com>
This commit is contained in:
BIN
website/blog/2023-11-10-liquidity-requirements/banner.png
Normal file
BIN
website/blog/2023-11-10-liquidity-requirements/banner.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.0 MiB |
@@ -3,29 +3,48 @@ slug: liquidity-requirements
|
|||||||
title: Understanding Ark Liquidity Requirements
|
title: Understanding Ark Liquidity Requirements
|
||||||
authors: bordalix
|
authors: bordalix
|
||||||
tags: [liquidity, ark, bitcoin]
|
tags: [liquidity, ark, bitcoin]
|
||||||
|
image: ./banner.png
|
||||||
---
|
---
|
||||||
|
<head>
|
||||||
|
<meta name="description" content="Dive into the depths of Ark with our comprehensive guide on Liquidity Requirements. Explore how Ark liquidity intersect with money velocity" />
|
||||||
|
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:title" content="Understanding Ark Liquidity Requirements" />
|
||||||
|
<meta property="og:description" content="Dive into the depths of Ark with our comprehensive guide on Liquidity Requirements. Explore how Ark liquidity intersect with money velocity" />
|
||||||
|
<meta property="og:image" content="/assets/images/banner-997debaf19b69b17900ae6413eda20c5.png" />
|
||||||
|
<meta property="og:image:type" content="image/png" />
|
||||||
|
<meta property="og:image:width" content="512" />
|
||||||
|
<meta property="og:image:height" content="512" />
|
||||||
|
|
||||||
|
<meta property="twitter:card" content="summary_large_image" />
|
||||||
|
<meta property="twitter:title" content="Understanding Ark Liquidity Requirements" />
|
||||||
|
<meta property="twitter:description" content="Dive into the depths of Ark with our comprehensive guide on Liquidity Requirements. Explore how Ark liquidity intersect with money velocity" />
|
||||||
|
<meta property="twitter:image" content="/assets/images/banner-997debaf19b69b17900ae6413eda20c5.png" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
This post discusses the liquidity requirements and calculates the funding needs of Ark Service Provider (ASP), as all transactions within Ark must be funded by the ASP.
|
||||||
|
|
||||||
|
<!-- truncate -->
|
||||||
|
|
||||||
## What is Ark?
|
## What is Ark?
|
||||||
|
|
||||||
Ark is a promising second-layer solution for Bitcoin that could help improve the scalability and privacy of the network. It offers the following benefits:
|
Ark is a promising second-layer solution for Bitcoin that could help improve the scalability and privacy of the network. It offers the following benefits:
|
||||||
|
|
||||||
- **No incoming liquidity required**: Receivers can accept payments without having to worry about having enough funds in their wallets.
|
- **No incoming liquidity required**: Receivers can accept payments without having to worry about having enough funds in their wallets.
|
||||||
- **Maintains recipient anonymity**: Ark protects the anonymity of recipients, which is not always possible with other second-layer solutions.
|
- **Confidential payments**: Ark protects the confidentiality of recipients, which is not always possible with other second-layer solutions.
|
||||||
- **Scalable**: Ark is a scalable solution that can help improve the scalability of Bitcoin.
|
- **Scalable**: Ark is a scalable solution that can help improve the scalability of Bitcoin.
|
||||||
- **Secure**: Ark is a secure solution that is built on top of the Bitcoin blockchain.
|
- **Secure**: Ark is a secure solution that is built on top of the Bitcoin blockchain.
|
||||||
|
|
||||||
All transactions within Ark must be funded by the Ark Service Provider (ASP) in order to achieve these benefits.
|
:::tip
|
||||||
|
It's recommended to read the [nomenclature](/learn/nomenclature) first.
|
||||||
This post discusses some considerations on this topic and calculates the funding needs of the ASP.
|
:::
|
||||||
|
|
||||||
Refer to [nomenclature docs](/nomenclature) for any doubt
|
|
||||||
|
|
||||||
## Ark liquidity requirements
|
## Ark liquidity requirements
|
||||||
|
|
||||||
How much BTC can an ASP accept from new users without risking not having enough capital to fund transfers inside Ark? In other words, what percentage of BTC in Ark is transferred in a 1-month period?
|
How much BTC can an ASP accept from new users without risking not having enough capital to fund transfers inside Ark? In other words, what percentage of BTC in Ark is transferred in a 1-month period?
|
||||||
|
|
||||||
<!-- truncate -->
|
|
||||||
|
|
||||||
This is similar to the definition of money velocity, as defined by the St. Louis Fed:
|
This is similar to the definition of money velocity, as defined by the St. Louis Fed:
|
||||||
|
|
||||||
> The velocity of money is the frequency at which one unit of currency is used to purchase domestically-produced goods and services within a given time period.
|
> The velocity of money is the frequency at which one unit of currency is used to purchase domestically-produced goods and services within a given time period.
|
||||||
@@ -61,6 +80,10 @@ After one month, all the funds used by the ASP, plus the funds sent by the users
|
|||||||
|
|
||||||
Now, what would happen in a one-year period?
|
Now, what would happen in a one-year period?
|
||||||
|
|
||||||
|
:::info
|
||||||
|
You can run your own simulations with the <a href="/liquidity-simulator/" target="_blank">Ark liquidity simulator</a>.
|
||||||
|
:::
|
||||||
|
|
||||||
### Simulating for 1 year
|
### Simulating for 1 year
|
||||||
|
|
||||||
Columns definition:
|
Columns definition:
|
||||||
@@ -320,10 +343,6 @@ Dividing the initial UTXO into more VTXOs decreases the need for funding.
|
|||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## Simulator
|
|
||||||
|
|
||||||
You can run your own simulations with the <a href="/liquidity-simulator/" target="_blank">Ark liquidity simulator</a>.
|
|
||||||
|
|
||||||
## Conclusion
|
## Conclusion
|
||||||
|
|
||||||
The liquidity requirements for an ASP will depend on three major factors:
|
The liquidity requirements for an ASP will depend on three major factors:
|
||||||
@@ -336,12 +355,12 @@ The liquidity requirements for an ASP will depend on three major factors:
|
|||||||
|
|
||||||
- Velocity of M2 Money Stock
|
- Velocity of M2 Money Stock
|
||||||
by St Louis Fed
|
by St Louis Fed
|
||||||
https://fred.stlouisfed.org/series/M2V
|
<https://fred.stlouisfed.org/series/M2V>
|
||||||
|
|
||||||
- Lightning Report
|
- Lightning Report
|
||||||
by River
|
by River
|
||||||
https://river.com/learn/files/river-lightning-report-2023.pdf
|
<https://river.com/learn/files/river-lightning-report-2023.pdf>
|
||||||
|
|
||||||
- Cryptocurrencies and the Velocity of Money
|
- Cryptocurrencies and the Velocity of Money
|
||||||
by Ingolf Gunnar Anton Pernice, Georg Gentzen, and Hermann Elendner
|
by Ingolf Gunnar Anton Pernice, Georg Gentzen, and Hermann Elendner
|
||||||
https://cryptoeconomicsystems.pubpub.org/pub/pernice-cryptocurrencies-velocity/release/9
|
<https://cryptoeconomicsystems.pubpub.org/pub/pernice-cryptocurrencies-velocity/release/9>
|
||||||
4
website/docs/developers/_category_.json
Normal file
4
website/docs/developers/_category_.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"label": "Developers",
|
||||||
|
"position": 2
|
||||||
|
}
|
||||||
19
website/docs/developers/get-started.md
Normal file
19
website/docs/developers/get-started.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 1
|
||||||
|
title: 'Get Started'
|
||||||
|
---
|
||||||
|
|
||||||
|
:::info
|
||||||
|
🚧 This page is currently under development, and some concepts may not be entirely accurate. We greatly value your feedback and contributions. If you have any suggestions, corrections, or would like to submit edits, please do so through the pull request link available at the bottom of each page.
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This guide will help you get started with integrating Ark into your applications.
|
||||||
|
|
||||||
|
## Use cases
|
||||||
|
|
||||||
|
- Create a Bitcoin wallet for your users with cheap and fast transactions.
|
||||||
|
- Integrate Ark and Lightning Network to provide a seamless experience for your users.
|
||||||
|
- Accept Bitcoin payments in your ecommerce store or point of sale.
|
||||||
|
- Create virtual payment channels between your users.
|
||||||
@@ -4,35 +4,63 @@ sidebar_position: 1
|
|||||||
slug: /
|
slug: /
|
||||||
---
|
---
|
||||||
|
|
||||||
Welcome to Ark's documentation. Here you can learn more about the protocol, how to provide liquidity and spend your coins off-chain in a fast and secure way.
|
**Welcome to Ark's developer hub.** Here, you'll find detailed information about the protocol, guidance on providing liquidity, and instructions on how to efficiently spend your coins off-chain in a secure manner.
|
||||||
|
|
||||||
## 🤔 Why Ark?
|
<div align="center">
|
||||||
|
<img src="/img/ark-banner.png" alt="Noah designing the ark to onboard Bitcoin users"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
Bitcoin is the most secure and censorship blockchain in the world. However, it is not the fastest or the cheapest. Ark is a **second-layer** solution designed to help **scale Bitcoin transactions** by using a shared utxo model that enables confidential and off-chain payments through an intermediary server that can't steal your funds.
|
### 🤔 Why Ark?
|
||||||
|
|
||||||
## 👷♂️ How does it work?
|
Bitcoin is the world's most secure and censorship-resistant blockchain. However, it's not the fastest or the cheapest. Ark is a **second-layer solution** designed to **scale Bitcoin transactions**. It uses a shared UTXO model for confidential and off-chain payments through an intermediary server that cannot access your funds.
|
||||||
|
|
||||||
Start by reading the [Nomenclature](/nomenclature.md) section to understand the key concepts and terminology used in Ark. Then, you can learn how to [Board the Ark](intro/boarding.md) and [Send Payments](intro/payments.md). Finally, you can learn how to [Leave the Ark](intro/leaving.md) and withdraw your funds back to the Bitcoin blockchain if the server is unresponsive.
|
### 👶🏼 ELI5: Ark in Simple Terms
|
||||||
|
|
||||||
## 👶🏼 ELI5
|
Consider the early private banks that issued banknotes in exchange for gold deposits. These banknotes were redeemable for gold at any time. The banknotes were more convenient to use than gold, but they were only as good as the bank that issued them. If the bank went bankrupt, the banknotes would become worthless.
|
||||||
|
|
||||||
Think of early private banks that issued banknotes in exchange for gold deposits. In Ark's case, instead of gold, Bitcoin on the first layer acts as the reserve. The key difference is that the Bitcoin blockchain faces issues like slow transaction times, high fees, and limited capacity for numerous transactions.
|
When Alice **deposits Bitcoin with a server** (akin to a digital bank), she receives a digital check, similar to a banknote but with a crucial difference. This check is akin to **a cheque with an expiration date**.
|
||||||
|
|
||||||
Imagine Alice has some digital gold (Bitcoin) and wants to use it for everyday transactions without actually moving the gold each time. She deposits her digital gold with a digital bank (Server) and gets a promise note. Now, whenever she wants to pay Bob, instead of moving the actual gold, she tells the digital bank to transfer the promise note to Bob. The bank prepares a new promise note for Bob and takes back Alice's note.
|
The digital cheque Alice receives comes with an expiration date. To keep her funds secure and the cheque valid, she **must interact with the server at least once every month**. If Alice fails to do this, the server reserves the right to **reclaim the Bitcoin backing the cheque upon its maturity**.
|
||||||
|
|
||||||
This system is convenient but also has a safety net. If the digital bank disappears or fails, anyone can still get their digital gold back without needing the bank's help. This is like being able to withdraw your gold from the old private bank even if the bank closed down. But unlike the old banks, where you had to physically go and get your gold, in Ark, this process is digital and automated, ensuring that your digital gold is always safe and accessible.
|
She can use this check for payment with anyone else using the same digital bank, bypassing the need to use the Bitcoin blockchain. Before expiration, the check can be **redeemed** for Bitcoin, or it can be **refreshed** by interacting with the server.
|
||||||
|
|
||||||
|
Should the digital bank cease to exist, **users can still retrieve their digital gold without the bank's assistance**. This is similar to withdrawing gold from a defunct traditional bank, but in Ark's case, the process is enforced and automated by the Bitcoin blockchain. This ensures that your digital gold remains safe and accessible.
|
||||||
|
|
||||||
|
### 🔨 How Does it Work?
|
||||||
|
|
||||||
|
Start by exploring the [Nomenclature](/docs/learn/nomenclature.md) to familiarize yourself with key concepts and terminology. Then, learn how to [Board the Ark](/docs/learn/boarding.md), [Send Payments](/docs/learn/payments.md), and eventually [Leave the Ark](/docs/learn/leaving.md) to withdraw your funds back to the Bitcoin blockchain in case of server unresponsiveness.
|
||||||
|
|
||||||
|
|
||||||
## 🤓 Protocol Specifications
|
### 👩💻 Integrate Ark
|
||||||
|
|
||||||
[Learn more about Ark](specs/00-index.md)
|
You can [integrate Ark](/docs/developers/get-started.md) into your wallet or application to enable your users to send and receive Bitcoin payments off-chain.
|
||||||
|
|
||||||
## Stay in the loop
|
### 🏃♀️ Running Ark
|
||||||
|
|
||||||
- Be part of the community [joining our Telegram channel](https://t.me/ark_network_community).
|
:::info
|
||||||
- Ask questions and get help [on Stack Overflow](https://bitcoin.stackexchange.com/questions/tagged/ark).
|
🚧 **Work in progress**
|
||||||
- To propose improvements on protocol [open an issue on the Github repository](https://github.com/ark-network/boats/issues/new).
|
The Ark reference implementation is currently under development. Please check back soon for updates.
|
||||||
|
:::
|
||||||
|
|
||||||
## Copyright
|
You can join an existing Ark service provider or run your own.
|
||||||
|
|
||||||
By contributing to this repository, you agree to license your work under the MIT license unless specified otherwise at the top of the file itself. Any work contributed where you are not the original author must contain its license header with the original author(s) and source.
|
- [Join an Ark as User](/user/intro.md)
|
||||||
|
- [Operate an Ark as Liquidity Provider](/provider/intro.md)
|
||||||
|
|
||||||
|
### ⌨️ Contributing
|
||||||
|
|
||||||
|
We welcome contributions from the community. If you'd like to contribute to the reference implementation, please see the [Ark GitHub repository](https://github.com/ark-network/ark) repository.
|
||||||
|
|
||||||
|
### 🤓 Protocol Specifications
|
||||||
|
|
||||||
|
Follow the [BOATS GitHub repository](https://github.com/ark-network/boats) for updates.
|
||||||
|
|
||||||
|
### ➰ Stay in the Loop
|
||||||
|
|
||||||
|
- Join our community on [Telegram](https://t.me/ark_network_community).
|
||||||
|
- Ask questions or get help on [Stack Overflow](https://bitcoin.stackexchange.com/questions/tagged/ark).
|
||||||
|
- To propose protocol improvements, [open an issue on GitHub](https://github.com/ark-network/boats/issues/new).
|
||||||
|
|
||||||
|
### ⚖️ License
|
||||||
|
|
||||||
|
By contributing to this repository, you agree to license your work under the MIT license, unless specified otherwise. Contributions not originally authored by you must include a license header with the original author(s) and source.
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"label": "Get Started",
|
|
||||||
"position": 2
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
---
|
|
||||||
sidebar_position: 4
|
|
||||||
title: 'Payments'
|
|
||||||
---
|
|
||||||
|
|
||||||
### Overview
|
|
||||||
|
|
||||||
Alice wants to send funds to Bob inside the Ark.
|
|
||||||
|
|
||||||
- All Ark payments and ransactions are off-chain.
|
|
||||||
- Bob doesn't need to have funds inside the Ark to receive funds. (ie. inbound liquidity problem)
|
|
||||||
- Bob doesn't need to be online to receive funds
|
|
||||||
- Bob wil be required to be online **at least once every 4 weeks** to keep her funds safe.
|
|
||||||
|
|
||||||
### Timeline of events
|
|
||||||
|
|
||||||
1. Alice tells ASP to send [VTXO](/nomenclature#vtxo-1) to Bob
|
|
||||||
2. ASP (with Alice) prepares next [Pool transaction](/nomenclature#pool-transaction-aka-ark-transaction)
|
|
||||||
3. Alice creates a [Forfeit transaction](/nomenclature#forfeit-transaction):
|
|
||||||
- spends from VTXO (1) via `Alice + ASP`
|
|
||||||
- adds connector output from Pool transaction (2) as input
|
|
||||||
- signs (SIGHASH_ALL) and sends it to the ASP
|
|
||||||
4. ASP broadcasts [Pool transaction](/nomenclature#pool-transaction-aka-ark-transaction)
|
|
||||||
5. Bob has now a new [VTXO](/nomenclature#vtxo-1)
|
|
||||||
6. For at most 4 weeks, Alice will be able to double spend her’s [VTXO](/nomenclature#vtxo-1), but if she does it, the ASP will have time to grab the funds from the [VTXO](/nomenclature#vtxo-1) to itself using the [Forfeit transaction](/nomenclature#forfeit-transaction)
|
|
||||||
4
website/docs/learn/_category_.json
Normal file
4
website/docs/learn/_category_.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"label": "Learn",
|
||||||
|
"position": 1
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
sidebar_position: 3
|
sidebar_position: 2
|
||||||
title: 'Boarding the Ark'
|
title: 'Boarding the Ark'
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -8,21 +8,21 @@ title: 'Boarding the Ark'
|
|||||||
Alice wants to board the Ark of a well-known Ark service provider (ASP). It requires an on-chain transaction.
|
Alice wants to board the Ark of a well-known Ark service provider (ASP). It requires an on-chain transaction.
|
||||||
|
|
||||||
- Alice must be online **at least once every 4 weeks** to keep her funds safe.
|
- Alice must be online **at least once every 4 weeks** to keep her funds safe.
|
||||||
- If ASP denies Alice's boarding request, Alice can claim her funds back in 24 hours.
|
- If ASP is unresponsive, Alice can claim her funds back in 24 hours.
|
||||||
|
|
||||||
### The timeline of events
|
### Timeline of events
|
||||||
|
|
||||||
1. Alice creates a [Funding transaction](/nomenclature#funding-transaction)
|
1. Alice creates a [Funding transaction](./nomenclature#funding-transaction)
|
||||||
|
|
||||||
2. Alice adds any inputs she wants to cover the values the [VTXO](/nomenclature#vtxo-1) she will receive, plus on-chain fees.
|
2. Alice adds any inputs she wants to cover the values the [VTXO](./nomenclature#vtxo-1) she will receive, plus on-chain fees.
|
||||||
|
|
||||||
3. Alice adds an output with **two spending conditions**:
|
3. Alice adds an output with **two spending conditions**:
|
||||||
|
|
||||||
- `(ASP in 1 month)`
|
- `(ASP in 1 month)`
|
||||||
- A covenant output that forces coins to be spent by a [Redeem transaction](/nomenclature#redeem-transaction) with an output with **two** spending conditions:
|
- A covenant output that forces coins to be spent by a [Redeem transaction](./nomenclature#redeem-transaction) with an output with **two** spending conditions:
|
||||||
- `(Alice + ASP)`
|
- `(Alice + ASP)`
|
||||||
- `(Alice in 24 hours)`
|
- `(Alice in 24 hours)`
|
||||||
|
|
||||||
4. Alice notifies ASP about the [Funding transaction](/nomenclature#funding-transaction)
|
4. Alice notifies ASP about the [Funding transaction](./nomenclature#funding-transaction)
|
||||||
|
|
||||||
5. Alice has now a [VTXO](/nomenclature#vtxo-1).
|
5. Alice has now a [VTXO](./nomenclature#vtxo-1).
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
sidebar_position: 5
|
sidebar_position: 4
|
||||||
title: 'Leaving the Ark'
|
title: 'Leaving the Ark'
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -1,13 +1,16 @@
|
|||||||
---
|
---
|
||||||
sidebar_position: 2
|
sidebar_position: 1
|
||||||
title: 'Nomenclature'
|
title: 'Nomenclature'
|
||||||
---
|
---
|
||||||
|
:::info
|
||||||
|
🚧 This page is currently under development, and some concepts may not be entirely accurate. We greatly value your feedback and contributions. If you have any suggestions, corrections, or would like to submit edits, please do so through the pull request link available at the bottom of each page.
|
||||||
|
:::
|
||||||
|
|
||||||
## Intervenients
|
## Intervenients
|
||||||
|
|
||||||
### ASP
|
### ASP
|
||||||
|
|
||||||
Ark is a second-layer solution designed to help scale Bitcoin transactions by using a shared UTXO model that enables anonymous, off-chain payments through an untrusted intermediary called the **Ark Service Provider** (ASP). ASPs are always-on servers that provide liquidity to the network, similar to how Lightning service providers work.
|
ASPs are always-on servers that provide liquidity to the network, similar to how Lightning service providers work.
|
||||||
|
|
||||||
### Users
|
### Users
|
||||||
|
|
||||||
@@ -45,7 +48,7 @@ Periodic transaction crafted by the ASP that hits mainchain and creates new VTXO
|
|||||||
|
|
||||||
### Redeem transaction\*
|
### Redeem transaction\*
|
||||||
|
|
||||||
- Insurance for Alice, in case the ASP denies boarding on the Ark
|
- Insurance for Alice, in case the ASP becomes unresponsive.
|
||||||
- Allows Alice to receive funds back from the Ark after a grace period ie. 24 hours
|
- Allows Alice to receive funds back from the Ark after a grace period ie. 24 hours
|
||||||
|
|
||||||
| Inputs | Outputs |
|
| Inputs | Outputs |
|
||||||
@@ -79,7 +82,7 @@ Periodic transaction crafted by the ASP that hits mainchain and creates new VTXO
|
|||||||
- Represents a binary tree of transactions
|
- Represents a binary tree of transactions
|
||||||
- In an optimistic scenario, this tree is never revealed
|
- In an optimistic scenario, this tree is never revealed
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### VTXO\*
|
### VTXO\*
|
||||||
|
|
||||||
25
website/docs/learn/payments.md
Normal file
25
website/docs/learn/payments.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 3
|
||||||
|
title: 'Payments'
|
||||||
|
---
|
||||||
|
|
||||||
|
### Overview
|
||||||
|
|
||||||
|
Alice wants to send funds to Bob inside the Ark.
|
||||||
|
|
||||||
|
- All Ark payments and transactions are off-chain.
|
||||||
|
- Bob doesn't need to have funds inside the Ark to receive funds. (ie. inbound liquidity problem)
|
||||||
|
- Bob doesn't need to be online to receive funds
|
||||||
|
- Bob wil be required to be online **at least once every 4 weeks** to keep her funds safe.
|
||||||
|
|
||||||
|
### Timeline of events
|
||||||
|
|
||||||
|
1. Alice tells ASP to send [VTXO](./nomenclature#vtxo-1) to Bob
|
||||||
|
2. ASP (with Alice) prepares next [Pool transaction](./nomenclature#pool-transaction-aka-ark-transaction)
|
||||||
|
3. Alice creates a [Forfeit transaction](./nomenclature#forfeit-transaction):
|
||||||
|
- spends from VTXO (1) via `Alice + ASP`
|
||||||
|
- adds connector output from Pool transaction (2) as input
|
||||||
|
- signs (SIGHASH_ALL) and sends it to the ASP
|
||||||
|
4. ASP broadcasts [Pool transaction](./nomenclature#pool-transaction-aka-ark-transaction)
|
||||||
|
5. Bob has now a new [VTXO](./nomenclature#vtxo-1)
|
||||||
|
6. For at most 4 weeks, Alice will be able to double spend her’s [VTXO](./nomenclature#vtxo-1), but if she does it, the ASP will have time to grab the funds from the [VTXO](./nomenclature#vtxo-1) to itself using the [Forfeit transaction](./nomenclature#forfeit-transaction)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"label": "Create an Ark",
|
"label": "Create an Ark",
|
||||||
"position": 5
|
"position": 3
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
---
|
|
||||||
sidebar_position: 1
|
|
||||||
title: 'BOAT#0: Index'
|
|
||||||
---
|
|
||||||
|
|
||||||
# Index and Overview
|
|
||||||
|
|
||||||
Welcome! These **Basics of Ark Technology (BOAT)** documents describe the Ark protocol, a second layer solution that enables anonymous, off-chain payments through an untrusted intermediary that provides liquidity to the network.
|
|
||||||
|
|
||||||
## Index
|
|
||||||
|
|
||||||
- [BOAT #0: Index](00-index.md)
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
|
|
||||||
Ark is a second-layer solution designed to help scale Bitcoin transactions by using a shared utxo model that enables anonymous, off-chain payments through an untrusted intermediary called the Ark Service Provider (**ASP**). ASPs are always-on servers that provide liquidity to the network, similar to how Lightning service providers work.
|
|
||||||
|
|
||||||
Ark has a utxo set that lives off the chain. These utxos are referred to as virtual utxos or **VTXOs** in short. VTXOs are like short-lived notes that expire after four weeks. Users must spend their VTXOs upon receiving them within this four-week timeframe or return them to themselves to reset the four-week timer.
|
|
||||||
|
|
||||||
Users can acquire VTXOs from someone who already owns them or use a process called **onboarding**, which is an atomic two-way peg mechanism that doesn't require trust. Onboarding lets users lift their on-chain utxos off the chain for a 1:1 virtual utxo. Users can unilaterally redeem a virtual utxo for an on-chain utxo without asking for ASP cooperation.
|
|
||||||
|
|
||||||
When sending funds, users coin-select and redeem their VTXOs and create new ones for the recipient (plus change) in a coinjoin round where ASP is the blinded coordinator. ASP funds the coinjoin with their own on-chain funds in exchange for VTXO redemptions. Therefore, the coinjoin transaction that hits on-chain has only one or a few inputs provided by the ASP.
|
|
||||||
|
|
||||||
The newly created VTXOs of the coinjoin round are bundled and nested under a shared transaction output. This shared output expires four weeks after its creation, and once it expires, the ASP who funded the shared output in the first place can solely sweep the shared output. All nested VTXOs under this shared output are expected to be redeemed in this window period.
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"label": "Protocol",
|
|
||||||
"position": 3
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
// @ts-check
|
// @ts-check
|
||||||
// Note: type annotations allow type checking and IDEs autocompletion
|
// Note: type annotations allow type checking and IDEs autocompletion
|
||||||
|
|
||||||
const lightCodeTheme = require('prism-react-renderer/themes/github')
|
|
||||||
|
const lightCodeTheme = require('prism-react-renderer/themes/synthwave84')
|
||||||
const darkCodeTheme = require('prism-react-renderer/themes/dracula')
|
const darkCodeTheme = require('prism-react-renderer/themes/dracula')
|
||||||
|
|
||||||
/** @type {import('@docusaurus/types').Config} */
|
/** @type {import('@docusaurus/types').Config} */
|
||||||
@@ -30,13 +31,13 @@ const config = {
|
|||||||
sidebarPath: require.resolve('./sidebars.js'),
|
sidebarPath: require.resolve('./sidebars.js'),
|
||||||
// Please change this to your repo.
|
// Please change this to your repo.
|
||||||
// Remove this to remove the "edit this page" links.
|
// Remove this to remove the "edit this page" links.
|
||||||
editUrl: 'https://github.com/ark-network/edit/master/website/',
|
editUrl: 'https://github.com/ark-network/ark/edit/master/website/',
|
||||||
},
|
},
|
||||||
blog: {
|
blog: {
|
||||||
showReadingTime: true,
|
showReadingTime: true,
|
||||||
// Please change this to your repo.
|
// Please change this to your repo.
|
||||||
// Remove this to remove the "edit this page" links.
|
// Remove this to remove the "edit this page" links.
|
||||||
editUrl: 'https://github.com/ark-network/edit/master/website/blog/',
|
editUrl: 'https://github.com/ark-network/ark/edit/master/website/blog',
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
@@ -46,7 +47,7 @@ const config = {
|
|||||||
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
|
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
|
||||||
({
|
({
|
||||||
// Replace with your project's social card
|
// Replace with your project's social card
|
||||||
image: 'img/ark-og-image.png',
|
image: 'img/ark-banner.png',
|
||||||
navbar: {
|
navbar: {
|
||||||
title: 'Ark',
|
title: 'Ark',
|
||||||
logo: {
|
logo: {
|
||||||
@@ -71,15 +72,36 @@ const config = {
|
|||||||
},
|
},
|
||||||
footer: {
|
footer: {
|
||||||
links: [
|
links: [
|
||||||
|
{
|
||||||
|
title: 'LEARN',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
label: 'Nomenclature',
|
||||||
|
to: '/learn/nomenclature',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Board an Ark',
|
||||||
|
to: '/learn/boarding',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Send Payments',
|
||||||
|
to: '/learn/payments',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Leave an Ark',
|
||||||
|
to: '/learn/leaving',
|
||||||
|
}
|
||||||
|
],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: 'DOCS',
|
title: 'DOCS',
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
label: 'What Ark is',
|
label: 'Overview',
|
||||||
to: '/specs/index',
|
to: '/',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Join the Ark',
|
label: 'Join an Ark',
|
||||||
to: '/user/intro',
|
to: '/user/intro',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -91,6 +113,10 @@ const config = {
|
|||||||
{
|
{
|
||||||
title: 'COMMUNITY',
|
title: 'COMMUNITY',
|
||||||
items: [
|
items: [
|
||||||
|
{
|
||||||
|
label: 'Telegram',
|
||||||
|
href: 'https://t.me/ark_network_community',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: 'Stack Exchange',
|
label: 'Stack Exchange',
|
||||||
href: 'https://bitcoin.stackexchange.com/questions/tagged/ark',
|
href: 'https://bitcoin.stackexchange.com/questions/tagged/ark',
|
||||||
@@ -110,11 +136,12 @@ const config = {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
]
|
||||||
copyright: `Copyright © ${new Date().getFullYear()} Ark. Built with Docusaurus.`,
|
|
||||||
},
|
},
|
||||||
colorMode: {
|
colorMode: {
|
||||||
defaultMode: 'dark',
|
defaultMode: 'light',
|
||||||
|
disableSwitch: false,
|
||||||
|
respectPrefersColorScheme: true,
|
||||||
},
|
},
|
||||||
prism: {
|
prism: {
|
||||||
theme: lightCodeTheme,
|
theme: lightCodeTheme,
|
||||||
|
|||||||
BIN
website/static/img/ark-banner.png
Normal file
BIN
website/static/img/ark-banner.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.8 MiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Reference in New Issue
Block a user