Skip to content

Instantly share code, notes, and snippets.

@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;
}
pragma solidity ^0.4.24;
contract SimpleContract {
uint public paymentCount = 0;
event PaymentReceived(uint value, address sender);
address public owner;
constructor() public {
@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;
}
@micahriggan
micahriggan / serial-promises.js
Created March 23, 2019 21:59
Serial Promises vs Parallel Promises
function wait(waitTime) {
return new Promise(resolve => setTimeout(() => {
console.log(`waited ${waitTime} ms`)
resolve()
}, waitTime));
}
async function serial() {
console.time('serial');
await wait(1000);
@micahriggan
micahriggan / data-dependencies.js
Created March 23, 2019 22:24
Adding async values that are fetched in parallel vs serially
function randomNumber() {
const rand = Math.random() * 100;
return new Promise(resolve => setTimeout(() => {
resolve(rand)
}, 1000))
}
async function addExampleSerial() {
console.time('add-serial');
const number1 = await randomNumber();
@micahriggan
micahriggan / 3-async-dependencies.js
Last active March 25, 2019 21:02
Asynchronous calls which depend on the result of another asynchronous call
function fetchData(data) {
return new Promise(resolve => setTimeout(() => {
resolve(data)
}, 1000))
}
function getLoggedInUser() {
return fetchData('user1');
}
@micahriggan
micahriggan / 1-simple-generics.ts
Created March 26, 2019 00:18
Example to show a typesafe way to log values from objects
/* given an object of type T,
* log the value of a property, specified by the argument key
*/
function logValue<T>(obj: T, key: keyof T) {
console.log(obj[key]);
}
function simpleTest() {
const Micah = {name: 'Micah'};
logValue(Micah, "name")
@micahriggan
micahriggan / 2-bad-table-example.ts
Created March 26, 2019 00:41
Showing the errors that can occur from using any instead of a generic
interface Person {
name: string;
age: number;
}
interface Car {
modelName: string;
year: number;
}
@micahriggan
micahriggan / 3-generic-table-example.ts
Last active March 26, 2019 01:58
A typesafe example using generics
interface Person {
name: string;
age: number;
}
interface Car {
modelName: string;
year: number;
}
@micahriggan
micahriggan / 1-destructure.js
Created March 26, 2019 02:32
Some simple destructuring examples
function getPeople() {
return [{name: "Bob"}, {name: "Sam"}, {name: "Tom"}];
}
function test1() {
const [firstPerson] = getPeople();
console.log(firstPerson);
}
function test2() {
const [firstPerson, ...rest] = getPeople();
console.log(rest);