tvl.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. const algosdk = require("@certusone/wormhole-sdk/node_modules/algosdk");
  2. import { calcLogicSigAccount } from "@certusone/wormhole-sdk/lib/cjs/algorand";
  3. import {
  4. coalesceChainName,
  5. ChainId,
  6. coalesceChainId,
  7. uint8ArrayToHex,
  8. toChainName,
  9. getOriginalAssetAlgorand,
  10. CONTRACTS
  11. } from "@certusone/wormhole-sdk";
  12. export async function getNativeAlgoAddress(
  13. algoClient: any,
  14. token_bridge: any,
  15. assetId: any
  16. ) {
  17. const { doesExist, lsa } = await calcLogicSigAccount(
  18. algoClient,
  19. BigInt(token_bridge),
  20. BigInt(assetId),
  21. Buffer.from("native", "binary").toString("hex")
  22. );
  23. return lsa.address();
  24. }
  25. async function firstTransaction() {
  26. let algodToken;
  27. let algodServer;
  28. let algodPort;
  29. let server;
  30. let port;
  31. let token;
  32. let appid;
  33. const mainnet = true;
  34. if (mainnet) {
  35. appid = 842126029;
  36. algodToken = "";
  37. algodServer = "https://mainnet-api.algonode.cloud";
  38. algodPort = 443;
  39. server = "https://mainnet-idx.algonode.cloud";
  40. port = 443;
  41. token = "";
  42. } else {
  43. appid = CONTRACTS["DEVNET"].algorand.token_bridge;
  44. algodToken =
  45. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
  46. algodServer = "http://localhost";
  47. algodPort = 4001;
  48. server = "http://localhost";
  49. port = 8980;
  50. token = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
  51. }
  52. let algodClient = new algosdk.Algodv2(algodToken, algodServer, algodPort);
  53. let indexerClient = new algosdk.Indexer(token, server, port);
  54. let addr = algosdk.getApplicationAddress(appid); // mainnet token bridge account
  55. console.log(await algodClient.status().do());
  56. //Check your balance
  57. let accountInfo = await algodClient.accountInformation(addr).do();
  58. console.log(accountInfo);
  59. let ret = await indexerClient
  60. .searchAccounts()
  61. .authAddr(addr)
  62. .applicationID(appid)
  63. .do();
  64. let wormholeAssets: any = [];
  65. let nativeAssets: any = [];
  66. while (true) {
  67. ret["accounts"].forEach((x: any) => {
  68. let amt = x["amount"];
  69. if (x["assets"] != undefined) {
  70. x["assets"].forEach((a: any) => {
  71. if (x["created-assets"] != undefined) {
  72. wormholeAssets.push(a);
  73. } else {
  74. nativeAssets.push(a);
  75. }
  76. });
  77. }
  78. });
  79. if (ret["next-token"] == undefined) {
  80. break;
  81. }
  82. ret = await indexerClient
  83. .searchAccounts()
  84. .authAddr(addr)
  85. .applicationID(appid)
  86. .nextToken(ret["next-token"])
  87. .do();
  88. }
  89. let nativeAlgoAddr = await getNativeAlgoAddress(algodClient, appid, 0);
  90. let algoInfo = await algodClient.accountInformation(nativeAlgoAddr).do();
  91. console.log("ALGO locked: " + (algoInfo["amount"] - 1002001));
  92. console.log("wormhole assets (bridged in)");
  93. for (let i = 0; i < wormholeAssets.length; i++) {
  94. let orig = await getOriginalAssetAlgorand(
  95. algodClient,
  96. BigInt(appid),
  97. wormholeAssets[i]["asset-id"]
  98. );
  99. let v = [
  100. coalesceChainName(orig["chainId"]),
  101. uint8ArrayToHex(orig["assetAddress"]),
  102. wormholeAssets[i],
  103. await algodClient.getAssetByID(wormholeAssets[i]["asset-id"]).do(),
  104. ];
  105. console.log(v);
  106. }
  107. console.log("native assets");
  108. for (let i = 0; i < nativeAssets.length; i++) {
  109. console.log(nativeAssets[i]);
  110. console.log(
  111. await algodClient.getAssetByID(nativeAssets[i]["asset-id"]).do()
  112. );
  113. let addr = await getNativeAlgoAddress(
  114. algodClient,
  115. appid,
  116. nativeAssets[i]["asset-id"]
  117. );
  118. algoInfo = await algodClient.accountInformation(addr).do();
  119. console.log(algoInfo);
  120. }
  121. }
  122. firstTransaction();