Skip to content

Instantly share code, notes, and snippets.

@staccDOTsol
Created February 10, 2020 18:56
Show Gist options
  • Save staccDOTsol/ac0f2b1d7ce4f334c4cba805e26452bb to your computer and use it in GitHub Desktop.
Save staccDOTsol/ac0f2b1d7ce4f334c4cba805e26452bb to your computer and use it in GitHub Desktop.
/*
this bot assumes you've already enabled borrowing on compound.finance,
that you already approved transfers on behalf of DAI and USDC
(can do here https://chiragkhatri.me/compound-liquidator), and that you have
DAI and USDC on your Ether address, while having nothing lent or borrowed yet.
Author: Jarett Dunn jare@coindexlabs.com
*/
let request = require('request-promise')
const CoinbasePro = require('coinbase-pro');
const publicClient = new CoinbasePro.PublicClient();
const Web3 = require('web3')
const httpProvider = "http://localhost:8545"
var web3 = new Web3(new Web3.providers.HttpProvider(httpProvider));
//coinbase credscom
const key = '';
const secret = '';
const passphrase = '';
const privateKey = "";
const address = "";
const web3Pass = ""
var state = 'none'
let SdkManager = require('@radarrelay/sdk').SdkManager
let EventName = require('@radarrelay/sdk').EventName
let WebsocketRequestTopic = require('@radarrelay/types').WebsocketRequestTopic
let UserOrderType = require('@radarrelay/types').UserOrderType
try {
web3.eth.personal.unlockAccount(address, web3Pass, 505000);
} catch (err) {
console.log(err)
}
async function setupRadar() {
const rr = SdkManager.Setup({
radarRestEndpoint: 'https://api.kovan.radarrelay.com/v2',
radarWebsocketEndpoint: 'wss://ws.kovan.radarrelay.com/v2',
rpcUrl: 'http://localhost:8545',
});
// --------------------------------
// Listen to loading progress
rr.events.on(EventName.Loading, data => {
process.stdout.write('....');
if (data.progress === 100) {
process.stdout.write('🚀');
}
});
// Initialize the SDK
await SdkManager.InitializeAsync(rr);
const usdcDaiMarket = await rr.markets.getAsync('USDC-DAI');
let curEthBal = await rr.account.getEthBalanceAsync();
let curUsdcBal = await rr.account.getTokenBalanceAsync(usdcDaiMarket.baseTokenAddress);
console.log(curEthBal)
console.log(curUsdcBal)
const receipt = await rr.account.setUnlimitedTokenAllowanceAsync(usdcDaiMarket.quoteTokenAddress, {
transactionOpts: {}, //gasPrice: new BigNumber(1) },
awaitTransactionMined: true
});
const subscription = usdcDaiMarket.subscribe(WebsocketRequestTopic.BOOK, (mssg => {
console.log(mssg)
}));
}
setupRadar()
const apiURI = 'https://api.pro.coinbase.com';
const authedClient = new CoinbasePro.AuthenticatedClient(
key,
secret,
passphrase,
apiURI
);
let daidep
let usdcdep
async function getDeps() {
let depositAddressParams = {
currency: 'DAI',
};
authedClient.depositCrypto(depositAddressParams, function(e, r, d) {
daidep = (d.address)
});
depositAddressParams = {
currency: 'USDC',
};
authedClient.depositCrypto(depositAddressParams, function(e, r, d) {
usdcdep = (d.address)
});
}
getDeps()
setInterval(function() {
getDeps()
}, 500 * 1000)
let daiBal
let usdcBal
setInterval(function() {
authedClient.getAccounts(function(e, r, d) {
for (var a in d) {
if (d[a].currency == 'DAI') {
daiBal = parseFloat(d[a].balance)
}
if (d[a].currency == 'USDC') {
usdcBal = parseFloat(d[a].balance)
}
}
});
}, 10000);
//create account
// console.log(web3.eth.accounts.create(web3.utils.randomHex(32)));
web3.eth.accounts.wallet.add({
privateKey: privateKey,
address: address
});
try {
web3.eth.personal.unlockAccount(address, web3Pass, 505000);
} catch (err) {
console.log(err)
}
setInterval(function() {
try {
web3.eth.personal.unlockAccount(address, web3Pass, 505000);
} catch (err) {
console.log(err)
}
getEth()
}, 500000)
let ethusd = 180
async function getEth() {
try {
let resp = request('https://api.coinmarketcap.com/v1/ticker/ethereum/?convert=USD', function(e, r, d) {
try {
d = JSON.parse(d)
ethusd = d[0].price_usd
} catch (err) {
ethusd = 180
}
})
} catch (err) {}
}
let compounds = {}
let compounds2 = {}
let ddexes = {}
let etheth;
//dai-usdc
async function compoundPrices() {
try {
let resp = request("https://api.compound.finance/api/v2/ctoken", function(e, r, d) {
d = JSON.parse(d)
for (var cToken in d.cToken) {
compounds[d.cToken[cToken].underlying_symbol] = {
'id': d.cToken[cToken].underlying_symbol,
'name': d.cToken[cToken].name,
'price': d.cToken[cToken].underlying_price.value
}
}
setTimeout(function() {
prevstate = state
if (compounds['DAI'].price * ethusd / (compounds['USDC'].price * ethusd) > 1.009) {
state = 'sellusdc'
} else if (compounds['DAI'].price * ethusd / (compounds['USDC'].price * ethusd) < 1 - .009) {
state = 'selldai'
} else {
state = 'none'
}
if (maining == false) {
console.log('state: ' + state)
mainLoop()
}
}, 12000)
})
} catch (err) {
}
}
let prevstate = 'none'
console.log(state)
setInterval(function() {
compoundPrices()
getTicker()
}, 5000)
let ticker = {}
async function getTicker() {
try {
publicClient.getProductTicker('DAI-USDC', function(e, r, d) {
ticker = (d)
});
} catch (err) {}
}
state = "none"
compoundPrices()
getTicker()
let daiAbi = [{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [{
"name": "",
"type": "string"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "spender",
"type": "address"
}, {
"name": "amount",
"type": "uint256"
}],
"name": "approve",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "repayAmount",
"type": "uint256"
}],
"name": "repayBorrow",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "reserveFactorMantissa",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "account",
"type": "address"
}],
"name": "borrowBalanceCurrent",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "exchangeRateStored",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "src",
"type": "address"
}, {
"name": "dst",
"type": "address"
}, {
"name": "amount",
"type": "uint256"
}],
"name": "transferFrom",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "borrower",
"type": "address"
}, {
"name": "repayAmount",
"type": "uint256"
}],
"name": "repayBorrowBehalf",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "pendingAdmin",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "owner",
"type": "address"
}],
"name": "balanceOfUnderlying",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "getCash",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "newComptroller",
"type": "address"
}],
"name": "_setComptroller",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "totalBorrows",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "comptroller",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "reduceAmount",
"type": "uint256"
}],
"name": "_reduceReserves",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "initialExchangeRateMantissa",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "accrualBlockNumber",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "underlying",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [{
"name": "owner",
"type": "address"
}],
"name": "balanceOf",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "totalBorrowsCurrent",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "redeemAmount",
"type": "uint256"
}],
"name": "redeemUnderlying",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "totalReserves",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [{
"name": "",
"type": "string"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [{
"name": "account",
"type": "address"
}],
"name": "borrowBalanceStored",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "mintAmount",
"type": "uint256"
}],
"name": "mint",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "accrueInterest",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "dst",
"type": "address"
}, {
"name": "amount",
"type": "uint256"
}],
"name": "transfer",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "borrowIndex",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "supplyRatePerBlock",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "liquidator",
"type": "address"
}, {
"name": "borrower",
"type": "address"
}, {
"name": "seizeTokens",
"type": "uint256"
}],
"name": "seize",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "newPendingAdmin",
"type": "address"
}],
"name": "_setPendingAdmin",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "exchangeRateCurrent",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [{
"name": "account",
"type": "address"
}],
"name": "getAccountSnapshot",
"outputs": [{
"name": "",
"type": "uint256"
}, {
"name": "",
"type": "uint256"
}, {
"name": "",
"type": "uint256"
}, {
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "borrowAmount",
"type": "uint256"
}],
"name": "borrow",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "redeemTokens",
"type": "uint256"
}],
"name": "redeem",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [{
"name": "owner",
"type": "address"
}, {
"name": "spender",
"type": "address"
}],
"name": "allowance",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "_acceptAdmin",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "newInterestRateModel",
"type": "address"
}],
"name": "_setInterestRateModel",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "interestRateModel",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "borrower",
"type": "address"
}, {
"name": "repayAmount",
"type": "uint256"
}, {
"name": "cTokenCollateral",
"type": "address"
}],
"name": "liquidateBorrow",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "admin",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "borrowRatePerBlock",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "newReserveFactorMantissa",
"type": "uint256"
}],
"name": "_setReserveFactor",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "isCToken",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"inputs": [{
"name": "underlying_",
"type": "address"
}, {
"name": "comptroller_",
"type": "address"
}, {
"name": "interestRateModel_",
"type": "address"
}, {
"name": "initialExchangeRateMantissa_",
"type": "uint256"
}, {
"name": "name_",
"type": "string"
}, {
"name": "symbol_",
"type": "string"
}, {
"name": "decimals_",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "interestAccumulated",
"type": "uint256"
}, {
"indexed": false,
"name": "borrowIndex",
"type": "uint256"
}, {
"indexed": false,
"name": "totalBorrows",
"type": "uint256"
}],
"name": "AccrueInterest",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "minter",
"type": "address"
}, {
"indexed": false,
"name": "mintAmount",
"type": "uint256"
}, {
"indexed": false,
"name": "mintTokens",
"type": "uint256"
}],
"name": "Mint",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "redeemer",
"type": "address"
}, {
"indexed": false,
"name": "redeemAmount",
"type": "uint256"
}, {
"indexed": false,
"name": "redeemTokens",
"type": "uint256"
}],
"name": "Redeem",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "borrower",
"type": "address"
}, {
"indexed": false,
"name": "borrowAmount",
"type": "uint256"
}, {
"indexed": false,
"name": "accountBorrows",
"type": "uint256"
}, {
"indexed": false,
"name": "totalBorrows",
"type": "uint256"
}],
"name": "Borrow",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "payer",
"type": "address"
}, {
"indexed": false,
"name": "borrower",
"type": "address"
}, {
"indexed": false,
"name": "repayAmount",
"type": "uint256"
}, {
"indexed": false,
"name": "accountBorrows",
"type": "uint256"
}, {
"indexed": false,
"name": "totalBorrows",
"type": "uint256"
}],
"name": "RepayBorrow",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "liquidator",
"type": "address"
}, {
"indexed": false,
"name": "borrower",
"type": "address"
}, {
"indexed": false,
"name": "repayAmount",
"type": "uint256"
}, {
"indexed": false,
"name": "cTokenCollateral",
"type": "address"
}, {
"indexed": false,
"name": "seizeTokens",
"type": "uint256"
}],
"name": "LiquidateBorrow",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "oldPendingAdmin",
"type": "address"
}, {
"indexed": false,
"name": "newPendingAdmin",
"type": "address"
}],
"name": "NewPendingAdmin",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "oldAdmin",
"type": "address"
}, {
"indexed": false,
"name": "newAdmin",
"type": "address"
}],
"name": "NewAdmin",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "oldComptroller",
"type": "address"
}, {
"indexed": false,
"name": "newComptroller",
"type": "address"
}],
"name": "NewComptroller",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "oldInterestRateModel",
"type": "address"
}, {
"indexed": false,
"name": "newInterestRateModel",
"type": "address"
}],
"name": "NewMarketInterestRateModel",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "oldReserveFactorMantissa",
"type": "uint256"
}, {
"indexed": false,
"name": "newReserveFactorMantissa",
"type": "uint256"
}],
"name": "NewReserveFactor",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "admin",
"type": "address"
}, {
"indexed": false,
"name": "reduceAmount",
"type": "uint256"
}, {
"indexed": false,
"name": "newTotalReserves",
"type": "uint256"
}],
"name": "ReservesReduced",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "error",
"type": "uint256"
}, {
"indexed": false,
"name": "info",
"type": "uint256"
}, {
"indexed": false,
"name": "detail",
"type": "uint256"
}],
"name": "Failure",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "from",
"type": "address"
}, {
"indexed": true,
"name": "to",
"type": "address"
}, {
"indexed": false,
"name": "amount",
"type": "uint256"
}],
"name": "Transfer",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "owner",
"type": "address"
}, {
"indexed": true,
"name": "spender",
"type": "address"
}, {
"indexed": false,
"name": "amount",
"type": "uint256"
}],
"name": "Approval",
"type": "event"
}]
let daiUnderlyingAbi = [{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [{
"name": "",
"type": "bytes32"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "stop",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "guy",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "approve",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "owner_",
"type": "address"
}],
"name": "setOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "src",
"type": "address"
}, {
"name": "dst",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "transferFrom",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "guy",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "mint",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "wad",
"type": "uint256"
}],
"name": "burn",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "name_",
"type": "bytes32"
}],
"name": "setName",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [{
"name": "src",
"type": "address"
}],
"name": "balanceOf",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "stopped",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "authority_",
"type": "address"
}],
"name": "setAuthority",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [{
"name": "",
"type": "bytes32"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "guy",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "burn",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "wad",
"type": "uint256"
}],
"name": "mint",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "dst",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "transfer",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "dst",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "push",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "src",
"type": "address"
}, {
"name": "dst",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "move",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "start",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "authority",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "guy",
"type": "address"
}],
"name": "approve",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [{
"name": "src",
"type": "address"
}, {
"name": "guy",
"type": "address"
}],
"name": "allowance",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "src",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "pull",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"inputs": [{
"name": "symbol_",
"type": "bytes32"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "guy",
"type": "address"
}, {
"indexed": false,
"name": "wad",
"type": "uint256"
}],
"name": "Mint",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "guy",
"type": "address"
}, {
"indexed": false,
"name": "wad",
"type": "uint256"
}],
"name": "Burn",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "authority",
"type": "address"
}],
"name": "LogSetAuthority",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "owner",
"type": "address"
}],
"name": "LogSetOwner",
"type": "event"
}, {
"anonymous": true,
"inputs": [{
"indexed": true,
"name": "sig",
"type": "bytes4"
}, {
"indexed": true,
"name": "guy",
"type": "address"
}, {
"indexed": true,
"name": "foo",
"type": "bytes32"
}, {
"indexed": true,
"name": "bar",
"type": "bytes32"
}, {
"indexed": false,
"name": "wad",
"type": "uint256"
}, {
"indexed": false,
"name": "fax",
"type": "bytes"
}],
"name": "LogNote",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "src",
"type": "address"
}, {
"indexed": true,
"name": "guy",
"type": "address"
}, {
"indexed": false,
"name": "wad",
"type": "uint256"
}],
"name": "Approval",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "src",
"type": "address"
}, {
"indexed": true,
"name": "dst",
"type": "address"
}, {
"indexed": false,
"name": "wad",
"type": "uint256"
}],
"name": "Transfer",
"type": "event"
}]
let daiAddress = '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359'
let usdcAbi = [{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [{
"name": "",
"type": "string"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "spender",
"type": "address"
}, {
"name": "amount",
"type": "uint256"
}],
"name": "approve",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "repayAmount",
"type": "uint256"
}],
"name": "repayBorrow",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "reserveFactorMantissa",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "account",
"type": "address"
}],
"name": "borrowBalanceCurrent",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "exchangeRateStored",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "src",
"type": "address"
}, {
"name": "dst",
"type": "address"
}, {
"name": "amount",
"type": "uint256"
}],
"name": "transferFrom",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "borrower",
"type": "address"
}, {
"name": "repayAmount",
"type": "uint256"
}],
"name": "repayBorrowBehalf",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "pendingAdmin",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "owner",
"type": "address"
}],
"name": "balanceOfUnderlying",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "getCash",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "newComptroller",
"type": "address"
}],
"name": "_setComptroller",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "totalBorrows",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "comptroller",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "reduceAmount",
"type": "uint256"
}],
"name": "_reduceReserves",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "initialExchangeRateMantissa",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "accrualBlockNumber",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "underlying",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [{
"name": "owner",
"type": "address"
}],
"name": "balanceOf",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "totalBorrowsCurrent",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "redeemAmount",
"type": "uint256"
}],
"name": "redeemUnderlying",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "totalReserves",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [{
"name": "",
"type": "string"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [{
"name": "account",
"type": "address"
}],
"name": "borrowBalanceStored",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "mintAmount",
"type": "uint256"
}],
"name": "mint",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "accrueInterest",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "dst",
"type": "address"
}, {
"name": "amount",
"type": "uint256"
}],
"name": "transfer",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "borrowIndex",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "supplyRatePerBlock",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "liquidator",
"type": "address"
}, {
"name": "borrower",
"type": "address"
}, {
"name": "seizeTokens",
"type": "uint256"
}],
"name": "seize",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "newPendingAdmin",
"type": "address"
}],
"name": "_setPendingAdmin",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "exchangeRateCurrent",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [{
"name": "account",
"type": "address"
}],
"name": "getAccountSnapshot",
"outputs": [{
"name": "",
"type": "uint256"
}, {
"name": "",
"type": "uint256"
}, {
"name": "",
"type": "uint256"
}, {
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "borrowAmount",
"type": "uint256"
}],
"name": "borrow",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "redeemTokens",
"type": "uint256"
}],
"name": "redeem",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [{
"name": "owner",
"type": "address"
}, {
"name": "spender",
"type": "address"
}],
"name": "allowance",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "_acceptAdmin",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "newInterestRateModel",
"type": "address"
}],
"name": "_setInterestRateModel",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "interestRateModel",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "borrower",
"type": "address"
}, {
"name": "repayAmount",
"type": "uint256"
}, {
"name": "cTokenCollateral",
"type": "address"
}],
"name": "liquidateBorrow",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "admin",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "borrowRatePerBlock",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "newReserveFactorMantissa",
"type": "uint256"
}],
"name": "_setReserveFactor",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "isCToken",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"inputs": [{
"name": "underlying_",
"type": "address"
}, {
"name": "comptroller_",
"type": "address"
}, {
"name": "interestRateModel_",
"type": "address"
}, {
"name": "initialExchangeRateMantissa_",
"type": "uint256"
}, {
"name": "name_",
"type": "string"
}, {
"name": "symbol_",
"type": "string"
}, {
"name": "decimals_",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "interestAccumulated",
"type": "uint256"
}, {
"indexed": false,
"name": "borrowIndex",
"type": "uint256"
}, {
"indexed": false,
"name": "totalBorrows",
"type": "uint256"
}],
"name": "AccrueInterest",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "minter",
"type": "address"
}, {
"indexed": false,
"name": "mintAmount",
"type": "uint256"
}, {
"indexed": false,
"name": "mintTokens",
"type": "uint256"
}],
"name": "Mint",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "redeemer",
"type": "address"
}, {
"indexed": false,
"name": "redeemAmount",
"type": "uint256"
}, {
"indexed": false,
"name": "redeemTokens",
"type": "uint256"
}],
"name": "Redeem",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "borrower",
"type": "address"
}, {
"indexed": false,
"name": "borrowAmount",
"type": "uint256"
}, {
"indexed": false,
"name": "accountBorrows",
"type": "uint256"
}, {
"indexed": false,
"name": "totalBorrows",
"type": "uint256"
}],
"name": "Borrow",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "payer",
"type": "address"
}, {
"indexed": false,
"name": "borrower",
"type": "address"
}, {
"indexed": false,
"name": "repayAmount",
"type": "uint256"
}, {
"indexed": false,
"name": "accountBorrows",
"type": "uint256"
}, {
"indexed": false,
"name": "totalBorrows",
"type": "uint256"
}],
"name": "RepayBorrow",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "liquidator",
"type": "address"
}, {
"indexed": false,
"name": "borrower",
"type": "address"
}, {
"indexed": false,
"name": "repayAmount",
"type": "uint256"
}, {
"indexed": false,
"name": "cTokenCollateral",
"type": "address"
}, {
"indexed": false,
"name": "seizeTokens",
"type": "uint256"
}],
"name": "LiquidateBorrow",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "oldPendingAdmin",
"type": "address"
}, {
"indexed": false,
"name": "newPendingAdmin",
"type": "address"
}],
"name": "NewPendingAdmin",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "oldAdmin",
"type": "address"
}, {
"indexed": false,
"name": "newAdmin",
"type": "address"
}],
"name": "NewAdmin",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "oldComptroller",
"type": "address"
}, {
"indexed": false,
"name": "newComptroller",
"type": "address"
}],
"name": "NewComptroller",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "oldInterestRateModel",
"type": "address"
}, {
"indexed": false,
"name": "newInterestRateModel",
"type": "address"
}],
"name": "NewMarketInterestRateModel",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "oldReserveFactorMantissa",
"type": "uint256"
}, {
"indexed": false,
"name": "newReserveFactorMantissa",
"type": "uint256"
}],
"name": "NewReserveFactor",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "admin",
"type": "address"
}, {
"indexed": false,
"name": "reduceAmount",
"type": "uint256"
}, {
"indexed": false,
"name": "newTotalReserves",
"type": "uint256"
}],
"name": "ReservesReduced",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "error",
"type": "uint256"
}, {
"indexed": false,
"name": "info",
"type": "uint256"
}, {
"indexed": false,
"name": "detail",
"type": "uint256"
}],
"name": "Failure",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "from",
"type": "address"
}, {
"indexed": true,
"name": "to",
"type": "address"
}, {
"indexed": false,
"name": "amount",
"type": "uint256"
}],
"name": "Transfer",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "owner",
"type": "address"
}, {
"indexed": true,
"name": "spender",
"type": "address"
}, {
"indexed": false,
"name": "amount",
"type": "uint256"
}],
"name": "Approval",
"type": "event"
}]
let usdcUnderlyingAbi = [{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [{
"name": "",
"type": "string"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "_spender",
"type": "address"
}, {
"name": "_value",
"type": "uint256"
}],
"name": "approve",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "_to",
"type": "address"
}, {
"name": "_amount",
"type": "uint256"
}],
"name": "issueTo",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "newIssuer",
"type": "address"
}],
"name": "addIssuer",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "_from",
"type": "address"
}, {
"name": "_to",
"type": "address"
}, {
"name": "_value",
"type": "uint256"
}],
"name": "transferFrom",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [{
"name": "",
"type": "address"
}],
"name": "issuers",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "unpause",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "_value",
"type": "uint256"
}],
"name": "burn",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "removedIssuer",
"type": "address"
}],
"name": "removeIssuer",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "paused",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "_spender",
"type": "address"
}, {
"name": "_subtractedValue",
"type": "uint256"
}],
"name": "decreaseApproval",
"outputs": [{
"name": "success",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [{
"name": "_owner",
"type": "address"
}],
"name": "balanceOf",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "_from",
"type": "address"
}, {
"name": "_value",
"type": "uint256"
}],
"name": "burnFrom",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "pause",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [{
"name": "",
"type": "string"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "_to",
"type": "address"
}, {
"name": "_value",
"type": "uint256"
}],
"name": "transfer",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "_amount",
"type": "uint256"
}],
"name": "issue",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "_spender",
"type": "address"
}, {
"name": "_addedValue",
"type": "uint256"
}],
"name": "increaseApproval",
"outputs": [{
"name": "success",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [{
"name": "_owner",
"type": "address"
}, {
"name": "_spender",
"type": "address"
}],
"name": "allowance",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "_newOwner",
"type": "address"
}],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"inputs": [{
"name": "initialSupply",
"type": "uint256"
}, {
"name": "tokenName",
"type": "string"
}, {
"name": "tokenSymbol",
"type": "string"
}, {
"name": "tokenDecimals",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "to",
"type": "address"
}, {
"indexed": false,
"name": "amount",
"type": "uint256"
}],
"name": "Mint",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "newIssuer",
"type": "address"
}],
"name": "IssuerAdded",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "removedIssuer",
"type": "address"
}],
"name": "IssuerRemoved",
"type": "event"
}, {
"anonymous": false,
"inputs": [],
"name": "Pause",
"type": "event"
}, {
"anonymous": false,
"inputs": [],
"name": "Unpause",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "previousOwner",
"type": "address"
}],
"name": "OwnershipRenounced",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "previousOwner",
"type": "address"
}, {
"indexed": true,
"name": "newOwner",
"type": "address"
}],
"name": "OwnershipTransferred",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "burner",
"type": "address"
}, {
"indexed": false,
"name": "value",
"type": "uint256"
}],
"name": "Burn",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "owner",
"type": "address"
}, {
"indexed": true,
"name": "spender",
"type": "address"
}, {
"indexed": false,
"name": "value",
"type": "uint256"
}],
"name": "Approval",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "from",
"type": "address"
}, {
"indexed": true,
"name": "to",
"type": "address"
}, {
"indexed": false,
"name": "value",
"type": "uint256"
}],
"name": "Transfer",
"type": "event"
}]
let usdsAddress = '0xa4bdb11dc0a2bec88d24a3aa1e6bb17201112ebe'
let trollAbi = [{
"constant": true,
"inputs": [],
"name": "pendingAdmin",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "newPendingAdmin",
"type": "address"
}],
"name": "_setPendingAdmin",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "comptrollerImplementation",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "_acceptImplementation",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "pendingComptrollerImplementation",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "newPendingImplementation",
"type": "address"
}],
"name": "_setPendingImplementation",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "_acceptAdmin",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "admin",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}, {
"payable": true,
"stateMutability": "payable",
"type": "fallback"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "oldPendingImplementation",
"type": "address"
}, {
"indexed": false,
"name": "newPendingImplementation",
"type": "address"
}],
"name": "NewPendingImplementation",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "oldImplementation",
"type": "address"
}, {
"indexed": false,
"name": "newImplementation",
"type": "address"
}],
"name": "NewImplementation",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "oldPendingAdmin",
"type": "address"
}, {
"indexed": false,
"name": "newPendingAdmin",
"type": "address"
}],
"name": "NewPendingAdmin",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "oldAdmin",
"type": "address"
}, {
"indexed": false,
"name": "newAdmin",
"type": "address"
}],
"name": "NewAdmin",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "error",
"type": "uint256"
}, {
"indexed": false,
"name": "info",
"type": "uint256"
}, {
"indexed": false,
"name": "detail",
"type": "uint256"
}],
"name": "Failure",
"type": "event"
}]
let cDAI = "0xf5dce57282a584d2746faf1593d3121fcac444dc"
let cDaiInstance = new web3.eth.Contract(daiAbi, cDAI);
let cUsdc = '0x39aa39c021dfbae8fac545936693ac917d5e7563'
let DAI2 = '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359'
let USDC2 = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
let cUsdcInstance = new web3.eth.Contract(usdcAbi, cUsdc);
let usdcabi2 = [{
"constant": false,
"inputs": [{
"name": "newImplementation",
"type": "address"
}],
"name": "upgradeTo",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "newImplementation",
"type": "address"
}, {
"name": "data",
"type": "bytes"
}],
"name": "upgradeToAndCall",
"outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "implementation",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "newAdmin",
"type": "address"
}],
"name": "changeAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "admin",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"inputs": [{
"name": "_implementation",
"type": "address"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}, {
"payable": true,
"stateMutability": "payable",
"type": "fallback"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "previousAdmin",
"type": "address"
}, {
"indexed": false,
"name": "newAdmin",
"type": "address"
}],
"name": "AdminChanged",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": false,
"name": "implementation",
"type": "address"
}],
"name": "Upgraded",
"type": "event"
}]
let daiabi2 = [{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [{
"name": "",
"type": "bytes32"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "stop",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "guy",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "approve",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "owner_",
"type": "address"
}],
"name": "setOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "src",
"type": "address"
}, {
"name": "dst",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "transferFrom",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "guy",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "mint",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "wad",
"type": "uint256"
}],
"name": "burn",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "name_",
"type": "bytes32"
}],
"name": "setName",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [{
"name": "src",
"type": "address"
}],
"name": "balanceOf",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "stopped",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "authority_",
"type": "address"
}],
"name": "setAuthority",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [{
"name": "",
"type": "bytes32"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "guy",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "burn",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "wad",
"type": "uint256"
}],
"name": "mint",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "dst",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "transfer",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "dst",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "push",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "src",
"type": "address"
}, {
"name": "dst",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "move",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "start",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "authority",
"outputs": [{
"name": "",
"type": "address"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "guy",
"type": "address"
}],
"name": "approve",
"outputs": [{
"name": "",
"type": "bool"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [{
"name": "src",
"type": "address"
}, {
"name": "guy",
"type": "address"
}],
"name": "allowance",
"outputs": [{
"name": "",
"type": "uint256"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{
"name": "src",
"type": "address"
}, {
"name": "wad",
"type": "uint256"
}],
"name": "pull",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"inputs": [{
"name": "symbol_",
"type": "bytes32"
}],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "guy",
"type": "address"
}, {
"indexed": false,
"name": "wad",
"type": "uint256"
}],
"name": "Mint",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "guy",
"type": "address"
}, {
"indexed": false,
"name": "wad",
"type": "uint256"
}],
"name": "Burn",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "authority",
"type": "address"
}],
"name": "LogSetAuthority",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "owner",
"type": "address"
}],
"name": "LogSetOwner",
"type": "event"
}, {
"anonymous": true,
"inputs": [{
"indexed": true,
"name": "sig",
"type": "bytes4"
}, {
"indexed": true,
"name": "guy",
"type": "address"
}, {
"indexed": true,
"name": "foo",
"type": "bytes32"
}, {
"indexed": true,
"name": "bar",
"type": "bytes32"
}, {
"indexed": false,
"name": "wad",
"type": "uint256"
}, {
"indexed": false,
"name": "fax",
"type": "bytes"
}],
"name": "LogNote",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "src",
"type": "address"
}, {
"indexed": true,
"name": "guy",
"type": "address"
}, {
"indexed": false,
"name": "wad",
"type": "uint256"
}],
"name": "Approval",
"type": "event"
}, {
"anonymous": false,
"inputs": [{
"indexed": true,
"name": "src",
"type": "address"
}, {
"indexed": true,
"name": "dst",
"type": "address"
}, {
"indexed": false,
"name": "wad",
"type": "uint256"
}],
"name": "Transfer",
"type": "event"
}]
let minABI = [
// balanceOf
{
"constant": true,
"inputs": [{
"name": "_owner",
"type": "address"
}],
"name": "balanceOf",
"outputs": [{
"name": "balance",
"type": "uint256"
}],
"type": "function"
},
// decimals
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [{
"name": "",
"type": "uint8"
}],
"type": "function"
}
];
let i1 = new web3.eth.Contract(minABI, DAI2);
let i2 = new web3.eth.Contract(minABI, USDC2);
let decs = {}
async function balances() {
let balance = await cDaiInstance.methods.balanceOf(address).call()
// Get decimals
let decimals = await cDaiInstance.methods.decimals().call()
// calculate a balance
balance = balance / (10 ** decimals);
bs['cDAI'] = balance;
decs['cDAI'] = parseFloat(decimals)
balance = await cUsdcInstance.methods.balanceOf(address).call()
// Get decimals
decimals = await cUsdcInstance.methods.decimals().call()
// calculate a balance
balance = balance / (10 ** decimals);
bs['cUSDC'] = balance;
decs['cUSDC'] = parseFloat(decimals)
balance = await i1.methods.balanceOf(address).call()
// Get decimals
decimals = await i1.methods.decimals().call()
// calculate a balance
balance = balance / (10 ** decimals);
bs['DAI'] = balance;
decs['DAI'] = parseFloat(decimals)
balance = await i2.methods.balanceOf(address).call()
// Get decimals
decimals = await i2.methods.decimals().call()
// calculate a balance
balance = balance / (10 ** decimals);
bs['USDC'] = balance;
decs['USDC'] = parseFloat(decimals)
}
let bs = {}
balances()
setInterval(function() {
balances()
}, 3000)
let comptroller = "0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b";
let borrowed
const troll = new web3.eth.Contract(trollAbi, comptroller);
let firstrun = true;
let maining = false
async function mainLoop() {
console.log('mainloop')
maining = true
if ((prevstate == 'none' && state == 'selldai' || prevstate == 'none' && state == 'sellusdc') && !firstrun) {
if (borrowed.token == 'DAI') {
await cDaiInstance.methods.repayBorrow(Math.floor(borrowed.amount)).send({
from: address,
gasPrice: "0x51F4D5C00"
});
}
firstrun = true
if (borrowed.token == 'USDC') {
await cUsdcInstance.methods.repayBorrow(Math.floor(borrowed.amount)).send({
from: address,
gasPrice: "0x51F4D5C00"
});
}
}
if (state == 'sellusdc') { // && bs['DAI'] >= 1){
//var amt = web3.utils.toWei((bs['DAI'] ).toString())
var amt2 = Math.floor(4.32 * 10 ** decs['USDC'] * 0.75 * 0.8)
console.log('...minting...')
// await cDaiInstance.methods.mint(amt).send({from: address, gasLimit: '0x493E0',gasPrice: "0x51F4D5C00"});
if (firstrun) {
//await cUsdcInstance.methods.borrow(amt2).send({from: address, gasLimit: '0x' + ((1000000).toString(16)),gasPrice: "0x51F4D5C00"});
firstrun = false;
borrowed = {
'token': 'USDC',
'amount': amt2
}
}
var count = web3.eth.getTransactionCount(address);
var abiArray = usdcUnderlyingAbi;
var contractAddress = usdsAddress;
var contract = new web3.eth.Contract(abiArray, contractAddress);
balances()
var rawTransaction = {
"from": address,
"nonce": '0x' + count.toString(16),
"gasPrice": "0x51F4D5C00",
"gasLimit": "0x7458",
"to": contractAddress,
"value": "0x0",
"data": contract.methods.transfer.getData(usdcdep, bs['USDC'], {
from: address
}),
"chainId": 1
};
var privKey = new Buffer(privateKey, 'hex');
var tx = new Tx(rawTransaction);
tx.sign(privKey);
var serializedTx = tx.serialize();
/*
web3.eth.sendRawTransaction('0x' + serializedTx.toString('hex'), function(err, hash) {
if (!err){
console.log(hash);
//state = 'exchange'
console.log('exchange')
setTimeout(function(){
doExchange()
}, 5000)
}
else
console.log(err);
});
*/
} else if (state == 'selldai' && bs['USDC'] >= 1) {
var amt = bs['USDC'] * (10 ** decs['USDC'])
var amt2 = Math.floor(bs['USDC'] * 10 ** decs['DAI'] * 0.75 * 0.8)
await cUsdcInstance.methods.mint(amt).send({
from: address,
gasLimit: '0x493E0',
gasPrice: "0x51F4D5C00"
});
if (firstrun) {
await cDaiInstance.methods.borrow(amt2).send({
from: address,
gasLimit: '0x' + ((1000000).toString(16)),
gasPrice: "0x51F4D5C00"
});
firstrun = false;
borrowed = {
'token': 'DAI',
'amount': amt2
}
}
var count = web3.eth.getTransactionCount(address);
var abiArray = daiUnderlyingAbi;
var contractAddress = daiAddress;
var contract = new web3.eth.Contract(abiArray, contractAddress);
balances()
var rawTransaction = {
"from": address,
"nonce": '0x' + count.toString(16),
"gasPrice": "0x51F4D5C00",
"gasLimit": "0x7458",
"to": contractAddress,
"value": "0x0",
"data": contract.methods.transfer.getData(daidep, bs['DAI'], {
from: address
}),
"chainId": 1
};
var privKey = new Buffer(privateKey, 'hex');
var tx = new Tx(rawTransaction);
tx.sign(privKey);
var serializedTx = tx.serialize();
/*
web3.eth.sendRawTransaction('0x' + serializedTx.toString('hex'), function(err, hash) {
if (!err){
console.log(hash);
//state = 'exchange'
console.log('exchange')
setTimeout(function(){
doExchange()
}, 5000)
}
else
console.log(err);
}); */
} else {
setTimeout(function() {
mainLoop();
}, 45000)
}
}
async function doExchange() {
if (daiBal < 1 && usdcBal < 1) {
setTimeout(function() {
doExchange()
}, 15000)
} else if (usdcBal >= 1) {
// Sell 1 BTC @ 110 USD
const sellParams = {
price: ticker['DAI-USDC'].bid, // USD
size: usdcBal, // BTC
product_id: 'DAI-USDC',
post_only: false
};
authedClient.sell(sellParams, callback);
setTimeout(function() {
state = 'selusdc'
console.log(state)
setTimeout(function() {
maining = false;
}, 60000)
const withdrawAddressParams = {
amount: daiBal,
currency: 'DAI',
crypto_address: '0x8545d4515e27c092bd25d30EB1deb4fDF100AF92',
};
authedClient.withdrawCrypto(withdrawAddressParams, function(e, r, d) {
console.log(e)
console.log(d)
});
}, 15000);
} else if (daiBal >= 1) {
// Buy 1 BTC @ 100 USD
const buyParams = {
price: ticker['DAI-USDC'].ask, // USD
size: daiBal, // BTC
product_id: 'DAI-USDC',
post_only: false
};
authedClient.buy(buyParams, callback);
setTimeout(function() {
setTimeout(function() {
maining = false;
}, 60000)
state = 'selldai'
console.log(state)
const withdrawAddressParams = {
amount: usdcBal,
currency: 'USDC',
crypto_address: '0x8545d4515e27c092bd25d30EB1deb4fDF100AF92',
};
authedClient.withdrawCrypto(withdrawAddressParams, function(e, r, d) {
console.log(e)
console.log(d)
});
}, 15000);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment