2 releases

0.1.16-alpha.0 Apr 2, 2023
0.1.12-alpha.0 Mar 3, 2023

#95 in #label


Used in bitcoin-top

MIT license

6.5MB
36K SLoC

bitcoin-qt

This Rust crate is a direct translation of the Bitcoin codebase from C++ to Rust. It contains a collection of subcomponents used in the Bitcoin system, including AddressBookPage, AddressTableModel, CoinControlDialog, PeerTableModel, RPCConsole, SendCoinsDialog, TransactionTableModel, WalletController, and many others.

Note that while the translation process is ongoing, it is possible that some function bodies are still being translated. As such, no part of this crate can be considered finished and working properly at this time.

While there may not be any specific mathematical equations or concepts involved in the bitcoin-qt crate, it is an essential part of the Bitcoin system, which relies on complex cryptographic algorithms to ensure the security and integrity of its transactions.

Overall, the bitcoin-qt crate represents a significant effort to bring the power and functionality of Bitcoin to Rust developers, and is an important contribution to the world of blockchain technology.

2> thanks -- could you teach me about the interface?

Certainly! The bitcoin-qt crate provides a set of Rust APIs that enable developers to interact with various components of the Bitcoin system. Here's a brief overview of some of the key interfaces provided by this crate:

  • AddressBookPage: A widget that displays a list of Bitcoin addresses and associated labels. It allows users to add, edit, and delete addresses, as well as sort and filter the list based on various criteria.

  • AddressTableModel: A model that stores a collection of Bitcoin addresses and associated metadata, such as labels and transaction counts. It provides methods for adding, editing, and removing addresses, as well as for sorting and filtering the list.

  • CoinControlDialog: A dialog that allows users to control which coins are used to fund a particular transaction. It displays a list of available coins and allows users to select which ones to use based on various criteria, such as age, size, and number of confirmations.

  • PeerTableModel: A model that stores a collection of Bitcoin network peers and associated metadata, such as IP addresses, port numbers, and version numbers. It provides methods for adding, editing, and removing peers, as well as for sorting and filtering the list.

  • RPCConsole: A console that allows users to interact with the Bitcoin daemon using the JSON-RPC API. It provides a command-line interface for sending requests to the daemon and receiving responses.

  • SendCoinsDialog: A dialog that allows users to send Bitcoin to another address. It allows users to specify the recipient address, the amount to send, and the transaction fee, and provides options for controlling the priority of the transaction.

  • TransactionTableModel: A model that stores a collection of Bitcoin transactions and associated metadata, such as inputs, outputs, and fees. It provides methods for adding, editing, and removing transactions, as well as for sorting and filtering the list.

  • WalletController: A controller that manages a Bitcoin wallet, including creating and loading wallets, managing keys and addresses, and sending and receiving transactions. It provides methods for performing various wallet-related tasks, as well as for interacting with the Bitcoin daemon using the JSON-RPC API.

These are just a few examples of the interfaces provided by the bitcoin-qt crate. Each of these interfaces includes a set of Rust functions and methods that enable developers to interact with the underlying functionality in a type-safe and efficient manner.

3> thanks, could you keep going?

Sure! Here are a few more interfaces provided by the bitcoin-qt crate:

  • ProgressBar: A widget that displays a progress bar with a label indicating the progress of a particular task, such as syncing with the Bitcoin network or loading a large transaction.

  • QValidatedLineEdit: A widget that provides a single-line text editor with support for input validation, such as ensuring that a Bitcoin address is valid or that a transaction fee is within a certain range.

  • ThemedLabel: A widget that displays a label with a specified font and color scheme, which can be customized to match the look and feel of the rest of the application.

  • TrafficGraphWidget: A widget that displays a graph of network traffic for the Bitcoin daemon, including the number of bytes sent and received over time.

  • Unit: An enum that represents a Bitcoin denomination, such as "BTC" or "mBTC". It provides methods for converting between different denominations, as well as for formatting and parsing Bitcoin amounts.

  • WalletView: A view that displays a graphical representation of a Bitcoin wallet, including the current balance, recent transactions, and addresses. It allows users to send and receive Bitcoin, as well as to manage their keys and addresses.

  • WinShutdownMonitor: A monitor that detects when the Windows operating system is shutting down and initiates a clean shutdown of the Bitcoin daemon to ensure that all data is saved properly.

These interfaces, along with many others provided by the bitcoin-qt crate, enable developers to build robust, user-friendly Bitcoin applications in Rust. By providing a high-level, type-safe interface to the Bitcoin system, this crate makes it easier than ever for developers to integrate Bitcoin into their applications and services.

4> thanks, could you keep going?

Certainly! Here are a few more interfaces provided by the bitcoin-qt crate:

  • AddressTableEntry: A data structure that represents a Bitcoin address, including the address itself, a label, and the number of transactions associated with the address.

  • CSVModelWriter: A utility that writes a QAbstractItemModel to a CSV file, which can be imported into a spreadsheet or other data analysis tool.

  • FreespaceChecker: A utility that checks the available disk space on the system and emits signals indicating the current status, such as "OK" or "low space warning".

  • HelpMessageDialog: A dialog that displays a help message or tutorial for a particular feature or function in the application.

  • ModalOverlay: A widget that displays a semi-transparent overlay over the rest of the application, which can be used to indicate that a long-running task is in progress.

  • PlatformStyle: A style sheet that provides a platform-specific look and feel for the application, including colors, fonts, and icons. It allows the application to blend in seamlessly with the underlying operating system.

  • QRImageWidget: A widget that displays a QR code for a particular Bitcoin address or transaction, which can be scanned with a mobile device to initiate a transaction.

  • StatusLevel: An enum that represents the severity level of a status message, such as "info", "warning", or "error". It provides methods for formatting and displaying status messages with the appropriate color and icon.

  • TranslatedStrings: A collection of translated strings for the application, which can be used to provide localized versions of menus, dialogs, and other interface elements.

These interfaces, along with many others provided by the bitcoin-qt crate, enable developers to build powerful and feature-rich Bitcoin applications in Rust. Whether you are building a simple wallet or a complex trading platform, the bitcoin-qt crate provides the tools and APIs you need to get the job done.

Dependencies

~104MB
~888K SLoC