Code Monkey home page Code Monkey logo

haskoin's Introduction

Haskoin

Build Status

Haskoin is an implementation of the Bitcoin protocol in Haskell. There are currently 3 main packages in Haskoin, namely haskoin-core, haskoin-node and haskoin-wallet.

haskoin-core

haskoin-core is a package implementing the core functionalities of the Bitcoin protocol specifications. The following features are provided:

  • Hashing functions (sha-256, ripemd-160)
  • Base58 encoding
  • BIP32 extended key derivation and parsing (m/1'/2/3)
  • BIP39 mnemonic keys
  • ECDSA cryptographic primitives (using the C library libsecp256k1)
  • Script parsing and evaluation
  • Building and signing of standard transactions (regular, multisig, p2sh)
  • Parsing and manipulation of all Bitcoin protocol types
  • Bloom filters and partial merkle tree library (used in SPV wallets)
  • Comprehensive test suite

A wallet implementation is available in haskoin-wallet which uses both this package and the node implementation in haskoin-node.

haskoin-core hackage documentation

haskoin-node

haskoin-node is essentially an SPV (simple payment verification) server node. It implements the Bitcoin network protocol in Haskell and allows the synchronization of headers and the download of merkle blocks. haskoin-node is not a full node (yet) as it only support SPV verification of headers rather than full block validation. The following features are supported:

  • Implementation of the Bitcoin network protocol
  • Headertree implementation with SPV verification
  • Headers-first synchronization
  • Merkle block download from peers with bloom filters
  • Full block download from peers (without verification)

haskoin-node hackage documentation

haskoin-node dependencies

  • LevelDB

On Debian/Ubuntu, use following command:

sudo apt-get install libleveldb-dev

haskoin-wallet

haskoin-wallet is an SPV (simple payment verification) wallet implementation in Haskell. It features BIP32 hierarchical-deterministic key management, deterministic signatures (RFC-6979) and first order support for multi-signature transactions. You can communicate with the wallet process using JSON serialization over ØMQ socket or the supplied hw tool.

haskoin-wallet hackage documentation

Installing haskoin-wallet

Get pkg-config, LevelDB, Snappy, zlib and ØMQ. On Debian/Ubuntu systems, use these command:

sudo apt-get install git wget libleveldb-dev \
    libzmq3-dev libsnappy-dev pkg-config zlib1g-dev

Get Stack.

Clone this repository, and then install using Stack.

git clone https://github.com/haskoin/haskoin.git
cd haskoin
stack install

Executable hw will be installed in ~/.local/bin.

Contributing

Contribute via GitHub pull requests.

haskoin's People

Contributors

alaudidaelark avatar benma avatar darthdeus avatar lornap avatar np avatar ottoallmendinger avatar pernas avatar plaprade avatar sha49 avatar tphyahoo avatar wraithm avatar

Watchers

 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.