diff --git a/pages/operators/chain-operators/tutorials.mdx b/pages/operators/chain-operators/tutorials.mdx
index c8aafa822..eb74f228b 100644
--- a/pages/operators/chain-operators/tutorials.mdx
+++ b/pages/operators/chain-operators/tutorials.mdx
@@ -36,6 +36,8 @@ This section provides information on adding attributes to the derivation functio
+
+
diff --git a/pages/operators/chain-operators/tutorials/_meta.json b/pages/operators/chain-operators/tutorials/_meta.json
index b09812685..31f9e8612 100644
--- a/pages/operators/chain-operators/tutorials/_meta.json
+++ b/pages/operators/chain-operators/tutorials/_meta.json
@@ -4,5 +4,6 @@
"adding-precompiles": "Adding a precompile",
"modifying-predeploys": "Modifying predeployed contracts",
"integrating-da-layer": "Integrating a new DA layer",
+ "proposer-address": "Managing the proposer address",
"chain-dev-net": "Running a local network environment"
}
\ No newline at end of file
diff --git a/pages/operators/chain-operators/tutorials/proposer-address.mdx b/pages/operators/chain-operators/tutorials/proposer-address.mdx
new file mode 100644
index 000000000..909733c3d
--- /dev/null
+++ b/pages/operators/chain-operators/tutorials/proposer-address.mdx
@@ -0,0 +1,79 @@
+---
+title: Managing the proposer address
+lang: en-US
+description: Learn how to update the proposer address for chains using permissioned fault proofs.
+content_type: tutorial
+topic: proposer-management
+personas:
+ - chain-operator
+ - protocol-developer
+categories:
+ - chain-operation
+ - chain-management
+ - proxy
+ - fault-proofs
+is_imported_content: 'false'
+---
+
+# Managing the proposer address
+
+This guide explains how to update the proposer address, within the dispute game smart contracts, for chains using permissioned fault proofs.
+The [proposer](https://docs.optimism.io/operators/chain-operators/architecture#permissioned-components) is responsible for submitting L2 outputs to L1, which is a critical component of the OP Stack.
+You will need the [L1ProxyAdmin](/superchain/privileged-roles#l1-proxy-admin) account, before you begin.
+
+The proposer role is defined in the [`PermissionedDisputeGame.sol`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/dispute/PermissionedDisputeGame.sol) contract for chains running permissioned fault proofs.
+When you need to change the proposer address, you must update the implementation for `gametype 1` in the `DisputeGameFactory.sol` contract.
+
+## Steps to update the proposer address
+
+1. **Identify the current configuration**
+
+ First, confirm that your chain is using permissioned fault proofs by checking the `DisputeGameFactory` contract on your L1. You can verify the current implementation by querying the `gameImpls` mapping with the permissioned cannon game type. This will return the current implementation contract for permissioned fault proof games.
+
+ See the [DisputeGameFactory contract](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/dispute/DisputeGameFactory.sol) for the `gameImpls` function details.
+
+2. **Prepare the new implementation**
+
+ You'll need to deploy a new implementation of the `PermissionedDisputeGame.sol` contract with the updated proposer address. When deploying:
+
+ * The constructor requires multiple parameters including the _new_ proposer address
+ * Use the same parameters as your existing implementation, except for the new proposer address
+ * Ensure all inherited contracts are properly initialized
+ * Test deployment on a testnet first
+
+ For constructor parameters, refer to the [PermissionedDisputeGame contract](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/dispute/PermissionedDisputeGame.sol).
+
+3. **Update the implementation in the DisputeGameFactory**
+
+ Using the L1ProxyAdmin account, call the `setImplementation()` function to update the permissioned game type:
+
+ * `_gameType`: Use `GameType.PERMISSIONED_CANNON` (value: 1) for permissioned fault proof games
+ * `_impl`: The address of your new implementation with the updated proposer
+
+ Only the owner of the DisputeGameFactory contract (typically the ProxyAdmin) can call this function. See the [DisputeGameFactory contract source](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/dispute/DisputeGameFactory.sol) for the function signature.
+
+4. **Verify the update**
+
+ After updating the implementation, verify the change was successful by:
+
+ a. Checking the implementation address is updated in the `gameImpls` mapping
+
+ b. Creating a new dispute game to confirm the proposer address:
+
+ b. Creating a new dispute game to confirm the proposer address:
+ 1. Call `create()` on the DisputeGameFactory with the permissioned cannon game type.
+ 2. Query the `PROPOSER()` function on the newly created game.
+ 3. Verify it matches the new address.
+
+* This operation should be planned carefully as the proposer is a critical component of your rollup.
+* Ensure the new proposer address is valid and properly controlled before making the change.
+* Consider testing the procedure on a testnet before applying to production environments.
+* The `L1ProxyAdmin` is a highly privileged role - ensure proper access controls are in place.
+* All existing dispute games will continue to use the old proposer address, but newly created games will use the updated proposer.
+* The proposer must have sufficient ETH balance to post bonds and pay for gas when creating new dispute games.
+
+## Next steps
+
+* After updating the proposer address, you may need to configure the new proposer node. See the [proposer configuration](/operators/chain-operators/configuration/proposer) for details.
+
+* Read the [protocol configurability specifications](https://specs.optimism.io/protocol/configurability.html#proposer-address) for more in-depth details.
diff --git a/words.txt b/words.txt
index cf0226b3c..d0793a111 100644
--- a/words.txt
+++ b/words.txt
@@ -1,7 +1,7 @@
-accountqueue
ACCOUNTQUEUE
-accountslots
+accountqueue
ACCOUNTSLOTS
+accountslots
ACDC
ADDI
ADDIU
@@ -9,58 +9,58 @@ ADDU
airgap
Allnodes
allocs
-alphanet
Alphanet
-alphanets
+alphanet
Alphanets
+alphanets
altda
ANDI
Ankr
Apeworx
Arweave
authrpc
-autorelay
Autorelay
+autorelay
autorelayer
basefee
-betanet
Betanet
-betanets
+betanet
Betanets
+betanets
BGEZ
BGTZ
Biconomy
BLEZ
-blobpool
BLOBPOOL
+blobpool
blobspace
Blockdaemon
Blockdaemon's
blockhash
blocklists
-blocklogs
BLOCKLOGS
-blockprofilerate
+blocklogs
BLOCKPROFILERATE
+blockprofilerate
Blockscout
-blockspace
Blockspace
+blockspace
blocktime
-blocktimes
Blocktimes
-bloomfilter
+blocktimes
BLOOMFILTER
+bloomfilter
BLTZ
Bootcamp
bootnode
-bootnodes
-Bootnodes
BOOTNODES
+Bootnodes
+bootnodes
bottlenecked
-brotli
Brotli
-callouts
+brotli
Callouts
+callouts
CCIP
Celestia
Celestia's
@@ -72,65 +72,65 @@ chaosnet
Chugsplash
Clabby
codebases
-collateralized
Collateralized
+collateralized
compr
Comprensive
-computependingblock
COMPUTEPENDINGBLOCK
+computependingblock
confs
Consen
corsdomain
counterfactually
-crosschain
Crosschain
+crosschain
Crossmint
Dapphub
daserver
-datacap
DATACAP
-datadir
+datacap
DATADIR
-devnet
+datadir
Devnet
-devnets
+devnet
Devnets
+devnets
Devs
direnv
-disabletxpoolgossip
DISABLETXPOOLGOSSIP
-discv
+disabletxpoolgossip
Discv
+discv
DIVU
Drand
dripcheck
Drippie
Eigen
EIPs
-enabledeprecatedpersonal
ENABLEDEPRECATEDPERSONAL
+enabledeprecatedpersonal
enginekind
-erigon
Erigon
-etherbase
+erigon
ETHERBASE
+etherbase
Ethernity
Ethernow
-ethstats
ETHSTATS
-evmtimeout
+ethstats
EVMTIMEOUT
+evmtimeout
excercise
executability
exfiltrate
-exitwhensynced
EXITWHENSYNCED
-extradata
+exitwhensynced
EXTRADATA
+extradata
Farcaster
Faultproof
-fdlimit
FDLIMIT
+fdlimit
Flashblocks
Flashbots
forkable
@@ -141,52 +141,52 @@ Fraxtal
funcationality
Funct
gameplay
-gascap
GASCAP
+gascap
gaslessly
-gcmode
GCMODE
+gcmode
Gelato
gifs
-globalqueue
GLOBALQUEUE
-globalslots
+globalqueue
GLOBALSLOTS
+globalslots
gokzg
growthepie
hardfork
hardforks
-healthcheck
HEALTHCHECK
+healthcheck
healthchecks
-historicalrpc
HISTORICALRPC
-historicalrpctimeout
+historicalrpc
HISTORICALRPCTIMEOUT
-holesky
-Holesky
+historicalrpctimeout
HOLESKY
+Holesky
+holesky
IERC
-ignoreprice
IGNOREPRICE
+ignoreprice
Immunefi
-inator
Inator
-influxdbv
+inator
INFLUXDBV
+influxdbv
initcode
-ipcdisable
IPCDISABLE
+ipcdisable
ipcfile
-ipcpath
IPCPATH
+ipcpath
IPFS
Isthumus
JALR
-journalremotes
JOURNALREMOTES
-jspath
+journalremotes
JSPATH
+jspath
jwtsecret
Keccak
leveldb
@@ -194,34 +194,34 @@ lightkdf
Lisk
logfile
logfmt
-maxage
MAXAGE
-maxbackups
+maxage
MAXBACKUPS
-maxpeers
+maxbackups
MAXPEERS
-maxpendpeers
+maxpeers
MAXPENDPEERS
-maxprice
+maxpendpeers
MAXPRICE
-memprofilerate
+maxprice
MEMPROFILERATE
-merkle
+memprofilerate
Merkle
+merkle
MFHI
MFLO
Mgas
Minato
-minfreedisk
MINFREEDISK
-minsuggestedpriorityfee
+minfreedisk
MINSUGGESTEDPRIORITYFEE
+minsuggestedpriorityfee
Mintable
Mintplex
MIPSEVM
Mitigations
-monitorism
Monitorism
+monitorism
Moralis
Mordor
mountpoint
@@ -231,39 +231,39 @@ MTHI
MTLO
MULT
multiaddr
-multichain
Multichain
+multichain
multiclient
multisigs
MULTU
nethermind
-netrestrict
NETRESTRICT
-networkid
+netrestrict
NETWORKID
-newpayload
+networkid
NEWPAYLOAD
+newpayload
nextra
-nocompaction
NOCOMPACTION
-nodekey
+nocompaction
NODEKEY
-nodekeyhex
+nodekey
NODEKEYHEX
+nodekeyhex
nodename
-nodiscover
NODISCOVER
-nolocals
+nodiscover
NOLOCALS
-noprefetch
+nolocals
NOPREFETCH
-nopruning
+noprefetch
NOPRUNING
-nosyncserve
+nopruning
NOSYNCSERVE
+nosyncserve
Numba
-offchain
Offchain
+offchain
opchaina
opchainb
OPCM
@@ -273,96 +273,96 @@ opnode's
opstack
Pausability
pcscdpath
-pectra
Pectra
+pectra
Pectra's
-peerstore
Peerstore
+peerstore
peerstores
-permissioned
Permissioned
-permissionless
+permissioned
Permissionless
+permissionless
permissionlessly
Perps
Peta
Pimlico
POAP
POAPs
-pprof
PPROF
-precommitments
+pprof
Precommitments
+precommitments
preconfigured
predeploy
-predeployed
Predeployed
-predeploys
+predeployed
Predeploys
+predeploys
prefunded
-preimage
Preimage
-preimages
+preimage
PREIMAGES
+preimages
preinstall
-preinstalls
Preinstalls
-prestate
+preinstalls
Prestate
+prestate
prestates
PREVRANDAO
-pricebump
PRICEBUMP
-pricelimit
+pricebump
PRICELIMIT
+pricelimit
productionize
productionized
Protip
Proxied
-proxyd
Proxyd
+proxyd
Pyth
Pyth's
QRNG
-quicknode
Quicknode
+quicknode
quickstarts
rebalancing
-regenesis
Regenesis
+regenesis
Reimagine
-rejournal
REJOURNAL
-remotedb
+rejournal
REMOTEDB
+remotedb
Reown
Reown's
replayability
replayor
reposts
reproven
-requiredblocks
REQUIREDBLOCKS
+requiredblocks
rollouts
-rollups
Rollups
+rollups
Routescan
rpckind
-rpcprefix
RPCPREFIX
+rpcprefix
rpcs
RPGF
-runbooks
Runbooks
+runbooks
RWAs
safedb
Schnorr
-sepolia
-Sepolia
SEPOLIA
+Sepolia
+sepolia
seqnr
-sequencerhttp
SEQUENCERHTTP
+sequencerhttp
serv
signup
SLLV
@@ -371,16 +371,16 @@ SLTIU
SLTU
smartcard
snapshotlog
-snapsync
Snapsync
+snapsync
Solana
Soneium
soyboy
Spearbit
SRAV
SRLV
-stablecoins
Stablecoins
+stablecoins
statefulset
subcomponents
subgame
@@ -388,20 +388,20 @@ subheaders
subsecond
SUBU
Sunnyside
-superchain
-Superchain
SUPERCHAIN
+Superchain
+superchain
Superchain's
superchainerc
Superlend
Superloans
Superscan
-supersim
Supersim
-syncmode
+supersim
SYNCMODE
-synctarget
+syncmode
SYNCTARGET
+synctarget
syscalls
thirdweb
threadcreate
@@ -413,8 +413,8 @@ Twei
txfeecap
txmgr
txns
-txpool
TXPOOL
+txpool
txproxy
txproxyd
uncensorable
@@ -426,21 +426,21 @@ Unprotect
unsubmitted
UPNP
upstreaming
-verkle
VERKLE
-vhosts
+verkle
VHOSTS
-viem
+vhosts
Viem
-viem's
+viem
Viem's
-vmdebug
+viem's
VMDEBUG
-vmodule
+vmdebug
VMODULE
+vmodule
xlarge
XORI
ZKPs
ZKVM
-zora
Zora
+zora