stringintech retweeted
> Bitcoin Core has spent more than a century of CPU time fuzzing individual functions and critical components (though oss-fuzz, Fuzzor, bitcoinfuzz and individual contributors), and decades of CPU time simulating small networks of full nodes under test (Antithesis, Fuzzamoto). I can’t establish causality from this alone, but my strong suspicion is that the sustained testing effort is an important reason these projects have become so robust.
I wrote a blog post on the recent exploits in the Bitcoin ecosystem, how Bitcoin Core is holding up, and how I think the community can get ahead of the models:
dergoegge.de/blog/somethings…
stringintech retweeted
One man's journey to Bitcoin Core development
Stephan (@stickies_v) on getting in to open source Bitcoin:
Earlier this year we published a special interview with Bitcoin Core developer @stickies_v describing his journey into bitcoin open-source.
Previously this had only been available to participants of the @ChaincodeLabs BOSS Challenge. We are pleased to share it is now publicly available both on our website as well as here.
Happy reading!
stringintech retweeted
Reproducible builds give you a source code -> binary mapping. Without this, any open source project needs to pick a single “trusted” person to produce binaries; where no one else can even double check that person compiled the source code they claimed to have compiled (given no reproducibility). So even if you don’t trust the contents of a binary, reproducible builds still solve the problem of a project deciding which binary to make available to end users, given its source code.
Samson Mow@ExcellionAug 20United States!
United StatesConnected via Canada App StoreLocation may be affected by a proxy or VPN.Account-level information, not a live location or per-post device.
Given the cost and difficulty, I’m not sure this is the way forward, especially with AI.
If you really think about it, all reproducible builds did was move the locus of trust (for most people, except those that verified themselves, which are few and far between).
Developer writes code and makes it reproducible. Another guy creates the reproducible builds and posts that they reproduced it. User trusts the other guy blindly.
What would actually be far better is you point your agent to a codebase and say “scan for vulns and build it for me.” That would be far more practical for everyone.
stringintech retweeted
This should be the absolute default for bitcoin-sensitive deliveries.
Replying to @Trezor
We are currently working on an Anonymous Delivery option, which we aim to have ready by September for the EU and by the end of the year for the US.
This gives you a safer way to order hardware wallets without linking the purchase to your home address or real-world identity.
- Dedicated checkout
- Use a nickname or label ID
- Select an automated parcel locker for pickup
- Unbranded packaging with a generic sender label, while the carrier only uses email or SMS to send a pickup PIN
This project is a top priority at the moment.
stringintech retweeted
Reposting the bitcoin kernel library tracking issue: github.com/bitcoin/bitcoin/i…
There are a bunch of things in flight at the moment and this provides a broad overview of things, a list of available language bindings to the library, and aspirational goals.
stringintech retweeted
I spoke with @brian_trollz about bitcoinkernel progress and other work being done to keep Core in good shape in years to come.
Replying to @BitcoinMagazine
Inside the "Kernel Project" & the Bitcoin Core Development Process w/ Core Dev Stéphan
Core developer Stéphan sits down with Bitcoin Magazine's @brian_trollz to explain how the Kernal and multiprocess projects are reshaping Bitcoin Core for long-term reliability.
stringintech retweeted
Bitcoin Core now has an interface for its consensus code - it only took a decade.
github.com/bitcoin/bitcoin/p…
stringintech retweeted
The Bitcoin Core development process and distribution model actually makes it somewhat harder to fix security issues, compared to other serious software distributors.
Take Google Chrome as an example. The CVE fixing happy path is to develop and review a fix in private, push that fix to a private repository, and then push auto-updates to any affected users (running any currently supported release). At some point in the future, you can disclose the bug, once your (built in, on by default) telemetry tells you a significant portion, if not all, of your users have upgraded.
Bitcoin Core development happens in public. While a small(er) group of developers can receive a report of a security issue, and create a patch in private; at some point, long before any end user could be running a fixed binary, this patch must become public, as part of a Pull Request, opened on github.com/bitcoin/bitcoin/.
At that point, it can be seen and reviewed by any person (attacker, regular contributor, or otherwise). This means CVEs must be fixed carefully, you can't open a Pull Request titled "p2p: fix message parsing bug that causes node to crash" with a patch and functional test attached, demonstrating how to exploit the issue; otherwise someone might decide to take down the network that afternoon, for fun.
Instead, CVE fixes are generally hidden as parts of other fixes, or refactors, however that is also non-trivial to do. While a small group of developers might be aware of the (hidden) fix, it's possible for any other contributor, or random internet person looking at GitHub, to do code review, and point out when a patch might not only be doing what it claims to be doing; undermining your ability to fix covertly. It's obviously possible to tell more (regular) contributors about a fix; depending on the severity, that comes with more tradeoffs.
The fact that CVE fixes may be hidden in refactors, or other innocuous looking changes, is also why it can be harder to backport (i.e take a fix applied to master, and apply it to the 30.x branch) these fixes to already released versions of Core. Release branches only get bug-fixes; someone will ask questions if you open a Pull Request to backport a 15 commit refactor (no-op), to an old stable branch.
The difficulty to backport is exacerbated by the fact that backports are already an obvious place for an attacker to look for covert, or exploitable bug fixes. Depending on the severity, it's quite possible that a (very) bad bug, might get fixed in master, released as part of a new major version (i.e v30.0), but not backported to other stable branches, if it's deemed too risky to try and publicly apply those changes to release branches, without making it obvious that a CVE is being patched, and risking it's exploitation, while a significant portion of the network is still vulnerable.
Note that at any point, between when the patch is merged to master, and the next major release happens (1.5-5 months), any person may publicly point out that your patch was actually doing multiple things, and undermine your covert fix. They may also reverse engineer the patch, to the point where they can exploit the issue, and do so.
All of this work must happen in public, because Bitcoin Cores distribution process, uses reproducible builds. This makes it impossible to ship private code changes in binaries (i.e uploading binaries that contain code that hasn't been made public), because any person can take the publicly available source code, and transform it into the same binaries that are available to download from bitcoincore.org. If at any point, the public source code does not match what is being distributed, alarm bells will ring. The are multiple (non-contributors) that are consistently performing the steps to check that the release source code, exactly matches the release binaries.
Bitcoin Core does not ship software with auto-update functionality, and it never will. This means we cannot "push" updates to anybody. Any user of the software, opts-in to updates, at whenever they consider it convenient. Bitcoin Core does not have any form of telemetry, and it never will. Our usage insights come from the public bitcoin network (i.e the user-agent strings of nodes), and are a rough gauge of which versions of the software are most used.
There are many trade-offs involved here, fixing security vulnerabilities in Bitcoin Core, is non-trivial, and unlike the happy-path of most other software distrobutors. However it's important that we continue to distribute software in this way.
Replying to @adam3us
They can always push security fixes in v29 like any serious software distributor does, not forcing anyone to upgrade to unwanted/unprepared for functional changes… and I should know I work for a software editor for 15+ years
stringintech retweeted
The @obscuravpn signup flow, is how paying on the internet should work (by default):
Identifier -> Options -> Lightning Invoice -> Product
stringintech retweeted
stringintech's first merged PR: github.com/bitcoin/bitcoin/p…
Congratulations! 🎉🍾🎆
stringintech retweeted
Have you, too, had enough of Core devs abusing their power to release highly reviewed software with sane defaults?
Come to my bitcoinkernel workshop at @BTCPrague's dev/hack/day and take the first step towards becoming your own tyrannical full node dev.
stringintech retweeted
Replying to @sedited_
@the_charlatan_ (+village of people) have been meticulously working on the kernel project for years, with the goal of making it possible to build alternative clients that share Bitcoin Core's consensus engine. @Stphnvlstk is hosting a PR review club this week on PR #32317, "Separate UTXO set access from validation functions", in the public libera IRC channel #bitcoin-core-pr-reviews.
bitcoincore.reviews/32317
stringintech retweeted
Replying to @davefarley77
Many problems can seem hard due to your lack of knowledge over their intrinsic difficulty. Study can fix lack of knowledge. Often you can study just in time. Don't be intimidated by what you don't know.




















