Code Monkey home page Code Monkey logo

ark's Introduction

Ark

noah desiging the ark to scale Bitcoin

Welcome to the Ark monorepo.

In this repository you can find:

  • server always-on daemon that serves as the Ark Service Provider (ASP)
  • client single-key wallet as command-line interface (CLI) to interact with the ASP

Refer to the README in each directory for more information about development.

Roadmap

  • Progressive Web App (PWA) as client and Ark wallet.
  • Support Bitcoin with pre-signed transactions
  • Support Ark out-of-round payments
  • Add protected admin RPCs for arkd to manage rounds and treasury
  • Add postgres as database option for arkd

Build and Run with Docker

Run locally with Docker on Liquid Testnet. It uses docker-compose to build the arkd docker image from server and run the it as container, together with the oceand container.

Prerequisites

Setup the Ocean wallet

Start oceand in Liquid Testnet:

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>

Run arkd connected to Ocean

Start the ASP

docker compose up -d arkd

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

Get an address from Ocean to add funds to the ASP:

ocean account derive --account-name ark

Fund the resulting address with Liquid testnet faucet.

Check the balance of the ark account:

ocean account --account-name=ark balance

Ark client

Inside the arkd container is shipped the ark CLI. You can submit payment to the ASP using the ark CLI.

alias ark='docker exec -it arkd ark'
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 --network testnet

Add funds to the ark wallet:

ark receive
{
  "offchain_address": <address starting with "tark1q...">,
  "onchain_address": <address starting with "tex1q...">
}

Fund the onchain_address with https://liquidtestnet.com/faucet.

Onboard the ark:

ark onboard --amount 21000

After confirmation, ark wallet will be funded and ready to spend offchain.

In another tab, setup another ark wallet with:

export ARK_WALLET_DATADIR=./datadir
alias ark2=$(pwd)/build/ark-<os>-<arch>
ark2 init --password <password> --ark-url localhost:6000 --network testnet

Note: ark2 should always run in the second tab.

Make payments

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

ark2 receive
{
  "offchain_address": <address starting with "tark1q...">,
  "onchain_address": <address starting with "tex1q...">,
  "relays": ["localhost:6000"]
}
ark send --to <ark2 offchain address> --amount 2100

Both balances should reflect the payment:

ark balance
{
  "offchain_balance": 18900,
  "onchain_balance": 0
}
  ark2 balance
{
  "offchain_balance": 2100,
  "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 --force

Help

You can see all available commands with help:

ark help

ark's People

Contributors

altafan avatar louisinger avatar tiero avatar bordalix avatar jossec101 avatar justinmoon avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.