Commit Graph

737 Commits

Author SHA1 Message Date
Dr Maxim Orlovsky b5f0e9e144
Fixing serde impl for PSBT inputs 2020-11-06 17:01:34 +01:00
Andrew Poelstra d3210b39fb
Merge pull request #507 from stevenroose/pubkey-write-result
Change PublicKey::write_into to return Result
2020-11-05 19:21:39 +00:00
Andrew Poelstra 35d729d9f0
Merge pull request #478 from sanket1729/psbt_again
Psbt hash preimages (again)
2020-11-05 17:49:58 +00:00
Andrew Poelstra 8295885e8e
Merge pull request #454 from jrawsthorne/improved-bip158-types
Implement new FilterHeader type to differentiate from FilterHash
2020-11-05 16:46:50 +00:00
Jake Rawsthorne 921f64699c `addrv2` and `sendaddrv2` network message 2020-10-26 21:49:06 +00:00
Jake Rawsthorne cf8e290c99 AddrV2 structures 2020-10-26 21:46:10 +00:00
Andrew Poelstra c16053a265
Merge pull request #446 from jrawsthorne/bip339
BIP339: Add wtxidrelay message and WTx inv type
2020-10-26 20:03:36 +00:00
Andrew Poelstra 93df7cbd3e
Merge pull request #291 from kallewoof/2019-07-signet
add signet support
2020-10-26 19:46:10 +00:00
Steven Roose aed4e02e38
Add #![deny(unused_must_use)] to avoid not checking Errs 2020-10-23 21:31:32 +01:00
Steven Roose 9699c622fc
Return Result<(), io::Error> from PublicKey::write_into 2020-10-23 21:31:12 +01:00
Steven Roose 90e1125eff
Remove debug_assert in PublicKey::write_into 2020-10-23 21:28:46 +01:00
Steven Roose 545965d9e3
Change consensus::encode::serialize assert to debug_assert
This is just a sanity check on our own serialization code.
2020-10-23 21:28:17 +01:00
Steven Roose ab9514983b
Add explanation to witness program version assertion 2020-10-23 21:28:16 +01:00
Steven Roose cc095a4ba7
Remove assert in Uint256::from_i64 and return None instead 2020-10-23 21:28:15 +01:00
Steven Roose 5c04a059d5
Change some static assertions to debug_assert 2020-10-23 21:28:13 +01:00
Andrew Poelstra e7980ac8a5
Merge pull request #413 from stevenroose/message-signature
Add MessageSignature type for dealing with signed messages
2020-10-14 16:30:15 +00:00
Steven Roose 3f65fb1aed
Don't support signed messages with p2wpkh addresses 2020-10-14 16:54:58 +02:00
Dr Maxim Orlovsky 8e0b9921ae
No space- and case insensitivity for SigHashType string serialization 2020-10-14 16:46:48 +02:00
Dr Maxim Orlovsky 00c3466363
Serde implementation for PSBT 2020-10-14 16:31:24 +02:00
Dr Maxim Orlovsky a4a7035a94
String and serde de/serialization for SigHashType 2020-10-14 16:31:24 +02:00
sanket1729 57b63d4b52 Add tests for psbt hash serde 2020-10-11 21:51:03 -05:00
sanket1729 48151ef204 Added Hash preimages to psbt
Added hash preimages to psbt as per updated bip174
2020-10-11 21:51:02 -05:00
Steven Roose f7422fb8d1
Add MessageSignature type for dealing with signed messages 2020-10-11 22:44:00 +02:00
Alexis Sellier 210ff9edc7
Derive useful traits on `BlockFilter` 2020-10-11 22:31:32 +02:00
Jake Rawsthorne eeb14c4b08 Implement new FilterHeader type to differentiate from FilterHash 2020-10-10 20:38:10 +01:00
Steven Roose e60bfe2f61
Revert the sighash method signatures
Hash engines don't product I/O errors, so encoding into them
shouldn't produce errors either.
2020-10-09 16:27:38 +02:00
Andrew Poelstra 3618d7a41d
Merge pull request #485 from ipaljak-tbtl/expose-tx-signature-data
Expose serialized data for transaction signatures
2020-10-09 13:24:51 +00:00
Andrew Poelstra fc60a7fc25
Merge pull request #492 from RCasatta/fix_bench_names
fix bench fn names
2020-10-09 13:12:39 +00:00
Riccardo Casatta 9a5291c717 fix bench names 2020-10-08 18:21:30 +02:00
Ivan Paljak e66caab956 Improve error handling, fix forgotten early return 2020-10-08 16:40:30 +02:00
Elichai Turkel eda47c31c9
Remove redundant code / configurations 2020-10-08 17:11:18 +03:00
Elichai Turkel 2d70623356
Remove deprecated Error::description impl 2020-10-08 17:11:18 +03:00
Elichai Turkel 023fae1f65
Add the dyn keyword where appropriate 2020-10-08 17:11:16 +03:00
Elichai Turkel efe1a55819
Use new inclusive range syntax 2020-10-08 17:08:51 +03:00
Elichai Turkel ad0064db14
Remove hex as a dev-dependency 2020-10-08 17:08:48 +03:00
Andrew Poelstra 7c47c9a341
Merge pull request #356 from elichai/2019-12-macros
Simplifying macros
2020-10-08 14:05:23 +00:00
Elichai Turkel 46f4f8cf35
Add benchmarks for tx serialization and size 2020-10-08 16:29:26 +03:00
Elichai Turkel 609b9523b8
Add benchmarks for block serialization 2020-10-08 16:28:17 +03:00
Elichai Turkel fdd6f4f196
Derive macros instead of implementing via macro_rules 2020-10-08 16:17:14 +03:00
Riccardo Casatta 8ac3af68a4
use u128 in map_to_range 2020-10-08 08:57:59 +02:00
Ivan Paljak c21dabb824 Expose serialized data for transaction signatures 2020-10-08 01:21:10 +02:00
Andrew Poelstra 8c82129442
Merge pull request #480 from LNP-BP/feat/keysource
Introducing `bip32::KeySource`: wrapper for `(Fingerprint, DerivationPath)`
2020-10-07 22:23:39 +00:00
Andrew Poelstra 3748e8faf5
Merge pull request #459 from sgeisler/2020-08-extend-derivation-path
Allow easy concatenation of bip32 derivation paths
2020-10-07 21:34:17 +00:00
Steven Roose d92ca87c69
Merge pull request #488 from sgeisler/2020-10-bip32-doc-fix
Bip32 documentation fix
2020-10-07 21:15:14 +02:00
Jake Rawsthorne c7987d8fcd
Add wtxidrelay message and WTx inv type, document PROTOCOL_VERSION 2020-10-07 20:03:15 +01:00
Steven Roose 9c90b39ebd
Add Block::coinbase and Block::bip34_block_height 2020-10-07 18:54:12 +02:00
Steven Roose 29a74a14ab
Move around impls in block module
So that an impl always succeeds the struct type definition.
2020-10-07 18:48:24 +02:00
Sebastian Geisler b8c7bc8dcb Bip32 documentation fix 2020-10-07 16:50:27 +02:00
Karl-Johan Alm a3d9899cb1
add signet support 2020-09-18 16:32:33 +09:00
Dr Maxim Orlovsky c098dfa7f2 BIP32 KeySource refactored to type aliace 2020-09-14 00:37:29 +02:00
Dr Maxim Orlovsky aa67f10162 Introducing `bip32::KeySource`: wrapper for `(Fingerprint, DerivationPath)` 2020-09-13 22:49:52 +02:00
Dr Maxim Orlovsky ff1b4a8dbd WPubkeyHash constructor failing on uncompressed PublicKey 2020-09-11 15:43:05 +02:00
Dr Maxim Orlovsky 1342d73734 Script hash functions with non-allocating serialization 2020-09-11 15:10:57 +02:00
Dr Maxim Orlovsky 8363c76f5c Script hash functions (normal and witness) 2020-09-11 15:10:57 +02:00
Dr Maxim Orlovsky 1d9f531581 Pubkey hash functions (normal and witness) 2020-09-11 15:04:26 +02:00
Andrew Poelstra c94295c3a9
Revert "Added hash Preimages to psbt" 2020-09-11 11:31:10 +00:00
Andrew Poelstra 3f33bd74e4
Merge pull request #465 from sanket1729/psbt_updates
Added hash Preimages to psbt
2020-09-11 11:30:27 +00:00
Andrew Poelstra 49e97cca65
Merge pull request #387 from pandoracore/builder-p2wildcard
Refactoring script generating functions into a single place
2020-09-11 11:29:09 +00:00
sanket1729 c1eafff9ef Added Sighash calculation for psbt 2020-09-11 01:01:33 -05:00
Andrew Poelstra bcf2c5981d
Merge pull request #475 from apoelstra/2020-09--0.24.0
Increase version to 0.24
2020-09-10 19:58:03 +00:00
Andrew Poelstra 440005b16e
Merge pull request #464 from TheBlueMatt/2020-08-pow-clarification
Set Params::pow_limit to an attainable value not a theoretical one
2020-09-10 16:46:40 +00:00
Andrew Poelstra 05f3451b10 un-deperate contracthash during testing
Avoids a rust test runner bug, see https://github.com/rust-lang/rust/issues/47238
2020-09-10 16:40:31 +00:00
Matt Corallo cf45a61070 Set Params::pow_limit to an attainable value not a theoretical one
`cloudhead` on IRC was asking how to properly use
`BlockHeader::validate_pow()` on genesis (or similar) when the
pow_limit field isn't expressible as a compact target (and, thus,
does not actually represent the PoW limit/genesis target). We
swap it for the actual PoW limit by truncating the way a compact
encoding round-trip would.

Note that, in Bitcoin Core, the original value is only ever used
once in its original form:
```
    if (bnNew > bnPowLimit) // Note: bnPowLimit is params.powLimit
        bnNew = bnPowLimit;

    return bnNew.GetCompact();
```
Thus, even if Core adopted our change, as long as there exist no
256-bit integer x which satisfies
`x <= powLimit && x > encoding_roundtrip_truncated(powLimit)` and
`enoding_roundtrip_truncated(x) != powLimit`, the change would have
no impact on consensus.

It is trivial to show that there are no values which are between
the new value
(0x00000000ffff0000000000000000000000000000000000000000000000000000)
and the original value
(0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff)
which can be encoded in compact form, but it is also critically, no
such values will encode to a compact form of anything different than
the new value as the encoding always truncates the low bits, never
rounding up.
2020-09-10 12:03:51 -04:00
Andrew Poelstra 4e737f708a
Merge pull request #461 from TheBlueMatt/2020-08-mut-sighash
Expose the witnesses of the tx being hashed in SigHashCache
2020-09-10 13:04:51 +00:00
Dr Maxim Orlovsky 38a412c4d5 Fixing review comments for script generators refactoring 2020-09-10 14:44:44 +02:00
Dr Maxim Orlovsky e33cdcca14 OP_RETURN script initializer 2020-09-10 12:09:04 +02:00
Dr Maxim Orlovsky 9143fd3888 All script generation functionality moved to standalone methods in Script 2020-09-10 12:09:04 +02:00
Sebastian Geisler 202a946fc3 Allow easy concatenation of bip32 derivation paths
Currently one has to convert the path into a Vec<ChildNumber>, extend it and finally convert it back again.
2020-09-09 21:42:27 +02:00
sanket1729 e97dda0ffe Add tests for psbt serde 2020-09-09 12:53:09 -05:00
Andrew Poelstra addb54ffc7
Merge pull request #458 from braydonf/version
Transaction and header version is signed int
2020-09-09 17:06:31 +00:00
Andrew Poelstra 5fd91ca2d8
Merge pull request #451 from stevenroose/deprecate-contracthash
Deprecate the util::contracthash module
2020-09-09 17:02:19 +00:00
Andrew Poelstra c8633b5bce
Merge pull request #436 from LNP-BP/feat-u256u8
Big integers (Uint*) from byte slice array with `from_be_bytes`
2020-09-09 16:42:32 +00:00
Andrew Poelstra 45da3add10
Merge pull request #428 from stevenroose/no-witness-uncompressed
Don't allow uncompressed pks in witness addresses
2020-09-09 16:37:06 +00:00
Elichai Turkel a44ba2d878
Merge pull request #397 from stevenroose/script-iter
Improve the Instructions iterator for scripts
2020-09-09 19:06:05 +03:00
Dr. Maxim Orlovsky 42bf893d8b
Update big int from_be_bytes with iterators
Co-authored-by: Sebastian <geisler.sebastian@googlemail.com>
2020-09-03 16:42:00 +02:00
sanket1729 c5204c001f Added Hash Preimages to psbt
Added hash preimages to psbt as per updated bip174
2020-08-31 17:22:40 -05:00
Alexis Sellier 5017b33326
Add `Clone` instance to `RawNetworkMessage` 2020-08-31 19:21:29 +02:00
Matt Corallo 3d80a0c962 Expose the witnesses of the tx being hashed in SigHashCache
See docuemntation of the new method for more, but this allows
certain use patterns which were broken with the introduction of
SigHashCache.
2020-08-26 11:18:14 -04:00
Braydon Fuller 945db009b2
Add test for transaction and block version serialization 2020-08-19 14:12:03 -07:00
Braydon Fuller e9f1f11c2c
Transaction and header version is signed int 2020-08-17 10:28:51 -07:00
Dr Maxim Orlovsky 2fd353d5ab Big integers (Uint*) from byte slice array with `from_be_bytes` 2020-08-09 18:00:00 +02:00
Elichai Turkel e8bcde4d38
Merge pull request #403 from LNP-BP/fix-macro-ns
Hygiene/single code style for all existing macros
2020-08-09 18:16:36 +03:00
Steven Roose c03d2d59c6
Merge pull request #445 from elichai/2020-07-divmod
Use the remainder from div_rem instead of recomputing it
2020-08-09 16:59:39 +02:00
Roman Zeyde 0a25d87f2e Remove empty code block 2020-08-07 14:48:46 +02:00
Steven Roose 1ffdce99ed
Deprecate the util::contracthash module 2020-08-06 12:24:08 +02:00
Jake Rawsthorne e47fcae435 feefilter message 2020-07-30 17:25:21 +01:00
Elichai Turkel 478e091af6
Merge pull request #443 from sgeisler/2020-06-bip32-derive-more
Derive more traits to use for bip32 Types
2020-07-23 11:24:50 +03:00
Elichai Turkel c20d356d7e
Use the remainder from div_rem instead of recomputing it 2020-07-22 12:39:32 +03:00
Dr Maxim Orlovsky 257ca8e504 Using :: for std namespaces in macro 2020-07-21 22:28:05 +02:00
Dr Maxim Orlovsky f6aa8853a0 Namespace hygiene for macros.rs 2020-07-21 22:28:05 +02:00
Dr Maxim Orlovsky 3a5e8d8504 Namespace hygiene for internal macros 2020-07-21 22:25:59 +02:00
Dr Maxim Orlovsky 7588b211ff Adding Rem op (%) to Uint128 & Uint256 types 2020-07-21 14:37:21 +02:00
Sebastian Geisler a3bb03eeb9 Derive more traits to use DerivationPath in rust-miniscript 2020-07-20 16:52:18 +02:00
Alexis Sellier 9cb5d2e711 Link type in rustdoc 2020-07-09 21:17:02 +02:00
Alexis Sellier e8cecfe1d3 Add `BlockHeader::u256_from_compact_target` function
This implements the counterparty to BlockHeader::compact_target_from_u256,
to convert a compact u32 to a Uint256.
2020-07-09 21:17:02 +02:00
Tao Wei ed76e0823b
Remove duplicate code
Duplicated with L38
2020-06-03 17:17:13 +08:00
Elichai Turkel f4e26caa94
Merge pull request #415 from shesek/merkleblock-txids
Allow to construct MerkleBlock using the header and txids
2020-05-24 16:32:17 +03:00
Steven Roose ed9bf41ff5
Don't allow uncompressed pks in witness addresses 2020-05-23 23:20:46 +01:00
Steven Roose 59b5a73a55
Fix typo and minor formatting in address::Error 2020-05-23 23:20:19 +01:00
Andrew Poelstra 7efde3ae47
Merge pull request #419 from elichai/2020-03-description
Deprecate Error::description
2020-05-23 17:26:38 +00:00