Skip to content

Commit 4ce55b3

Browse files
committed
Count xAyin
1 parent 45a023b commit 4ce55b3

File tree

2 files changed

+33
-5
lines changed

2 files changed

+33
-5
lines changed

projects/ayin/index.js

+15-1
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,25 @@ const Addresses = {
1010
ayin: 'vT49PY8ksoUL6NcXiZ1t2wAmC7tTPRfFfER8n3UCLvXy'
1111
}
1212

13+
const XAyinAddress = 'zst5zMzizEeFYFis6DNSknY5GCYTpM85D3yXeRLe2ug3'
14+
1315
const TokenIds = {
1416
usdt: alephium.contractIdFromAddress(Addresses.usdt),
1517
weth: alephium.contractIdFromAddress(Addresses.weth),
1618
ayin: alephium.contractIdFromAddress(Addresses.ayin)
1719
}
1820

21+
async function ayinTvlForXAyin() {
22+
const results = await alephium.contractMultiCall([
23+
{ group: 0, address: XAyinAddress, methodIndex: 3 },
24+
{ group: 0, address: XAyinAddress, methodIndex: 11}
25+
])
26+
27+
const totalSupply = results[0].returns[0].value
28+
const currentPrice = results[1].returns[0].value
29+
return (Number(totalSupply) / 1e18) * (Number(currentPrice) / 1e18)
30+
}
31+
1932
async function tvl() {
2033
const alphTvls = await Promise.all([
2134
Addresses.alphAyinPool, Addresses.alphUsdtPool, Addresses.alphWethPool
@@ -32,9 +45,10 @@ async function tvl() {
3245
});
3346
return res
3447
}, {[TokenIds.ayin]: 0, [TokenIds.usdt]: 0, [TokenIds.weth]: 0})
48+
const xAyinTvl = await ayinTvlForXAyin()
3549
return {
3650
alephium: alphTvl / 1e18,
37-
ayin: tokensTvl[TokenIds.ayin] / 1e18,
51+
ayin: tokensTvl[TokenIds.ayin] / 1e18 + xAyinTvl,
3852
weth: tokensTvl[TokenIds.weth] / 1e18,
3953
tether: tokensTvl[TokenIds.usdt] / 1e6
4054
}

projects/helper/chain/alephium.js

+18-4
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,27 @@ const basex = require('base-x')
44
const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
55
const bs58 = basex(ALPHABET)
66

7-
const API_HOST = 'https://backend-v115.mainnet.alephium.org'
7+
const EXPLORER_API_HOST = 'https://backend-v115.mainnet.alephium.org'
8+
const NODE_API_HOST = ''
89

910
async function getAlphBalance(address) {
10-
return (await axios.get(`${API_HOST}/addresses/${address}/balance`)).data
11+
return (await axios.get(`${EXPLORER_API_HOST}/addresses/${address}/balance`)).data
1112
}
1213

1314
async function getTokensBalance(address) {
14-
return (await axios.get(`${API_HOST}/addresses/${address}/tokens-balance`)).data
15+
return (await axios.get(`${EXPLORER_API_HOST}/addresses/${address}/tokens-balance`)).data
16+
}
17+
18+
async function contractMultiCall(payload) {
19+
const result = (await axios.post(`${NODE_API_HOST}/contracts/multicall-contract`, {calls: payload})).data
20+
return result.results.map((r) => tryGetCallResult(r))
21+
}
22+
23+
function tryGetCallResult(result) {
24+
if (result.type === 'CallContractFailed') {
25+
throw new Error(`Failed to call contract, error: ${result.error}`)
26+
}
27+
return result
1528
}
1629

1730
function contractIdFromAddress(address) {
@@ -31,5 +44,6 @@ function contractIdFromAddress(address) {
3144
module.exports = {
3245
getAlphBalance,
3346
getTokensBalance,
34-
contractIdFromAddress
47+
contractIdFromAddress,
48+
contractMultiCall
3549
}

0 commit comments

Comments
 (0)