Bitcoin Implementation in Scala
Go to file
Nadav Kohen 48f775182b PSBT Support (#1031)
* PSBT Serialization/Deserialization (#917)

* PSBT Serialization and Deserialization

* Remove debug code

* Create PSBTParseResult, Add more psbt test cases, and various small nits

* PSBT version checking

* Remove PSBTHelper, give PSBTRecord and PSBTMap a fromBytes

* Fix compile issue, preserve ADT

* PSBT Combiner

* PSBT Updater

* Fix PSBT version number to be read as little endian

* Make function names more clear, add scaladoc, require not finalized

* Combiner scaladocs

* Test case from BIP

* Make compatible with older versions

* PSBT: Fix for EmptyWitness changes (#968)

* PSBTInputMap to UTXOSigningInfo

* Remove vars

* Add missing param

* Fix byteVectorOrdering for when x == y

* getUTXOSpendingInfo Tests

* Fix formatting errors

* Give conditional path default value

* formatting fix

* Fixed InputPSBTRecord.FinalizedScriptSig using asmBytes (#1004)

* Fixed PSBTTest after rebasing onto master

* PSBT Constructors and Extraction (#997)

* Added PSBT constructors

* Revived option to use signers in toUTXOSpendingInfo

* Added transaction extraction

* Responded to code review

* Added extraction test from BIP

* Added validation (option) to PSBT extraction

* Added property based test for PSBT.extractTransactionAndValidate

* Marked PSBT as new code for PropertyCheckConfiguration

* PSBT Finalizer (#1002)

* Added finalizing functionality to PSBTs

* Cleaned things up

* Added finalizer test, fails

* Check that PSBT is not already finalized when finalizing PSBT

* Added P2PKWithTimeout cases

* Formatting fix

* PSBT Generators (#1019)

* Introduced non-finalized constructor

* Added property based test comparing finalized and un-finalized construction, it currently fails due to EmptyScriptPubKey not being supported in various ways. Also fixed a ton of bugs!

* Fixed easy bugs relating to EmptyScriptPubKey, one is left

* Fixed the last bugs (multisig order and 0-of-n stuff) and now tests pass!

* Separated out direct finalized PSBT construction from non-finalized PSBT construction

* Translated construction work in tests into PSBT generators

* Added serialization symmetry test

* Made PSBT fee generation dependent on other generators to ensure low enough fees for signing

* Responded to code review

* Added scaladocs

* Fixed arbitraryPSBT to work with older scala versions

* Fixed PSBT compilation breakages from rebase

* Fixed test breakages from rebase

* Validate the PSBT unknown is not a known field

* Increase code coverage on PSBT tests

* Address review

* formatting

* Add error messages, rename function

* Psbt Signer (#1025)

* PSBT Signer

* Create addSignature function for PSBTs

* Use PartialSignature instead of Tuple

* Create extra util functions

* scaladoc and simplify case

* Formatting fix for psbt scaladocs

* Clean up code, add error messages, and scaladoc

* add type hints

* Change InputPSBTMap.fromUTXOSpendingInfo to use BitcoinSingleSigner

* optimize import

* Define separator byte for psbt map

* getRecords simplification

* remove braces, add error message

* PSBT stuff assigned to nkohen (#1035)

* Responded to psbt review assigned to me

* Moved separatorByte to a place where all can use it

* PSBT independent record calls (#1037)

* PSBT independent record calls

* move logic to super class

Co-authored-by: Nadav Kohen <nadavk25@gmail.com>

* Reworked PSBT finalization to return a Try[PSBT] rather than an Option[PSBT] (#1036)

* PSBT signer property based tests (#1038)

* PSBT property based tests

* Address review

* PSBT Combiner property based tests (#1039)

* PSBT Combiner property based tests

* Create pruneGlobal util function

* Switch to arbitrary gen

* Use BaseTransaction instead of Transaction

* Fix transaction witness to work from base transactions

* PSBTs response to Chris's review (#1046)

* PSBT chris's review

* Rename val, give master fingerprint a val

* Formatting fix

* Responded to code review from chris assigned to nkohen

* Split PSBT.scala into many files

* PSBT Docs (#1048)

* PSBT docs

* Fix compiler error, remove nesting

* PSBT output updater tests

* Validate psbt outputs

* Clean up code

* Remove P2WPKHWitnessV0 addition

* format

* PSBT Updater property based tests

* Move code to match block

* EmptyScriptWitness check

* Address nadav review

* Remove unnecessary code, make utxo adder better

* Move require and add error message

* Move require

* PSBT unit tests by Ben

* Change to EmptyScriptPubKey

* Added unit tests to increase code coverage

* responded to review

* Move PSBT unit test to separate file

* Make unknown generator only generate distinct records

* Use groupBy key instead of distinct

* use only first element

* Combine distinctness by key

Co-authored-by: Ben Carman <benthecarman@live.com>
2020-01-23 11:36:42 -07:00
.github/ISSUE_TEMPLATE Update bug report template 2019-06-20 17:26:02 +02:00
app 2020 1 11 accounts (#1022) 2020-01-21 14:20:58 -06:00
bench fix build errors 2020-01-21 10:15:39 -08:00
bitcoin-s-docs Bump scalac version to 2.13.1 (#747) 2019-12-12 09:00:15 -06:00
bitcoind-rpc Bump binary download timeout for bitcoind (#980) 2019-12-21 17:52:33 -06:00
bitcoind-rpc-test Bitcoind v19 RPC (#910) 2019-12-04 07:44:44 -06:00
chain Txo state flyway (#1052) 2020-01-22 15:34:36 -06:00
chain-test/src/test Move rescan logic from node to wallet (#974) 2019-12-23 08:57:55 -08:00
core PSBT Support (#1031) 2020-01-23 11:36:42 -07:00
core-test PSBT Support (#1031) 2020-01-23 11:36:42 -07:00
db-commons Txo state flyway (#1052) 2020-01-22 15:34:36 -06:00
db-commons-test/src/test/scala/org/bitcoins/db Txo state flyway (#1052) 2020-01-22 15:34:36 -06:00
docs PSBT Support (#1031) 2020-01-23 11:36:42 -07:00
eclair-rpc some more changes 2020-01-14 13:53:12 -08:00
eclair-rpc-test fix build errors 2020-01-21 10:15:39 -08:00
key-manager Implement abililty to use BIP39 password. This means this password ne… (#990) 2020-01-03 11:03:45 -06:00
key-manager-test/src/test/scala/org/bitcoins/keymanager Implement abililty to use BIP39 password. This means this password ne… (#990) 2020-01-03 11:03:45 -06:00
node Txo state flyway (#1052) 2020-01-22 15:34:36 -06:00
node-test/src/test/scala/org/bitcoins/node Automated wallet recovery (#985) 2020-01-02 13:18:41 -06:00
project Txo state flyway (#1052) 2020-01-22 15:34:36 -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 Refactor sbt and make Eclair tests download bitcoind (#727) 2019-08-30 15:11:52 -05:00
testkit PSBT Support (#1031) 2020-01-23 11:36:42 -07:00
wallet Txo state flyway (#1052) 2020-01-22 15:34:36 -06:00
wallet-test/src/test 2020 1 11 accounts (#1022) 2020-01-21 14:20:58 -06:00
website Move initialization of wallet entropy into the key manager (#966) 2019-12-26 19:12:08 -06:00
zmq 2019 09 05 scalafmt update (#735) 2019-09-05 20:02:58 -05:00
.dockerignore WIP: Docusaurus website (#465) 2019-05-14 18:05:14 -05:00
.gitignore 2019 11 30 key manager (#904) 2019-12-04 07:43:29 -06:00
.gitmodules Adding specific commit for secp256k1 2018-04-25 16:44:48 -05:00
.scalafmt.conf Revert "Update scalafmt-core to 2.2.1 (#833)" (#839) 2019-10-27 17:21:15 -05:00
build.sbt Add build config to skip publishing the new db-commons-test library (#1057) 2020-01-23 07:00:30 -06:00
CONTRIBUTING.md WIP: Docusaurus website (#465) 2019-05-14 18:05:14 -05:00
docker-compose.yml Docs: removes blog from website 2019-06-11 12:59:58 +02:00
Dockerfile WIP: Docusaurus website (#465) 2019-05-14 18:05:14 -05:00
inThisBuild.sbt Bump scalac version to 2.13.1 (#747) 2019-12-12 09:00:15 -06:00
LICENSE updating license 2018-01-17 17:15:18 -06:00
README.md Add version 0.2.0 of the website (#948) 2019-12-16 05:57:14 -06:00
try-bitcoin-s.sh Doc: Add stable and unstable version, try bitcoin-s script 2019-05-31 17:14:15 +02:00

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