Skip to content

Instantly share code, notes, and snippets.

View masonforest's full-sized avatar

Mason Fischer masonforest

View GitHub Profile
@masonforest
masonforest / main.rs
Last active October 16, 2020 17:35
Mining Future
#[macro_use]
extern crate lazy_static;
use async_std::task;
use rand::{
distributions::{Distribution, Standard},
Rng,
};
use std::{
future::Future,
pin::Pin,
[
{
"inputs": [],
"name": "emitEvent",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"anonymous": false,
➜ libsecp256k1 git:(master) rm -rf deps/ _build/
➜ libsecp256k1 git:(master) mix deps.get && mix compile
* Getting libsecp256k1_source (https://github.com/bitcoin-core/secp256k1.git)
remote: Enumerating objects: 16, done.
remote: Counting objects: 100% (16/16), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 4958 (delta 4), reused 9 (delta 2), pack-reused 4942
Receiving objects: 100% (4958/4958), 2.06 MiB | 3.08 MiB/s, done.
Resolving deltas: 100% (3462/3462), done.
Resolving Hex dependencies...
use crate::error;
use ellipticoin::{export, get_memory, sender, set_memory};
use wasm_rpc::Value;
use wasm_rpc::error::Error;
enum Namespace {
Balances,
}
#[export]
@masonforest
masonforest / ellipticoin_supply_simple.py
Last active April 8, 2019 15:51
A simple tentative Ellipticoin Supply curve
import datetime
import time
# All monetary values are in Ellipticoin Base Units (one onethousandth of an Ellipticoin)
YEARS_PER_ERA = 2
NUMBER_OF_ERAS = 7
SECONDS_PER_BLOCK = 5
SECONDS_IN_A_YEAR = datetime.timedelta(days=365).total_seconds()
BLOCKS_PER_ERA = int(YEARS_PER_ERA * SECONDS_IN_A_YEAR)/ SECONDS_PER_BLOCK
@masonforest
masonforest / ellipticoin_supply-21-million.py
Last active April 6, 2019 19:54
Tentative Ellipticoin Supply Curve that works out to a supply of 21 million coins
import math
import datetime, time
import time
BLOCKS_PER_SECOND = 5
# This was chosen because it's an exponent of 2
# And it works out to about a year (1.3 years) if blocks are produced every 5 seconds as planned.
BLOCKS_PER_ERA = 2**23
# This was chosen because it puts the final issuance sometime in 2031
# If Ellipticoin hasn't caught on by then assume we've failed :/
NUMBER_OF_ERAS = 8
@masonforest
masonforest / hashfactor.py
Last active March 29, 2019 00:56
Hashfactor is proof of work algorithm inspired by hashcash
# Hashfactor is proof of work algorithm inspired by [hashcash](http://www.hashcash.org/).
# Hashfactor is simpler to implement than hashcash but the result is not a
# hash with leading zeros. This tradeoff is worth-while if you have access to
# a computer to validate proof of work values but you'd like implementation to
# be simpler.
from random import randint
import binascii
import hashlib
@masonforest
masonforest / gist:99e7b694e68dfab06b348f22e179e370
Created February 25, 2019 14:37
./wavelet --port 3000 --db.path testdb_1 --api.port 9000
2019-02-25T14:33:44Z |INFO| Database has been loaded. db_path: testdb_1
2019-02-25T14:33:44Z |INFO| Successfully seeded the genesis of this node. file: genesis.json num_accounts: 1
2019-02-25T14:33:44Z |INFO| Registered transaction processor service. module: cloud.wasm
2019-02-25T14:33:44Z |INFO| Registered transaction processor service. module: contract.wasm
2019-02-25T14:33:44Z |INFO| Registered transaction processor service. module: money.wasm
2019-02-25T14:33:44Z |INFO| Registered transaction processor service. module: stake.wasm
2019-02-25T14:33:44Z |INFO| Keypair loaded. private_key: 6d6fe0c2bc913c0e3e497a0328841cf4979f932e01d2030ad21e649fca8d47fe71e6c9b83a7ef02bae6764991eefe53360a0a09be53887b2d3900d02c00a3858 public_key: 71e6c9b83a7ef02bae6764991eefe53360a0a09be53887b2d3900d02c00a3858
2019-02-25T14:33:44Z |INFO| Listening for peers. address=tcp://127.0.0.1:3000
2019-02-25T14:33:44Z |INFO| Local HTTP API is being served. host: localhost port: 9000
Enter a message: 2019-02-25T14:33:56Z |INFO| Connected t
@masonforest
masonforest / smart_contract.js
Last active April 13, 2019 14:18
A Javascript class for interacting with smart contracts written for the [Perlin network](https://www.perlin.net/).
const crypto = require('crypto');
const { StringDecoder } = require("string_decoder");
const fs = require("fs");
const util = require('util');
const writeFile = util.promisify(fs.writeFile);
const readFile = util.promisify(fs.readFile);
const fileExists = util.promisify(fs.exists);
const _ = require("lodash");
const TRANSACTION_ID = new Uint8Array(256);
const ALICE = new Uint8Array(256).fill(1);
var fs = require('fs');
const createKeccakHash = require('keccak');
var jayson = require('jayson');
var transaction = "0x1066b9764832dc6dc710c3e131ee54c68c1b3f1e21de6b3dc8f97ee68ff3f190";
var client = jayson.client.http({
host: "149.248.8.23",
port: 8545,
});
function hash(value) {