profile
viewpoint
Sjors Provoost Sjors Utrecht, The Netherlands

BitMEXResearch/forkmonitor 36

Fork Monitor

Sjors/armbian-bitcoin-core 7

Generates an Armbian image for minicomputers with Bitcoin Core including GUI

Sjors/dao-challenge 7

https://dao-challenge.herokuapp.com/

Sjors/crush_curve 4

Yet another Corona dashboard (no longer active)

Sjors/bitcoin 3

Bitcoin Core integration/staging tree

Sjors/bitcoin-passbook 3

Monitor your bitcoin address balance in Passbook on your iPhone

Sjors/docker-bitcoin-core 3

There's no such thing as too many bitcoin docker solutions.

BitMEXResearch/bitcoin 2

Bitcoin BitMEX Research integration/staging tree

Sjors/apple-sdk-tools 0

Maintainer Wanted: python tools for extracting Apple xcode/sdk files

PullRequestReviewEvent

push eventSjors/bitcoin

Sjors Provoost

commit sha b884ababc29ce963826d8a4327ed6a5e629ff175

rpc: move Ensure* helpers to server_util.h

view details

Sjors Provoost

commit sha dce8c4c38111556ca480aa0e63c46b71f66b508f

rpc: getblockfrompeer Co-authored-by: John Newbery <john@johnnewbery.com>

view details

push time in 15 hours

Pull request review commentbitcoin/bitcoin

rpc: getblockfrompeer

 static RPCHelpMan getmempoolentry()     }; } +static RPCHelpMan getblockfrompeer()+{+    return RPCHelpMan{"getblockfrompeer",+                "\nAttempt to fetch block from a given peer.\n"+                "\nWe must have the header for this block, e.g. using submitheader.\n"+                "\nReturns {} if a block-request was successfully scheduled\n",+                {+                    {"blockhash", RPCArg::Type::STR_HEX, RPCArg::Optional::NO, "The block hash"},+                    {"nodeid", RPCArg::Type::NUM, RPCArg::Optional::NO, "The node ID (see getpeerinfo for node IDs)"},+                },+                RPCResult{RPCResult::Type::OBJ, "", "",+                {+                    {RPCResult::Type::STR, "warnings", "any warnings"}+                }},+                RPCExamples{+                    HelpExampleCli("getblockfrompeer", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\" 0")+                + HelpExampleRpc("getblockfrompeer", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\" 0")+                },+        [&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue+{+    const NodeContext& node = EnsureAnyNodeContext(request.context);+    ChainstateManager& chainman = EnsureChainman(node);+    PeerManager& peerman = EnsurePeerman(node);++    uint256 hash(ParseHashV(request.params[0], "hash"));++    const NodeId nodeid = static_cast<NodeId>(request.params[1].get_int64());++    const CBlockIndex* const index = WITH_LOCK(cs_main, return chainman.m_blockman.LookupBlockIndex(hash););++    if (!index) {+        throw JSONRPCError(RPC_MISC_ERROR, "Block header missing");+    }++    UniValue result = UniValue::VOBJ;++    if (index->nStatus & BLOCK_HAVE_DATA) {+        result.pushKV("warnings", "Block already downloaded");

Done

Sjors

comment created time in 15 hours

PullRequestReviewEvent

push eventSjors/bitcoin

Sjors Provoost

commit sha ef72e9bd4124645fe2d00521a71c1c298d760225

doc: nChainTx needs to become a 64-bit earlier due to SegWit

view details

S3RK

commit sha a8b515c317f0b5560f62c72a8f4eb6560d8f1c75

configure: keep relative paths in debug info Revert to the state prior to e507acbe and allow debugging from project root dir with `gdb src/bitcoind`.

view details

Michael Dietz

commit sha 1f20501efce041d34e63ab9a11359bedf4a82cd5

test: add functional test for multisig flow with descriptor wallets and PSBTs

view details

Michael Dietz

commit sha 17dd6573008c8aca9fc0da9419225c85a4f94330

doc: M-of-N multisig using descriptor wallets and PSBTs, as well as a signing flow

view details

Michael Dietz

commit sha e05cd0546a155afcd45c43ce730c4abecd40dfed

doc: add another signing flow for multisig with descriptor wallets and PSBTs

view details

Troy Giorshev

commit sha 8c96008ab18075abca03bff6b3675643825a21ca

[net] Don't return an optional from TransportDeserializer::GetMessage() Also, access mapRecvBytesPerMsgCmd with `at()` not `find()`. This throws an error if COMMAND_OTHER doesn't exist, which should never happen. `find()` instead just accessed the last element, which could make debugging more difficult. Resolves review comments from PR19107: - https://github.com/bitcoin/bitcoin/pull/19107#discussion_r478718436 - https://github.com/bitcoin/bitcoin/pull/19107#discussion_r478714497

view details

Troy Giorshev

commit sha f3e451bebfe2e2d8de901d8ac29c064a51d3b746

[net] Replace GetID() with id in TransportDeserializer constructor

view details

S3RK

commit sha 0bc666b053b8f4883c3f5de43959e2bbd91b95c5

doc: add info for debugging with relative paths

view details

nthumann

commit sha 365f35481d5c04109d64e88e548d6985705c2f75

script: Add commits signed with sipas expired key to allow-revsig-commits

view details

Sebastian Falbesoner

commit sha d047ed729f1d4732d23324fc76849f3c657cdbe4

external_signer: improve fingerprint matching logic (stop on first match)

view details

Antoine Poinsot

commit sha d873db7f8ff37c37f9c72482d8ecd52282f4438e

policy: document we intentionally don't lower the dust threshold for Taproot A "correction" of what seemed to be an overlook was initially proposed in PR #22779. It was deemed unnecessary to further reduce the dust level, so document the intention. Signed-off-by: Antoine Poinsot <darosior@protonmail.com>

view details

Michael Dietz

commit sha f9479e4626f6b5126ff8cdab3a7e718c609429ef

test, doc: basic M-of-N multisig minor cleanup and clarifications wallet_multisig_descriptor_psbt.py is refactored in this commit. While behavior doesn't change we do cleanup the way wallets are accessed throughout the test as this is done a lot for the various signers and their multisigs. We also get rid of some shallow methods and instead inline them for improved readability. descriptors.md is improved to be more explicit about which wallet (ie the signer or multisig) is required for each step.

view details

Michael Dietz

commit sha 9de0d94508828f5fdfaf688ccda5a91d38b32c58

doc: add disclaimer highlighting shortcomings of the basic multisig example

view details

Sebastian Falbesoner

commit sha 2600db6c36c11bf49a0a113ee2e2274406ade61c

test: fix misleading fee unit in mempool_limit.py The helper `send_large_txs` in its current interface has a fee_rate parameter, implying that it would create a transaction with exactly that rate. Unfortunately, this fee rate is only passed to MiniWallet's `create_self_transfer` method, which can't know that we append several tx outputs after, increasing the tx's vsize and decreasing it's fee rate accordingly. In our case, the fee rate is off by several orders of magnitude, as the tx's vsize changes changes from 96 to 67552 vbytes (>700x), i.e. the value passed to this function is neither really a fee rate nor an absolute fee, but something in-between, which is very confusing. Clarify the interface by passing an absolute fee that is deducted in the end (and verified, via testmempoolaccept) and also describe how we come up with the value passed.

view details

Russell Yanofsky

commit sha 7e88f61b285e6a356ea4f6ba384858f109559985

multiprocess: Make interfaces::Chain::isTaprootActive non-const interfaces::Chain is an abstract class, so declaring the method const would be exposing internal implementation details of subclasses to interface callers. And specifically this doesn't work because the multiprocess implementation of the interfaces::Chain::isTaprootActive method can't be const because IPC connection state and request state is not constant during the call.

view details

Russell Yanofsky

commit sha d5f985e51f2863fda0c0d632e836eba42a5c3e15

multiprocess: Add new bitcoin-gui, bitcoin-qt, bitcoin-wallet init implementations Add separate init implementations instead of sharing existing bitcoind and bitcoin-node ones, so they can start to be differentiated in upcoming commits with node and wallet code no longer linked into the bitcoin-gui binary and wallet code no longer linked into the bitcoin-node binary.

view details

Russell Yanofsky

commit sha ad085f9ba15c131fc5cc77086a620f2e366aac7c

multiprocess: Delay wallet client construction Delay wallet client construction until after logging, thread and other init for two reasons: - More responsive multiprocess GUI startup. When bitcoin-gui is started this moves the call from bitcoin-gui to bitcoin-node that spawns bitcoin-wallet off of the GUI event thread and onto the background GUI init executor thread. - Avoids feature_logging.py test failures with bitcoin-node by making bitcoin-wallet logging start after bitcoin-node logging starts, because the tests are not written to handle the bitcoin-wallet logging init code running first. This partially reverts commit b266b3e0bf29d0f3d5deaeec62d57c5025b35525, moving wallet client creation back to the place it was located before.

view details

Andrew Chow

commit sha f19ad404631010a5e2dac2c7cbecd057b005fe2a

rpc, wallet: Descriptor wallets are no longer experimental

view details

Andrew Chow

commit sha 9c1052a5218e191fd23c0d9fc06f2fca34b03411

wallet: Default new wallets to descriptor wallets

view details

MarcoFalke

commit sha fa2662c293ec0aaa93092b59b6632f74729c4283

net: Avoid logging AlreadyHaveTx when disconnecting misbehaving peer Can be reviewed with --color-moved=dimmed-zebra

view details

push time in 15 hours

issue commentbitcoin/bitcoin

In "external signer mode", invalid descriptors will crash Bitcoin Core

Thanks for catching this. I'll take a look at your fix PR.

We should probably validate the descriptors and re-use the code in importdescriptors for error handling.

sstone

comment created time in 15 hours

push eventSjors/bitcoin

Sjors Provoost

commit sha 434dbbce705ba4c4743d2a6760893bfe077cab5e

rpc: getblockfrompeer Co-authored-by: John Newbery <john@johnnewbery.com>

view details

push time in a day

Pull request review commentbitcoin/bitcoin

rpc: getblockfrompeer

 static RPCHelpMan getmempoolentry()     }; } +static RPCHelpMan getblockfrompeer()+{+    return RPCHelpMan{"getblockfrompeer",+                "\nAttempt to fetch block from a given peer.\n"+                "\nWe must have the header for this block, e.g. using submitheader.\n"+                "\nReturns {} if a block-request was successfully scheduled\n",+                {+                    {"blockhash", RPCArg::Type::STR_HEX, RPCArg::Optional::NO, "The block hash"},+                    {"nodeid", RPCArg::Type::NUM, RPCArg::Optional::NO, "The node ID (see getpeerinfo for node IDs)"},+                },+                RPCResult{RPCResult::Type::OBJ, "", "",+                {+                    {RPCResult::Type::STR, "warnings", "any warnings"}+                }},+                RPCExamples{+                    HelpExampleCli("getblockfrompeer", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\" 0")+                + HelpExampleRpc("getblockfrompeer", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\" 0")+                },+        [&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue+{+    const NodeContext& node = EnsureAnyNodeContext(request.context);+    ChainstateManager& chainman = EnsureChainman(node);+    PeerManager& peerman = EnsurePeerman(node);++    uint256 hash(ParseHashV(request.params[0], "hash"));++    const NodeId nodeid = static_cast<NodeId>(request.params[1].get_int64());++    const CBlockIndex* const index = WITH_LOCK(cs_main, return chainman.m_blockman.LookupBlockIndex(hash););++    if (!index) {+        throw JSONRPCError(RPC_MISC_ERROR, "Block header missing");+    }++    UniValue result = UniValue::VOBJ;++    if (index->nStatus & BLOCK_HAVE_DATA) {+        result.pushKV("warnings", "Block already downloaded");

Done

Sjors

comment created time in a day

PullRequestReviewEvent

Pull request review commentbitcoin/bitcoin

rpc: getblockfrompeer

 bool PeerManagerImpl::BlockRequestAllowed(const CBlockIndex* pindex)            (GetBlockProofEquivalentTime(*pindexBestHeader, *pindex, *pindexBestHeader, m_chainparams.GetConsensus()) < STALE_RELAY_AGE_LIMIT); } +bool PeerManagerImpl::FetchBlock(NodeId id, const uint256& hash, const CBlockIndex& index)+{+    if (fImporting || fReindex) return false;++    LOCK(cs_main);+    // Ensure this peer exists and hasn't been disconnected+    CNodeState* state = State(id);+    if (state == nullptr) return false;+    // Ignore pre-segwit peers+    if (!state->fHaveWitness) return false;++    // Construct message to request the block+    std::vector<CInv> invs{CInv(MSG_BLOCK | MSG_WITNESS_FLAG, hash)};

I moved it inside the ForNode() block

Sjors

comment created time in a day

PullRequestReviewEvent

pull request commentbitcoin/bitcoin

Enforce Taproot script flags whenever WITNESS is set

utACK fa9a4d103ff673724dfeb53b10a2707a81539d68

MarcoFalke

comment created time in a day

Pull request review commentbitcoin/bitcoin

Enforce Taproot script flags whenever WITNESS is set

 static unsigned int GetBlockScriptFlags(const CBlockIndex* pindex, const Consens     // mainnet and testnet), so for simplicity, always leave P2SH     // on except for the one violating block.     if (consensusparams.BIP16Exception.IsNull() || // no bip16 exception on this chain-        pindex->phashBlock == nullptr || // this is a new candidate block, eg from TestBlockValidity()-        *pindex->phashBlock != consensusparams.BIP16Exception) // this block isn't the historical exception+        block_index.phashBlock == nullptr || // this is a new candidate block, eg from TestBlockValidity()+        *block_index.phashBlock != consensusparams.BIP16Exception) // this block isn't the historical exception

Assuming that Assert() stays where it is, then indeed it already has the brackets.

MarcoFalke

comment created time in a day

PullRequestReviewEvent

Pull request review commentbitcoin/bitcoin

Enforce Taproot script flags whenever WITNESS is set

 bool MemPoolAccept::ConsensusScriptChecks(const ATMPArgs& args, Workspace& ws)     // There is a similar check in CreateNewBlock() to prevent creating     // invalid blocks (using TestBlockValidity), however allowing such     // transactions into the mempool can be exploited as a DoS attack.-    unsigned int currentBlockScriptVerifyFlags = GetBlockScriptFlags(m_active_chainstate.m_chain.Tip(), chainparams.GetConsensus());+    unsigned int currentBlockScriptVerifyFlags{GetBlockScriptFlags(*m_active_chainstate.m_chain.Tip(), chainparams.GetConsensus())};

It's in reference to the * which dereferences Tip()

MarcoFalke

comment created time in a day

PullRequestReviewEvent

Pull request review commentbitcoin/bitcoin

Enforce Taproot script flags whenever WITNESS is set

 static unsigned int GetBlockScriptFlags(const CBlockIndex& block_index, const Co     {         // Enforce WITNESS rules whenever P2SH is in effect         flags |= SCRIPT_VERIFY_P2SH | SCRIPT_VERIFY_WITNESS;+        // Enforce Taproot (BIP340-BIP342) whenever WITNESS is in effect,+        // unless except+        if (!consensusparams.TaprootException.IsNull() ||                        // no Taproot exception on this chain

It's nice for it to be identifcal to the BIP16 check, which made this mistake easier to see. It's also probably more similar to what future code will look like that has to handle multiple blocks.

MarcoFalke

comment created time in a day

PullRequestReviewEvent

Pull request review commentbitcoin/bitcoin

Enforce Taproot script flags whenever WITNESS is set

 static unsigned int GetBlockScriptFlags(const CBlockIndex* pindex, const Consens     // mainnet and testnet), so for simplicity, always leave P2SH     // on except for the one violating block.     if (consensusparams.BIP16Exception.IsNull() || // no bip16 exception on this chain-        pindex->phashBlock == nullptr || // this is a new candidate block, eg from TestBlockValidity()-        *pindex->phashBlock != consensusparams.BIP16Exception) // this block isn't the historical exception+        block_index.phashBlock == nullptr || // this is a new candidate block, eg from TestBlockValidity()+        *block_index.phashBlock != consensusparams.BIP16Exception) // this block isn't the historical exception

Maybe clarify this into *(block_index.phashBlock)?

I tested that this indeed syncs past the BIP16Exception block, and that - conversely - chaning the exception block to a non-existing block causes a failure at height 170,060.

MarcoFalke

comment created time in 2 days

Pull request review commentbitcoin/bitcoin

Enforce Taproot script flags whenever WITNESS is set

 bool MemPoolAccept::ConsensusScriptChecks(const ATMPArgs& args, Workspace& ws)     // There is a similar check in CreateNewBlock() to prevent creating     // invalid blocks (using TestBlockValidity), however allowing such     // transactions into the mempool can be exploited as a DoS attack.-    unsigned int currentBlockScriptVerifyFlags = GetBlockScriptFlags(m_active_chainstate.m_chain.Tip(), chainparams.GetConsensus());+    unsigned int currentBlockScriptVerifyFlags{GetBlockScriptFlags(*m_active_chainstate.m_chain.Tip(), chainparams.GetConsensus())};

CChain does not guarantee that Tip() != nullptr. Maybe add an assert as well as a comment for why it's safe to assume in this context Tip() exists?

MarcoFalke

comment created time in 2 days

Pull request review commentbitcoin/bitcoin

Enforce Taproot script flags whenever WITNESS is set

 static unsigned int GetBlockScriptFlags(const CBlockIndex& block_index, const Co     {         // Enforce WITNESS rules whenever P2SH is in effect         flags |= SCRIPT_VERIFY_P2SH | SCRIPT_VERIFY_WITNESS;+        // Enforce Taproot (BIP340-BIP342) whenever WITNESS is in effect,+        // unless except+        if (!consensusparams.TaprootException.IsNull() ||                        // no Taproot exception on this chain

Did you mean to drop the !?

MarcoFalke

comment created time in 2 days

Pull request review commentbitcoin/bitcoin

Enforce Taproot script flags whenever WITNESS is set

 static unsigned int GetBlockScriptFlags(const CBlockIndex& block_index, const Co     // mainnet and testnet), so for simplicity, always leave P2SH     // on except for the one violating block.     if (consensusparams.BIP16Exception.IsNull() || // no bip16 exception on this chain-        block_index.phashBlock == nullptr || // this is a new candidate block, eg from TestBlockValidity()-        *block_index.phashBlock != consensusparams.BIP16Exception) // this block isn't the historical exception+        *Assert(block_index.phashBlock) != consensusparams.BIP16Exception) // this block isn't the historical exception

It seems more readable to me to move this assert into the main function body. On mainnet this doesn't change anything, and I checked that it doesn't break any tests.

MarcoFalke

comment created time in 2 days

PullRequestReviewEvent
PullRequestReviewEvent

pull request commentbitcoin/bitcoin

test: add v0.20.1, v0.21.0 and v22.0 to backwards compatibility test

Thanks @ryanofsky. I fixed the indentation and added the requested comment.

Sjors

comment created time in 2 days

push eventSjors/bitcoin

Sjors Provoost

commit sha 941ab614bc17a55e03986621755d19de15040bca

test: backwards compatibility: misc fixes This cleanup may slightly impact test coverage. Reduce code repition by looping over the list of nodes. Reduce brittleness by refering to nodes by name rather than index. Add helper method nodes_wallet_dir.

view details

Sjors Provoost

commit sha 5aa77a776ae3a639bdd7dc44cc09651abc701abe

test: v0.20.1 backwards compatibility The file checksums were added in an earlier commit. Since the DMG file is never downloaded, we drop that checksum.

view details

Sjors Provoost

commit sha dc6dbf83914f6c5993ca4036702fc280f07d03ea

test: previous releases: add v0.21.0

view details

Sjors Provoost

commit sha 03087361a97dad01e7e1b1ee8e2af94c4fca8d65

test: bump sandbox argument minimum version The -sandbox argument is not present in the v22.0 release. Changing the minimum version to 229900 ensures it's used when testing the master branch. If the argument is backported, the minimum version can be adjusted to e.g. 220100.

view details

Sjors Provoost

commit sha ef08ba17c94b9f10eac3f03e6393c0c998133d66

test: previous releases: add v22.0

view details

push time in 2 days

issue commentbitcoin/bitcoin

rpc: getnetworkinfo subversion has spurious trailing 0

I guess if it's intentional then it's not a bug. The binary archive name can always be derived from the version field instead, if you know the rules. Or we could add yet another result to this RPC like version_rounded.

Sjors

comment created time in 3 days

pull request commentbitcoin/bitcoin

rpc: add getxpub

Rebased and updated the multisig descriptor test and example documentation to use getxpub. Unfortunately we still have to reuse existing wallet keys, e.g. m/44h/1h/0h, because importdescriptors can't derive private keys yet.

Sjors

comment created time in 4 days

push eventSjors/bitcoin

Sjors Provoost

commit sha 63b451b51e24cdfc66cf5b124d56faa706534363

test: use getxpub in wallet_multisig_descriptor_psbt.py

view details

Sjors Provoost

commit sha d4784a83588916b93b7c48a2a4c8ca567a9cffc6

doc: use getxpub in basic multisig descriptor example

view details

push time in 4 days

push eventSjors/bitcoin

nthumann

commit sha 365f35481d5c04109d64e88e548d6985705c2f75

script: Add commits signed with sipas expired key to allow-revsig-commits

view details

Russell Yanofsky

commit sha ad085f9ba15c131fc5cc77086a620f2e366aac7c

multiprocess: Delay wallet client construction Delay wallet client construction until after logging, thread and other init for two reasons: - More responsive multiprocess GUI startup. When bitcoin-gui is started this moves the call from bitcoin-gui to bitcoin-node that spawns bitcoin-wallet off of the GUI event thread and onto the background GUI init executor thread. - Avoids feature_logging.py test failures with bitcoin-node by making bitcoin-wallet logging start after bitcoin-node logging starts, because the tests are not written to handle the bitcoin-wallet logging init code running first. This partially reverts commit b266b3e0bf29d0f3d5deaeec62d57c5025b35525, moving wallet client creation back to the place it was located before.

view details

Jon Atack

commit sha d14395bc5db55331115fa3c1e71741d1de7f092f

net, doc: provide context for UnserializeV1Array()

view details

Jon Atack

commit sha 33c6a208a9e2512a174c99c224a933a59f091bc2

span, doc: provide span.h context and explain lifetimebound definition

view details

Kristaps Kaupe

commit sha dbde0558ce73db4c901dbaa2eddc634701fa1d0d

gui: Paste button in Open URI dialog Co-authored-by: Emil Engler <me@emilengler.com> Co-authored-by: =?UTF-8?q?Jo=C3=A3o=20Barbosa?= <joao.paulo.barbosa@gmail.com> Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Co-authored-by: Jarol Rodriguez <jarolrod@tutanota.com>

view details

katesalazar

commit sha 2198f79e87b3a8bfcda59e51225ab4cb789ccc53

Add an argparse abbreviated mode to --failfast Short options should only be a single character. If not, they can't be concatenated in a single "-word" (from review by luke-jr). F is chosen instead of f, because f could be reserved to the nested wallet_hd.py (test_framework/test_framework.py) arguments parser.

view details

Russell Yanofsky

commit sha a032fa30d282fa69c304e0afd1f95f67c55d22e3

multiprocess: add interfaces::ExternalSigner class Add interfaces::ExternalSigner to let signer objects be passed between processes and signer code to run in the original process, without multiple processes linking and running signer code.

view details

Jon Atack

commit sha 325da75a5396f3161a6eade74b349105ed5722ab

log, timer: allow not repeating log message on completion

view details

Jon Atack

commit sha ec65bed00ee2e403e39b3c5977caf4abd31ccc87

log, timer: add LOG_TIME_MILLIS_WITH_CATEGORY_MSG_ONCE macro that prints the descriptive message when logging the start but not when logging the completion.

view details

Jon Atack

commit sha 22b44fc696dc1078c40d17e2d497c74c7b4ae750

p2p: improve checkaddrman logging with duration in milliseconds and update the function name to CheckAddrman (drop "Force") for nicer log output as it is prefixed to each of these log messages: 2021-09-21T18:42:50Z [opencon] CheckAddrman: new 64864, tried 1690, total 66554 started 2021-09-21T18:42:50Z [opencon] CheckAddrman: completed (76.21ms) The existing Doxygen documentation on the function already makes clear that it is unaffected by m_consistency_check_ratio.

view details

Luke Dashjr

commit sha 25a581419d10b3c7d99789da18afd51f2984fbc8

GUI/Options: Restore "S" accelerator for "Start on system login" option Shift RPC server option to use "P" instead

view details

Samuel Dobson

commit sha 0b06e720c0182dee8b560d2e8d3891b036f63ea7

More detailed error checking for base58 addresses

view details

Samuel Dobson

commit sha b62b67e06cc406fdad68da4c091168fb5f11c1d4

Add Bech32 error location function

view details

Samuel Dobson

commit sha 02a7bdee429ae307a5e57832727fed789e2e04fb

Add error_locations to validateaddress RPC

view details

MeshCollider

commit sha c4979f77c1264f0099d1dfa278b1d9c18340b5f9

Add boost tests for bech32 error detection

view details

Samuel Dobson

commit sha 42d6a029e57a32f2d1d829ff7718b6d40d58b9d1

Refactor and add more tests for validateaddress

view details

MeshCollider

commit sha 2eb5792ec7bbeaf7138420b6c85c5cd0a0404946

Add release notes for validateaddress Bech32 error detection

view details

Samuel Dobson

commit sha 5599813b80e53a1539c66625b4320ab1b4fb4848

Add lots of comments to Bech32

view details

Samuel Dobson

commit sha 88cc4810926e4f5af6757ee1b0eed61abda3d746

Modify copyright header on Bech32 code

view details

fanquake

commit sha b6487dc4ef47ec9ea894eceac25f37d0b806f8aa

Squashed 'src/minisketch/' content from commit 89629eb2c7 git-subtree-dir: src/minisketch git-subtree-split: 89629eb2c7e262b39ba489b93b111760baded4b3

view details

push time in 4 days

more