2_deploy_pyth.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. const loadEnv = require("../../scripts/loadEnv");
  2. loadEnv("../../");
  3. const PythUpgradable = artifacts.require("PythUpgradable");
  4. const { deployProxy } = require("@openzeppelin/truffle-upgrades");
  5. const tdr = require("truffle-deploy-registry");
  6. const { CONTRACTS } = require("@certusone/wormhole-sdk");
  7. const { assert } = require("chai");
  8. const emitterChainIds = [
  9. process.env.SOLANA_CHAIN_ID,
  10. process.env.PYTHNET_CHAIN_ID,
  11. ];
  12. const emitterAddresses = [
  13. process.env.SOLANA_EMITTER,
  14. process.env.PYTHNET_EMITTER,
  15. ];
  16. const governanceChainId = process.env.GOVERNANCE_CHAIN_ID;
  17. const governanceEmitter = process.env.GOVERNANCE_EMITTER;
  18. // Default value for this field is 0
  19. const governanceInitialSequence = Number(
  20. process.env.GOVERNANCE_INITIAL_SEQUENCE ?? "0"
  21. );
  22. const validTimePeriodSeconds = Number(process.env.VALID_TIME_PERIOD_SECONDS);
  23. const singleUpdateFeeInWei = Number(process.env.SINGLE_UPDATE_FEE_IN_WEI);
  24. console.log("emitterChainIds: " + emitterChainIds);
  25. console.log("emitterAddresses: " + emitterAddresses);
  26. console.log("governanceEmitter: " + governanceEmitter);
  27. console.log("governanceChainId: " + governanceChainId);
  28. console.log("governanceInitialSequence: " + governanceInitialSequence);
  29. console.log("validTimePeriodSeconds: " + validTimePeriodSeconds);
  30. console.log("singleUpdateFeeInWei: " + singleUpdateFeeInWei);
  31. module.exports = async function (deployer, network) {
  32. const cluster = process.env.CLUSTER;
  33. const chainName = process.env.WORMHOLE_CHAIN_NAME;
  34. assert(cluster !== undefined && chainName !== undefined);
  35. const wormholeBridgeAddress =
  36. CONTRACTS[cluster.toUpperCase()][chainName].core;
  37. assert(wormholeBridgeAddress !== undefined);
  38. console.log("Wormhole bridge address: " + wormholeBridgeAddress);
  39. // Deploy the proxy. This will return an instance of PythUpgradable,
  40. // with the address field corresponding to the fronting ERC1967Proxy.
  41. let proxyInstance = await deployProxy(
  42. PythUpgradable,
  43. [
  44. wormholeBridgeAddress,
  45. emitterChainIds,
  46. emitterAddresses,
  47. governanceChainId,
  48. governanceEmitter,
  49. governanceInitialSequence,
  50. validTimePeriodSeconds,
  51. singleUpdateFeeInWei,
  52. ],
  53. { deployer }
  54. );
  55. // Add the ERC1967Proxy address to the PythUpgradable contract's
  56. // entry in the registry. This allows us to call upgradeProxy
  57. // functions with the value of PythUpgradable.deployed().address:
  58. // e.g. upgradeProxy(PythUpgradable.deployed().address, NewImplementation)
  59. if (!tdr.isDryRunNetworkName(network)) {
  60. await tdr.appendInstance(proxyInstance);
  61. }
  62. };