-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathVAI.html
82 lines (77 loc) · 4.11 KB
/
VAI.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="author" content="J1Mtonic">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>VAI</title>
<script src="https://cdn.jsdelivr.net/npm/web3@1.10.0/dist/web3.min.js"></script>
</head>
<body>
<form>
<p>
<label>Address: <input type="text" autocomplete="on" id="accountAddress" /></label>
<button type="button" onclick="javascript:getMintedRepayVAI()">Search</button>
</p>
<p>
<label>Minted VAI: </label>
<label id="mintedVAI"></label>
</p>
<p>
<label>Accrued Interest: </label>
<label id="accruedInterest"></label>
</p>
<p>
<label>VAI Repay Rate: </label>
<label id="VAIrepayRate"></label>
</p>
<p>
<label>VAI Price: </label>
<label id="VAIPrice"></label>
</p>
</form>
<script type="text/javascript">
const provider = new Web3.providers.HttpProvider("https://bsc-dataseed.binance.org");
const bscscangetABI = "https://api.bscscan.com/api?module=contract&action=getabi&address=";
const bscscanAPI = "&apikey=J5HERDUSE8HWU7HISSURZY1349VBWHX31F";
const Comptroller = "0xf2721703d5429bec86bd0ed86519e0859dd88209";
const VAIController = "0x8a1e5db8f622b97f4bccec4684697199c1b1d11b";
const Unitroller = "0xfd36e2c2a6789db23113685031d7f16329158384";
const VAIUnitroller = "0x004065D34C6b18cE4370ced1CeBDE94865DbFAFE";
const VAItokenAddr = "0x4BD17003473389A42DAF6a0a729f6Fdb328BbBd7";
const VenusChainlinkOracle = "0x7FabdD617200C9CB4dcf3dd2C41273e60552068A";
const web3 = new Web3(provider);
let decimals = 10**18;
VAIinfo();
async function VAIinfo() {
let VAIrepayRate = 0;
let VAIPrice = 0;
try {
let VAIControllerABI = await fetch(bscscangetABI + VAIController + bscscanAPI).then(response => response.json()).then(data => { return JSON.parse(data.result); });
let myVAIUnitroller = new web3.eth.Contract(VAIControllerABI, VAIUnitroller);
VAIrepayRate = await myVAIUnitroller.methods.getVAIRepayRate().call();
let VenusChainlinkOracleABI = await fetch(bscscangetABI + VenusChainlinkOracle + bscscanAPI).then(response => response.json()).then(data => { return JSON.parse(data.result); });
let myVenusChainlinkOracle = new web3.eth.Contract(VenusChainlinkOracleABI, VenusChainlinkOracle);
VAIPrice = await myVenusChainlinkOracle.methods.getUnderlyingPrice(VAItokenAddr).call();
} catch (err) { }
document.getElementById('VAIrepayRate').innerText = VAIrepayRate / decimals * 100 + '%';
document.getElementById('VAIPrice').innerText = VAIPrice / decimals;
}
async function getMintedRepayVAI() {
const accountAddress = document.getElementById("accountAddress").value;
let mintedVAI = 0;
let repayAmount = 0;
try {
let ComptrollerABI = await fetch(bscscangetABI + Comptroller + bscscanAPI).then(response => response.json()).then(data => { return JSON.parse(data.result); });
let myUnitroller = new web3.eth.Contract(ComptrollerABI, Unitroller);
mintedVAI = await myUnitroller.methods.mintedVAIs(accountAddress).call();
let VAIControllerABI = await fetch(bscscangetABI + VAIController + bscscanAPI).then(response => response.json()).then(data => { return JSON.parse(data.result); });
let myVAIUnitroller = new web3.eth.Contract(VAIControllerABI, VAIUnitroller);
repayAmount = await myVAIUnitroller.methods.getVAIRepayAmount(accountAddress).call();
} catch (err) { }
document.getElementById("mintedVAI").innerHTML = mintedVAI / decimals;
document.getElementById("accruedInterest").innerHTML = (repayAmount - mintedVAI) / decimals;
}
</script>
</body>
</html>