FAQ

Why am I required to sign a message to deploy my smart contract?

The signature of the principal (you) is required for three reasons:

  1. So you don't have to remember salts.

  2. To prevent address front-running on other chains.

  3. To implement an intent-based design, such that anybody can deploy your smart contract if you signed the unique message hash confirming your intent to do so. In order for an agent to deploy a contract on your behalf, they would need to possess your signature, the address of the account you used to sign, and the bydecode of your contract. In most cases, you will be both the principal and the agent.

What makes the xSafe Create3Factory contract "intent-based"?

Consider the following principal-agent scenario:

  1. Alice (principal) wants to deploy a smart contract at a predictable address.

  2. Alice signs a message to confirm her intent to deploy her smart contract at a particular address.

  3. Now, anybody (agent) can deploy Alice's smart contract through xSafe's Create3Factory contract, provided they have Alice's signature, the address of the account she used to sign, and the bytecode of her contract.

Currently, there are no mechanisms in place to incentivize agents to perform task #3, but having this intent-based design leaves the door open to do so in the future.

Hence, in most cases, the principal will also be the agent who performs the deployment action.

Last updated