A preview of the integration between Bitcoin and the Internet Computer.

Overview

Bitcoin Integration Developer Preview

Overview

The integration between the Internet Computer and Bitcoin will enable developers to build canisters that:

  1. Securely own Bitcoin.

    Canisters will be able to have the Internet Computer securely create ECDSA keys for them via a threshold ECDSA protocol so that they can own Bitcoin.

  2. Interact with the Bitcoin network.

    Canisters will be able to send transactions, get transaction outputs, as well as get the balance of any Bitcoin address. The aforementioned threshold ECDSA protocol is used to securely sign transactions.

Differences to Main Release

The developer preview enables developers to work with the Bitcoin integration features before the proper launch.

In the developer preview, all components run locally, i.e., no Bitcoin functionality is deployed on mainnet. The Bitcoin canister is configured to interact with a local Bitcoin network in regtest mode.

By contrast, there will be two Bitcoin virtual canisters on mainnet, similar to the management canister. Application canisters can interact with these virtual canisters using a canister address; however, all Bitcoin functionality is effectively part of the replica and does not run inside canisters.

Note
We refer to these virtual canisters simply as "Bitcoin canisters" for brevity.

The two Bitcoin (virtual) canisters differ only in that they connect to different Bitcoin networks:

  • The Bitcoin canister that interacts with the Bitcoin mainnet has the canister address TBD.

  • The Bitcoin canister that interacts with the Bitcoin testnet has the canister address TBD.

The exposed API is intended to be the API of the mainnet release, but may potentially be modified based on community feedback.

Components

The developer preview consists of the following components:

  1. The Bitcoin Canister

    The Bitcoin canister provides the API that developers can use to interact with the Bitcoin networks.

    See the ./canister directory for more details.

  2. An Example Project

    The project showcases how developers can achieve the following:

    1. Get the balance of a Bitcoin address.

    2. Get transaction outputs and use them to build a transaction.

    3. Sign a transaction and send it to the Bitcoin network.

    See the ./example directory for more details.

Note
The developer preview focuses strictly on the interaction with the Bitcoin network. Securely generating ECDSA keys is beyond the scope of the developer preview.

Getting Started

With the developer preview you’ll be able to setup a local Bitcoin network and interact with that network using canisters.

There are two ways to set up:

Manual Setup

Prerequisites

  • Rust

  • dfx >= 0.8.4

  • Bitcoin Core. Mac users are recommended to download the .tar.gz version.

  • Mac users need to install homebrew and then use it to install additional packages by running brew install llvm binaryen cmake

Note
These instructions assume you’re running Linux or MacOS. We do not officially support Windows.

The first step would be to setup a local Bitcoin network.

Setting up a local Bitcoin network

  1. Unpack the .tar.gz file.

  2. Create a directory named data inside the unpacked folder.

  3. Create a file called bitcoin.conf at the root of the unpacked folder and add the following contents:

    # Enable regtest mode. This is required to setup a private bitcoin network.
    regtest=1
    
    # Dummy credentials that are required by `bitcoin-cli`.
    rpcuser=btc-dev-preview
    rpcpassword=Wjh4u6SAjT4UMJKxPmoZ0AN2r9qbE-ksXQ5I2_-Hm4w=
    rpcauth=btc-dev-preview:8555f1162d473af8e1f744aa056fd728$afaf9cb17b8cf0e8e65994d1195e4b3a4348963b08897b4084d210e5ee588bcb
  4. Run bitcoind to start the bitcoin client using the following command:

    ./bin/bitcoind -conf=$(pwd)/bitcoin.conf -datadir=$(pwd)/data

  5. Create a wallet: ./bin/bitcoin-cli -conf=$(pwd)/bitcoin.conf createwallet mywallet

    If everything is setup correctly, you should see the following output:

    {
      "name": "mywallet",
      "warning": ""
    }
  6. Generate a bitcoin address and save it in variable for later reuse:

    export BTC_ADDRESS=$(./bin/bitcoin-cli -conf=$(pwd)/bitcoin.conf getnewaddress)

    This will generate a bitcoin address for your wallet to receive funds.

  7. Mine blocks to receive some Bitcoin as a reward.

    ./bin/bitcoin-cli -conf=$(pwd)/bitcoin.conf generatetoaddress 101 $BTC_ADDRESS

    You should see an output that looks similar to, but not exactly like, the following:

    [
      "1625281b2595b77276903868a0fe2fc31cb0c624e9bdc269e74a3f319ceb48de",
      "1cc5ba7e86fc313333c5448af6c7af44ff249eca3c8b681edc3c275efd3a2d38",
      "1d3c85b674497ba08a48d1b955bee5b4dc4505ffe4e9f49b428153e02e3e0764",
      ...
      "0dfd066985dc001ccc1fe6d7bfa53b7ad4944285dc173615792653bbd52151f1",
      "65975f1cd5809164f73b0702cf326204d8fee8b9669bc6bd510cb221cf09db5c",
    ]

Running the IC-Bitcoin Adapter

Now that bitcoin is setup locally, it is time to run the IC-Bitcoin adapter.

The IC-Bitcoin adapter is a process that fetches headers and blocks from the Bitcoin network and passes them into the Internet Computer. The ic-bitcoin adapter will be integrated into the replica with the main release. For the developer preview, it needs to be launched separately.

Run the following commands to download, build, and run the adapter.

# clone the ic repository and checkout a specific commit.
git clone https://github.com/dfinity/ic.git
cd ic
git checkout 99116f8e872b8765aa609f91eb8c9394914c483d

# Move into the rs directory and run the adapter.
cd rs
cargo run --bin ic-btc-adapter -- ./bitcoin/adapter/tests/sample/regtest.config.json

Deploying the Bitcoin Canister

With bitcoind and the adapter running, we can now run a local replica with the Bitcoin canister.

  1. Clone this repository.

  2. From the root directory of the repository, start the local replica.

    dfx start --clean --background
  3. Deploy the Bitcoin canister to the local replica in regtest mode.

    dfx deploy btc --no-wallet

Running the Adapter Shim

The shim is the final piece that needs to be started up.

From this repository, run the following command:

cargo run --features="tokio candid ic-agent garcon tonic tonic-build" --bin adapter-shim $(dfx canister --no-wallet id btc)

The shim will start syncing blocks from your local bitcoin setup into the bitcoin canister. Once that’s complete, you’ll be able to query the bitcoin canister about the bitcoin state. See Using the Bitcoin Canister for more details and checkout the example project.

Docker Setup

Prerequisites

Instead of downloading bitcoin and cloning the ic repository, this repository offers an alternate solution using Docker and docker-compose.

Setting up a local Bitcoin network and the IC-Bitcoin Adapter

  1. docker-compose up -d will start bitcoind in the background and begin building a fresh image for the IC-Bitcoin adapter.

  2. Verify that bitcoind is running: docker-compose exec bitcoind bitcoin-cli -conf=/conf/bitcoin.conf getmininginfo

    If everything is setup correctly, you should see the following output:

    {
      "blocks": 0,
      "difficulty": 4.656542373906925e-10,
      "networkhashps": 0,
      "pooledtx": 0,
      "chain": "regtest",
      "warnings": ""
    }
  3. Create a wallet: docker-compose exec bitcoind bitcoin-cli -conf=/conf/bitcoin.conf createwallet mywallet

    If everything is setup correctly, you should see the following output:

    {
      "name": "mywallet",
      "warning": ""
    }
  4. Generate a bitcoin address and save it in variable for later reuse:

    export BTC_ADDRESS=$(docker-compose exec bitcoind bitcoin-cli -conf=/conf/bitcoin.conf getnewaddress | tr -d '\r')

    This will generate a bitcoin address for your wallet to receive funds.

  5. Mine blocks to receive some Bitcoin as a reward.

    docker-compose exec bitcoind bitcoin-cli -conf=/conf/bitcoin.conf generatetoaddress 101 $BTC_ADDRESS

    You should see an output that looks similar to, but not exactly like, the following:

    [
      "1625281b2595b77276903868a0fe2fc31cb0c624e9bdc269e74a3f319ceb48de",
      "1cc5ba7e86fc313333c5448af6c7af44ff249eca3c8b681edc3c275efd3a2d38",
      "1d3c85b674497ba08a48d1b955bee5b4dc4505ffe4e9f49b428153e02e3e0764",
      ...
      "0dfd066985dc001ccc1fe6d7bfa53b7ad4944285dc173615792653bbd52151f1",
      "65975f1cd5809164f73b0702cf326204d8fee8b9669bc6bd510cb221cf09db5c",
    ]
  6. Verify the adapter is running: docker-compose logs adapter

    You should an output that looks similar to the following:

adapter_1   | Feb 02 01:01:56.512 INFO Connected to 172.29.0.2:18444
adapter_1   | Feb 02 01:01:57.022 INFO Received version from 172.29.0.2:18444
adapter_1   | Feb 02 01:01:57.022 INFO Completed the version handshake with 172.29.0.2:18444
adapter_1   | Feb 02 01:01:57.022 INFO Adding peer_info with addr : 172.29.0.2:18444
adapter_1   | Feb 02 01:01:57.223 INFO Received verack from 172.29.0.2:18444

Continue with the Getting Started directions from Deploying the Bitcoin Canister to complete setup.

Viewing bitcoind and IC-Bitcoin Adapter output

  • To view the logs of the bitcoind container: docker-compose logs -f bitcoind

  • To view the logs of the adapter container: docker-compose logs -f adapter

Using the Bitcoin Canister

There’s an example project in the ./example directory that showcases how to interact with the Bitcoin canister. Additionally, you can call the Bitcoin canister directly using dfx. Examples:

Fetching the balance/UTXOs of an address

dfx canister --no-wallet call btc get_balance "(record { address = \"$BTC_ADDRESS\"})"
dfx canister --no-wallet call btc get_utxos "(record { address = \"$BTC_ADDRESS\"})"

Fetching the balance/UTXOs of an address with a minimum of 6 confirmations

dfx canister --no-wallet call btc get_balance "(record { address = \"$BTC_ADDRESS\"; min_confirmations = opt 6})"
dfx canister --no-wallet call btc get_utxos "(record { address = \"$BTC_ADDRESS\"; min_confirmations = opt 6})"
Comments
  • Bump regex from 1.5.4 to 1.5.5 in /examples/rust

    Bump regex from 1.5.4 to 1.5.5 in /examples/rust

    Bumps regex from 1.5.4 to 1.5.5.

    Changelog

    Sourced from regex's changelog.

    1.5.5 (2022-03-08)

    This releases fixes a security bug in the regex compiler. This bug permits a vector for a denial-of-service attack in cases where the regex being compiled is untrusted. There are no known problems where the regex is itself trusted, including in cases of untrusted haystacks.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    external_contributor dependencies 
    opened by dependabot[bot] 3
  • Bump regex from 1.5.4 to 1.5.5 in /types

    Bump regex from 1.5.4 to 1.5.5 in /types

    Bumps regex from 1.5.4 to 1.5.5.

    Changelog

    Sourced from regex's changelog.

    1.5.5 (2022-03-08)

    This releases fixes a security bug in the regex compiler. This bug permits a vector for a denial-of-service attack in cases where the regex being compiled is untrusted. There are no known problems where the regex is itself trusted, including in cases of untrusted haystacks.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    external_contributor dependencies 
    opened by dependabot[bot] 3
  • Bump regex from 1.5.4 to 1.5.5 in /examples/common

    Bump regex from 1.5.4 to 1.5.5 in /examples/common

    Bumps regex from 1.5.4 to 1.5.5.

    Changelog

    Sourced from regex's changelog.

    1.5.5 (2022-03-08)

    This releases fixes a security bug in the regex compiler. This bug permits a vector for a denial-of-service attack in cases where the regex being compiled is untrusted. There are no known problems where the regex is itself trusted, including in cases of untrusted haystacks.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    external_contributor dependencies 
    opened by dependabot[bot] 3
  • Bump regex from 1.5.4 to 1.5.6

    Bump regex from 1.5.4 to 1.5.6

    Bumps regex from 1.5.4 to 1.5.6.

    Changelog

    Sourced from regex's changelog.

    1.5.6 (2022-05-20)

    This release includes a few bug fixes, including a bug that produced incorrect matches when a non-greedy ? operator was used.

    1.5.5 (2022-03-08)

    This releases fixes a security bug in the regex compiler. This bug permits a vector for a denial-of-service attack in cases where the regex being compiled is untrusted. There are no known problems where the regex is itself trusted, including in cases of untrusted haystacks.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    external_contributor dependencies 
    opened by dependabot[bot] 2
  • ER-2382 Build a library prototype based on the developer preview sample application ER-2390 Add support for replace-by-fee

    ER-2382 Build a library prototype based on the developer preview sample application ER-2390 Add support for replace-by-fee

    ER-2382: Build a library prototype based on the developer preview sample application

    The Rust example application of the Bitcoin developer preview shows how the Bitcoin canister API can be used to query Bitcoin-related information from a canister and send Bitcoin.

    This PR takes a first step towards a library by

    • Setting up a repository for the Bitcoin Rust library (ic/rs/bitcoin/library/)
    • Moving functionality that should be part of the library from the sample project into the library

    ER-2390: Add support for replace-by-fee

    It is permissible to increase the fee of a previously sent transaction as defined in BIP-125.

    This PR uses the replace-by-fee feature from the library.

    This PR is linked to the associated MR for the bitcoin-library.

    Note: Nightly rust is required because the Bitcoin library does.

    external_contributor 
    opened by BenjaminLoison 1
  • Fixed documentation: The management canister is used on mainnet

    Fixed documentation: The management canister is used on mainnet

    The documentation still stated that the Bitcoin API is offered through two virtual canisters on mainnet.

    This PR updates the documentation, stating that the Bitcoin API is exposed through the management canister.

    opened by THLO 0
  • solve can't find clang when compiled the rust canister in mac

    solve can't find clang when compiled the rust canister in mac

    env: mac

    run dfx deploy btc --no-wallet there is a error:

      --- stderr
    
    
      error occurred: Failed to find tool. Is `clang` installed?
    
    
    warning: build failed, waiting for other jobs to finish...
    error: build failed
    

    the problem is here:

      AR="/usr/local/opt/llvm/bin/llvm-ar" CC="/usr/local/opt/llvm/bin/clang" cargo build --bin canister --target $TARGET --release
    

    the path of AR and CC is not correct for my system:

    $ which clang
    /opt/homebrew/opt/llvm/bin/clang
    

    fix: change this line to:

      AR="/opt/homebrew/opt/llvm/bin/llvm-ar" CC="/opt/homebrew/opt/llvm/bin/clang" cargo build --bin canister --target $TARGET --release
    
    opened by flyq 0
  • solve this problem:

    solve this problem: "bitcoind" cannot be opened because the developer cannot be verified.

    Env: Mac

    if you download the bitcoin's tar.gz from Bitcoin Core, and first run the executable files(etc.bitcoin-wallet), there will be a problom: image

    Click the Cancel and go to System Preferences > Security & Privacy image Click the allow anyway.

    and run the executable file again.

    opened by flyq 0
  • Motoko Canister Error Handling Improvements

    Motoko Canister Error Handling Improvements

    This PR adds error responses for the common canister used by the Motoko example project.

    It adds the following errors to the SendError type:

    #MalformedSourceAddress;
    #MalformedDestinationAddress;
    #MalformedTransaction;
    #InvalidPrivateKeyWif;
    

    All expects have been replaced with a designated variant arm.

    opened by dfinity-ryancroote 0
  • Errors building btc canister on apple silicon

    Errors building btc canister on apple silicon

    Shared my WIP debugging steps in the discord #s-help channel. https://discord.com/channels/748416164832608337/953588280568479756/974699586251817050

    Issue

    I'm encountering errors when attempting to build the btc canister on a mac m1 laptop. I've followed the setup docs and encountered typical brew issues related to apple silicon. After resolving the whole brew issue, my latest one involves the lib wabt-sys. If you know how to get past, duly appreciate the help.

    error: failed to add native library /var/folders/33/dxhswk150sx1sblqvj718r700000gn/T/cargo-installjCLJKE/release/build/wabt-sys-db34d7fdf57f8cf5/out/build/libwabt.a: file too small to be an archive
    
    error: could not compile `wabt-sys` due to previous error
    warning: build failed, waiting for other jobs to finish...
    error: failed to compile `ic-cdk-optimizer v0.3.1`, intermediate artifacts can be found at `/var/folders/33/dxhswk150sx1sblqvj718r700000gn/T/cargo-installjCLJKE`
    

    https://github.com/pepyakin/wabt-rs/issues/78 Seems to be a common problem.

    Request

    Can anyone on your team test this repo with an mac m1 machine?

    opened by dangdennis 3
Owner
DFINITY
The Internet Computer aims to reinvent the internet as a computer to host secure software and a new breed of open internet services.
DFINITY
A demo of the Internet Computer's Bitcoin API

Bitcoin Integration Demo A demo of the bitcoin endpoints on the Internet Computer. This demo is already deployed to the IC, so you can already try it

Islam El-Ashi 8 Jul 2, 2022
Terabethia - A Bridge and Messaging Protocol between Ethereum and the Internet Computer.

Terabethia - A Bridge Between Ethereum & the Internet Computer Terabethia is a bridge between Ethereum & the Internet Computer that contracts in both

Psychedelic 36 Dec 26, 2022
Source project for the Internet Computer software

The Internet Computer is the world’s first blockchain that runs at web speed and can increase its capacity without bound. Like the Internet (which is composed of many machines adhering to TCP/IP protocol) and blockchain protocols (such as Bitcoin and Ethereum).

DFINITY 1.2k Jan 1, 2023
DIP721 - An Internet Computer Non-fungible Token Standard

DIP721 - Introduction DIP721 is an ERC-721 style non-fungible token standard built mirroring its Ethereum counterpart and adapting it to the Internet

Psychedelic 48 Nov 24, 2022
Rust library for build smart contracts on Internet Computer, by the Spinner.Cash team.

Spinner Rust library for building smart contracts on the Internet Computer. More specifically it is used by Spinner.Cash, a decentralized layer-2 prot

Spinner 6 May 31, 2022
Simple PoC to issue JSON Web Tokens (JWTs) with a canister on the Internet Computer.

JWT Issuer Proof of Concept Overview Simple PoC to issue JSON Web Tokens (JWTs) with a canister on the Internet Computer. It allows the issuance of tw

Dominic Wörner 7 Oct 13, 2022
Bitcoin Push Notification Service (BPNS) allows you to receive notifications of Bitcoin transactions of your non-custodial wallets on a provider of your choice, all while respecting your privacy

Bitcoin Push Notification Service (BPNS) Description Bitcoin Push Notification Service (BPNS) allows you to receive notifications of Bitcoin transacti

BPNS 1 May 2, 2022
Minimal Bitcoin wallet intended for teaching rust-bitcoin

Insanely minimal Bitcoin wallet intended for demonstration of Rust Bitcoin ecosystem Absolutely DO NOT use with mainnet funds!!! No privacy - address

Martin Habovštiak 4 May 5, 2023
Modern, lightweight & standard-compliant bitcoin wallet runtime & cli without rust-bitcoin dependencies

Bitcoin protocol command-line wallet & tools Modern, minimalistic & standard-compliant cold wallet from LNP/BP Standards Association. Contributing Con

BP: Bitcoin protocol 3 Jul 31, 2023
All the data an IC app needs to make seamless experiences, accessible directly on the IC. DAB is an open internet service for NFT, Token, Canister, and Dapp registries.

DAB ?? Overview An Internet Computer open internet service for data. All the data an IC app needs to make a seamless experience, accessible directly o

Psychedelic 58 Oct 6, 2022
Zcash - Internet Money

Zcash 4.3.0 What is Zcash? Zcash is an implementation of the "Zerocash" protocol. Based on Bitcoin's code, Zcash intends to offer a far higher standar

Zcash 4.7k Jan 4, 2023
Library with support for de/serialization, parsing and executing on data-structures and network messages related to Bitcoin

Rust Bitcoin Library with support for de/serialization, parsing and executing on data-structures and network messages related to Bitcoin. Heads up for

Rust Bitcoin Community 1.3k Dec 29, 2022
EXPERIMENTAL: Bitcoin Core Prometheus exporter based on User-Space, Statically Defined Tracing and eBPF.

bitcoind-observer An experimental Prometheus metric exporter for Bitcoin Core based on Userspace, Statically Defined Tracing and eBPF. This demo is ba

0xB10C 24 Nov 8, 2022
Bitcoin PSBT signer, descriptor exporter and more for offline devices.

KeeChain Description KeeChain is a Bitcoin application to transform your offline computer in an AirGap Signing Device (aka Hardware Wallet). Getting s

Yuki Kishimoto 3 Dec 15, 2022
Making composability with the Zeta DEX a breeze, FuZe provides CPI interfaces and sample implementations for on-chain program integration.

Zeta FuZe ?? Zeta FuZe FuZe is Zeta's cross-program integration ecosystem. This repository contains the Zeta Cross Program Invocation (CPI) interface

Zeta 39 Aug 27, 2022
Automated Solana tool for quick arbitrage, customizable, with real-time data and wallet integration. Trade responsibly.

Solana Arbitrage Trading Tool The Solana Arbitrage Trading Tool is an automated solution crafted to spot and capitalize on arbitrage opportunities wit

null 43 Mar 12, 2024
A Rust library for working with Bitcoin SV

Rust-SV A library to build Bitcoin SV applications in Rust. Documentation Features P2P protocol messages (construction and serialization) Address enco

Brenton Gunning 51 Oct 13, 2022
The Parity Bitcoin client

The Parity Bitcoin client. Gitter Installing from source Installing the snap Running tests Going online Importing bitcoind database Command line inter

Parity Technologies 714 Dec 21, 2022