profile
viewpoint
Wladimir J. van der Laan laanwj The Netherlands * freenode: wumpus        * mastodon: orionwl@x0f.org    * gpg fingerprint: 71A3 B167 3540 5025 D447 E8F2 7481 0B01 2346 C9A6

bitcoin-core/bitcoin-maintainer-tools 48

External repository for Bitcoin Core related maintenance tools

gcwnow/linux 46

Linux kernel for GCW Zero (Ingenic JZ4770)

laanwj/bitcoin-submittx 46

Stand-alone Bitcoin transaction submission tool

laanwj/bitcoin-qt 45

Original Bitcoin-Qt repository. No longer used, Bitcoin-Qt was merged upstream.

laanwj/bitcoin 27

Laanwj's Bitcoin Core fork - see README.md on "readme" branch

bitcoinmeetups/bitcoinmeetups.github.com 13

Bitcoin Challenges, Meetups and Services, Exchange, Giveaways, Tipping, Ethereum, Counterparty, Dogeparty, ChangeTip, Tokens, Skype Groups, Lists, Projects, Sidechains, Maidsafe, CoinFactory, Git, Open Source, Incubator, Mastercoin, DAC, DAO, Bitshares, BitcoinX, Open-Transactions, Ripple, Bitcoin, Litecoin, Altcoins

laanwj/ast_pickler 4

Proof of concept serialization library that generates the Python code to construct objects.

laanwj/blockdb-troubleshoot 3

Bitcoin block database troubleshooting tools

pull request commentbitcoin/bitcoin

[WIP DONOTMERGE] Replace boost with C++17

@MarcoFalke CI is happily green now. Do you want to make any further changes before removing the draft status, or do you plan to submit these changes as individual PRs?

I'm particularly looking forward to the std::optional change. I'm a bit afraid that mixing boost::optional and std::optional might lead to some unnecessary confusion.

MarcoFalke

comment created time in 8 minutes

pull request commentbitcoin/bitcoin

build: The vcpkg tool has introduced a proper way to use manifests

Finally got around to running the build tests to compare the build durations using the original vcpkg install mechanism and the new vcpkg manifest mechanism.

The original way seems to be a few minutes faster but not a smoking gun for a 10 minute increase. Perhaps the manifest + the removal of the set(VCPKG_BUILD_TYPE release) could account for it. The VCPKG_BUILD_TYPE setting should be put back and I'll create a PR for that.

Build runs with vcpkg installed from command line: Average duration approx. 25 minutes.

Run 1:
c:\Tools\vcpkg>vcpkg install --triplet x64-windows-static berkeleydb boost-filesystem boost-multi-index boost-process boost-signals2 boost-test boost-thread libevent[thread] zeromq double-conversion sqlite3 -> 14:12
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msvc-autogen.py
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msbuild /m bitcoin.sln /p:Configuration=Release /p:Platform=x64 /t:clean,build -> 10:37

Run 2:
c:\Tools\vcpkg>vcpkg install --triplet x64-windows-static berkeleydb boost-filesystem boost-multi-index boost-process boost-signals2 boost-test boost-thread libevent[thread] zeromq double-conversion sqlite3 -> 16:10
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msvc-autogen.py
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msbuild /m bitcoin.sln /p:Configuration=Release /p:Platform=x64 /t:clean,build -> 09:40

Run 3:
c:\Tools\vcpkg>vcpkg install --triplet x64-windows-static berkeleydb boost-filesystem boost-multi-index boost-process boost-signals2 boost-test boost-thread libevent[thread] zeromq double-conversion sqlite3 -> 15:29
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msvc-autogen.py
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msbuild /m bitcoin.sln /p:Configuration=Release /p:Platform=x64 /t:clean,build -> 09:36

Run 4:
c:\Tools\vcpkg>vcpkg install --triplet x64-windows-static berkeleydb boost-filesystem boost-multi-index boost-process boost-signals2 boost-test boost-thread libevent[thread] zeromq double-conversion sqlite3 -> 15:12
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msvc-autogen.py
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msbuild /m bitcoin.sln /p:Configuration=Release /p:Platform=x64 /t:clean,build -> 09:39

Build runs with vcpkg installed using manifest mechanism: Average duration approx. 28 minutes.

Run 1:
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msvc-autogen.py
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msbuild /m bitcoin.sln /p:Configuration=Release /p:Platform=x64 /t:clean,build -> 26:58

Run 2:
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msvc-autogen.py
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msbuild /m bitcoin.sln /p:Configuration=Release /p:Platform=x64 /t:clean,build -> 27:00

Run 3:
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msvc-autogen.py
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msbuild /m bitcoin.sln /p:Configuration=Release /p:Platform=x64 /t:clean,build -> 27:15

Run 4:
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msvc-autogen.py
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msbuild /m bitcoin.sln /p:Configuration=Release /p:Platform=x64 /t:clean,build -> 30:31

Run 5:
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msvc-autogen.py
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msbuild /m bitcoin.sln /p:Configuration=Release /p:Platform=x64 /t:clean,build -> 30:31

Run 6:
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msvc-autogen.py
c:\Dev\github\sipsorcery_bitcoin\build_msvc>msbuild /m bitcoin.sln /p:Configuration=Release /p:Platform=x64 /t:clean,build -> 24:51
sipsorcery

comment created time in 9 minutes

issue commentbitcoin/bitcoin

Question: How to debug using docker & CI shell script?

Or you could write a Dockerfile with the desired environment and mount the source there.

kiminuo

comment created time in 36 minutes

PR merged bitcoin/bitcoin

[backport] wallet: Do not treat default constructed types as None-type Backport

Github-Pull: #20410 Rebased-From: fac4e136fa3d0fab7fde900a6be921313e16e7a6

Github-Pull: #20410 Rebased-From: fa69c2c78455fd0dc436018fece9ff7fc83a180d

+21 -26

0 comment

3 changed files

MarcoFalke

pr closed time in 36 minutes

push eventbitcoin/bitcoin

MarcoFalke

commit sha fac4e136fa3d0fab7fde900a6be921313e16e7a6

refactor: Change pointer to reference because it can not be null

view details

MarcoFalke

commit sha fa69c2c78455fd0dc436018fece9ff7fc83a180d

wallet: Do not treat default constructed types as None-type

view details

MarcoFalke

commit sha d47d16025e21d6e59da102f8ee965965fd9bbb34

Merge #20485: [backport] wallet: Do not treat default constructed types as None-type fa69c2c78455fd0dc436018fece9ff7fc83a180d wallet: Do not treat default constructed types as None-type (MarcoFalke) fac4e136fa3d0fab7fde900a6be921313e16e7a6 refactor: Change pointer to reference because it can not be null (MarcoFalke) Pull request description: Github-Pull: #20410 Rebased-From: fac4e136fa3d0fab7fde900a6be921313e16e7a6 Github-Pull: #20410 Rebased-From: fa69c2c78455fd0dc436018fece9ff7fc83a180d Top commit has no ACKs. Tree-SHA512: 05c3fe29677710b57dcc482fd529b0ab79475519f60f9cfde19f956c4e2212d09b042af458ec4f1272c581360ce841b735dca4df144e0798b3ccf16547de9cd0

view details

push time in 36 minutes

PR merged bitcoin/bitcoin

[backport] test: Fix intermittent issue in mempool_compatibility Backport

Github-Pull: #20456 Rebased-From: fa05d19bd6ba619bb3f9aabc05c439cd18d34544

+2 -1

0 comment

1 changed file

MarcoFalke

pr closed time in 38 minutes

push eventbitcoin/bitcoin

MarcoFalke

commit sha fa05d19bd6ba619bb3f9aabc05c439cd18d34544

test: Fix intermittent issue in mempool_compatibility

view details

MarcoFalke

commit sha 4e964094dbcbbbf8e587663a3ef3a85c075f4599

Merge #20486: [backport] test: Fix intermittent issue in mempool_compatibility fa05d19bd6ba619bb3f9aabc05c439cd18d34544 test: Fix intermittent issue in mempool_compatibility (MarcoFalke) Pull request description: Github-Pull: #20456 Rebased-From: fa05d19bd6ba619bb3f9aabc05c439cd18d34544 Top commit has no ACKs. Tree-SHA512: c07ed3ffab315da2bf70427882e2da8216964fef97dd538d7c46c5d5b3563b0732626ffbe4b0e19537ad49a8542eedb3c08850cccacdef466f24582defe99d22

view details

push time in 38 minutes

issue commentbitcoin/bitcoin

Question: How to debug using docker & CI shell script?

The CIs compile from a make dist tarball, so if you want to modify the code, you'll need to modify the one in ./ci/scratch/... inside the docker

kiminuo

comment created time in 40 minutes

issue openedbitcoin/bitcoin

Question: How to debug using CI shell script?

Hi,

my PR #19245 fails on several platforms so I have attempted to run on my Ubuntu 20.04:

FILE_ENV="./ci/test/00_setup_env_native_tsan.sh" ./ci/test_run_all.sh

as per instructions in https://github.com/bitcoin/bitcoin/tree/master/ci.

I can reproduce issue on CI which is great news. However, I would love to modify source code and re-run the FILE_ENV="./ci/test/00_setup_env_native_tsan.sh" ./ci/test_run_all.sh script or attach to docker to run a failing functional test again so that I can debug it easier.

Does anybody have a workflow for this?

Notes:

  • I've tried docker attach <container ID> but it's not possible to simply execute test/functional/wallet_hd.py as it fails in that docker instance because it is supposed to be run somehow differently (that's as much as I gather from studying ci/test_run_all.sh).

created time in an hour

push eventbitcoin-core/gitian.sigs

Hennadii Stepanov

commit sha ef9671b039304e749e73308604c8d033bfa88d79

hebasto 0.21.0rc2 unsigned

view details

Michael Ford

commit sha 8cc2a4a99713cd12afd5adee20b829a2c3ddab24

Merge pull request #1317 from hebasto/0.21.0rc2-unsigned hebasto 0.21.0rc2 unsigned (LXC 4.0.2)

view details

push time in an hour

pull request commentbitcoin/bitcoin

rpc: Validate -rpcauth arguments

Additional fields is not necessarily an error.

@luke-jr what do you suggest? Ignore the whole argument? Just use the the first 3 fields? Not sure about the debug log since it's a sensitive value.

promag

comment created time in an hour

Pull request review commentbitcoin/bitcoin

[WIP DONOTMERGE] Replace boost with C++17

 class DescribeWalletAddressVisitor : public boost::static_visitor<UniValue>             UniValue subobj(UniValue::VOBJ);             UniValue detail = DescribeAddress(embedded);             subobj.pushKVs(detail);-            UniValue wallet_detail = boost::apply_visitor(*this, embedded);+            UniValue wallet_detail = std::visit(*this, embedded);

resolved, now that a52ecc9 is merged

MarcoFalke

comment created time in an hour

Pull request review commentbitcoin/bitcoin

[WIP DONOTMERGE] Replace boost with C++17

 static UniValue listunspent(const JSONRPCRequest& request)             std::unique_ptr<SigningProvider> provider = pwallet->GetSolvingProvider(scriptPubKey);             if (provider) {                 if (scriptPubKey.IsPayToScriptHash()) {-                    const CScriptID& hash = CScriptID(boost::get<ScriptHash>(address));+                    const CScriptID& hash = CScriptID(std::get<ScriptHash>(address));

resolved, now that a52ecc9 is merged

MarcoFalke

comment created time in an hour

pull request commentbitcoin-core/secp256k1

add `secp256k1_ec_pubkey_cmp` method

sigh, ok, I guess we cannot support comparisons in this library

I'm not sure that sortedmulti stops us from exporting a comparison function that is compatible with compressed keys. This can be helpful for new applications which won't use the uncompressed serialization anyway, e.g., sorting keys in multisig. Moreover, orderings are in general helpful for some data structures, e.g., if you want to binary searches in a large set of keys.

A sad thing is that this ordering won't be compatible with the lexicographical ordering on x-only keys...

apoelstra

comment created time in an hour

PR opened bitcoin/bitcoin

draft: Add syscall sandboxing using seccomp-bpf (Linux secure computing mode)

Add experimental syscall sandboxing using seccomp-bpf (Linux secure computing mode).

Enable filtering of system calls using seccomp-bpf: allow only explicitly allowlisted (expected) syscalls to be called.

The syscall sandboxing implemented in this PR is an experimental feature currently available only under Linux x86-64. It is disabled by default.

The feature is enabled via the configure-flag --enable-syscall-sandbox.

In this implementation the allowed syscalls are defined on a per thread basis.

This feature has two modes of operation:

  • Debug mode (default): If a non-allowlisted syscall is called a debug handler will be invoked. Debug info will be printed (ERROR: The syscall "execve" (syscall number 59) is not allowed by the syscall sandbox in thread "msghand". Please report. Exiting.) and std::terminate is called.
  • Kill mode: If a non-allowlisted syscall is called the kernel will immediately kill the offending thread. This is an experimental mode and is currently enabled via setting the environment variable EXPERIMENTAL_SYSCALL_SANDBOX_MODE_KILL_THREAD.

I've used this feature for roughly six months now (in the debug mode) and I find it to be a helpful testing/debugging addition which makes it much easier to do reason about the actual capabilities required of each thread in Bitcoin Core.

About seccomp and seccomp-bpf:

In computer security, seccomp (short for secure computing mode) is a facility in the Linux kernel. seccomp allows a process to make a one-way transition into a "secure" state where it cannot make any system calls except exit(), sigreturn(), and read() and write() to already-open file descriptors. Should it attempt any other system calls, the kernel will terminate the process with SIGKILL or SIGSYS. In this sense, it does not virtualize the system's resources but isolates the process from them entirely.

[…]

seccomp-bpf is an extension to seccomp that allows filtering of system calls using a configurable policy implemented using Berkeley Packet Filter rules. It is used by OpenSSH and vsftpd as well as the Google Chrome/Chromium web browsers on Chrome OS and Linux. (In this regard seccomp-bpf achieves similar functionality, but with more flexibility and higher performance, to the older systrace—which seems to be no longer supported for Linux.)

+683 -7

0 comment

30 changed files

pr created time in 2 hours

Pull request review commentbitcoin-core/secp256k1

make test count iteration configurable by environment variable

 int main(int argc, char **argv) {     /* find iteration count */     if (argc > 1) {         count = strtol(argv[1], NULL, 0);+    } else {+        const char* env = getenv("SECP256K1_TEST_ITERS");+        if (env) {+            count = strtol(env, NULL, 0);+        }+    }+    if (count == 0) {

Maybe just

    if (count <= 0) {
apoelstra

comment created time in 2 hours

issue commentbitcoin/bitcoin

build error with secp256k1 on OSX

Fixed in #20469.

Yihen

comment created time in 2 hours

pull request commentbitcoin/bitcoin

refactor: Treat CDataStream bytes as uint8_t

Concept ACK

MarcoFalke

comment created time in 2 hours

pull request commentbitcoin/bitcoin

Erlay: bandwidth-efficient transaction relay protocol

<!--cf906140f33d8803c4a75a2196329ecb--> 🐙 This pull request conflicts with the target branch and needs rebase.

<sub>Want to unsubscribe from rebase notifications on this pull request? Just convert this pull request to a "draft".</sub>

naumenkogs

comment created time in 2 hours

pull request commentbitcoin/bitcoin

util: use stronger-guarantee rename method

@luke-jr that's right, but #20460 is just an issue/idea, without a patch (yet)...

vasild

comment created time in 2 hours

pull request commentbitcoin/bitcoin

test: Implicitly sync after generate* to preempt races and intermittent test failures

<!--cf906140f33d8803c4a75a2196329ecb--> 🐙 This pull request conflicts with the target branch and needs rebase.

<sub>Want to unsubscribe from rebase notifications on this pull request? Just convert this pull request to a "draft".</sub>

MarcoFalke

comment created time in 2 hours

pull request commentbitcoin/bitcoin

build: use C++17 in depends

I suppose for that version we can also just use c++17 in not need the 1z temporary name.

Yep, we will be able to. 5.15.x understands -c++std c++17.

fanquake

comment created time in 2 hours

issue commentrust-embedded/wg

Panic handler binary size bloat

Is there a solution for this now that RFC-2070 has been closed?

japaric

comment created time in 2 hours

issue commentbitcoin/bitcoin

Add unit tests for eviction logic

This issue is addressed in #20477 ("test/net: Add unit testing of node eviction logic").

practicalswift

comment created time in 2 hours

pull request commentbitcoin/bitcoin

util: Avoid invalid integer negation in FormatMoney and ValueFromAmount

@luke-jr Do you mean in FormatMoney? Leaving the sign in quotient would change the output compared to how it works today, no? This PR is meant as a pure refactoring (aside from the avoidance of the invalid integer negation): I don't want to introduce any change to the output format in this PR.

practicalswift

comment created time in 2 hours

pull request commentbitcoin/bitcoin

build: Replace genisoimage with xorriso

Concept ACK.

dongcarl

comment created time in 3 hours

issue commentbitcoin-core/HWI

Bitbox02 Not working for multisig BIP48 derivations

Maybe fixed with 1.2.1-RC1. Gotta check.

gabridome

comment created time in 3 hours

issue commentbitcoin/bitcoin

macOS 11 (Big Sur) visual bugs

Could be filed in the gui repo?

https://github.com/bitcoin-core/gui/issues/new?assignees=&labels=Bug&template=bug_report.md&title=macOS%2011%20(Big%20Sur)%20visual%20bugs&body=Nighy%20build%20on%20Big%20Sur%20%22dark%20mode%22:Screenshot%202020-11-24%20at%2020%2013%2004Self%20compiled%20on%20Big%20Sur%20%22night%20mode%22%20with%20depends:Screenshot%202020-11-24%20at%2020%2010%2038Two%20major%20issues:%20[%20]%20disabling%20the%20night%20mode%20color%20palette%20or%20adopt%20it%20correctly%20(probably%20a%20QT%20upstream%20issue)%20[%20]%20get%20rid%20of%20the%20white%20glitch%20in%20the%20debug-window%20tab-bar-menuQt%20upstream%20issue:%20https://bugreports.qt.io/browse/QTBUG-85546

jonasschnelli

comment created time in 4 hours

more