Created
November 4, 2020 02:41
-
-
Save PatrickAlphaC/aa03cefe153700967875a1837d29cbba to your computer and use it in GitHub Desktop.
Sample contract call and getting gas price from the fastgas chainlink contract
This file contains hidden or 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
let ethers = require('ethers') | |
let provider = new ethers.providers.JsonRpcProvider(process.env.KOVAN_RPC_URL) | |
let address = '0x1510B61ba590751bB5dAa9757Bec1e8A0036E34f' | |
let abi = [ | |
{ | |
"inputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "userProvidedSeed", | |
"type": "uint256" | |
} | |
], | |
"name": "getRandomNumber", | |
"outputs": [ | |
{ | |
"internalType": "bytes32", | |
"name": "requestId", | |
"type": "bytes32" | |
} | |
], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "bytes32", | |
"name": "requestId", | |
"type": "bytes32" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "randomness", | |
"type": "uint256" | |
} | |
], | |
"name": "rawFulfillRandomness", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "bytes32", | |
"name": "_keyHash", | |
"type": "bytes32" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "_fee", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "_seed", | |
"type": "uint256" | |
} | |
], | |
"name": "requestRandomness", | |
"outputs": [ | |
{ | |
"internalType": "bytes32", | |
"name": "requestId", | |
"type": "bytes32" | |
} | |
], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"stateMutability": "nonpayable", | |
"type": "constructor" | |
}, | |
{ | |
"inputs": [], | |
"name": "withdrawLink", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "bytes32", | |
"name": "", | |
"type": "bytes32" | |
} | |
], | |
"name": "nonces", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "randomResult", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "round", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
} | |
] | |
let wallet = new ethers.Wallet(process.env.PRIVATE_KEY, provider) | |
const aggregatorV3InterfaceABI = [{ "inputs": [], "name": "decimals", "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "description", "outputs": [{ "internalType": "string", "name": "", "type": "string" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "uint80", "name": "_roundId", "type": "uint80" }], "name": "getRoundData", "outputs": [{ "internalType": "uint80", "name": "roundId", "type": "uint80" }, { "internalType": "int256", "name": "answer", "type": "int256" }, { "internalType": "uint256", "name": "startedAt", "type": "uint256" }, { "internalType": "uint256", "name": "updatedAt", "type": "uint256" }, { "internalType": "uint80", "name": "answeredInRound", "type": "uint80" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "latestRoundData", "outputs": [{ "internalType": "uint80", "name": "roundId", "type": "uint80" }, { "internalType": "int256", "name": "answer", "type": "int256" }, { "internalType": "uint256", "name": "startedAt", "type": "uint256" }, { "internalType": "uint256", "name": "updatedAt", "type": "uint256" }, { "internalType": "uint80", "name": "answeredInRound", "type": "uint80" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "version", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }] | |
const priceFeedAddr = "0x562C092bEb3a6DF77aDf0BB604F52c018E4f2814" // swap this for the fast gas address | |
let priceFeed = new ethers.Contract(priceFeedAddr, aggregatorV3InterfaceABI, wallet) | |
let gasPrice = 30000000000 | |
const main = async () => { | |
roundData = await priceFeed.latestRoundData() | |
// gasPrice = roundData['1'] // this is what you'll use | |
console.log("Gas Price is now " + gasPrice) | |
let overrides = { | |
// The price (in wei) per unit of gas | |
gasPrice: gasPrice, // Set the price based on the fast gas here | |
} | |
let contract = new ethers.Contract(address, abi, wallet) | |
let contractWithSigner = contract.connect(wallet) | |
let currentValue = await contract.randomResult() | |
// console.log(currentValue) | |
let tx = await contractWithSigner.getRandomNumber(15, overrides) | |
console.log(tx.hash) | |
await tx.wait() | |
let newValue = await contract.randomResult() | |
} | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment