Last active
February 2, 2023 12:54
-
-
Save yukairex/014d64cf4f69423235846a1b33a646fc to your computer and use it in GitHub Desktop.
GLO Claim script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const ethers = require("ethers"); | |
const {formatEther, parseEther} = ethers.utils | |
const provider = new ethers.providers.JsonRpcProvider('FILL IN YOUR RPC NODE URL'); | |
const userAddress = " FILL IN YOUR ADDRESS with Lobs " | |
const maxPriorityFee = 100; // change to whatever you like. i was using 100 gwei | |
const maxTotalFee = 150; // change to whatever you like. i was using 100 | |
const wrapDroABI = [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Collect","type":"event"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"claimer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"done","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"status","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]e | |
const wusdABI = [{"inputs":[{"internalType":"address[]","name":"fiatcoins","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"fiatcoin","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unwrap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"fiatcoin","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"referrer","type":"address"}],"name":"Wrap","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"epochOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshot","outputs":[{"components":[{"internalType":"uint32","name":"epoch","type":"uint32"},{"internalType":"uint112","name":"last","type":"uint112"},{"internalType":"uint112","name":"cumulative","type":"uint112"}],"internalType":"struct Snapshot","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fiatcoin","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unwrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fiatcoin","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"}],"name":"wrap","outputs":[],"stateMutability":"nonpayable","type":"function"}] | |
const wrapdrop = new ethers.Contract("0x46641e41e83a8f6151a0408580dd6c93d6b10efa", wrapDroABI, provider) | |
const wusd = new ethers.Contract("0x068e3563b1c19590f822c0e13445c4fa1b9eefa5", wusdABI, provider); | |
var txSent = false; | |
var isDone = false; | |
const main = async () => { | |
console.log("checking...") | |
if (isDone == true) { | |
console.log("mission completed") | |
return; | |
} | |
if (txSent == true) { | |
console.log("tx in process") | |
return; | |
} | |
let userEpoch = parseInt(await wusd.epochOf(userAddress)); | |
let currentEpoch = (await wusd.snapshot()).epoch | |
let statusEpoch = parseInt((await wrapdrop.status())[0]); | |
console.log(`user epoch: ${userEpoch}, snapshot epoch: ${currentEpoch}, wrapdrop epoch: ${statusEpoch}`) | |
if (currentEpoch > statusEpoch && ((currentEpoch - userEpoch) == 1 )) { | |
console.log("claim window open...") | |
let sim = await wrapdrop.callStatic.claim(); | |
console.log(sim) | |
try { | |
txSent = true | |
let tx = await wrapdrop.claim({ | |
gasLimit: 500000, | |
maxPriorityFeePerGas: ethers.utils.parseUnits(maxPriorityFee, 'gwei'), // change the gas fee to whatever u want | |
maxFeePerGas: ethers.utils.parseUnits(maxTotalFee, 'gwei'), // change the gas fee to whatever u want | |
}) | |
console.log(tx) | |
let receipt = await tx.wait(); | |
console.log(receipt) | |
txSent = false; | |
isDone = true; | |
}catch (err){ | |
console.log(err); | |
txSent = false | |
} | |
} | |
if (isDone == true) { | |
console.log("mission completed") | |
return; | |
} | |
if (txSent == true) { | |
console.log("tx in process") | |
return; | |
} | |
if ((userEpoch < currentEpoch) && (currentEpoch == statusEpoch)) { | |
// unwrap me | |
console.log(`unwrap to keep state`) | |
try { | |
txSent = true | |
let tx = await wusd.unwrap("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", 1); // unwrap tiny to usdc | |
let receipt = await tx.wait(); | |
console.log(receipt) | |
txSent = false | |
}catch(err) { | |
console.log(err) | |
txSent = true | |
} | |
} | |
} | |
main(); | |
setInterval(main, 12000) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment