Skip to content

Instantly share code, notes, and snippets.

@jamesob
jamesob / 00_output.txt
Last active July 11, 2025 19:44
Output creation by address type over the last 30 days
Connected to Bitcoin node. Current block height: 905108
Analyzing last 12960 blocks...
Starting from block: 00000000000000000000e9900f08f6dc109762d09d4d0b31b8ece5ab35a5401e
Processing block 12960/12960...
Processed 12960 blocks
============================================================
Bitcoin Address Type Analysis
============================================================
Total Value Analyzed: 53757862.95514309 BTC
@jamesob
jamesob / bench.cpp
Last active April 15, 2025 18:03
Sig validation vs. hash time
#include <iostream>
#include <vector>
#include <random>
#include <chrono>
#include <iomanip>
#include <cassert>
// Include libsecp256k1
#include <secp256k1.h>
#include <iostream>
#include <format>
#include <cstring>
#include <vector>
#include <thread>
#include <random>
#include <chrono>
#include <secp256k1.h>
constexpr size_t NUM_KEYS = 6'500'000;
@jamesob
jamesob / 2024-cov-prefs.md
Created December 13, 2024 01:58
Covenants support 2024

Prelude

Soft forks tighten the rule set of what transactions are valid. Additional opcodes allow existing owners of coins to put additional constraints on how those coins are spent.

Many covenant-enabling opcodes are nothing more than "new", more specific sighashes[^sigh]. Other opcodes allow access to information about a spending transaction.

None of this is conceptually objectionable. People should be able to put constraints on their property. But first we must do no harm.

The concrete issues, when gauging additional script functionality, are:

@jamesob
jamesob / install-steps.sh
Last active July 23, 2025 12:34
Getting to Android and react-native development in Arch Linux (2024)
# This (very scant) guide allows you to do Android and react-native development on Linux by
# running the android emulator in a container.
# install yay via AUR
git clone https://aur.archlinux.org/yay.git && cd yay && makpkg -si
# install all android dev packages per https://wiki.archlinux.org/title/Android
yay -Sy android-sdk-cmdline-tools-latest android-sdk-build-tools android-sdk-platform-tools android-platform
# add to .zshrc
$ make clean && ./configure && make clean && make && SECP256K1_BENCH_ITERS=200000 ./bench verify sign
Benchmark , Min(us) , Avg(us) , Max(us)
ecdsa_verify , 71.5 , 71.5 , 71.5
ecdsa_sign , 54.8 , 54.9 , 54.9
schnorrsig_sign , 41.9 , 41.9 , 41.9
schnorrsig_verify , 72.6 , 72.6 , 72.6
@jamesob
jamesob / load-all.js
Created September 30, 2023 10:20
Load all comments in a Github PR
// Open Inspect -> Console, copy-paste this in.
function load_all_gh_comments() {
let buttons = Array.from(document.querySelectorAll('button'));
let get_with_text = (text) => buttons.filter((b) => b.textContent.includes(text));
let load_more_buttons = get_with_text("Load more");
let nothing_loading = get_with_text("Loading…").length === 0;
if (load_more_buttons.length === 0 && nothing_loading) {
console.log("done loading comments");
@jamesob
jamesob / vault-txns.md
Last active September 22, 2023 15:50
Transaction examples for the OP_VAULT proposal

OP_VAULT transaction examples

The following output was generated by the OP_VAULT functional test suite.

Normal spend, 1 input [NoRecoveryAuth]

Initialize (94 vB)
@jamesob
jamesob / bmon.log
Created May 31, 2023 14:15
Mempool is bogus
tx: https://mempool.space/tx/7bea4b346f6143dd824f8db8b739e93e414b29c2b2b9c06c9b2edf395e46fff9
block: https://mempool.space/block/000000000000000000003a3e1ed4bced6c52acb1a684d00607b00944e79ce3aa
10:12:34 james@tacoma src/bmon (?± master 3062ef8) % bmon-infra rg "(7bea4b346f6143dd824f8db8b739e93e414b29c2b2b9c06c9b2edf395e46fff9|000000000000000000003a3e1ed4bced6c52acb1a684d00607b00944e79ce3aa)"
10:13:00.149217 I fscm.remote: connecting to host bitcoin-01; may prompt for credentials
10:13:00.149566 I fscm.remote: connecting to host b-01.slug; may prompt for credentials
10:13:00.149942 I fscm.remote: connecting to host b-02.slug; may prompt for credentials
10:13:00.150279 I fscm.remote: connecting to host b-03.slug; may prompt for credentials
10:13:00.151181 I fscm.remote: connecting to host b-04.slug; may prompt for credentials
10:13:00.151781 I fscm.remote: connecting to host ssd-1.ccl; may prompt for credentials
@jamesob
jamesob / build-err.txt
Created May 28, 2023 14:17
master 7d33ae755de2bff806fe600bdaebedbd7fa67aba
#11 114.6 /usr/bin/ld: libbitcoin_util.a(libbitcoin_util_a-settings.o): in function `util::ReadSettings(fs::path const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, UniValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, UniValue> > >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)':
#11 114.6 /usr/include/c++/8/bits/fs_ops.h:121: undefined reference to `std::filesystem::status(std::filesystem::__cxx11::path const&)'
#11 114.6 collect2: error: ld returned 1 exit status