{{ message }}

Instantly share code, notes, and snippets.

# Chris Moore dooglus

Last active Feb 27, 2021 — forked from chris-belcher/coinswap-design.md
Design for a CoinSwap Implementation for Massively Improving Bitcoin Privacy and Fungibility
View coinswap-design.md

# 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.

Created Dec 3, 2017
View gist:0fa81be1f9b087142ef987a06d6824d3
 #!/usr/bin/env python import random, string, time def rand(): return start_date + random.random() * (end_date - start_date) def fmt(seconds): return '[%s]' % time.ctime(seconds)
Created Oct 31, 2016
View gist:351c25605a60a0c9b3af41d14004e4ff
 def evaluate(hand): ranks = '23456789TJQKA' if len(hand) > 5: return max([evaluate(hand[:i] + hand[i+1:]) for i in range(len(hand))]) score, ranks = zip(*sorted((cnt, rank) for rank, cnt in {ranks.find(r): ''.join(hand).count(r) for r, _ in hand}.items())[::-1]) if len(score) == 5: # if there are 5 different ranks it could be a straight or a flush (or both) if ranks[0:2] == (12, 3): ranks = (3, 2, 1, 0, -1) # adjust if 5 high straight score = ([1,(3,1,2)],[(3,1,3),(5,)])[len({suit for _, suit in hand}) == 1][ranks[0] - ranks[4] == 4] # high card, straight, flush, straight flush return score, ranks
Created Aug 13, 2016
create Bitcoin public key from private key
View public.py
 #! /usr/bin/env python class Point(object): def __init__(self, _x, _y, _order = None): self.x, self.y, self.order = _x, _y, _order def calc(self, top, bottom, other_x): l = (top * inverse_mod(bottom)) % p x3 = (l * l - self.x - other_x) % p return Point(x3, (l * (self.x - x3) - self.y) % p)
Created Aug 2, 2016
Created Mar 29, 2016
View gist:40b56a1dfc3eb14f67e84c5489182db9
 Verifying that +dooglus2 is my blockchain ID. https://onename.com/dooglus2
Created Feb 3, 2016
View gist:1426a596d59b722d3312
 import random, math num_sims = 1000 num_rolls = 1000 chance = 5/100.0 edge = 1 - 2*chance start_bank = 1000 risk = 0 while risk < 1:
Last active Jan 2, 2016
clamd in Python, accepting long commands on standard input
View clams.py
 #!/usr/bin/python from __future__ import print_function import base64, httplib, json, string, sys, re USER = 'user'; PASS = 'pass'; HOST = '127.0.0.1'; PORT = 30174 class RPC: def __init__(self, host, port, username, password): self.authhdr = "Basic %s" % (base64.b64encode("%s:%s" % (username, password))) self.conn = httplib.HTTPConnection(host, port, False, 30)
Last active Aug 29, 2015 — forked from maran/development_genesis.json
View development_genesis.json
 { "nonce": "0x0000000000000042", "difficulty": "0x40000", "alloc": { "bbbbbaaaaa82db86a35502193b4c6ee9a76ebe8f": { "balance": "10015200000000000000000" }, }, "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x0000000000000000000000000000000000000000",
Created Nov 16, 2014
View gist:863daab1a8c6431b6338
 #include #include #include #include #include using namespace std; using namespace boost::spirit::classic; struct count_satoshis