UNPKG

@openzeppelin/hardhat-upgrades

Version:

[![Docs](https://img.shields.io/badge/docs-%F0%9F%93%84-blue)](https://docs.openzeppelin.com/upgrades-plugins/hardhat-upgrades) [![NPM Package](https://img.shields.io/npm/v/@openzeppelin/hardhat-upgrades.svg)](https://www.npmjs.org/package/@openzeppelin/h

42 lines • 2.21 kB
import { getBeaconAddress, isBeaconProxy, isTransparentOrUUPSProxy, isBeacon, assertUpgradeSafe, assertStorageUpgradeSafe, inferProxyKind, ValidateUpdateRequiresKindError, } from '@openzeppelin/upgrades-core'; import { getDeployData } from './deploy-impl.js'; import { validateBeaconImpl, validateImpl, validateProxyImpl } from './validate-impl.js'; export async function validateImplementation(binding, implInfo, opts) { const deployData = await getDeployData(binding, implInfo, opts); await validateImpl(deployData, opts); } export async function validateUpgrade(binding, reference, newImplInfo, opts) { if (reference.kind === 'info') { const origDeployData = await getDeployData(binding, reference.info, opts); if (opts.kind === undefined) { opts.kind = inferProxyKind(origDeployData.validations, origDeployData.version); } const newDeployData = await getDeployData(binding, newImplInfo, opts); assertUpgradeSafe(newDeployData.validations, newDeployData.version, newDeployData.fullOpts); if (opts.unsafeSkipStorageCheck !== true) { assertStorageUpgradeSafe(origDeployData.layout, newDeployData.layout, newDeployData.fullOpts); } } else { const referenceAddress = reference.address; const provider = binding.provider; const deployData = await getDeployData(binding, newImplInfo, opts); if (await isTransparentOrUUPSProxy(provider, referenceAddress)) { await validateProxyImpl(deployData, opts, referenceAddress); } else if (await isBeaconProxy(provider, referenceAddress)) { const beaconAddress = await getBeaconAddress(provider, referenceAddress); await validateBeaconImpl(deployData, opts, beaconAddress); } else if (await isBeacon(provider, referenceAddress)) { await validateBeaconImpl(deployData, opts, referenceAddress); } else { if (opts.kind === undefined) { throw new ValidateUpdateRequiresKindError(); } await validateImpl(deployData, opts, referenceAddress); } } } //# sourceMappingURL=validate.js.map