whinfo.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. const algosdk = require("@certusone/wormhole-sdk/node_modules/algosdk");
  2. import {
  3. CONTRACTS
  4. } from "@certusone/wormhole-sdk";
  5. import { calcLogicSigAccount } from "@certusone/wormhole-sdk/lib/cjs/algorand";
  6. export async function getNativeAlgoAddress(
  7. algoClient: any,
  8. token_bridge: any,
  9. assetId: any
  10. ) {
  11. const { doesExist, lsa } = await calcLogicSigAccount(
  12. algoClient,
  13. BigInt(token_bridge),
  14. BigInt(assetId),
  15. Buffer.from("native", "binary").toString("hex")
  16. );
  17. return lsa.address();
  18. }
  19. async function firstTransaction() {
  20. let algodToken;
  21. let algodServer;
  22. let algodPort;
  23. let server;
  24. let port;
  25. let token;
  26. let appid;
  27. const mainnet = true;
  28. if (mainnet) {
  29. appid = 842126029;
  30. algodToken = "";
  31. algodServer = "https://mainnet-api.algonode.cloud";
  32. algodPort = 443;
  33. server = "https://mainnet-idx.algonode.cloud";
  34. port = 443;
  35. token = "";
  36. } else {
  37. appid = CONTRACTS["DEVNET"].algorand.token_bridge;
  38. algodToken =
  39. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
  40. algodServer = "http://localhost";
  41. algodPort = 4001;
  42. server = "http://localhost";
  43. port = 8980;
  44. token = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
  45. }
  46. let algodClient = new algosdk.Algodv2(algodToken, algodServer, algodPort);
  47. let indexerClient = new algosdk.Indexer(token, server, port);
  48. let addr = algosdk.getApplicationAddress(appid); // mainnet token bridge account
  49. let ret = await indexerClient
  50. .searchAccounts()
  51. .authAddr(addr)
  52. .applicationID(appid)
  53. .do();
  54. let wormholeAssets: any = [];
  55. let nativeAssets: any = [];
  56. while (true) {
  57. ret["accounts"].forEach((x: any) => {
  58. let amt = x["amount"];
  59. if (x["assets"] != undefined) {
  60. x["assets"].forEach((a: any) => {
  61. if (x["created-assets"] != undefined) {
  62. wormholeAssets.push(a);
  63. } else {
  64. nativeAssets.push(a);
  65. }
  66. });
  67. }
  68. });
  69. if (ret["next-token"] == undefined) {
  70. break;
  71. }
  72. ret = await indexerClient
  73. .searchAccounts()
  74. .authAddr(addr)
  75. .applicationID(appid)
  76. .nextToken(ret["next-token"])
  77. .do();
  78. }
  79. console.log("wormhole assets");
  80. for (let i = 0; i < wormholeAssets.length; i++) {
  81. let assetId = wormholeAssets[i]["asset-id"];
  82. let assetInfo = await algodClient.getAssetByID(assetId).do();
  83. let acctInfo = await algodClient.accountInformation(assetInfo["params"]["creator"]).do();
  84. console.log(assetId, assetInfo, acctInfo);
  85. }
  86. }
  87. firstTransaction();