Bitcoin Implementation in Scala
Go to file
2019-01-09 13:29:59 -06:00
bench Add secp256k1jni readme, start working main project readme, move old readme to core/README.md (#276) 2019-01-08 09:29:06 -06:00
core fix uncaught exception in ScriptNumber (#293) 2019-01-09 13:29:59 -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 Add secp256k1jni readme, start working main project readme, move old readme to core/README.md (#276) 2019-01-08 09:29:06 -06:00
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
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 Add secp256k1jni readme, start working main project readme, move old readme to core/README.md (#276) 2019-01-08 09:29:06 -06:00
testkit Scaladoc formatting (#292) 2019-01-09 08:57:30 -06:00
zmq/src 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
build.sbt Add secp256k1jni readme, start working main project readme, move old readme to core/README.md (#276) 2019-01-08 09:29:06 -06:00
CONTRIBUTING.md Compile and publish locally before tests (#282) 2019-01-05 08:31:40 -06:00
inThisBuild.sbt Added scalafmt and ran it (#264) 2018-12-09 14:43:31 -05:00
LICENSE updating license 2018-01-17 17:15:18 -06:00
README.md Add secp256k1jni readme, start working main project readme, move old readme to core/README.md (#276) 2019-01-08 09:29:06 -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.1"

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

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

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

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

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