profile picture

@code @crypto @robotics

#bitcoin #ethereum #haskell

A brief history of Ethereum

Ethereum, the second largest cryptocurrency by market cap, was proposed by Vitalik Buterin in 2013. Its intended purpose was to provide a blockchain with a Turing-complete programming language allowing users to extend its functionality by uploading custom code. The code could be used to create digital assets to represent custom currencies and financial instruments, the ownership of an underlying physical device, non-fungible assets such as domain names, as well as more complex applications involving having digital assets being directly controlled by a piece of code implementing arbitrary rules or even blockchain-based decentralized autonomous organizations.

Receiving bitcoins

The goal is to use Haskell to receive satoshis in as simple manner as possible by generate a private key and deriveing from it an address. Using the address we can receive the coins and as long as we keep the key safe we can spend it later using any wallet which supports importing WIF keys.

Bootstrapping Haskell for Bitcoin development

It’s time to get our hands dirty. Let’s begin bootstrapping our Haskell development environment. Before we proceed it’s probably fair to note that it’s very early days for Bitcoin development using Haskell and like users of most languages one should expect the Bitcoin libraries to be changing rapidly.

Bitcoin Wallets

In this blog post I’m going to concentrate on Bitcoin wallets which will be our foundation for a more developer-oriented discussion. Wallets are analogous to web browsers in that they are the main interface for end users to interact with the network. In its simplest form it is a file which contains a collection of private keys. In addition the wallet software usually takes care of communicating with peers, managing the blockchain and keeping records of wallet transactions.