Skip to content

Instantly share code, notes, and snippets.

View mcdee's full-sized avatar

Jim McDonald mcdee

View GitHub Profile
@mcdee
mcdee / attestation.txt
Created April 12, 2022 06:34
Attestation
I contributed to the Semaphore Trusted Setup Multi-Party Ceremony.
The following are my contribution signatures:
Circuit: semaphore16
Contributor # 331
Hash: a973b31d 19a855e5 f6b8d9df df7784b9
c0977035 31a48dd2 ea4f7c27 98db62e0
9ea5be17 1b32c069 aacd436b a97bb78c
4947de2d d1a0f1a4 25abe5cf c3cea6a1
# The withdrawal account.
export ETHDO_ALLOW_WEAK_PASSHRASES=true
export ETHDO_WALLET_PASSPHRASE=secret
ethdo wallet create --type=hd --mnemonic='abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art' --wallet='Withdrawal wallet'
ethdo account create --account='Withdrawal wallet/A withdrawal account'
export WITHDRAWAL_ACCOUNT_PUBLIC_KEY=$(ethdo account info --account='Withdrawal wallet/A withdrawal account' | grep 'Public key' | sed 's/Public key: //')
# To prove that the withdrawal accout holder holds the private key for a public key:
# 1. The requestor sends a random 32-byte hex string to the withdrawal account holder.
export REQUESTOR_DATA=$(xxd -l 32 -p /dev/urandom | tr -d " \n")
pragma solidity ^0.4.23;
pragma experimental ABIEncoderV2;
contract Test {
function test(string[] _words) public pure returns (string) {
return _words[0];
}
}
// Copyright © 2018 Weald Technology Trading
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@mcdee
mcdee / peers
Created November 29, 2017 08:44
[{
caps: ["eth/62", "eth/63", "par/1", "par/2", "pip/1"],
id: "153d9a27ff1bd58d8bc030388d78c433f80577bf8ec06d083eaf2ea42208449fffc160b38b7523d925d89ef598d259822e040f299ecf8ac482e6c9b91fef3e5a",
name: "Parity/v1.8.2-beta-1b6588c-20171025/x86_64-linux-gnu/rustc1.21.0",
network: {
localAddress: "10.0.0.128:44074",
remoteAddress: "85.214.235.45:30303"
},
protocols: {
eth: {
#!/bin/bash
echo "var input=`solc node_modules=node_modules --optimize --combined-json abi,bin,interface contracts/DomainSale.sol`" > contract.js
# First address is the ENS registry
geth attach ipc:/home/jgm/.ethereum/testnet/geth.ipc <<EOGETH
loadScript('contract.js');
var contract = web3.eth.contract(JSON.parse(input.contracts["contracts/DomainSale.sol:DomainSale"].abi));
personal.unlockAccount(eth.accounts[1], "throwaway");
var partial = contract.new('0x112234455c3a32fd11230c42e7bccd4a84e02010', { from: eth.accounts[1], data: "0x" + input.contracts["contracts/DomainSale.sol:DomainSale"].bin, gas: 4700000, gasPrice: web3.toWei(105, 'gwei')});
0x71ae7a23ad811c195c072b73ef22d10b2762a490
71ae7a23ad811c195c072b73ef22d10b2762a490
'use strict';
const Reservation = artifacts.require('./Reservation.sol');
contract('Reservation', accounts => {
var instance;
it('works', async function() {
instance = await Reservation.new(1564555780, 1, 2, 1600000000, 200000000);
var fee = await instance.amountPerGuest();
contract BadSender {
// Forward funds to the splitter contract
function forward(address other) payable {
// This is the address of the splitter contract
address splitterContract = 0xAe3aE77F5ab2490C46958D0b05f766871c17cA5e;
BadSplitter splitter = BadSplitter(splitterContract);
splitter.deposit.gas(200000).value(msg.value)(other);
}
// Purely malevolent fallback