Bitcoin Implementation in Scala
Find a file
Chris Stewart 9dfbc9ed24
version 0.0.3 (#290)
* version 0.0.3

* Fix cross compile issues so we can now compile and publish a dependency for the scala 2.11 series

scalafmt

* bump versions on readme, try to fix scoverage crossversion issue

* Downgrade scoverage to try and get it to work with ci

* Tinker with scoverage versions

* Add suggestion from scoverage people to exclude secp256k1jni from build coverage
2019-01-10 09:07:18 -06:00
bench version 0.0.3 (#290) 2019-01-10 09:07:18 -06:00
core Scaladoc formatting (#295) 2019-01-10 08:54:57 -06:00
core-test Add secp256k1jni readme, start working main project readme, move old readme to core/README.md (#276) 2019-01-08 09:29:06 -06:00
doc Add secp256k1jni readme, start working main project readme, move old readme to core/README.md (#276) 2019-01-08 09:29:06 -06:00
eclair-rpc Add secp256k1jni readme, start working main project readme, move old readme to core/README.md (#276) 2019-01-08 09:29:06 -06:00
project version 0.0.3 (#290) 2019-01-10 09:07:18 -06:00
rpc version 0.0.3 (#290) 2019-01-10 09:07:18 -06:00
secp256k1@2e16ac7d6c Changing TxSigComponent to take a TransactionOutput instead of a ScriptPubKey, refactoring ScriptProgram into 3 companion objects PreExecutionScriptProgram, ExecutionInProgressScriptProgram, ExecutedScriptProgram 2018-05-19 09:25:32 -05:00
secp256k1jni version 0.0.3 (#290) 2019-01-10 09:07:18 -06:00
testkit version 0.0.3 (#290) 2019-01-10 09:07:18 -06:00
zmq Added scalafmt and ran it (#264) 2018-12-09 14:43:31 -05:00
.gitignore Adding secp256k1 project, modifying .travis.yml file to try and build secp256k1 2017-02-21 09:09:53 -06:00
.gitmodules Adding specific commit for secp256k1 2018-04-25 16:44:48 -05:00
.scalafmt.conf Added scalafmt and ran it (#264) 2018-12-09 14:43:31 -05:00
.travis.yml Compile and publish locally before tests (#282) 2019-01-05 08:31:40 -06:00
build.sbt version 0.0.3 (#290) 2019-01-10 09:07:18 -06:00
BUILD_README.md Updating BUILD_README.md, modifying travis.yml to not require sudo for libsecp256k1 2017-02-23 09:43:14 -06:00
CONTRIBUTING.md Compile and publish locally before tests (#282) 2019-01-05 08:31:40 -06:00
inThisBuild.sbt version 0.0.3 (#290) 2019-01-10 09:07:18 -06:00
LICENSE updating license 2018-01-17 17:15:18 -06:00
README.md version 0.0.3 (#290) 2019-01-10 09:07:18 -06:00
version.sbt version 0.0.3 (#290) 2019-01-10 09:07:18 -06:00

Build Status Coverage Status IRC NetworkGitter chat

Bitcoin-S

Design Principles

  • Immutable data structures everywhere
  • Algebraic Data Types to allow the compiler to check for exhaustiveness on match statements
  • Using property based testing to test robustness of code
  • Minimize dependencies to reduce attack surface

Projects

  1. core - this is where protocol data structures live, like Transactions, Blocks, or PrivateKeys. For more info read core/README.md

  2. core-test - this is where all test cases for the core project live

  3. rpc - this is a RPC client implementation for bitcoind. For more info read rpc/README.md

  4. eclair-rpc - this is a RPC client implementation for Eclair, which is a Lightning Network implementation. For more information please read eclair-rpc/README.md

  5. bench - benchmarks for Bitcoin-S. For more information please read bench/README.md

  6. testkit - This is a useful testkit for testing Bitcoin related applications. You can spin up Bitcoin and Lightning nodes arbitrarily and set them in specific states. For more information please read testkit/README.md

  7. zmq - bitcoind has a setting that publishes information about the state of the network over ZMQ. This project implements a subscriber that allows you to read and parse that information. For more information see zmq/README.md as well as the official Bitcoin Core ZMQ documentation

Artifacts

You need to add the Bitcoin-S Bintray to your resolvers to be able to access published artifacts.

With sbt, this can be done like this:

resolvers += Resolver.bintrayRepo("bitcoin-s", "bitcoin-s-core"),

Now you should be able to add Bitcoin-S artifacts like this:


"org.bitcoins" % "bitcoin-s-secp256k1jni" % "0.0.3"

"org.bitcoins" %% "bitcoin-s-core" % "0.0.3" withSources() withJavadoc()

"org.bitcoins" %% "bitcoin-s-bitcoind-rpc" % "0.0.3" withSources() withJavadoc()

"org.bitcoins" %% "bitcoin-s-eclair-rpc" % "0.0.3" withSources() withJavadoc()

"org.bitcoins" %% "bitcoin-s-testkit" % "0.0.3" withSources() withJavadoc()

"org.bitcoins" %% "bitcoin-s-zmq" % "0.0.3" withSources() withJavadoc()