dao/operations/customer-f3bc8a15-3b10-4be5.../terminus-deploy-mainnet-202...

4.7 KiB

Deploy the Terminus contract

The Terminus contract is deployed as an EIP2535 Diamond proxy contract with a Terminus facet attached to it.

This checklist describes how to deploy the contract.

Deployed addresses

You will modify this section as you go through the checklist

Diamond addresses

export TERMINUS_DIAMOND="0x99A558BDBdE247C2B2716f0D4cFb0E246DFB697D"

TerminusInitializer address

export TERMINUS_INITIALIZER_ADDRESS="0x7BcBEE435544bD6F2B2c892040d5B7cD1B00fec7"

TerminusFacet address

export TERMINUS_FACET_ADDRESS="0x63Cf75b3ffE339Ec30524F204a5FfB97813bF9fB"

Environment variables

  • export DAO_NETWORK=matic
  • export DAO_OWNER=<path to keystore file for owner account>
  • export DAO_OWNER_ADDRESS=$(jq -r .address $DAO_OWNER)
  • export MAX_FEE_PER_GAS="1000 gwei"
  • export MAX_PRIORITY_FEE_PER_GAS="35 gwei"
  • export CONFIRMATIONS=5
  • export TERMINUS_ADDRESSES=.secrets/terminus-mainnet-diamond.json
  • export DIAMOND_CUT_FACET_ADDRESS=$(jq -r .DiamondCutFacet $TERMINUS_ADDRESSES)
  • export DIAMOND_LOUPE_FACET_ADDRESS=$(jq -r .DiamondLoupeFacet $TERMINUS_ADDRESSES)
  • export OWNERSHIP_FACET_ADDRESS=$(jq -r .OwnershipFacet $TERMINUS_ADDRESSES)
  • export TERMINUS_FACET_ADDRESS=0x9718FA06867D2939981151D193cF7ee2B924aec0
  • export TERMINUS_INITIALIZER_ADDRESS=0x7BcBEE435544bD6F2B2c892040d5B7cD1B00fec7
  • export WETH=0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619
  • export TERMINUS_POOL_BASE_PRICE=10000000000000000

Deployment

  • Deploy diamond
dao core diamond deploy \
    --network $DAO_NETWORK \
    --sender $DAO_OWNER \
    --max-fee-per-gas "$MAX_FEE_PER_GAS" \
    --max-priority-fee-per-gas "$MAX_PRIORITY_FEE_PER_GAS" \
    --confirmations $CONFIRMATIONS \
    --contract-owner-arg $DAO_OWNER_ADDRESS \
    --diamond-cut-facet-arg $DIAMOND_CUT_FACET_ADDRESS
  • Store JSON output under Deployed addresses / Diamond addresses above.

  • Export diamond proxy address: export TERMINUS_DIAMOND="0x99A558BDBdE247C2B2716f0D4cFb0E246DFB697D"

  • Attach DiamondLoupeFacet to diamond:

dao core facet-cut \
    --address $TERMINUS_DIAMOND \
    --network $DAO_NETWORK \
    --sender $DAO_OWNER \
    --max-fee-per-gas "$MAX_FEE_PER_GAS" \
    --max-priority-fee-per-gas "$MAX_PRIORITY_FEE_PER_GAS" \
    --confirmations $CONFIRMATIONS \
    --facet-name DiamondLoupeFacet \
    --facet-address $DIAMOND_LOUPE_FACET_ADDRESS \
    --action add
  • Attach OwnershipFacet to diamond:
dao core facet-cut \
    --address $TERMINUS_DIAMOND \
    --network $DAO_NETWORK \
    --sender $DAO_OWNER \
    --max-fee-per-gas "$MAX_FEE_PER_GAS" \
    --max-priority-fee-per-gas "$MAX_PRIORITY_FEE_PER_GAS" \
    --confirmations $CONFIRMATIONS \
    --facet-name OwnershipFacet \
    --facet-address $OWNERSHIP_FACET_ADDRESS \
    --action add
  • Attach TerminusFacet to diamond:
dao core facet-cut \
    --address $TERMINUS_DIAMOND \
    --network $DAO_NETWORK \
    --sender $DAO_OWNER \
    --max-fee-per-gas "$MAX_FEE_PER_GAS" \
    --max-priority-fee-per-gas "$MAX_PRIORITY_FEE_PER_GAS" \
    --confirmations $CONFIRMATIONS \
    --facet-name TerminusFacet \
    --facet-address $TERMINUS_FACET_ADDRESS \
    --action add \
    --initializer-address $TERMINUS_INITIALIZER_ADDRESS
  • Check the number of pools on the Terminus contract: dao terminus total-pools --network $DAO_NETWORK --address $TERMINUS_DIAMOND

  • Number of pools is 0

  • Check the Terminus controller: dao terminus terminus-controller --network $DAO_NETWORK --address $TERMINUS_DIAMOND

  • Controller should be the same as $DAO_OWNER_ADDRESS

  • Set pool base price:

dao terminus set-pool-base-price \
    --network $DAO_NETWORK \
    --address $TERMINUS_DIAMOND \
    --sender $DAO_OWNER \
    --max-fee-per-gas "$MAX_FEE_PER_GAS" \
    --max-priority-fee-per-gas "$MAX_PRIORITY_FEE_PER_GAS" \
    --confirmations $CONFIRMATIONS \
    --new-base-price $TERMINUS_POOL_BASE_PRICE
  • Check pool base price: dao terminus pool-base-price --network $DAO_NETWORK --address $TERMINUS_DIAMOND

  • Pool base price should be same as $TERMINUS_POOL_BASE_PRICE

  • Set up payment token:

dao terminus set-payment-token \
    --network $DAO_NETWORK \
    --address $TERMINUS_DIAMOND \
    --sender $DAO_OWNER \
    --max-fee-per-gas "$MAX_FEE_PER_GAS" \
    --max-priority-fee-per-gas "$MAX_PRIORITY_FEE_PER_GAS" \
    --confirmations $CONFIRMATIONS \
    --new-payment-token $WETH
  • Check payment token: dao terminus payment-token --network $DAO_NETWORK --address $TERMINUS_DIAMOND

  • Payment token should be same as $WETH