if nNonce.vchCommitment contains invalid key of correct length,
IsValid() check will pass, but then assertion will be hit
when secp256k1_ec_pubkey_parse() is called on it inside CKey::ECDH().
Therefore, the check should be done with IsFullyValid()
bc257db f'rawreissueasset functional tests' (Gregory Sanders)
181d099 rawreissueasset functional tests (Gregory Sanders)
21cb8aa rawreissuance rpc (Gregory Sanders)
1251ecd fixup rawissueasset help comment (Gregory Sanders)
23371af add confidential_key explanation in validateaddress help (Gregory Sanders)
c579f4b Correct how wallet blinding logic detects which token id to use based on blinding keys (Gregory Sanders)
fff2dcc blindrawtransaction: Have blind_issuances parse correctly from command line (Gregory Sanders)
756bdc0 issueasset_base: Push 0-value value to issuance field if blinding (Gregory Sanders)
ca383ac add functional testing for raw issuance call (Gregory Sanders)
a5e1af5 rawissueasset RPC call (Gregory Sanders)
f9f91ba Fixup issueasset help results information (Gregory Sanders)
69d8d15 Break out issuance-specific testing to its own functional test (Gregory Sanders)
2b22b6d Fixup (raw)blindrawtransaction (Gregory Sanders)
a5e9e0e Fix blinding logic for issuances on input 1 or higher (Gregory Sanders)
83df289 fixup BlindTransaction issuance counting assertion (Gregory Sanders)
Pull request description:
Resolves the initial issuance portion of: https://github.com/ElementsProject/elements/issues/471
The user follows this flow:
`createrawtransaction->fundrawtransaction->rawissueasset->blindrawtransaction->signrawtransaction`
`rawissueasset` is a new RPC call that allows the user to append N-many issuances, up to the amount of inputs the transaction has, at once. It allows the issuances to be "marked" for blinding later(only effects reissance token asset id), and for the destination outputs to be arbitrary addresses, blinded or otherwise.
Previously `fundrawtransaction` would not blind issuances(pretty much on accident), so I have added an argument, default `true`, on whether to blind issuances, since there is no field in the transaction itself to mark as whether we want to blind it or not.
Note: This will cause your transactions' fee-rate to go down, so the caller may want to over-shoot fees during the `fundrawtransaction` call as cushion.
I also fixed a couple bugs on the way as I uncovered them.
Tree-SHA512: fa77158c390743f579797d426b9d9cb000a5d686a8b10aa818b1e9ad65fdc42ac139a36ad226e31676b3bd9c6643bc69074869d6a927309a7ec328c91e853bec
f2161b411 Improve raw peg-in creation logic/help and add basic tests (Gregory Sanders)
Pull request description:
shores up concerns in https://github.com/ElementsProject/elements/issues/465 and fixes a return variable help text. Adds tests.
Tree-SHA512: d32305a355c3bbac22c9cf5ceab57825f9dd1ced40a401cda62d25cba4313a832032720b0ecc30f2ca0025c3992099d32660fec566955dd00973ffb42362e32b
0064b03 Add Asset parameter to MutateTxAddOutData (yoshihide shimada)
0dd6605 Remove comma for `claimpegin` in command line help info (Stefan Liu)
a2715eb validation: change pindexPrev->nHeight + 1 to nHeight (shafisher)
16113d8 Removed redundant .rpcuser, .rpcpassword (wintercooled)
370e797 Changed config file to work with new core v0.17 format as well as previous versions (wintercooled)
Pull request description:
Core v0.17 now handles config file settings differently and loads the existing config settings as mainnet and not regtest. This means our e1 and e2 nodes in the tutorial can't connect.
This PR makes the bitcoin.conf file compatible with both formats. Without this change the tutorial code fails if you are using bitcoind v0.17.0.0.
REF: https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.17.0.md
If the following options are not in a section, they will only apply to mainnet:
`addnode=`, `connect=`, `port=`, `bind=`, `rpcport=`, `rpcbind=` and `wallet=`.
The options to choose a network (`regtest=` and `testnet=`) must be specified
outside of sections.
Tested with bitcoind v0.16.2.0 and v0.17.0.0
Tree-SHA512: 3136703da17570e410c1e86ab31f3ac0bca60847164dd10e75a57affd1b7b67fdfbba2be5437ad9ffdd5428c10f6d34073d3e746f55dacda858ab47b517cd3fc
61cbc79 changed link name for easier diff (wintercooled)
ef0451d added link to schnorr as research (wintercooled)
2652861 Modified intro text (wintercooled)
f68ba12 Modified what is elements? text (wintercooled)
b0ac198 changed link from github.io to .org (wintercooled)
7b2a331 Amend links to point at new .org site content (wintercooled)
abb7b01 Add some additional comments about BitcoindRPCCheck infra (Gregory Sanders)
62c56f4 don't set CorruptionPossible for peg-in transaction failure (Gregory Sanders)
5d7cd6b parameterize the rpc re-checking of peg-in validation failed blocks (Gregory Sanders)
ba8d498 bitcoind rpc check should take main locks for mapBlockIndex, check for key (Gregory Sanders)
Previously the peg-in validation logic was done in script
which means it was handled correctly by mempool/block logic.
We then moved these checks outside of script, which means
that these checks aren't multithreaded/batched, and return
the specific error states, including CorruptionPossible.
This means that blocks are never considered permanently invalid and
in certain circumstances tried in an infinite loop.
Instead we mark it as a normal failure, and allow the peg-in invalid
block queue to take care of it instead.