Commit graph

13640 commits

Author SHA1 Message Date
Steven Roose
08023b0b4e
Merge #770: Revert errant line change committed in bf66a93cbd
610d8d7af Revert errant line change committed in bf66a93cbd (Gregory Sanders)

Pull request description:

  …b25293e277

Tree-SHA512: 62b2080d75dcb7e3a182be4f184f82150233711356b16d6a538a8cd793d8adc48cd5d47113242e06379a4fa4821fbab4bf9a439e1614de67617a9af73980552d
2019-11-05 17:36:59 +00:00
Gregory Sanders
610d8d7afa Revert errant line change committed in bf66a93cbd 2019-11-05 12:29:50 -05:00
Steven Roose
53afce3b0b
Merge #769: Correctly seed the liquidv1 paklist pre-dynafed
bf66a93cb Correctly seed the liquidv1 paklist pre-dynafed (Gregory Sanders)

Pull request description:

  Currently PAK is blank for anyone running on liquidv1 network. This is wrong.

  No PAK list changes are expected prior to dynafed roll-out, so this should remain constant until activation.

Tree-SHA512: eef819c62ee887fdb36b194e52f896306e567a9e7a059fec0620c87b9e126f594a78128e7beec7e86c00976b180c7ea43412a7bb123c3f50e4800d3c837b7f6b
2019-11-05 16:49:07 +00:00
Steven Roose
5d3b7eb9f8
Merge #768: When RPC server disabled, only warn on validatepegin failure
674f3c747 When RPC server disabled, only warn on validatepegin failure (Gregory Sanders)

Pull request description:

  QT starts up normally, and fails when `-server=1` is set, and continues otherwise, by turning off peg-in validation.

  This should be tested on liquidv1 with fresh syncs.

Tree-SHA512: acf188b2eead8db2f2b8d92ae90b510a05e6ab15639249917a3fb99bf3ec48b3d741e372a4bfcf44b8c632d199e56070bbfe1f6a69ef1c991f126b4d34b218a8
2019-11-05 16:35:43 +00:00
Gregory Sanders
bf66a93cbd Correctly seed the liquidv1 paklist pre-dynafed 2019-11-05 10:39:22 -05:00
Gregory Sanders
674f3c7473 When RPC server disabled, only warn on validatepegin failure 2019-11-05 09:06:56 -05:00
Gregory Sanders
b334392946
Merge #758: dynaParamsToJSON: No lock required
304bdf943 dynaParamsToJSON: No lock required (Gregory Sanders)

Pull request description:

Tree-SHA512: 208ea9f00cda6e717e2ed1840b8eba3c33357bf04119608c005ea7f51ad7cf7882bcedb6659d217941f1b084bcf6a9af21339462f6b3891ccf28f131c7f0814f
2019-10-28 16:00:35 -04:00
Gregory Sanders
304bdf9431 dynaParamsToJSON: No lock required 2019-10-28 14:09:25 -04:00
Gregory Sanders
6d9639b211 getnewblockhex: Take data push for arbitrary data in block coinbase commitment 2019-10-28 09:11:05 -04:00
Gregory Sanders
0d2832a6d1
Merge #741: Allow specifying peg-in data in createrawtransaction
5a4d61169 Test raw transaction peg-in (Andrew Chow)
ac6f052a6 Have find_vout_for_address only get non-confidential address when using elements chain (Andrew Chow)
cefe40767 Allow specifying peg-in info in raw transaction RPC inputs (Andrew Chow)
42babb81f Refactor peg-in input construction into its own function in rpc/rawtransaction.cpp (Andrew Chow)
a90d1521c Refactor peg-in witness construction to it's own function (Andrew Chow)

Pull request description:

  Adds to `createrawtransaction` the fields `pegin_bitcoin_tx`, `pegin_txout_proof`, and `pegin_claim_script` so that raw transactions can contain peg-in inputs too.

  Since `ConstructTransaction` is used by `createpsbt` and `walletcreatefundedpsbt` but those should not support peg-ins yet (the peg-in data should go into PSBT fields for peg-ins but those don't exist yet), an argument is added to it to optionally reject peg-in data.

Tree-SHA512: fcf3e4be87f92bfc5b00321bec405001d98615cefb76118345e0c759c6bfcb90b6050735960b6fbdbe26479fa11c9273f9963873a8adc1fbad9ed31dc7953ee0
2019-10-16 10:16:25 -04:00
Andrew Chow
cefe40767d Allow specifying peg-in info in raw transaction RPC inputs 2019-10-14 16:58:53 -04:00
Andrew Chow
42babb81f0 Refactor peg-in input construction into its own function in rpc/rawtransaction.cpp 2019-10-14 16:58:53 -04:00
Andrew Chow
a90d1521c8 Refactor peg-in witness construction to it's own function
Also changes to Use CVectorWriter instead of casting for peg-in value serialization
2019-10-14 16:06:58 -04:00
Steven Roose
06209ba03d
Merge #709: tweakfedpegscript: Optional fedpeg arg
97e46f937 tweakfedpegscript: Optional fedpeg arg (Gregory Sanders)

Pull request description:

  Might be useful for dynamic federations chains, when calculating old peg-in addresses

Tree-SHA512: 33c8f58cf020cf835640ca959f6e84dd58b59df3386fcd5ac71dee9c210028d0857acef65a02fb84888209010e41115b5c54bbb2458effc284afaf44b310c3a5
2019-10-14 16:25:43 +01:00
Gregory Sanders
bf2f1c6217 Reduce min relay to 100 sat/vkB 2019-10-14 10:17:32 -04:00
Gregory Sanders
130d190e70 Disallow implicit conversion for CFeeRate constructor 2019-10-14 10:17:32 -04:00
Gregory Sanders
36fceda4ab feefilter: Compute the absolute fee rather than stored rate to match mempool acceptance logic 2019-10-14 10:17:32 -04:00
Steven Roose
073cb3cb94
Merge #732: Give more descriptive error for non-WSH(OP_TRUE) block generation
3a2888cca Give more descriptive error for non-WSH(OP_TRUE) block generation (Gregory Sanders)

Pull request description:

  If someone transitions to a different block type, including something else op_true-ey but not exactly, `generatetoaddress` and ilk will complain without much recourse.

Tree-SHA512: 720e6888eb3985ad3619d2570b4c22985365a63d72d4a0d9b7d75d2091f6839db034d1b192a177901f0dfbb0d97cef330183438b02c6a11b64d33fe480023d88
2019-10-14 13:38:39 +01:00
Gregory Sanders
7126d1fe38 finalizecompactblock: Fix it, make test easier to fail 2019-10-10 15:46:43 -04:00
Gregory Sanders
cb90cdb7bf Fix finalizecompactblock filling in more found txs from mempool 2019-10-10 10:52:34 -04:00
Gregory Sanders
81fd79ab94
Merge #739: Take mempool locks when doing compact block RPC calls touching mempool
67a669e69 Take mempool locks when doing compact block RPC calls touching mempool (Gregory Sanders)

Pull request description:

  This may help reduce the failures in `feature_blocksign.py` that seem to occur fairly often. It could be that the mempool is in an inconsistent state, which messed up compact block finalization.

Tree-SHA512: cd066933cf58b3c57869db3fd97c2de0ff554d442e91051f43626b12778d55835065ad5fc42fed09b7750796e9e0b2e6947f1ac54e02fe4c8e2a84fe340429ae
2019-10-09 13:13:14 -04:00
Gregory Sanders
67a669e692 Take mempool locks when doing compact block RPC calls touching mempool 2019-10-09 12:11:52 -04:00
Andrew Chow
34e1350114 Use Elements PSBT magic when in Elements mode
Elements PSBTs are incompatible with normal PSBTs due to differing transaction
formats, so use different magic bytes to distinguish.
2019-10-08 14:12:04 -04:00
Andrew Chow
3fa355c767 Change Proprietary types to use the method specified in BIP 174 2019-10-08 14:04:44 -04:00
Gregory Sanders
97e46f9376 tweakfedpegscript: Optional fedpeg arg 2019-10-08 10:23:28 -04:00
Gregory Sanders
3a2888ccad Give more descriptive error for non-WSH(OP_TRUE) block generation 2019-10-08 10:22:40 -04:00
Gregory Sanders
5af17a42bc Update initpegoutwallet help to describe derivation paths properly. 2019-09-30 12:36:45 -04:00
Steven Roose
55c4c6cd20
Fix other bug in initpegoutwallet descriptor parsing 2019-09-30 17:40:33 +02:00
Steven Roose
28dac17c4d
Temp disable pegout descriptors that are not pkh() 2019-09-30 16:07:20 +02:00
Steven Roose
fdba8c45f9
Support descriptors with checksums in initpegoutwallet 2019-09-30 15:50:27 +02:00
Steven Roose
280c33f865
Merge #723: [HF] Dynafed blocks must have sighash byte
809f4acd3 Dynafed blocks must have sighash byte (Gregory Sanders)

Pull request description:

  It is not included in the signature hash.
  The sighash byte MUST be SIGHASH_ALL to avoid malleability.

Tree-SHA512: d4a658448e3a8b3609b32fc24e8d28fc65ea13021ba0b49109b6c4477253d08183ac6e77e0658f23b2630cbb916c6b19e86db241c5d7456391385a308235d0bd
2019-09-30 01:18:46 +02:00
Gregory Sanders
b1c36a8ba6
Merge #719: Add unit test for dynafed CalculateRoot methods
6650067bb Add unit test for dynafed CalculateRoot methods (Steven Roose)

Pull request description:

  I created these for having test vectors for rust-elements, but it makes sense to have them around so that we don't accidentally change them.

Tree-SHA512: 1e6fef4a09e1ab15cf462858c83e65c1224b15e14aa73b7ae1788b74aca3c2c46147affb44a1a1a64bf8c4ff7f57f3859e220652f4ea2ab5ff14738a33ab756a
2019-09-27 15:29:28 -04:00
Gregory Sanders
809f4acd3b Dynafed blocks must have sighash byte
It is not included in the signature hash.
The sighash byte MUST be SIGHASH_ALL to avoid
malleability.
2019-09-27 14:43:50 -04:00
Gregory Sanders
85de70cdfa Don't activate dynafed like custom chains 2019-09-26 09:06:31 -04:00
Gregory Sanders
b73ff4ccfe Fix liquidv1 sync
A single field wasn't given a positive value which
meant it considers no peg-ins to be valid.
2019-09-26 09:06:31 -04:00
Steven Roose
6650067bb3
Add unit test for dynafed CalculateRoot methods 2019-09-26 00:47:58 +02:00
Gregory Sanders
8f6266dae4 Add legacy pak arg for custom chains 2019-09-25 09:10:13 -04:00
Steven Roose
a712796108
Fix nit in blech32_hrp assignment in Bitcoin chains 2019-09-11 16:21:49 +01:00
Steven Roose
51c4ebbe81
Merge #706: sendtomainchain_pak: Fix minimum send amount message
3fa6c9ca3 sendtomainchain_pak: Fix minimum send amount message (Gregory Sanders)

Pull request description:

Tree-SHA512: 202da1fc4e3df9df13a0188d64bea77e65439780486cb6baacb736518b16116a91961545f02f2234db929d43352d95de878886de44d68db0153b2fb6d7279c6a
2019-09-11 14:46:02 +01:00
Gregory Sanders
3fa6c9ca3a sendtomainchain_pak: Fix minimum send amount message 2019-09-11 09:27:53 -04:00
Gregory Sanders
f3ce121a6a RPC: Fix tweakfedpegscript for dynafed, add basic test 2019-09-10 11:03:03 -04:00
Steven Roose
5b2fe5563b
Merge #642: Dynamic federations
f7905d6df Generalize the number of epochs old a peg-in can be and still be valid (Gregory Sanders)
b105ff45e feature_fedpeg.py: Run in various dynafed transition settings (Gregory Sanders)
feef196a2 Fix compilation of raw transaction operations with peg-in inputs (Gregory Sanders)
953dd82ea p2sh-wrap peg-in addresses if fedpeg_program is p2sh-wrapped (Gregory Sanders)
e2be2356d Refactor IsPAKValid to not magically acquire chainparams (Gregory Sanders)
ecdefc5cb Remove script/standard dependence of ContextualCheckDynaFedHeader (Gregory Sanders)
59bed57a1 Remove dyanfed.cpp's dependency on script/standard.h (Gregory Sanders)
50a2b599c After a reorg, boot all peg-ins and peg-outs from mempool (Gregory Sanders)
6000752a9 Enforce PAK checks on dynafed proposals (Gregory Sanders)
dce4cecdd Replace fedpeg template init check for pak one (Gregory Sanders)
afdf0239b Update python test framework for DynaFedParamEntry fedpeg program (Gregory Sanders)
95d8339f4 Add functional test for illegal proposals (Gregory Sanders)
1baad6bf5 Update dynafed functional test to new behavior (Gregory Sanders)
a3cf151de fixup proposal checks (Gregory Sanders)
04cc76743 getnewblockhex fills out proposal fedpeg program (Gregory Sanders)
44f55d36c Make future parent segwit versions in fedpegscripts be vacuously true (Gregory Sanders)
d7faffdca Add dynafed proposal restrictions (Gregory Sanders)
37f90ba50 Add description of NextBlockIsParameterTransition (Gregory Sanders)
d9387cb5d Remove misleading comment for ContextualCheckDynaFedHeader use (Gregory Sanders)
bd11097ce Add fedpeg_program field in dynafed header (Gregory Sanders)
4ad2b8018 CreatePAKListFromExtensionSpace just uses FromBytes for correctness (Gregory Sanders)
6a5eaa189 Remove short-circuit dynafed vote fail for readability (Gregory Sanders)
dddc040aa s/m_dyna_params/m_dynafed_params/ (Gregory Sanders)
6ed63c1fb Light explanation of dynamic federations fields (Gregory Sanders)
15996384d s/ConsensusParamEntry/DynaFedParamEntry/ (Gregory Sanders)
642260a12 s/m_sbs_wit_limit/m_signblock_witness_limit/ (Gregory Sanders)
b66804678 s/HF_MASK/DYNAFED_HF_MASK/ (Gregory Sanders)
0fd39edf5 s/d_params/dynafed_params/ (Gregory Sanders)
1779956e6 signrawtransaction* should use up to date fedpegscript for peg-in signing (Gregory Sanders)
47db75e39 Dynafed RPC support, tests, and deployment for custom chains (Gregory Sanders)
aac354b5b OP_TRUE outputs should be allowed to be segwit-ified by decodescript (Gregory Sanders)
055514b68 Have removeForBlock boot transactions when required (Gregory Sanders)
525b24cf5 Expose fedpeg fetching to consensus and mempool internals (Gregory Sanders)
4ac437b87 GetTransactionSigOpCost shouldn't need fedpegscript to evaluate (Gregory Sanders)
5097c3880 Add and update startup args for dynafed (Gregory Sanders)
24535d6a9 Add unused dynamic genesis block style in chainparams (Gregory Sanders)
d10c42a26 Create epoch length chainparam (Gregory Sanders)
b996a425e Set default of multi_data_permitted to enforce_pak (Gregory Sanders)
f6f6308c9 Correct comment about liquidv1 fedpeg matching template (Gregory Sanders)
4c00eb408 Miner should stop trying to account for old PAK system (Gregory Sanders)
0e10287f7 Add miner ability to make dynafed blocks (Gregory Sanders)
5d281e7e6 ContextualCheckBlockHeader: dynafed doesn't call CheckChallenge (Gregory Sanders)
9fe43cdf8 Introduce contextual block checks for dynafed (Gregory Sanders)
3605505c9 Enable pak enforcement at mempool/block level when appropriate (Gregory Sanders)
802a05519 ScriptHasValidPAKProof takes fedpeg as arg (Gregory Sanders)
89174e961 Remove old mempool-booting logic (Gregory Sanders)
edb865cc2 Remove standardness checks for PAK (Gregory Sanders)
804cd9f75 Update PAK internals, helper functions (Gregory Sanders)
16b87ba95 Disable PAK loading from configuration on init, disable pak test (Gregory Sanders)
918896d6f Add inactive versionbits dynafed deployment (Gregory Sanders)
0a8565bbf ReadBlockFromDisk: do genesis block check before block proof check (Gregory Sanders)
6f0d9244f Bump last old block version for versonbits due to elements (Gregory Sanders)
563cd93d4 Add python implementation of dynafed block serialization (Gregory Sanders)
8d3091bbc Deserialize merkle proofs without witness, which matters for dynafed (Gregory Sanders)
830f91723 Add fedpegscript-fetching helper (Gregory Sanders)
b56fe1495 calculate_contract: remove most template checks and assert in preperation for dynafed (Gregory Sanders)
fd63cee1a Add note on peg-in sigops (Gregory Sanders)
f17d7de52 Add dynafed helper functions (Gregory Sanders)
4aa5f991f Refactor block_proof to support dynafed (Gregory Sanders)
4e52f2c83 Add dynamic federation blockheader fields to chaindb serialization (Gregory Sanders)
a74accf7d Add dynamic federations blockheader serialization with HF bit (Gregory Sanders)
2845e7811 Define dynamic federations primitives (Gregory Sanders)

Pull request description:

  This is a proposal implementation of something myself and Andrew have been working on, to enable dynamic membership in the blocksigning set, fedpeg signing set, and under the same coordination mechanism, the PAK enforcement.

  At a really high level:

  1) If 4/5 of last N(what we call an epoch length) blocks signal desire for a change in the parameters of the system, they are replaced with the proposed. These changes can be proposed/driven by `getnewblockhex`.
  2) Once dynamic federations is active(versionbits deployment), signblockscripts can only be native segwit scripts, in other words, must be a version byte followed by the witness program. The blockheader now has a witness stack as well.
  3) The fedpegscript of last N epochs are both allowed as a grace period for users putting money into the system.
  4) PAK enforcement has been upgraded to consensus-enforcement once dynamic federations activates

  A design document is forthcoming.

Tree-SHA512: 26c6e05c85adb77345d8d481f20e8095bc2f9e5ad7b9a8824008a056637af7c6e87e522b038a6c6c108889d60b2fd1d6ecbd3e0afe2b696579000d18b0f1ecad
2019-09-06 12:02:28 +01:00
Gregory Sanders
f7905d6dfb Generalize the number of epochs old a peg-in can be and still be valid 2019-09-05 10:51:09 -04:00
Gregory Sanders
b105ff45e5 feature_fedpeg.py: Run in various dynafed transition settings 2019-09-05 10:51:09 -04:00
Gregory Sanders
feef196a20 Fix compilation of raw transaction operations with peg-in inputs 2019-09-05 10:51:09 -04:00
Gregory Sanders
953dd82eae p2sh-wrap peg-in addresses if fedpeg_program is p2sh-wrapped 2019-09-05 10:51:09 -04:00
Gregory Sanders
e2be2356dd Refactor IsPAKValid to not magically acquire chainparams 2019-09-05 10:51:09 -04:00
Gregory Sanders
ecdefc5cb0 Remove script/standard dependence of ContextualCheckDynaFedHeader 2019-09-05 10:51:09 -04:00
Gregory Sanders
59bed57a12 Remove dyanfed.cpp's dependency on script/standard.h 2019-09-05 10:51:09 -04:00
Gregory Sanders
50a2b599ca After a reorg, boot all peg-ins and peg-outs from mempool 2019-09-05 10:51:09 -04:00