CD37: building software from source code with @achow101 and @craigraw
Sep 7, 2021
auto_awesome
In this episode, @achow101 and @craigraw discuss building software from source code, reproducible builds, reducing trust, coin selection, coin control, and coinjoin. They emphasize the importance of reproducible builds, touch upon challenges faced, and highlight the complexities of coin selection in Bitcoin wallets and transactions. They also mention the significance of preserving privacy while grouping specific UTXOs together and invite listeners to watch them work on Core and other Bitcoin projects every Monday on Twitch.
Reproducible builds face challenges due to lack of documentation, outdated instructions, and dependency issues, but projects like Geeks and NixOS are working towards improving reproducibility and increasing trust in software.
Coin selection in Bitcoin wallets requires considering various factors, such as fees, privacy, and future wallet state, and innovation and user education are crucial in this area.
Simulated coin joins may introduce uncertainty to transaction analysis, but integrating solutions like coordinated coin joins or actual coin join implementations can significantly enhance privacy for Bitcoin users.
Deep dives
El Salvador makes history by adopting Bitcoin as legal currency
El Salvador has become the first country to officially put Bitcoin on its balance sheet and hold it in reserves. Citizens can now use Bitcoin for everyday transactions, including buying a cup of coffee, paying taxes, and more. The government added almost 21 million dollars worth of Bitcoin to its balance sheet, causing a price increase and generating excitement among Bitcoin insiders. Other countries are closely watching this test case, with Panama among those showing interest. However, concerns from the IMF and World Bank have been raised.
Challenges in achieving reproducible builds
Reproducible builds, while important for ensuring software integrity, face challenges. Lack of documentation, outdated instructions, and dependency issues can hinder the process. Achieving perfect reproducibility across different systems can be daunting, as small variations in build processes or system dependencies can result in different outcomes. However, projects like Geeks and NixOS are working towards reproducible builds for open-source software. Encouraging community involvement and offering incentives for reproducing builds can help improve reproducibility and increase trust in software.
The complexity of coin selection in Bitcoin wallets
Coin selection in Bitcoin wallets is a challenging task. Different strategies lead to different results, impacting factors such as fees, privacy, and future wallet state. First-in-first-out (FIFO) selection, for example, can lead to wallet fragmentation and dust UTXOs. Achieving optimal coin selection requires considering various user goals, privacy concerns, and UTXO grouping. Some wallet developers advocate for multiple wallet files to separate UTXOs, while others are exploring coinjoin integration to enhance privacy. Overall, coin selection remains an area where innovation and user education are crucial.
Simulated coin joins and privacy considerations
Simulated coin joins, while providing some measure of transaction doubt, may not offer the same level of privacy as traditional coin joins. Users should be aware that simulated coin joins do not add anonymity, but rather introduce uncertainty to transaction analysis. It's important to note that if wallet behaviors are known and patterns can be identified, the effectiveness of simulated coin joins may be limited. However, integrating solutions like coordinated coin joins or actual coin join implementations can significantly enhance privacy for Bitcoin users.
Coin Join Feature in Sparrow Wallet
The podcast episode discusses a new feature in the Sparrow wallet that allows two users to perform a coin join transaction directly between themselves. This feature aims to enhance privacy by ensuring that only the two participants are involved in the transaction. The speaker emphasizes the importance of increasing usage of this feature, as it can have a significant impact on privacy. It is mentioned that the Sparrow wallet integrates the Java client from the Samurai wallet team, which enables smooth integration of the coin join functionality. Despite the challenges faced during integration, the speaker highlights the benefits of using the well-developed Java client and expresses confidence in the quality and security of the codebase.
Building Sparrow Wallet and Challenges of Coin Join Integration
The podcast episode delves into the process of building the Sparrow wallet and specifically addresses the challenges encountered during the integration of the coin join functionality. The speaker highlights the need to resolve overlapping code bases when combining different wallet implementations. Additionally, the discussion touches upon the compatibility issues arising from the use of different versions of Java and the efforts required to make the two codebases work together seamlessly. Despite these challenges, the speaker expresses satisfaction in successfully incorporating the branch and bound coin selection algorithm from Bitcoin Core into the Sparrow wallet. Furthermore, the episode explores the differences in perspectives between Sparrow's approach, which prioritizes user involvement and knowledge, and other wallets that prioritize simplicity and automation.