Git Product home page Git Product logo

bitcoincore.swift's Introduction

BitcoinCore.Swift

BitcoinCore.Swift is a core package that implements a full Simplified Payment Verification (SPV) client in Swift. It implements Bitcoin P2P Protocol and can be extended to be a client of other Bitcoin forks like BitcoinCash, Litecoin, etc. Currently, we have extensions BitcoinKit.Swift, BitcoinCashKit.Swift, LitecoinKit.Swift and DashKit.Swift that complement this package with blockchain(fork) specific logic and used by UnstoppableWallet for integration of them.

Being an SPV client, BitcoinCore.Swift downloads and validates all the block headers, inclusion of transactions in the blocks, integrity and immutability of transactions as described in the Bitcoin whitepaper or delegates validation to the extensions that implement the forks of Bitcoin.

Features

  • Bitcoin P2P Protocol implementaion in Swift.
  • Full SPV implementation for fast mobile performance with account security and privacy in mind
  • P2PK, P2PKH, P2SH-P2WPKH, P2WPKH outputs support.
  • Restoring with mnemonic seed. (Generated from private seed phrase)
  • Restoring with BIP32 extended public key. (This becomes a Watch account unable to spend funds)
  • Quick initial restore over node API. (optional)
  • Handling transaction (Replacement)/(Doube spend)/(Failure by expiration)
  • Optimized UTXO selection when spending coins.
  • BIP69 or simple shuffle output ordering. (configurable)
  • BIP21 URI schemes with payment address, amount, label and other parameters

Usage

This package is designed to be used by a concrete kit like BitcoinKit.Swift. See BitcoinKit.Swift for more documentation.

Prerequisites

  • Xcode 10.0+
  • Swift 5+
  • iOS 13+

Swift Package Manager

Swift Package Manager is a dependency manager for Swift projects. You can install BitcoinCore.Swift by adding a line in dependencies value of your Package.swift:

dependencies: [
    .package(url: "https://github.com/horizontalsystems/BitcoinCore.Swift.git", .upToNextMajor(from: "1.0.0"))
]

License

The BitcoinCore.Swift toolkit is open source and available under the terms of the MIT License.

bitcoincore.swift's People

Contributors

ant013 avatar ealymbaev avatar esen avatar esengulov avatar mnizhurin avatar rex4539 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

bitcoincore.swift's Issues

BIP32 is not supported, while documentation states different

Documentation states:

Restoring with [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) extended public key. (This becomes a Watch account unable to spend funds)

While in code - creating HDExtendedKey from bip32 extended key - throws error

Multisig Transaction Support in Bitcoin Core

I'm inquiring about the capability and method for executing transactions from multisignature (multisig) wallets within BitcoinCore.Swift. Specifically, I'm interested in:
Is direct multisig transaction creation supported?
Required commands or API calls for such transactions.
Preliminary setup steps for multisig wallets.
Thanks

Add support of Watch only account

As of now - .bip32 mentioned in BitcoinKit readme for watch only accounts - is skipped in build phase of bitcoinCore.
It is not clear - should it be .bip32, which is not handled (as shown on screenshot), or it is not necessary, thus making readme file for bitcoinKit - outdated.

Screenshot 2023-08-07 at 13 10 04

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.