Skip to content

Instantly share code, notes, and snippets.

pragma solidity ^0.5.17;
pragma experimental ABIEncoderV2;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
@l3wi
l3wi / clipper-fetcher.js
Created December 8, 2020 16:21
A simple script to fetch all "SetOffer" events, check approvals and then fetch balances.
import { ethers } from 'ethers'
import { DAO_ADDRESS, DAO_ABI, CLIPPER_ABI, CLIPPER_ADDRESS } from './presets'
const atob = (a) => Buffer.from(a, 'base64').toString('binary')
const ETH_NODE = 'node'
let provider = new ethers.providers.WebSocketProvider(ETH_NODE)
const fetchCoupons = async (account) => {
let dao = new ethers.Contract(DAO_ADDRESS, DAO_ABI, provider)
// Get current Epoch
@l3wi
l3wi / getCoupons.js
Created November 25, 2020 16:19
A snippet of code you can use to find how many coupons will be available at the next epoch
const epochPeriod = 28800
const epochStart = 1602201600
const epochOffset = 105
const getWithdrawals = async (delay) => {
let dao = new ethers.Contract(data.DAO_ADDRESS, data.DAO_ABI, provider)
const epoch = (await dao.epoch()).toNumber()
console.log('Getting next epoch LP unlocks')
@l3wi
l3wi / calculateUniswapTWAP.js
Last active November 17, 2020 16:59
Off-chain Uniswap V2 TWAP calculator in Javascript
import { ethers } from 'ethers'
// To use this you need to read the Uniswap v2 contract for a pair/
// PRICE pulled from priceXCumulativeLast
// TIMESTAMPS pulled from _blockTimestampLast in getReserves()
// Mock Data
// In a real scenario you would fetch and store price & timestamp at an interval
// to mirror the contract calculating the TWAP on chain
const price0 = '529527205677379158060966860839'
@l3wi
l3wi / calculateUniswapTWAP.js
Created October 21, 2020 09:50
🦄 Off-chain Uniswap V2 TWAP calculator.
import { ethers } from 'ethers'
// To use this you need to read the Uniswap v2 contract for a pair/
// PRICE pulled from priceXCumulativeLast
// TIMESTAMPS pulled from _blockTimestampLast in getReserves()
// Mock Data
// In a real scenario you would fetch and store price & timestamp at an interval
// to mirror the contract calculating the TWAP on chain
const price0 = '529527205677379158060966860839'
@l3wi
l3wi / validatePowFromTrytes.js
Created February 1, 2018 12:34
Validate PoW directly from trytes without iota.lib.js
const Crypto = require('iota.crypto.js')
// Vars
const trytes = `IEQJQMEBIPXMRRUMMVIRAYDGIODMLU9WBNLSAJBKMXGLBN9MSSAUDIJRYGCBBNJMTWVHTFZCUKKYQXHWCZINYARZN9PXKYUXWIGHKIYSHJVNYQUUF9YJRQZJOHLMUVBWJA9RCOXYBIGFXYWUXMSLBQWGVHFJH9BQNXAIM9HOC9WVBYZJFVDQBYMXLMLNEYSETVYBDLMVVXHUYEMZEQJARFXYVYLR9TPZQFFDKOQTKZDCWZOODEACKEWXOHABGCQLOZXWNIFMZKPQIRWHGMFPUUVBCQGX9SLJBSYUQKQLKGUAZVQHSQNIQY9UJHDCV9IEVMCD9FIRGAH9QQYCQHEXHGUBJPATWWKS9SLEPGLEPFAED99XDYLWKBAXRPKSENENWGOTFCDAYXRGDNFBZEZMDTEGUNC9DLM9J9SMOKMPBPNUTLNNOFUKFUDVXJZQJNDNLJEFZRAJWISPKRBHMJNQJFVBCYFEMXJHVSVZUXLQBNAZEU9GIVTBYHXZI9JUGJHMC9QZYOEWAAKBQZOIYRLTLMWODJLXPMPGNAQISOEODRKJJAOG99ORJPZHXUTUGDODIRNRNLGMCGDASIBVPYCVZCWAQIVGLMLNPVDPAMTCUNNMIMPZBNIRLOUZ9BDGEQFTO9NPAZK9KJZGVRGPQXGZFJ9VBWBJIUDSQGCGKTOKAAGSSJWWMHCLTKRAEWQMTCTNEBZCUMYXCA9KDGHFGHMCAYZI9IJBPZLSZPCVDXZIVIAFKVSCIFIGS9CUKYSQKJAUXBTYOJERATWBUIBGPFQLXFQMMRSPH9TJMOGQUVNMXCAQQGLSBRCMAOEKRRVCZRGTLRJHDFWHUIZUKXXJFDNKHTGEJHVKLLVIKWRSPJNHLHNWM9UJCRSKIDUYUDXKRPNDYWUZWMKLNEYMHXLBQWT9IDKHZLGCECFLQDZMOMCY9DBWTEHUOCZJMCOYUETNTH
@l3wi
l3wi / Validate PoW
Last active February 1, 2018 12:18
Simple script to validate POW in .js
const Crypto = require('iota.crypto.js')
const IOTA = require('iota.lib.js')
const pify = require('pify')
const iota = new IOTA({ provider: 'https://nodes.iota.cafe:443' })
// Vars
const bundle =
'G9QJBOOSY9UDEZZBX9HPEHIOJRLXGCSTIENORDH9KD9SCHOFHJXLIGGVHJZ99VUSUKFZLYVNQEQAHWLGW'

Keybase proof

I hereby claim:

  • I am l3wi on github.
  • I am lewi (https://keybase.io/lewi) on keybase.
  • I have a public key whose fingerprint is 6193 FD4C A672 8932 C14F 7662 A6F2 8FD6 2A45 BBC9

To claim this, I am signing this object: