Coder Social home page Coder Social logo

ark-1'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

Build from source ./server and 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.

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-1'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.