Skip to content

Instantly share code, notes, and snippets.

@icook
icook / cruz_cli.py
Created September 10, 2019 20:01
A simple click based CLI for cruzbit
View cruz_cli.py
# pip3 install --user click websocket_client
import json
import binascii
import hashlib
import sys
import pprint
import logging
import ssl
import websocket
@icook
icook / test-node.js
Created April 24, 2019 00:06
Working node.js example for the qTrade API
View test-node.js
var crypto = require('crypto');
var https = require('https');
var keyID = 170;
var secret = '';
var timestamp = Math.floor(Date.now() / 1000);
var hash, hmac;
var opt = {
host: 'api.qtrade.io',
path: '/v1/user/me',
@icook
icook / bootstrap.sh
Last active February 8, 2022 18:44
New Install
View bootstrap.sh
#!/bin/bash
sudo apt-get install scdaemon gnupg2 git wget -y
wget https://ibcook.com/pubkey-A92C2C.gpg
gpg --import pubkey-A92C2C.gpg
# Use gpg as the ssh-agent
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
git clone git@github.com:icook/dotfiles.git .dotfiles
View keybase.md

Keybase proof

I hereby claim:

  • I am icook on github.
  • I am bitbumper (https://keybase.io/bitbumper) on keybase.
  • I have a public key ASCa52x3v5d6xMXv3nxmVAj6LLz_C5yYV3aX4uW0YsWltAo

To claim this, I am signing this object:

@icook
icook / coinbase-scrape.py
Last active October 21, 2018 09:12
Makes repeated requests to Coinbase's historical candle data. Adjust granularity if desired.
View coinbase-scrape.py
import requests
import pprint
import time
import csv
from datetime import datetime
from dateutil.relativedelta import relativedelta
entries = []
granularity = 900
chunk_size = relativedelta(seconds=granularity * 300)
@icook
icook / notes.md
Last active October 23, 2018 18:10
Bismuth Notes
View notes.md

These are just general thoughts I've had as I read through Bismuth, get familiar etc.

  1. WIP code not intended for production use should be developed on its own branch as to not polute the codebase.
  2. Old deprected no longer used code should be removed. It's always in the git history if you need it in the future.
  3. Scripts should probably be in their own subfolder, with a clear opening comment about their intended use case
  4. Ideally the core would be made into actual installable module (w/ setup.py), and dice, explorer etc setup as co-modules (ie, bismuth.explorer, bismuth.core). This could still be done in the same repo. This would be very helpful for integrators since right now it's difficult to import for instance keys.py methods to use in my own scripts unless I put my code in the root directory as well.
  5. There shouldn't be potentially executable code (.py) in static/ folder. Not a big deal.
  6. All node persistence data should be stored in a dedicated folder making it easy to purge (reset)
View qTradeOriginalDevelopmentGuidelines.md

qTrade Original Development Guidelines

Software Integration

An exchange has several specific needs that are different than that of a regular end user or businesses looking to accept crypto as payment. We'll attempt to clearly outline our technical needs, offering guidance on how to make integration with our exchange easier.

Unsigned transactions

Our exchange requires strong isolation between network connected p2p software (such as bitcoin core), and "signing software" that holds private keys. In practice this means we have two pieces of software: one that creates raw transactions and transmits signed transactions to the network, and another that only signs transactions.

View ssl.sh
certbot certonly --webroot --agree-tos --no-eff-email --email isaac@simpload.com -w /var/www/letsencrypt -d mp3.markmine.io
serivce nginx reload
View amoveo_bounty.md

This is a brief account of my experience reporting a critical bug in Amoveo on 7/8/2018.

Background

My name is Isaac Cook and I've been a developer in the cryptocurrency space since 2014. I've been developing web applications since 2003. I co-authored the open source SimpleCoin mining pool software and ran an auto-exchanging multi-pool for a few years, and then more recently designed/built/operate https://qtrade.io, a new exchange platform. I have a degree in Computer

@icook
icook / gist:57e1dfaa08aa248f44f78814c11ae53e
Last active June 11, 2018 05:54
PowerPool Equihash/Cryptonight/AuxPow Implementation Tips
View gist:57e1dfaa08aa248f44f78814c11ae53e

This is a brain dump of information that might be useful. Hopefully it doesn't ramble too bad. Upfront warning that there is documentation, but it's not very complete and I think incorrect/out of date in places. That said the coding style is reasonably consistent (PEP8), commenting is ok, and logging is good.

SimpleCoin is split into 3 main packages:

  • powerpool - A Python Gevent based stratum mining server. https://github.com/simplecrypto/powerpool
  • simplecoin_multi - A Python Flask based web application that manages payouts and user interface. https://github.com/simplecrypto/simplecoin_multi
  • simplecoin_rpc_client - A tool for running payouts on a remote server. This is the only way to run the payouts. Each coin should have a payout server with a wallet enabled, and a mining server with wallet disabled. They are recommended to be on separate machines.

The only modifications needed should be in powerpool, with some minor configuration changes in simplecoin_multi (for stats about the algo, etc).