Skip to content

Instantly share code, notes, and snippets.

Avatar

Rusty Russell rustyrussell

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
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, <rusty@rustcorp.com.au> GPLv3.
*/
#include <ccan/crypto/sha256/sha256.c>
#include <ccan/time/time.h>
#include <stdio.h>
#include <string.h>
View truncated-graph-test.sh
#! /bin/sh
test_run()
{
if [ "`./truncated-graph-traversal \"$1\"`" = "$2" ]; then
echo "$2"
else
./truncated-graph-traversal "$1" >&2
echo Expected "$2" >&2
exit 1
View keybase.md

Keybase proof

I hereby claim:

  • I am rustyrussell on github.
  • I am rusty (https://keybase.io/rusty) on keybase.
  • I have a public key ASC4VX3VeiYZQYlueN8xKP66plAc-FBIXx8HWn8lCOAU7Ao

To claim this, I am signing this object:

@rustyrussell
rustyrussell / next-block-fees.sh
Last active Nov 24, 2016
What I'm watching right now... #bitcoin
View next-block-fees.sh
# 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%
i=0
View hkdf-clarification.patch
diff --git a/08-transport.md b/08-transport.md
index d8edcf6..72fb64a 100644
--- a/08-transport.md
+++ b/08-transport.md
@@ -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
View versionbitsbip.mediawiki

  BIP: ??
  Title: Version bits with timeout and delay
  Author: Pieter Wuille <pieter.wuille@gmail.com>, Peter Todd <pete@petertodd.org>, Greg Maxwell <greg@xiph.org>, Rusty Russell <rusty@rustcorp.com.au>
  Status: Draft
  Type: Informational Track
  Created: 2015-10-04

Abstract

@rustyrussell
rustyrussell / ping-revision.diff
Created Mar 31, 2017
Suggested update for PR#134
View ping-revision.diff
commit 108869b8cdfa33c4ae4b842e990047b6b1e805a2
Author: Rusty Russell <rusty@rustcorp.com.au>
Date: Fri Mar 31 13:21:35 2017 +1030
UPDATES:
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) \
{ \
return CPPMAGIC_JOIN(&&, STRUCTEQ_MAP2(STRUCTEQ_MEMBEREQ_, t, __VA_ARGS__)); \
}
#define STRUCTEQ_MEMBEREQ_(t, m) \
(memcmp(&a->m, &b->m, sizeof(a->m)) == 0)
/* Stolen from cppmagic, but with a extra arg added. */
@rustyrussell
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>