Bitcoin Implementation in Scala
Go to file
Chris Stewart 1d82ed04a7
2023 06 18 implement tcp connection using akka streams (#5111)
* WIP: Try to move byte streaming/parsing of p2p messages out of P2PClient

* WIP2: Work on killing the actor, replace it with a steram

* Get basic ability to send/receive version message working

* Transition PeerMessageReceiverState to Initializing inside of PeerMessagesender.connect()

* Refactor things out of PeerMessageSender.connect(), add some flow logs

* Get NeutrinoNodeTest be able to sync passing

* Fix some bugs, create ConnectionGraph helper class

* Use killswitch rather than Source.maybe to disconnect peer

* WIP: Debug

* Switch halfClose to false on Tcp.outgoingConnection() to not keep lingering connections

* Delete P2PClientActorTest

* Delete all P2PClient stuff

* Attempt implementing reconnection logic in PeerMessageSender

* remove supervisor

* Empty commit to re-run CI

* Small cleanups

* Implement sendResponseTimeout()

* Restore logback-test.xml

* Add callback to log error message on reconnect

* Increase queueSize/maxConcurrentOffers size
2023-06-24 07:53:44 -05:00
.github
app
app-commons
app-commons-test/src/test/scala/org/bitcoins/commons
async-utils/src/main/scala/org/bitcoins/asyncutil
async-utils-test/src/test/scala/org/bitcoins/asyncutil
bench
bitcoin-s-docs
bitcoind-rpc Upgrade to scalac 2.13.11 (#5097) 2023-06-08 10:27:39 -05:00
bitcoind-rpc-test
chain
chain-test Fix bug where compact filters weren't being processed in order of block height during IBD (#5041) 2023-04-10 16:42:48 -05:00
clightning-rpc
clightning-rpc-test Add generate helper function for bitcoind (#4852) 2022-10-19 14:22:30 -05:00
core 2023 06 18 implement tcp connection using akka streams (#5111) 2023-06-24 07:53:44 -05:00
core-test 2023 06 18 implement tcp connection using akka streams (#5111) 2023-06-24 07:53:44 -05:00
crypto
crypto-test Upgrade to scalac 2.13.11 (#5097) 2023-06-08 10:27:39 -05:00
db-commons Add db mapper for ECDigitalSignature (#5002) 2023-02-25 10:41:28 -06:00
db-commons-test/src/test
dlc-node Network notifications (#4774) 2022-10-09 07:46:13 -05:00
dlc-node-test
dlc-oracle/src/main
dlc-oracle-test/src/test/scala/org/bitcoins/dlc/oracle
dlc-wallet/src/main
dlc-wallet-test
docs Remove chainApi parameter from NeutrinoNode (#5101) 2023-06-13 12:07:04 -05:00
eclair-rpc
eclair-rpc-test Update Eclair RPC to v0.8.0 (#4994) 2023-03-04 09:02:36 -06:00
esplora/src/main/scala/org/bitcoins/esplora
esplora-test/src/test/scala/org/bitcoins/esplora
fee-provider/src/main/scala/org/bitcoins/feeprovider
fee-provider-test/src/test/scala/org/bitcoins/feeprovider
key-manager Implement RescanTerminatedEarly exception to terminate the stream, implement ArgumentSource (#4574) 2022-08-04 14:11:07 -05:00
key-manager-test/src/test/scala/org/bitcoins/keymanager
lnd-rpc Lnd 0.16.0 rpc (#5005) 2023-03-30 14:43:26 -05:00
lnd-rpc-test Add generate helper function for bitcoind (#4852) 2022-10-19 14:22:30 -05:00
lnurl/src/main/scala/org/bitcoins/lnurl
lnurl-test/src/test/scala/org/bitcoins/lnurl
node 2023 06 18 implement tcp connection using akka streams (#5111) 2023-06-24 07:53:44 -05:00
node-test 2023 06 18 implement tcp connection using akka streams (#5111) 2023-06-24 07:53:44 -05:00
oracle-explorer-client/src
project Update scala-collection-compat to 2.11.0 (#5107) 2023-06-16 13:34:54 -05:00
release-notes Add 1.9.7 release notes (#4885) 2022-11-14 10:07:24 -06:00
secp256k1-zkp@9dd53912dc
secp256k1jni Drop support for scalac 2.12.x (#4704) 2022-09-03 10:16:22 -05:00
testkit 2023 06 18 implement tcp connection using akka streams (#5111) 2023-06-24 07:53:44 -05:00
testkit-core
tor Drop support for Tor v2 (#4864) 2022-10-30 16:50:16 -05:00
tor-test/src/test/scala/org/bitcoins/tor
wallet Fix bug where compact filters weren't being processed in order of block height during IBD (#5041) 2023-04-10 16:42:48 -05:00
wallet-test
website
zmq CI fixes (#3597) 2021-08-25 15:07:27 -05:00
.dockerignore WIP: Docusaurus website (#465) 2019-05-14 18:05:14 -05:00
.gitignore Support for Tor Docker (#4223) 2022-03-29 08:10:34 -05:00
.gitmodules
.scalafmt.conf Configure scalafmt to preserve line endings (#4638) 2022-08-21 16:07:48 -05:00
build.sbt Remove legacy GUI, this fixes CI merges to master as we no longer use the deprecated notary tool from apple (#4870) 2022-11-01 15:35:18 -05:00
CONTRIBUTING.md WIP: Docusaurus website (#465) 2019-05-14 18:05:14 -05:00
docker-compose.yml Fix Tor hidden service config (#4689) 2022-09-01 16:54:39 -05:00
Dockerfile WIP: Docusaurus website (#465) 2019-05-14 18:05:14 -05:00
flyway.conf Upgrade dependencies (#4705) 2022-09-05 07:11:23 -05:00
inThisBuild.sbt Upgrade to scalac 2.13.11 (#5097) 2023-06-08 10:27:39 -05:00
LICENSE Update license to latest year (#4525) 2022-07-20 16:36:06 -05:00
README.md
try-bitcoin-s.sh

Bitcoin-S logo Build Status Coverage Status Maven Central Gitter chat

Feature-rich toolkit for making Bitcoin and Lightning applications on the JVM.

For a complete guide on how to get started with Bitcoin-S, see our website at Bitcoin-S.org.

Contents

Running bitcoin-s

Docker

In this repo, you can just run

APP_PASSWORD=topsecret docker-compose up

which will spin up a docker environment that starts syncing the backend and will allow you to visit the web frontend of the wallet at localhost:3002

or you can build and run the electron app natively.

git clone https://github.com/bitcoin-s/bitcoin-s-ts.git
cd bitcoin-s-ts && ./build-wallet-electron.sh

Getting setup (developers)

For a complete guide on how to get setup with bitcoin-s, see our Getting setup.

This link is intended for setting up development of bitcoin-s. If you want to just install bitcoin-s rather than develop, see Getting started above.

Adding bitcoin-s to your library

The latest release of bitcoin-s is 1.9.7, here is how you can use the dependencies in your projects:

libraryDependencies += "org.bitcoin-s" % "bitcoin-s-secp256k1jni" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-core" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-crypto" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-chain" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-dlc-oracle" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-oracle-explorer-client" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-app-commons" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-db-commons" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-fee-provider" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-bitcoind-rpc" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-eclair-rpc" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-lnd-rpc" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-key-manager" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-node" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-dlc-node" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-wallet" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-dlc-wallet" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-testkit-core" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-testkit" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-zmq" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-tor" % "1.9.7"

libraryDependencies += "org.bitcoin-s" %% "bitcoin-s-cli" % "1.9.7"

Docker images

We publish docker images to docker hub on every PR merge and tag on github. You can obtain the images for both the app server and oracle server on these docker hub repos

bitcoin-s docker hub repo

oracle-server docker hub repo

Contributing

Bitcoin-S is an open source project where anyone is welcome to contribute. All contributions are encouraged and appreciated, whether that is code, testing, documentation or something else entirely.

See here for more information.

Good first issues

Here is a list of good first issues that contain bugs which have a relatively limited scope. This is a great place to get started, gain experience, and get familiar with the bitcoin-s contribution process.

License

Bitcoin-s is MIT licensed, as found in the LICENSE file.