Skip to content

Instantly share code, notes, and snippets.

@micahriggan
micahriggan / PayToSignatureHash.sol
Last active November 3, 2018 00:52
Testing the concept of paying to signature hash. A redeemer spends by calling sendTo with a signed hash that has a balance in the contract.
pragma solidity ^0.4.24;
contract PayToSignatureHash {
mapping(bytes32 => uint) public balances;
function payToHash(bytes32 hash) public payable {
balances[hash] += msg.value;
}
pragma solidity ^0.4.24;
contract SimpleContract {
uint public paymentCount = 0;
event PaymentReceived(uint value, address sender);
address public owner;
constructor() public {
@micahriggan
micahriggan / sendToMany.sol
Last active October 10, 2018 20:41
Send tokens or ether to many addresses
pragma solidity ^0.4.24;
import "./IERC20.sol";
contract TransferToMany {
address owner;
constructor() public {
owner = msg.sender;
}
[{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [{
"name": "",
"type": "string"
}],
"payable": false,
"stateMutability": "view",
@micahriggan
micahriggan / erc20.sol
Created October 6, 2018 16:14
erc20 spec
pragma solidity ^0.4.23;
// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
// ----------------------------------------------------------------------------
contract ERC20Interface {
function totalSupply() public constant returns (uint);
function balanceOf(address tokenOwner) public constant returns (uint balance);
function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
function transfer(address to, uint tokens) public returns (bool success);
@micahriggan
micahriggan / MultiSig.sol
Last active July 30, 2018 17:59
Multi-Sig Smart Contract
vim: set ft=solidity:
pragma solidity ^0.4.24;
contract MultiSig {
struct Proposal {
address to;
uint amount;
mapping(address => bool) signers;
bool finalized;
function filterObj(toFilter, filterKeys) {
return Object.entries(toFilter)
.filter(([key, value]) => filterKeys.includes(key))
.reduce((obj, [key, val]) => Object.assign(obj, { [key]: val }), {});
}
@micahriggan
micahriggan / untag-posts.js
Created April 3, 2018 00:59
Untag facebook posts
for(let p of document.querySelectorAll("[data-tooltip='Edit or Remove']")){p.click()};setTimeout(() => {for(let p of document.querySelectorAll("[data-action-type='remove_tag']")){p.click();} setTimeout(() => {for(let p of document.getElementsByClassName('layerConfirm')){p.click();}}, 1000)}, 1000);
@micahriggan
micahriggan / delete-videos.js
Created April 3, 2018 00:58
Delete Facebook Videos
for(let p of document.querySelectorAll("[data-tooltip='Edit or Remove']")){p.click()};setTimeout(() => {for(let p of document.querySelectorAll("[data-action-type='delete_video']")){p.click();} setTimeout(() => {for(let p of document.getElementsByClassName('layerConfirm')){p.click();}}, 1000)}, 1000);
@micahriggan
micahriggan / hide-timeline.js
Created April 3, 2018 00:52
Hide from Facebook Timeline
for(let p of document.querySelectorAll("[data-tooltip='Edit or Remove']")){p.click()};setTimeout(() => {for(let p of document.querySelectorAll("[data-action-type='hide_from_timeline']")){p.click();} setTimeout(() => {for(let p of document.getElementsByClassName('layerConfirm')){p.click();}}, 1000)}, 1000);