Skip to content

Instantly share code, notes, and snippets.

Avatar

Micah Zoltu MicahZoltu

View GitHub Profile
View FoodToken.sol
pragma solidity >= 0.7.0;
contract FoodToken {
uint256 constant public totalSupply = 10_000_000 * 10**18;
mapping (address => uint256) public balanceOf;
mapping (address => mapping (address => uint256)) public allowance;
string constant public symbol = "FOOD";
uint8 constant public decimals = 18;
string constant public name = "Food Token";
@MicahZoltu
MicahZoltu / Dockerfile
Last active Dec 16, 2020
Augur ENS Verification
View Dockerfile
FROM node:14-alpine
WORKDIR /app
RUN npm install --save eth-ens-namehash content-hash @zoltu/ethereum-abi-encoder
RUN echo $'\n\
import Contenthash from "content-hash"\n\
import Namehash from "eth-ens-namehash"\n\
import AbiEncoder from "@zoltu/ethereum-abi-encoder"\n\
\n\
function stringToBytes(hex) {\n\
const match = /^(?:0x)?([a-fA-F0-9]*)$/.exec(hex)\n\
@MicahZoltu
MicahZoltu / markdown.md
Last active Jul 22, 2020
Trusted Anonymous DAO
View markdown.md

Trusted Anonymous DAO

The goal of this process is to create a DAO that the public can weakly trust, while protecting DAO participants from wrench attacks by someone looking to takeover the DAO.

Process

  1. A secret is given out to n publicly trusted individuals.
  2. The individual's with secrets are instructed to secretly nominate one person they trust to participate in the DAO.
  3. The nominated individuals all sign the secret and publish the signature plus the address they signed with publicly (and anonymously).
    1. Nominated individuals should accept multiple nominations if offered, and not tell anyone they were nominated multiple times.
    2. Nominated individuals are strongly encouraged to participate, but they should not inform their nominator if they fail to participate.
  4. After a pre-defined amount of time has passed, all valid signatures (verifiable by anyone who has seen the secret) are collected and the trusted individuals all assert that:
View augur-constant-product.sol
contract AugurConstantProduct {
IAugurMarket market = 0x0;// TODO
IErc20 dai = 0x0; // TODO
uint256 numTicks;
function addLiquidity(uint256 amountInAttodai) {
uint256 poolBalanceBefore = poolBalance();
dai.transferFrom(msg.sender, this, amountInAttodai);
market.buyCompleteSets(amountInAttodai);
@MicahZoltu
MicahZoltu / merkle-patritia-proof.sol
Last active Apr 1, 2020
Merkle Patritia Proof Validator in Solidity
View merkle-patritia-proof.sol
pragma solidity 0.6.4;
library RLP {
uint constant DATA_SHORT_START = 0x80;
uint constant DATA_LONG_START = 0xB8;
uint constant LIST_SHORT_START = 0xC0;
uint constant LIST_LONG_START = 0xF8;
uint constant DATA_LONG_OFFSET = 0xB7;
uint constant LIST_LONG_OFFSET = 0xF7;
View insured_trading.md

starting

  1. User has 10 ETH.
  2. User wants 10 ETH worth of an insured YES position.
  3. User buys 10 complete sets, giving them 10 YES + 10 NO + 10 INVALID.
  4. User trades 10 NO for x YES on the open market.
  5. User ends up with 10+x YES + 10 INVALID.
  • If the market resolves as YES, they get 10+x ETH (net profit == x).
  • If the market resolves as NO, they get 0 ETH (net loss == VAR).
  • If the market resolves as INVALID, they get 10 ETH (net neutral).
View gist:ef452e9f51c0a01000279dcd4c01f7ec
{
"xhrStatus": "complete",
"request": {
"method": "GET",
"url": "api/datasources/proxy/2/query",
"params": {
"db": "my_database",
"q": "SELECT last(\"number\") FROM \"my_measurement\" WHERE time >= now() - 30m GROUP BY time(1s) fill(previous)",
"epoch": "ms"
},
@MicahZoltu
MicahZoltu / discord.js
Last active Nov 3, 2020
Reaction Hotkey for various chat clients.
View discord.js
window.addEventListener('keydown', event => {
if (!event.shiftKey || !event.ctrlKey || event.key != '|') return
const container = document.querySelector('[data-list-id=chat-messages] > div:nth-last-of-type(2)')
container.dispatchEvent(new MouseEvent('mousemove', { bubbles: true }));
container.querySelector('div[aria-label="Add Reaction"]').click()
})
@MicahZoltu
MicahZoltu / repro.log
Created Jul 21, 2018
restore-repro-logs
View repro.log
This file has been truncated, but you can view the full file.
C:\Program Files\dotnet\sdk\2.1.302\MSBuild.dll -nologo -distributedlogger:Microsoft.DotNet.Tools.MSBuild.MSBuildLogger,C:\Program Files\dotnet\sdk\2.1.302\dotnet.dll*Microsoft.DotNet.Tools.MSBuild.MSBuildForwardingLogger,C:\Program Files\dotnet\sdk\2.1.302\dotnet.dll -maxcpucount -target:Restore -verbosity:m -verbosity:diag tests.csproj
Build started 2018-07-21 17:43:50.
Environment at start of build:
ALLUSERSPROFILE = C:\ProgramData
APPDATA = C:\Users\micah\AppData\Roaming
CommonProgramFiles = C:\Program Files\Common Files
CommonProgramFiles(x86) = C:\Program Files (x86)\Common Files
CommonProgramW6432 = C:\Program Files\Common Files
COMPUTERNAME = MICAH-AIRTOP
@MicahZoltu
MicahZoltu / Program.cs
Last active Jul 21, 2018
Restore Repro
View Program.cs
using System;
namespace App
{
class Program
{
static void Main(String[] args)
{
var program = new Program();
Console.WriteLine(program.Greeting());