Skip to content

Instantly share code, notes, and snippets.

View jonajosejg's full-sized avatar

Jonathan G jonajosejg

View GitHub Profile
@jonajosejg
jonajosejg / sidechain.js
Created May 26, 2023 14:54
sidechain template
/*!
* sidechain.js - a sidechain template for bitcoin
* Copyright (C) 2023, Jonathan Gonzalies (MIT License).
* https://github.com/rojii/sidechain
*/
'use strict';
const assert = require('bsert');
const layout = require('./blockchain/layout');
@adrianhajdin
adrianhajdin / Customizer.jsx
Created March 31, 2023 12:33
Build and Deploy an AI-Powered 3D Website Using React | 2023 Three JS Course Tutorial for Beginners
{/* Download button */}
<button className='download-btn' onClick={downloadCanvasToImage}>
<img
src={download}
alt='download_image'
className='w-3/5 h-3/5 object-contain'
/>
</button>
@chjj
chjj / covert_ecdh.md
Created October 23, 2019 10:45 — forked from sipa/covert_ecdh.md
Covert ECDH over secp256k1

Covert ECDH over secp256k1

If ECDH is used to establish a shared session secret for an encrypted connection, two elliptic curve points need to be transmitted (one in each direction) before encryption starts. In order to avoid being identifiable as a (specific) ECDH negotiation, ideally those two points are sent in a way that is indistinguishable from random.

This problem is easily addressed by using curves that support Elligator-style encodings: functions that encode a (subset of) elliptic curve points as sequences of bytes with no observable bias: (almost) every byte sequence corresponds to exactly one point, and the others correspond to none.

Unfortunately, no Elligator-style encoding is known for secp256k1.

@bencbartlett
bencbartlett / pulse.nb
Created October 6, 2019 21:34
Mathematica code for photon pulse animation
<< MaTeX`
SetOptions[MaTeX, "Preamble" -> {"\\usepackage{color,txfonts}"}];
SetDirectory[NotebookDirectory[]];
c = 1;
\[Alpha] = .7;
\[Beta] = .05;
k0 = 7;
\[Omega]0 = 2 c;
vg = c;
@DavidBuchanan314
DavidBuchanan314 / cursed_mandelbrot.c
Last active June 28, 2023 15:12
Compile-time mandelbrot in pure C. Outputs a PGM image file to stdout. Output can be seen at https://twitter.com/David3141593/status/1062468528115200001
#include <stdio.h>
#define SQ(x) (x)*(x)
#define M0(x,y) SQ(x)+SQ(y)<4?0:0xe0
#define M1(x,y,x0,y0) (SQ(x)+SQ(y)<4)?M0(SQ(x)-SQ(y)+(x0),2*(x)*(y)+(y0)):0xc0
#define M2(x,y,x0,y0) (SQ(x)+SQ(y)<4)?M1(SQ(x)-SQ(y)+(x0),2*(x)*(y)+(y0),x0,y0):0xa0
#define M3(x,y,x0,y0) (SQ(x)+SQ(y)<4)?M2(SQ(x)-SQ(y)+(x0),2*(x)*(y)+(y0),x0,y0):0x80
#define M4(x,y,x0,y0) (SQ(x)+SQ(y)<4)?M3(SQ(x)-SQ(y)+(x0),2*(x)*(y)+(y0),x0,y0):0x60
#define M5(x,y,x0,y0) (SQ(x)+SQ(y)<4)?M4(SQ(x)-SQ(y)+(x0),2*(x)*(y)+(y0),x0,y0):0x40
@awemany
awemany / ZCF.md
Last active January 10, 2023 15:00
Solving the 0-conf problem using forfeits

Solving the 0-conf problem using forfeits

by /u/awemany

Overview

The problem of ensuring good security for unconfirmed transactions in Bitcoin is repeatedly discussed in the community. Right now these so-called 0-conf transactions are usually expected to be of low risk in the case of small amounts and face-to-face interaction of merchant and customer.

% cat anagram.egi
(define $anagram?
(lambda [$xs $ys]
(match ys (multiset eq)
{[,xs #t]
[_ #f]})))
(anagram? (between 1 31) (reverse (between 1 31)))
(anagram? (between 1 31) (reverse (between 2 32)))
% time egison -t anagram.egi
@markblundeberg
markblundeberg / pgp-checkdatasig.md
Created August 31, 2018 01:23
Using PGP signatures with bitcoin script OP_CHECKDATASIG

Using PGP signatures with bitcoin script OP_CHECKDATASIG

Dr. Mark B. Lundeberg, 2018 August 30 bitcoincash:qqy9myvyt7qffgye5a2mn2vn8ry95qm6asy40ptgx2

Since version 2.1, GnuPG is able to use the very same secp256k1 elliptic curve signature algorithm (ECDSA) as used in bitcoin. Quite soon Bitcoin Cash will add a new script opcode OP_CHECKDATASIG that is able to check signatures not just on the containing transaction, but also on arbitrary data. For fun, let's try to intersect the two signature systems and see what can be done!

Background

OP_CHECKDATASIG signatures

@johnhw
johnhw / umap_sparse.py
Last active February 26, 2025 10:50
1 million prime UMAP layout
### JHW 2018
import numpy as np
import umap
# This code from the excellent module at:
# https://stackoverflow.com/questions/4643647/fast-prime-factorization-module
import random
@binji
binji / core-diffs.txt
Last active August 17, 2018 22:46
WebAssembly spec diffs
2.4.4. Rename current_memory -> memory.size
2.4.4. Rename grow_memory -> memory.grow
2.5.10. Mutable globals may be exported
2.5.11. Clarification that import names need not be unique
3.3.4.5. Rename current_memory -> memory.size
3.3.4.6. Rename grow_memory -> memory.grow
3.3.7.2. Clarification that get_global in a constant expression can only refer to imported globals
3.4.8.5. An exported global can be mutable
3.4.9.5. An imported global can be mutable
3.4.10.