Skip to content

Instantly share code, notes, and snippets.

View RandyMcMillan's full-sized avatar
🛰️
Those who know - do not speak of it.

@RandyMcMillan RandyMcMillan

🛰️
Those who know - do not speak of it.
View GitHub Profile
@RandyMcMillan
RandyMcMillan / rust-bitcoin-play.rs
Created March 15, 2026 17:48 — forked from chris-belcher/rust-bitcoin-play.rs
rust bitcoin play teleport coinswap
// 22/4/2021
// random various unrelated functions coded to help me figure out how to use rust-bitcoin
// should be useful for figuring out why certain things in teleport are coded the way they are
extern crate bitcoincore_rpc;
use bitcoincore_rpc::{Client, Error, RpcApi, Auth};
extern crate bitcoin_wallet;
use bitcoin_wallet::account::{
MasterAccount, Unlocker, Account, AccountAddressType
@RandyMcMillan
RandyMcMillan / coinswap-design.md
Created March 15, 2026 17:48 — forked from chris-belcher/coinswap-design.md
Design for a CoinSwap Implementation for Massively Improving Bitcoin Privacy and Fungibility

Design for a CoinSwap Implementation for Massively Improving Bitcoin Privacy and Fungibility

25/5/2020

Abstract

Imagine a future where a user Alice has bitcoins and wants to send them with maximal privacy, so she creates a special kind of transaction. For anyone looking at the blockchain her transaction appears completely normal with her coins seemingly going from address A to address B. But in reality her coins end up in address Z which is entirely unconnected to either A or B.

Now imagine another user, Carol, who isn't too bothered by privacy and sends her bitcoin using a regular wallet which exists today. But because Carol's transaction looks exactly the same as Alice's, anybody analyzing the blockchain must now deal with the possibility that Carol's transaction actually sent her coins to a totally unconnected address. So Carol's privacy is improved even though she didn't change her behaviour, and perhaps had never even heard of this software.

@RandyMcMillan
RandyMcMillan / byz_cascading_quorum_v2.rs
Last active March 1, 2026 17:03 — forked from rust-play/playground.rs
byz_cascading_quorum_v2.rs
#![allow(deprecated)]
use chrono::{DateTime, Duration, /*Local, */Timelike, Utc};
use num_bigint::BigUint;
use rand_0_8_5::{thread_rng as rng_legacy, Rng as RngLegacy};
use rand_0_9_2::{thread_rng as rng_latest, Rng as RngLatest};
use sha2::{Digest, Sha256};
// --- GIT-COMPLIANT SHA-1 ENGINE ---
fn git_sha1(data: &[u8]) -> String {
@RandyMcMillan
RandyMcMillan / det_rng_macro.rs
Created March 1, 2026 15:07 — forked from rust-play/playground.rs
det_rng_macro.rs
//! # Cryptographic Playground V2 - Seeded Edition
//! Demonstrates using recursive macros to generate entropy seeds for
//! deterministic RNG initialization while handling complex token trees.
#![allow(deprecated)]
#![allow(unused_attributes)]
#![allow(dead_code)]
use rand_0_8_5::{SeedableRng as SeedableLegacy, Rng as RngLegacy};
use rand_0_9_2::{SeedableRng as SeedableLatest, Rng as RngLatest};
@RandyMcMillan
RandyMcMillan / byz_cascading_quorum.rs
Last active March 1, 2026 03:00 — forked from rust-play/playground.rs
byz_cascading_quorum.rs
use chrono::{DateTime, Duration, Utc, Timelike};
use sha2::{Sha256, Digest};
// --- GIT-COMPLIANT SHA-1 ENGINE ---
fn git_sha1(data: &[u8]) -> String {
let mut h0: u32 = 0x67452301; let mut h1: u32 = 0xEFCDAB89;
let mut h2: u32 = 0x98BADCFE; let mut h3: u32 = 0x10325476;
let mut h4: u32 = 0xC3D2E1F0;
let mut padded = data.to_vec();
let bit_len = (padded.len() as u64) * 8;
@RandyMcMillan
RandyMcMillan / no_std.rs
Last active February 26, 2026 00:29 — forked from rust-play/playground.rs
no_std.rs
#![allow(unexpected_cfgs)]
#![allow(deprecated)]
// --- SECTION 1: NIGHTLY (no_std + Allocator) ---
#[cfg(nightly)]
mod nightly_impl {
#![feature(alloc_error_handler)]
#![no_std]
#![no_main]
@RandyMcMillan
RandyMcMillan / jitter_to_kernel.rs
Last active February 25, 2026 23:53 — forked from rust-play/playground.rs
jitter_to_kernel.rs
use std::fs::OpenOptions;
use std::os::unix::io::AsRawFd;
use std::time::Instant;
use sha2::{Sha256, Digest};
use libc::{ioctl, c_int};
// Linux ioctl structure for entropy injection
#[repr(C)]
struct RandPoolInfo {
entropy_count: c_int, // Bits of entropy (not bytes)
@RandyMcMillan
RandyMcMillan / entropy_payload.rs
Last active February 25, 2026 16:26 — forked from rust-play/playground.rs
entropy_payload.rs
#![allow(deprecated)]
use serde::{Serialize, Deserialize};
use serde_json;
use sha2::{Sha256, Digest};
use rand_0_8_5::{thread_rng as rng_legacy, Rng as RngLegacy};
use rand_0_9_2::{thread_rng as rng_latest, Rng as RngLatest};
use chrono::Local;
#[derive(Serialize, Deserialize, Debug)]
@RandyMcMillan
RandyMcMillan / utc_consensus.rs
Last active February 22, 2026 22:26 — forked from rust-play/playground.rs
utc_consensus.rs
use chrono::{DateTime, Duration, Utc};
#[derive(Debug, Clone, Copy)]
pub struct Estimation {
pub d: f64, // Difference in seconds
pub a: f64, // Uncertainty
}
pub fn estimate_offset(s: DateTime<Utc>, r: DateTime<Utc>, c: DateTime<Utc>) -> Estimation {
// d = c - (r + s) / 2
@RandyMcMillan
RandyMcMillan / byz_time.rs
Last active February 22, 2026 22:29 — forked from rust-play/playground.rs
byz_time.ra
use std::time::Instant;
#[derive(Debug, Clone, Copy)]
pub struct Estimation {
pub d: f64,
pub a: f64,
}
pub fn estimate_offset(s: f64, r: f64, c: f64) -> Estimation {
Estimation {