index.js Implementation
Last updated
async function doSomething(web3) {
const contract = new web3.eth.Contract(abi, address);
const res = await contract.methods.readState();
}const BigNumber = require("bignumber.js");
// config
const aaveAbi = [{/* ... */}];
const closingAbi = [{/* ... */}];
const positionAddress = "0xe93C0f419AF19297D320563214Adbb2f28EF4C0c";
// globals
let aaveContract; // the standard Aave contract
let closingContract; // contract for closing Aave positions, deployed for this lambda
async function checkAavePosition(args) {
if (!aaveContract) aaveContract = new args.web3.eth.Contract(aaveAbi, "0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9");
if (!closingContract) closingContract = new args.web3.eth.Contract(aaveAbi, "0xBB51bD166d68c3DC5860190844Dfe1056Cea3122");
const position = await aaveContract.methods.getPositionData(positionAddress).call();
if (new BigNumber(position.healthFactor).dividedBy("1e18").toNumber() < 1.05) {
await closingContract.methods.closePosition(positionAddress).send();
}
}
module.exports.register = function(engine) {
engine.onInterval(checkAavePosition, {
interval: "10m",
network: "ethereum"
});
}