Deploy Proxy Parameters

Hello

I am currently working on a SeaDrop contract from Opensea following Token contract I don't understand what the address 0x4468A5B725E2C63056131121cD33b66848E1dd87 as parameter is?

Doc

There is no explanation for the address. Maybe someone knows?


import fs from "fs";
import { ethers, upgrades } from "hardhat";
async function mainDeploy() {
  const ExampleToken = await ethers.getContractFactory("ExampleToken");
  console.log("Deploying...");
  const exampleToken = await upgrades.deployProxy(
    ExampleToken,
    [
      "ExampleToken",
      "ExTkn",
      "0x4468A5B725E2C63056131121cD33b66848E1dd87",
      ["0x00005EA00Ac477B1030CE78506496e8C2dE24bf5"],
    ],
    { initializer: "initialize" }
  );
  await exampleToken.deployed();
  const addresses = {
    proxy: exampleToken.address,
    admin: await upgrades.erc1967.getAdminAddress(exampleToken.address),
    implementation: await upgrades.erc1967.getImplementationAddress(
      exampleToken.address
    ),
  };
  console.log("Addresses: ", addresses);

  try {
    await (run as any)("verify", { address: addresses.implementation });
  } catch (e) {}

  fs.writeFileSync("deployment-addresses.json", JSON.stringify(addresses));
}

mainDeploy();

You can find the declaration of function deployProxy here:

async function deployProxy(
  Contract: ethers.ContractFactory,
  args: unknown[] = [],
  opts?: {
    initializer?: string | false,
    unsafeAllow?: ValidationError[],
    constructorArgs?: unknown[],
    timeout?: number,
    pollingInterval?: number,
    redeployImplementation?: 'always' | 'never' | 'onchange',
    txOverrides?: ethers.Overrides,
    kind?: 'uups' | 'transparent',
    useDefenderDeploy?: boolean,
  },
): Promise<ethers.Contract>

In your code:

  • The 1st parameter, ExampleToken, corresponds to Contract: ethers.ContractFactory
  • The 2nd parameter, [ ... ], corresponds to args: unknown[] = []
  • The 3rd parameter, { initializer: "initialize" }, corresponds to opts?: { ... }

The 2nd parameter is an array which specifies the input arguments to pass to the constructor of the contract specified in the 1st parameter (i.e., upon the deployment of that contract).

I am not sure what the constructor of contract ExampleToken looks like, but my guess is:

  • The 1st value, "ExampleToken", corresponds to input argument string name
  • The 2nd value, "ExTkn", corresponds to input argument string symbol
  • The 3rd value, "0x4468A5...87", corresponds to input argument address account
  • The 4th value, ["0x00005E...f5"], corresponds to input argument address[] accounts

I am not sure about the exact purpose of these input arguments, specifically the one that you're interested in. It could be, for example, an account which the ownership of the newly-deployed contract is transferred to. So it would be best for you to search in the official documentation for the exact definition of contract ExampleToken.