Library for encoding Bitcoin network protocol messages in Scala.
Latest commit 78f0071 Aug 7, 2015 @yzernik update bintray config
Failed to load latest commit information.
project update bintray config Aug 7, 2015
src update README Jun 26, 2015
.gitignore added ipv6 tests Sep 2, 2014
.travis.yml update travis config Jul 31, 2015
LICENSE Initial commit Aug 30, 2014 update README Jun 26, 2015
build.sbt update bintray config Aug 7, 2015


Build Status Coverage Status

Library for encoding Bitcoin network protocol in Scala using scodec.

How to use

Add the following to your build.sbt:

libraryDependencies += "io.github.yzernik" %% "bitcoin-scodec" % "0.2.7"

with the following resolver

resolvers += "yzernik repo" at ""

Encode a Bitcoin message

create a message codec

scala> import io.github.yzernik.bitcoinscodec.structures.Message

scala> val codec = Message.codec(0xD9B4BEF9L, 60002) // on the main network, using version 60002.

encode a ping message

scala> import io.github.yzernik.bitcoinscodec.messages._

scala> codec.encode(Ping(BigInt(1234)))
res0: scodec.Attempt[scodec.bits.BitVector] = Successful(BitVector(256 bits, 0xf9beb4d970696e67000000000000000008000000433ba813d204000000000000))

decode a pong message

scala> import scodec.bits._

scala> codec.decode(hex"f9beb4d9706f6e67000000000000000040000000433ba813d204000000000000".toBitVector)
res1: scodec.Attempt[scodec.DecodeResult[io.github.yzernik.bitcoinscodec.structures.Message]] = Successful(DecodeResult(Pong(1234),BitVector(empty)))