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:
| 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. |
| 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 |
| 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') |
| 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' |
| 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' |
| const Crypto = require('iota.crypto.js') | |
| // Vars | |
| const trytes = `IEQJQMEBIPXMRRUMMVIRAYDGIODMLU9WBNLSAJBKMXGLBN9MSSAUDIJRYGCBBNJMTWVHTFZCUKKYQXHWCZINYARZN9PXKYUXWIGHKIYSHJVNYQUUF9YJRQZJOHLMUVBWJA9RCOXYBIGFXYWUXMSLBQWGVHFJH9BQNXAIM9HOC9WVBYZJFVDQBYMXLMLNEYSETVYBDLMVVXHUYEMZEQJARFXYVYLR9TPZQFFDKOQTKZDCWZOODEACKEWXOHABGCQLOZXWNIFMZKPQIRWHGMFPUUVBCQGX9SLJBSYUQKQLKGUAZVQHSQNIQY9UJHDCV9IEVMCD9FIRGAH9QQYCQHEXHGUBJPATWWKS9SLEPGLEPFAED99XDYLWKBAXRPKSENENWGOTFCDAYXRGDNFBZEZMDTEGUNC9DLM9J9SMOKMPBPNUTLNNOFUKFUDVXJZQJNDNLJEFZRAJWISPKRBHMJNQJFVBCYFEMXJHVSVZUXLQBNAZEU9GIVTBYHXZI9JUGJHMC9QZYOEWAAKBQZOIYRLTLMWODJLXPMPGNAQISOEODRKJJAOG99ORJPZHXUTUGDODIRNRNLGMCGDASIBVPYCVZCWAQIVGLMLNPVDPAMTCUNNMIMPZBNIRLOUZ9BDGEQFTO9NPAZK9KJZGVRGPQXGZFJ9VBWBJIUDSQGCGKTOKAAGSSJWWMHCLTKRAEWQMTCTNEBZCUMYXCA9KDGHFGHMCAYZI9IJBPZLSZPCVDXZIVIAFKVSCIFIGS9CUKYSQKJAUXBTYOJERATWBUIBGPFQLXFQMMRSPH9TJMOGQUVNMXCAQQGLSBRCMAOEKRRVCZRGTLRJHDFWHUIZUKXXJFDNKHTGEJHVKLLVIKWRSPJNHLHNWM9UJCRSKIDUYUDXKRPNDYWUZWMKLNEYMHXLBQWT9IDKHZLGCECFLQDZMOMCY9DBWTEHUOCZJMCOYUETNTH |
| 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' |
I hereby claim:
To claim this, I am signing this object: