wormhole/algorand/test/tvl.ts

122 lines
3.1 KiB
TypeScript

const algosdk = require("@certusone/wormhole-sdk/node_modules/algosdk");
import { calcLogicSigAccount } from "@certusone/wormhole-sdk/lib/cjs/algorand";
export async function getNativeAlgoAddress(
algoClient: any,
token_bridge: any,
assetId: any
) {
const { doesExist, lsa } = await calcLogicSigAccount(
algoClient,
BigInt(token_bridge),
BigInt(assetId),
Buffer.from("native", "binary").toString("hex")
);
return lsa.address();
}
async function firstTransaction() {
let algodToken;
let algodServer;
let algodPort;
let server;
let port;
let token;
let appid;
const mainnet = false;
if (mainnet) {
appid = 842126029;
algodToken = "";
algodServer = "https://mainnet-api.algonode.cloud";
algodPort = 443;
server = "https://mainnet-idx.algonode.cloud";
port = 443;
token = "";
} else {
appid = 6;
algodToken =
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
algodServer = "http://localhost";
algodPort = 4001;
server = "http://localhost";
port = 8980;
token = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
}
let algodClient = new algosdk.Algodv2(algodToken, algodServer, algodPort);
let indexerClient = new algosdk.Indexer(token, server, port);
let addr = algosdk.getApplicationAddress(appid); // mainnet token bridge account
console.log(await algodClient.status().do());
//Check your balance
let accountInfo = await algodClient.accountInformation(addr).do();
console.log(accountInfo);
let ret = await indexerClient
.searchAccounts()
.authAddr(addr)
.applicationID(appid)
.do();
let wormholeAssets: any = [];
let nativeAssets: any = [];
while (true) {
ret["accounts"].forEach((x: any) => {
let amt = x["amount"];
if (x["assets"] != undefined) {
x["assets"].forEach((a: any) => {
if (x["created-assets"] != undefined) {
wormholeAssets.push(a);
} else {
nativeAssets.push(a);
}
});
}
});
if (ret["next-token"] == undefined) {
break;
}
ret = await indexerClient
.searchAccounts()
.authAddr(addr)
.applicationID(appid)
.nextToken(ret["next-token"])
.do();
}
let nativeAlgoAddr = await getNativeAlgoAddress(algodClient, appid, 0);
let algoInfo = await algodClient.accountInformation(nativeAlgoAddr).do();
console.log("ALGO locked: " + (algoInfo["amount"] - 1002001));
console.log("wormhole assets");
for (let i = 0; i < wormholeAssets.length; i++) {
console.log(wormholeAssets[i]);
console.log(
await algodClient.getAssetByID(wormholeAssets[i]["asset-id"]).do()
);
}
console.log("native assets");
for (let i = 0; i < nativeAssets.length; i++) {
console.log(nativeAssets[i]);
console.log(
await algodClient.getAssetByID(nativeAssets[i]["asset-id"]).do()
);
let addr = await getNativeAlgoAddress(
algodClient,
appid,
nativeAssets[i]["asset-id"]
);
algoInfo = await algodClient.accountInformation(addr).do();
console.log(algoInfo);
}
}
firstTransaction();