Files
ark/server
Louis Singer a95a829b20 Delay unilateral exit and support send to onchain address (#117)
* add delay on redeem close + forfeit close

* increase default round lifetime (16 minutes min)

* add sequence to final pset

* update CLI and server to support delayed vtxos oncahin

* rename future to "locked"

* add configurable EXIT_DELAY variable

* renaming

* rename "close" --> "closure"

* rename "close" to "closure"

* error message config.go
2024-02-22 16:47:52 +01:00
..
2024-02-09 19:32:58 +01:00
2024-02-09 19:32:58 +01:00
2024-02-09 19:32:58 +01:00
2024-02-09 19:32:58 +01:00
2024-02-09 19:32:58 +01:00
2024-02-09 19:32:58 +01:00
2024-02-09 19:32:58 +01:00
2024-02-09 19:32:58 +01:00
2024-02-09 19:32:58 +01:00
2024-02-09 19:32:58 +01:00
2024-02-09 19:32:58 +01:00
2024-02-19 15:06:21 +01:00

Overview

This is a Go implementation of Ark Service Provider that uses covenants (on the Liquid network).

This is a Proof of Concept in a early phase of development.

Requirements

Ocean wallet

Start oceand:

$ docker compose up -d oceand

Setup oceand:

$ alias ocean='docker exec oceand ocean'
$ ocean config init --no-tls
$ ocean wallet create --password <password>
$ ocean wallet unlock --password <password>

Ark Service Provider

Start the ASP:

$ docker compose up -d arkd

Note: On startup arkd will create an account ark on oceand.

Add funds to the ASP:

$ ocean account derive --account-name ark

Fund the resulting address with https://liquidtestnet.com/faucet.

Ark client

Build ark client:

$ cd client
$ make build
$ alias ark=$(pwd)/build/ark-cli-<os>-<arch>

Initialise ark wallet:

$ ark init --password <password> --ark-url localhost:6000

This will add a state.json file to the following directory:

  • POSIX (Linux/BSD): ~/.Ark-cli
  • Mac OS: $HOME/Library/Application Support/Ark-cli
  • Windows: %LOCALAPPDATA%\Ark-cli
  • Plan 9: $home/Ark-cli

Note: you can use a different datadir by exporting the env var ARK_WALLET_DATADIR like:

$ export ARK_WALLET_DATADIR=path/to/custom 
$ ark init --password <password> --ark-url localhost:6000

Add funds to the ark wallet:

$ ark faucet

ark now has 10000 sats on its offchain balance


In **another tab**, setup another ark wallet with:

$ export ARK_WALLET_DATADIR=./datadir $ alias ark2=$(pwd)/build/ark-cli-- $ ark2 init --password --ark-url localhost:6000 $ ark2 faucet

ark2 now has 10000 sats on ark


**Note:** `ark2` should always run in the second tab.

### Make payments

You can now make ark payments between the 2 ark wallets:

$ ark receive { "offchain_address": <address starting with "tark1q...">, "onchain_address": <address starting with "tex1q...">, "relays": [ "localhost:6000" ] }


$ ark2 send --to <offchain_address> --amount 2100


Both balances should reflect the payment:

$ ark balance { "offchain_balance": 12100, "onchain_balance": 0 }


$ ark2 balance { "offchain_balance": 7900, "onchain_balance": 0 }


### Exiting

User `ark` can leave the ark collaboratively (i.e. ASP needs to collaborate):

$ ark redeem --address <onchain_address> --amount 12100


In the case of the ASP is not responding, you can leave the ark unilaterally (`--amount` is not necessary since `--force` will redeem all funds):

$ ark redeem --address <onchain_address> --force


### Help

You can see all available commands with `help`:

$ ark help