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
7126d1fe3 finalizecompactblock: Fix it, make test easier to fail (Gregory Sanders)
Pull request description:
We were putting together the block wrong in a couple ways.
The order of the transactions matter when give as the "missing transactions" list. We're simply feeding it two lists of transactions that together should contain the full block. Also we should actually serialized the 2nd argument rather than the 1st, again.
Tree-SHA512: a1ecbc737d39113a517bc0ce3c53dc66472b0789fa60ef86083672e946d2c5ba1e06207314760f3358f34996b794b72d30279c96f65d9f784d35603e4db727d4
cb90cdb7b Fix finalizecompactblock filling in more found txs from mempool (Gregory Sanders)
Pull request description:
If you instantiate `InitData` with a non-empty mempool, it may find "missing transactions", fill them in, and then the missing transaction index vector is now faulty and fails.
All data is already available to finish the block(or not in case of collision), just use given data.
Fixes intermittent feature_blocksign.py failure.
Tree-SHA512: d0d984b72daf710a1889c1e7032fe4fc81a26701d595441d9978bd6ab37f59b3a90df52a45df120007eb9465c6c4879807b6bea3602bb32ed1c05814d041c6fb
3e912deef Sprinkle a bunch of syncs to avoid peg-in failure hanging (Gregory Sanders)
3ac8e298a feature_fedpeg.py: just use testmempoolaccept checking blinded peg-in transactions (Gregory Sanders)
Pull request description:
… transactions
Previous test had race condition causing spurious failures for no additional coverage.
Resolves https://github.com/ElementsProject/elements/issues/728
Tree-SHA512: f128bb0b8ad54da683c66bbd6ad1385927659fab4cc8e77e57943dea6c7d989389c39e29ff8d282bdab3e068ec38af449e2941e03f802fe477d839b636587e92
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
34e135011 Use Elements PSBT magic when in Elements mode (Andrew Chow)
3fa355c76 Change Proprietary types to use the method specified in BIP 174 (Andrew Chow)
Pull request description:
https://github.com/bitcoin/bips/pull/849 (not yet merged) adds to BIP 174 proprietary types. This PR changes the PSBT types used in Elements to be in line with the proposed changes to the BIP/
Tree-SHA512: 73085a16005448d9f6ad1b74da4a40043ec29738256a439f35106793d11d0e95cb8d728db5cfefe1ddd49cd80367f7f5790d09efaa95bc443e1d6ba295240c4d
b53ad3118 Disable functional tests for sanitzer runs which just OOM (Gregory Sanders)
1893ba191 Don't run unit tests for compatibility run(which is a NOP) (Gregory Sanders)
Pull request description:
This particular build is intended for bitcoin_functional tests only, and the unit tests are timing out consistently for some unrelated reason, so turn them off.
Tree-SHA512: 8f31b5f4fef38271652a3c534c2191d6b6d567e992ef27ba4a6f2fc8c3aebd6d9aef755563780554609346ab397adc71e16229878cad48289918d1ff71cfa0fb
5af17a42b Update initpegoutwallet help to describe derivation paths properly. (Gregory Sanders)
55c4c6cd2 Fix other bug in initpegoutwallet descriptor parsing (Steven Roose)
28dac17c4 Temp disable pegout descriptors that are not pkh() (Steven Roose)
fdba8c45f Support descriptors with checksums in initpegoutwallet (Steven Roose)
Pull request description:
Non-pkh descriptor types will be re-enabled once entire liquid network functionary set is updated to use elements daemons.
Tree-SHA512: 41203f767c4879251eb958f938a8cc88b8f5d03ffa16bb598645f5c1bd5b45d7e6468cadcb3c5c12abd62c73913834718b9ad48a24f721537d1e8a0a3cf7e6fc
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
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
85de70cdf Don't activate dynafed like custom chains (Gregory Sanders)
b73ff4ccf Fix liquidv1 sync (Gregory Sanders)
Pull request description:
A single field wasn't given a positive value which
meant it considers no peg-ins to be valid. This is something introduced by dynafed.
I put in a guess placeholder, the important part is that it's > 0.
Tree-SHA512: 5a70b282fcf3a47fb17181eafd74f6f5cc2209f18111d6ae21ca0cac50bf63e4864f694826902e1a9ca032f5686c537653fe080d42a5e6ca946354a74998ebf5
522a147be Add blech32 roundtrip test for python implementation (Gregory Sanders)
32564b0a9 fix len check in blech32 decode() in test framework (Dmitry Petukhov)
Pull request description:
I used the code from test/functional/test_framework/liquid_addr.py with the same length check adjustments in python-elementstx to decode Liquid's blech32 addresses, and it seems to be working fine.
Tree-SHA512: 4ac4589e0cdbeb7397a4f3c9000b8fdb91516ca257b757cddbfb6df2d75df4587ddcee37b8f9f1d0364d5e78515ea2e1f4270eecca42ea9a59b8f28578d7ab1c
a71279610 Fix nit in blech32_hrp assignment in Bitcoin chains (Steven Roose)
Pull request description:
I don't think this had a real effect, though since blech32 should be disabled for the Bitcoin networks.
Tree-SHA512: fc532cc54d7b42c32369a7fa9b85cd0f4411f394005ad6e507571a660b56fea38cbeade30e4363318d7adc9d7f08cf2bf3731f78ea22a3ecaedf7e920be63756
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