Can a GSN signer be changed after initialization?

I deployed a contract that inherits from GSNBouncerSignature using a hardware wallet and I used its address as the GSN signer. Now, I’d like to migrate the signer to a multisig wallet address. Can I do this?

:memo:Details

I see there is no transferSigner function in the GSNBouncerSignature contract, by contrast to the transferOwnership function from the more popular “Ownable” contract.

:computer: Environment

  • @openzeppelin/contracts-ethereum-package v2.2.3
  • @openzeppelin/upgrades v2.5.2
1 Like

Hi @PaulRBerg,

There isn't a mechansim to change the trusted signer unless you explicitly added one to call _setTrustedSigner:

The options would be to:

  • Upgrade the contract using OpenZeppelin SDK (if you used upgradeability)
  • Create a new contract with functionality to change the trusted signer and transition to using that contract

Alternatively, you could transfer anything else controlled by the hardware wallet private key. Then you could use that private key for only a trusted signer. See the following tutorial on how to setup a trusted signing process:

1 Like

Wow @abcoathup thanks for the detailed response!!

1 Like