deploy.ts 2.59 KB
Newer Older
1
import { DeployConfigSpec } from '@eth-optimism/hardhat-deploy-config/dist/src/types'
2 3 4 5 6

/**
 * Defines the configuration for a deployment.
 */
export interface DeployConfig {
7 8 9 10 11 12 13 14
  /**
   * Dedicated Deterministic Deployer address (DDD).
   * When deploying authenticated deterministic smart contracts to the same address on various
   * chains, it's necessary to have a single root address that will initially own the contract and
   * later transfer ownership to the final contract owner. We call this address the DDD. We expect
   * the DDD to transfer ownership to the final contract owner very quickly after deployment.
   */
  ddd: string
15 16

  /**
17
   * Number of confs before considering it final
18
   */
19
  numDeployConfirmations?: number
20 21

  /**
22
   * Name of the NFT in the Optimist contract.
23
   */
24 25 26 27 28 29 30 31
  optimistName: string

  /**
   * Symbol of the NFT in the Optimist contract.
   */
  optimistSymbol: string

  /**
32
   * Address of the privileged attestor for the Optimist contract.
33
   */
34
  optimistBaseUriAttestorAddress: string
35

36 37 38 39 40 41 42 43 44 45
  /**
   * Address of the privileged account for the OptimistInviter contract that can grant invites.
   */
  optimistInviterInviteGranter: string

  /**
   * Name of OptimistInviter contract, used for the EIP712 domain separator.
   */
  optimistInviterName: string

46 47 48 49 50 51 52 53 54 55 56
  /**
   * Address of previleged account for the OptimistAllowlist contract that can add/remove people
   * from allowlist.
   */
  optimistAllowlistAllowlistAttestor: string

  /**
   * Address of Coinbase attestor that attests to whether someone has completed Quest.
   */
  optimistAllowlistCoinbaseQuestAttestor: string

57 58 59 60 61 62
  /**
   * Address of the owner of the proxies on L2. There will be a ProxyAdmin deployed as a predeploy
   * after bedrock, so the owner of proxies should be updated to that after the upgrade.
   * This currently is used as the owner of the nft related proxies.
   */
  l2ProxyOwnerAddress: string
63 64 65 66 67
}

/**
 * Specification for each of the configuration options.
 */
68
export const configSpec: DeployConfigSpec<DeployConfig> = {
69 70 71
  ddd: {
    type: 'address',
  },
72 73 74 75
  numDeployConfirmations: {
    type: 'number',
    default: 1,
  },
76 77
  optimistName: {
    type: 'string',
78
    default: 'Optimist',
79 80 81
  },
  optimistSymbol: {
    type: 'string',
82
    default: 'OPTIMIST',
83
  },
84
  optimistBaseUriAttestorAddress: {
85 86
    type: 'address',
  },
87 88 89 90 91 92
  optimistInviterInviteGranter: {
    type: 'address',
  },
  optimistInviterName: {
    type: 'string',
  },
93 94 95 96 97 98 99 100 101

  optimistAllowlistAllowlistAttestor: {
    type: 'address',
  },

  optimistAllowlistCoinbaseQuestAttestor: {
    type: 'address',
  },

102 103 104
  l2ProxyOwnerAddress: {
    type: 'address',
  },
105
}