consts.ts 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. import {
  2. ChainId,
  3. CHAIN_ID_BSC,
  4. CHAIN_ID_ETH,
  5. CHAIN_ID_POLYGON,
  6. CHAIN_ID_SOLANA,
  7. CHAIN_ID_TERRA,
  8. } from "@certusone/wormhole-sdk";
  9. import { Signer } from "@ethersproject/abstract-signer";
  10. import { clusterApiUrl } from "@solana/web3.js";
  11. import { ethers } from "ethers";
  12. import { getAddress } from "ethers/lib/utils";
  13. //Devnet here means the locahost kubernetes environment used by the certusone/wormhole official git repository.
  14. //Testnet is the official Wormhole testnet
  15. export type Environment = "devnet" | "testnet" | "mainnet";
  16. export const CLUSTER: Environment = "devnet" as Environment; //This is the currently selected environment.
  17. export const SOLANA_HOST = process.env.REACT_APP_SOLANA_API_URL
  18. ? process.env.REACT_APP_SOLANA_API_URL
  19. : CLUSTER === "mainnet"
  20. ? clusterApiUrl("mainnet-beta")
  21. : CLUSTER === "testnet"
  22. ? clusterApiUrl("testnet")
  23. : "http://localhost:8899";
  24. export const TERRA_HOST =
  25. CLUSTER === "mainnet"
  26. ? {
  27. URL: "https://lcd.terra.dev",
  28. chainID: "columbus-5",
  29. name: "mainnet",
  30. }
  31. : CLUSTER === "testnet"
  32. ? {
  33. URL: "https://bombay-lcd.terra.dev",
  34. chainID: "bombay-12",
  35. name: "testnet",
  36. }
  37. : {
  38. URL: "http://localhost:1317",
  39. chainID: "columbus-5",
  40. name: "localterra",
  41. };
  42. export const ETH_BRIDGE_ADDRESS = getAddress(
  43. CLUSTER === "mainnet"
  44. ? "0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B"
  45. : CLUSTER === "testnet"
  46. ? "0x44F3e7c20850B3B5f3031114726A9240911D912a"
  47. : "0xC89Ce4735882C9F0f0FE26686c53074E09B0D550"
  48. );
  49. export const ETH_NFT_BRIDGE_ADDRESS = getAddress(
  50. CLUSTER === "mainnet"
  51. ? "0x6FFd7EdE62328b3Af38FCD61461Bbfc52F5651fE"
  52. : CLUSTER === "testnet"
  53. ? "0x26b4afb60d6c903165150c6f0aa14f8016be4aec" // TODO: test address
  54. : "0x26b4afb60d6c903165150c6f0aa14f8016be4aec"
  55. );
  56. export const ETH_TOKEN_BRIDGE_ADDRESS = getAddress(
  57. CLUSTER === "mainnet"
  58. ? "0x3ee18B2214AFF97000D974cf647E7C347E8fa585"
  59. : CLUSTER === "testnet"
  60. ? "0xa6CDAddA6e4B6704705b065E01E52e2486c0FBf6"
  61. : "0x0290FB167208Af455bB137780163b7B7a9a10C16"
  62. );
  63. export const BSC_BRIDGE_ADDRESS = getAddress(
  64. CLUSTER === "mainnet"
  65. ? "0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B"
  66. : CLUSTER === "testnet"
  67. ? "0xC89Ce4735882C9F0f0FE26686c53074E09B0D550" // TODO: test address
  68. : "0xC89Ce4735882C9F0f0FE26686c53074E09B0D550"
  69. );
  70. export const BSC_NFT_BRIDGE_ADDRESS = getAddress(
  71. CLUSTER === "mainnet"
  72. ? "0x5a58505a96D1dbf8dF91cB21B54419FC36e93fdE"
  73. : CLUSTER === "testnet"
  74. ? "0x26b4afb60d6c903165150c6f0aa14f8016be4aec" // TODO: test address
  75. : "0x26b4afb60d6c903165150c6f0aa14f8016be4aec"
  76. );
  77. export const BSC_TOKEN_BRIDGE_ADDRESS = getAddress(
  78. CLUSTER === "mainnet"
  79. ? "0xB6F6D86a8f9879A9c87f643768d9efc38c1Da6E7"
  80. : CLUSTER === "testnet"
  81. ? "0x0290FB167208Af455bB137780163b7B7a9a10C16" // TODO: test address
  82. : "0x0290FB167208Af455bB137780163b7B7a9a10C16"
  83. );
  84. export const POLYGON_BRIDGE_ADDRESS = getAddress(
  85. CLUSTER === "mainnet"
  86. ? "0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7"
  87. : CLUSTER === "testnet"
  88. ? "0xC89Ce4735882C9F0f0FE26686c53074E09B0D550" // TODO: test address
  89. : "0xC89Ce4735882C9F0f0FE26686c53074E09B0D550"
  90. );
  91. export const POLYGON_NFT_BRIDGE_ADDRESS = getAddress(
  92. CLUSTER === "mainnet"
  93. ? "0x90BBd86a6Fe93D3bc3ed6335935447E75fAb7fCf"
  94. : CLUSTER === "testnet"
  95. ? "0x26b4afb60d6c903165150c6f0aa14f8016be4aec" // TODO: test address
  96. : "0x26b4afb60d6c903165150c6f0aa14f8016be4aec"
  97. );
  98. export const POLYGON_TOKEN_BRIDGE_ADDRESS = getAddress(
  99. CLUSTER === "mainnet"
  100. ? "0x5a58505a96D1dbf8dF91cB21B54419FC36e93fdE"
  101. : CLUSTER === "testnet"
  102. ? "0x0290FB167208Af455bB137780163b7B7a9a10C16" // TODO: test address
  103. : "0x0290FB167208Af455bB137780163b7B7a9a10C16"
  104. );
  105. export const SOL_BRIDGE_ADDRESS =
  106. CLUSTER === "mainnet"
  107. ? "worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth"
  108. : CLUSTER === "testnet"
  109. ? "Brdguy7BmNB4qwEbcqqMbyV5CyJd2sxQNUn6NEpMSsUb"
  110. : "Bridge1p5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o";
  111. export const SOL_NFT_BRIDGE_ADDRESS =
  112. CLUSTER === "mainnet"
  113. ? "WnFt12ZrnzZrFZkt2xsNsaNWoQribnuQ5B5FrDbwDhD"
  114. : CLUSTER === "testnet"
  115. ? "NFTWqJR8YnRVqPDvTJrYuLrQDitTG5AScqbeghi4zSA" // TODO: test address
  116. : "NFTWqJR8YnRVqPDvTJrYuLrQDitTG5AScqbeghi4zSA";
  117. export const SOL_TOKEN_BRIDGE_ADDRESS =
  118. CLUSTER === "mainnet"
  119. ? "wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb"
  120. : CLUSTER === "testnet"
  121. ? "A4Us8EhCC76XdGAN17L4KpRNEK423nMivVHZzZqFqqBg"
  122. : "B6RHG3mfcckmrYN1UhmJzyS1XX3fZKbkeUcpJe9Sy3FE";
  123. export const TERRA_BRIDGE_ADDRESS =
  124. CLUSTER === "mainnet"
  125. ? "terra1dq03ugtd40zu9hcgdzrsq6z2z4hwhc9tqk2uy5"
  126. : CLUSTER === "testnet"
  127. ? "terra18vd8fpwxzck93qlwghaj6arh4p7c5n896xzem5"
  128. : "terra18vd8fpwxzck93qlwghaj6arh4p7c5n896xzem5";
  129. export const TERRA_TOKEN_BRIDGE_ADDRESS =
  130. CLUSTER === "mainnet"
  131. ? "terra10nmmwe8r3g99a9newtqa7a75xfgs2e8z87r2sf"
  132. : CLUSTER === "testnet"
  133. ? "terra10pyejy66429refv3g35g2t7am0was7ya7kz2a4"
  134. : "terra10pyejy66429refv3g35g2t7am0was7ya7kz2a4";
  135. export const getBridgeAddressForChain = (chainId: ChainId) =>
  136. chainId === CHAIN_ID_SOLANA
  137. ? SOL_BRIDGE_ADDRESS
  138. : chainId === CHAIN_ID_ETH
  139. ? ETH_BRIDGE_ADDRESS
  140. : chainId === CHAIN_ID_BSC
  141. ? BSC_BRIDGE_ADDRESS
  142. : chainId === CHAIN_ID_TERRA
  143. ? TERRA_BRIDGE_ADDRESS
  144. : chainId === CHAIN_ID_POLYGON
  145. ? POLYGON_BRIDGE_ADDRESS
  146. : "";
  147. export const getNFTBridgeAddressForChain = (chainId: ChainId) =>
  148. chainId === CHAIN_ID_SOLANA
  149. ? SOL_NFT_BRIDGE_ADDRESS
  150. : chainId === CHAIN_ID_ETH
  151. ? ETH_NFT_BRIDGE_ADDRESS
  152. : chainId === CHAIN_ID_BSC
  153. ? BSC_NFT_BRIDGE_ADDRESS
  154. : chainId === CHAIN_ID_POLYGON
  155. ? POLYGON_NFT_BRIDGE_ADDRESS
  156. : "";
  157. export const getTokenBridgeAddressForChain = (chainId: ChainId) =>
  158. chainId === CHAIN_ID_SOLANA
  159. ? SOL_TOKEN_BRIDGE_ADDRESS
  160. : chainId === CHAIN_ID_ETH
  161. ? ETH_TOKEN_BRIDGE_ADDRESS
  162. : chainId === CHAIN_ID_BSC
  163. ? BSC_TOKEN_BRIDGE_ADDRESS
  164. : chainId === CHAIN_ID_TERRA
  165. ? TERRA_TOKEN_BRIDGE_ADDRESS
  166. : chainId === CHAIN_ID_POLYGON
  167. ? POLYGON_TOKEN_BRIDGE_ADDRESS
  168. : "";
  169. export const WORMHOLE_RPC_HOSTS =
  170. CLUSTER === "mainnet"
  171. ? [
  172. "https://wormhole-v2-mainnet-api.certus.one",
  173. "https://wormhole.inotel.ro",
  174. "https://wormhole-v2-mainnet-api.mcf.rocks",
  175. "https://wormhole-v2-mainnet-api.chainlayer.network",
  176. "https://wormhole-v2-mainnet-api.staking.fund",
  177. "https://wormhole-v2-mainnet.01node.com",
  178. ]
  179. : CLUSTER === "testnet"
  180. ? ["https://wormhole-v2-testnet-api.certus.one"]
  181. : ["http://localhost:7071"];
  182. export const ETH_NODE_URL = "ws://localhost:8545"; //TODO testnet
  183. export const POLYGON_NODE_URL = "ws:localhost:0000"; //TODO
  184. export const BSC_NODE_URL = "ws://localhost:8546"; //TODO testnet
  185. export const ETH_PRIVATE_KEY =
  186. "0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d";
  187. export const SOLANA_PRIVATE_KEY = new Uint8Array([
  188. 14, 173, 153, 4, 176, 224, 201, 111, 32, 237, 183, 185, 159, 247, 22, 161, 89,
  189. 84, 215, 209, 212, 137, 10, 92, 157, 49, 29, 192, 101, 164, 152, 70, 87, 65,
  190. 8, 174, 214, 157, 175, 126, 98, 90, 54, 24, 100, 177, 247, 77, 19, 112, 47,
  191. 44, 165, 109, 233, 102, 14, 86, 109, 29, 134, 145, 132, 141,
  192. ]);
  193. export function getSignerForChain(chainId: ChainId): Signer {
  194. const provider = new ethers.providers.WebSocketProvider(
  195. chainId === CHAIN_ID_POLYGON
  196. ? POLYGON_NODE_URL
  197. : chainId === CHAIN_ID_BSC
  198. ? BSC_NODE_URL
  199. : ETH_NODE_URL
  200. );
  201. const signer = new ethers.Wallet(ETH_PRIVATE_KEY, provider as any);
  202. return signer;
  203. }
  204. export const ETH_TEST_WALLET_PUBLIC_KEY =
  205. "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1";
  206. export const SOLANA_TEST_TOKEN = "2WDq7wSs9zYrpx2kbHDA4RUTRch2CCTP6ZWaH4GNfnQQ"; //SOLT on devnet
  207. export const SOLANA_TEST_WALLET_PUBLIC_KEY =
  208. "6sbzC1eH4FTujJXWj51eQe25cYvr4xfXbJ1vAj7j2k5J";