# Update 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 update the `TerminusFacet` on the Terminus diamond contract. ## Purpose of update Fix `safeBatchTransferFrom` to respect non-transferable pools. ## Deployed addresses You will modify this section as you go through the checklist ### `TerminusFacet` address ``` export TERMINUS_FACET_ADDRESS=0xc9414ea1B5d9029dAbBeAD51bc8B128D7EBaa161 ``` ## Environment variables - [x] `export DAO_NETWORK=polygon-test` - [x] `export DAO_OWNER=` - [x] `export DAO_OWNER_ADDRESS=$(jq -r .address $DAO_OWNER)` - [x] `export GAS_PRICE="5 gwei"` - [x] `export CONFIRMATIONS=2` - [x] `export TERMINUS_DIAMOND=0x040Cf7Ee9752936d8d280062a447eB53808EBc08` ## Deploy `TerminusFacet` - [x] Deploy `TerminusFacet` contract ```bash dao terminus deploy \ --network $DAO_NETWORK \ --sender $DAO_OWNER \ --gas-price "$GAS_PRICE" \ --confirmations $CONFIRMATIONS ``` - [x] Export address of deployed contract as `export TERMINUS_FACET_ADDRESS=0xc9414ea1B5d9029dAbBeAD51bc8B128D7EBaa161` - [x] Store address of deployed contract under `Deployed addresses / TerminusFacet address` above - [x] Replace existing methods on `TerminusFacet`: ```bash dao core facet-cut \ --address $TERMINUS_DIAMOND \ --network $DAO_NETWORK \ --sender $DAO_OWNER \ --gas-price "$GAS_PRICE" \ --confirmations $CONFIRMATIONS \ --facet-name TerminusFacet \ --facet-address $TERMINUS_FACET_ADDRESS \ --action replace \ --ignore-methods setController ``` - [x] Add `setController` method: ```bash dao core facet-cut \ --address $TERMINUS_DIAMOND \ --network $DAO_NETWORK \ --sender $DAO_OWNER \ --gas-price "$GAS_PRICE" \ --confirmations $CONFIRMATIONS \ --facet-name TerminusFacet \ --facet-address $TERMINUS_FACET_ADDRESS \ --action add \ --methods setController ```