Skip to content

Instantly share code, notes, and snippets.

Rusty Russell rustyrussell

Block or report user

Report or block rustyrussell

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View perfme.c
/* Simple wrapper to allow a program to perf itself.
* Copyright Rusty Russell, Blockstream 2015.
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
rustyrussell / megatx-benchmark.c
Created Jul 8, 2015
Simple bitcoin signature hashing benchmark code
View megatx-benchmark.c
/* Usage: benchmark-sha256 <numtxs> [<numiterations>]
* Benchmark the input signature hashes for a maximum-sized transaction with this many
* inputs
* Rusty Russell, <> GPLv3.
#include <ccan/crypto/sha256/sha256.c>
#include <ccan/time/time.h>
#include <stdio.h>
#include <string.h>
View versionbitsbip.mediawiki

  BIP: ??
  Title: Version bits with timeout and delay
  Author: Pieter Wuille <>, Peter Todd <>, Greg Maxwell <>, Rusty Russell <>
  Status: Draft
  Type: Informational Track
  Created: 2015-10-04


#! /bin/sh
if [ "`./truncated-graph-traversal \"$1\"`" = "$2" ]; then
echo "$2"
./truncated-graph-traversal "$1" >&2
echo Expected "$2" >&2
exit 1

Keybase proof

I hereby claim:

  • I am rustyrussell on github.
  • I am rusty ( on keybase.
  • I have a public key ASC4VX3VeiYZQYlueN8xKP66plAc-FBIXx8HWn8lCOAU7Ao

To claim this, I am signing this object:

rustyrussell /
Last active Nov 24, 2016
What I'm watching right now... #bitcoin
# Assumes you've set blockmaxweight=4000000 and blocksizemax=1000000 in bitcoin.conf
# Every 10 seconds, prints out: <blocknum>:<satoshis-in-fees-nextblock>(<fees-in-USD)=<percent-of-subsidy>,
# eg:
# 440303:123401888($911.692)=9%
# 440304:62908635($464.768)=5%
# 440305:63134415($466.436)=5%
# 440305:63317722($467.791)=5%
View hkdf-clarification.patch
diff --git a/ b/
index d8edcf6..72fb64a 100644
--- a/
+++ b/
@@ -130,7 +130,7 @@ The following functions will also be referenced:
* The returned value is the raw big-endian byte serialization of
`x-coordinate` (using affine coordinates) of the generated point.
- * `HKDF`: a function is defined in [5](#reference-5), evaluated with a
+ * `HKDF(salt,ikm)`: a function is defined in [5](#reference-5), evaluated with a
rustyrussell / ping-revision.diff
Created Mar 31, 2017
Suggested update for PR#134
View ping-revision.diff
commit 108869b8cdfa33c4ae4b842e990047b6b1e805a2
Author: Rusty Russell <>
Date: Fri Mar 31 13:21:35 2017 +1030
1. rename randombytes to ignored, and say they SHOULD BE zero. Simpler.
2. Add explicit padding field to `ping`: that keeps it extensible.
3. Split requirements into sender and receiver; they're kind of intertwined
so let's combine the two sections.
View gist:4c32413c6daefc7b3cb1e25aab830c45
#define STRUCTEQ_SAFE(t, ...) \
static inline bool structeq_##t(const struct t *a, const struct t *b) \
{ \
#define STRUCTEQ_MEMBEREQ_(t, m) \
(memcmp(&a->m, &b->m, sizeof(a->m)) == 0)
/* Stolen from cppmagic, but with a extra arg added. */
rustyrussell / siphash-route-bench.patch
Created Feb 23, 2018
Unfinished patch for switching from isaac to siphash...
View siphash-route-bench.patch
diff --git a/gossipd/routing.c b/gossipd/routing.c
index 69db3001..5798c239 100644
--- a/gossipd/routing.c
+++ b/gossipd/routing.c
@@ -5,7 +5,6 @@
#include <ccan/array_size/array_size.h>
#include <ccan/crypto/siphash24/siphash24.h>
#include <ccan/endian/endian.h>
-#include <ccan/isaac/isaac64.h>
#include <ccan/structeq/structeq.h>
You can’t perform that action at this time.