Fourmilog: None Dare Call It Reason

Announcing: Fourmilab Blockchain Tools

Wednesday, October 20, 2021 16:38

Fourmilab Blockchain Tools provide a variety of utilities for users, experimenters, and researchers working with blockchain-based cryptocurrencies such as Bitcoin and Ethereum. These are divided into two main categories.

Bitcoin and Ethereum Address Tools

These programs assist in generating, analysing, archiving, protecting, and monitoring addresses on the Bitcoin and Ethereum blockchains. They do not require you run a local node or maintain a copy of the blockchain, and all security-related functions may be performed on an "air-gapped" machine with no connection to the Internet or any other computer.

  • Blockchain Address Generator creates address and private key pairs for both the Bitcoin and Ethereum blockchains, supporting a variety of random generators, address types, and output formats.

  • Multiple Key Manager allows you to split the secret keys associated with addresses into n multiple parts, from which any k ≤ n can be used to reconstruct the original key, allowing a variety of secure custodial strategies.

  • Paper Wallet Utilities includes a Paper Wallet Generator which transforms a list of addresses and private keys generated by the Blockchain Address Generator or parts of keys produced by the Multiple Key Manager into a HTML file which may be printed for off-line "cold storage", and a Cold Storage Wallet Validator that provides independent verification of the correctness of off-line copies of addresses and keys.

  • Cold Storage Monitor connects to free blockchain query services to allow periodic monitoring of a list of cold storage addresses to detect unauthorised transactions which may indicate they have been compromised.

Bitcoin Blockchain Analysis Tools

This collection of tools allows various kinds of monitoring and analysis of the Bitcoin blockchain. They do not support Ethereum. These programs are intended for advanced, technically-oriented users who run their own full Bitcoin Core node on a local computer. Note that anybody can run a Bitcoin node as long as they have a computer with the modest CPU and memory capacity required, plus the very large (and inexorably growing) file storage capacity to archive the entire Bitcoin blockchain. You can run a Bitcoin node without being a "miner", nor need you expose your computer to external accesses from other nodes unless you so wish.

These tools are all read-only monitoring and analysis utilities. They do not generate transactions of any kind, nor do they require unlocked access to the node owner's wallet.

  • Address Watch monitors the Bitcoin blockchain and reports any transactions which reference addresses on a "watch list", either deposits to the address or spending of funds from it. The program may also be used to watch activity on the blockchain, reporting statistics on blocks as they are mined and published.

  • Confirmation Watch examines blocks as they are mined and reports confirmations for a transaction as they arrive.

  • Transaction Fee Watch analyses the transaction fees paid to include transactions in blocks and the reward to miners and produces real-time statistics and log files which may be used to analyse transaction fees over time.


You can download the complete source code distribution, including ready-to-run versions of all of the programs, from the Fourmilab Blockchain Tools home page.

All of this software is licensed under the Creative Commons Attribution-ShareAlike license.

Please see the Fourmilab Blockchain Tools User Guide [PDF] for details or read the complete source code [PDF] in Perl and Python written using the Literate Programming methodology with the nuweb system.


Flashback Version 1.8 Update Released

Saturday, July 31, 2021 12:45

I have just posted an update, version 1.8, of Flashback, my instant directory tree snapshot utility for Linux and other Unix-like systems. The major change in this release is fixing problems which occurred with file names that contain spaces and characters which have special meanings to the shell, including horrors such as:

File with rogue's gallery: ~`#$&*()\|[]{};"'''<>?!
In addition, Flashback can be configured to use a variety of file compression utilities such as gzip, bzip2, and xz, automatically back up to removable media such as USB drives when inserted, and mirror backups on remote systems with scp.


UNUM 3.2: Updated to Unicode 13

Saturday, May 16, 2020 13:26

Version 3.2 of UNUM is now available for downloading. Version 3.2 incorporates the Unicode 13.0.0 standard, released on March 10th, 2020. The update to Unicode adds support for four scripts for languages, additional CJK (Chinese, Japanese, and Korean) symbols, 55 new emoji, and symbols from legacy computer and teletext systems and Creative Commons licenses. There are a total of 143,859 characters in 13.0.0, of which 5930 are new since 12.1.0. (UNUM also supports an additional 65 ASCII control characters, which are not assigned graphic code points in the Unicode database.)

This is an incremental update to Unicode. There are no structural changes in how characters are defined in the databases, and other than the presence of the new characters, the operation of UNUM is unchanged.

UNUM also contains a database of HTML named character references (the sequences like “&lt;” you use in HTML source code when you need to represent a character which has a syntactic meaning in HTML or which can't be directly included in a file with the character encoding you're using to write it). There have been no changes to this standard since UNUM 2.2 was released in September 2017, so UNUM 3.2 will behave identically when querying these references except, of course, that numerical references to the new Unicode characters will be interpreted correctly.

UNUM Documentation and Download Page


ISBNiser and ISBNquest Version 2.1 Released

Saturday, May 9, 2020 20:57

I have just posted version 2.1 of the ISBNiser utility and ISBNquest Web resource. These are utilities which validate, inter-convert, and properly format all varieties of International Standard Book Number (ISBN) specifications. Both utilities have been updated to use the most recent version of the ISBN Range database (Wed, 6 May 2020 14:51:46 CEST), replacing the October 2018 version previously used. The range database is used to parse ISBNs into their components (Prefix, Registration group, Registrant, Publication, and Checksum) and used by these tools to re-format ISBNs with the correct punctuation.

ISBNquest has been updated to use the new Amazon Product Advertising API 5.0 to look up books on Amazon and find title, author, and other information for a book from its ISBN. This replaces the 4.0 version of the API which has been retired and no longer works. The mechanism used to locate Kindle editions of print books has been completely redesigned and should now work for many more (but, due to limitations in the API, not all) books.

There are no user interface changes in either of these utilities, and updating to them should be completely transparent for all human and programmatic queries.


The Fourmilab Reading List Returns to its Roots

Tuesday, April 21, 2020 16:00

When I began the Fourmilab Reading List in January 2001, it was just that: a list of every book I'd read, updated as I finished books, without any commentary other than, perhaps, availability information and sources for out-of-print works or those from publishers not available through As the 2000s progressed, I began to add remarks about many of the books, originally limited to one paragraph, but eventually as the years wore on, expanding to full-blown reviews, some sprawling to four thousand words or more and using the book as the starting point for an extended discussion on topics related to its content.

This is, sadly, to employ a term I usually despise, no longer sustainable. My time has become so entirely consumed by system administration tasks on two Web sites, especially one in which I made the disastrous blunder of basing upon WordPress, the most incompetently and irresponsible piece I have ever encountered in more than fifty years of programming; shuffling papers, filling out forms, and other largely government-mandated bullshit (Can I say that here? It's my site! You bet I can.); and creating content for and participating in discussions on the premier anti-social network on the Web for intelligent people around the globe with wide-ranging interests, I simply no longer have the time to sit down, compose. edit, and publish lengthy reviews (in three locations: in the Reading List, here, and at of every book I read.

But that hasn't kept me from reading books, which is my major recreation and escape from the grinding banality which occupies most of my time. As a consequence, I have accumulated, as of the present time, a total of no fewer than twenty-four books I've finished which are on the waiting list to be reviewed and posted here, and that doesn't count a few more I've set aside before finishing the last chapter and end material so as not to make the situation even worse and compound the feeling of guilt.

I will no longer post books I've read here, except those for which I write full reviews. If you'd like to keep up with new books as they are posted on the Reading List, subscribe to its RSS feed.