MultiAccount Deployment Guide
This document outlines the required steps and responsibilities for deploying the MultiAccount contract.
Responsibility and Security The full responsibility for the deployment and ongoing management of the MultiAccount contract lies with the deploying entity. To ensure the integrity and security of the contract, please take the following actions:
Conduct thorough audits of the contract code.
Implement robust security checks.
Ensure regular maintenance and monitoring of the deployed contract.
Deployment of Latest Version It is essential to deploy the latest version of the MultiAccount contract. The most current version can be found at the following link: MultiAccount Contract
Please note that the MultiAccount contract available in this repository is a sample code. You are free to modify or customize the code to meet your specific requirements. However, be aware that any modifications or changes to the contract may extend the time required for the registration process, as the Symmio team will need to thoroughly review and approve the changes.
Transfer of Admin Roles and ProxyAdmin Ownership Upon successful deployment, the following steps must be completed to ensure secure management of the contract:
Transfer the admin roles to the appropriate entity.
Transfer ownership of the ProxyAdmin to a 3-day timelock contract for added security.
These measures are necessary to safeguard the contract against unauthorized access or modifications.
Proposal to Symmio Team After deploying the contract and completing the necessary security measures, a formal proposal must be submitted to the Symmio team. The proposal should request that the deployed MultiAccount contract address be registered in the Symmio Core Contracts. If any modifications have been made to the original sample contract, please note that the registration process may take longer due to the required review of the changes by the Symmio team.
Prerequisites
Install Node.js and npm.
Install Hardhat in your project directory:
npm install --save-dev hardhatInstall Typescript and
ts-node:npm install --save-dev typescript ts-node
Step 1: Clone the Repo
Step 2: Prerequisites
Ensure you're working with Node 20 LTS (Hardhat doesn’t support Node 21)
Step 3: Create a .env
.envAt the repo root, create a .env. Within the repo you'll find a .env.example. Copy the example over into the .env and populate the fields appropriately.
The required variables for deployment are here:
Step 4: Update hardhat.config.ts (Etherscan V2)
hardhat.config.ts (Etherscan V2)Replace your etherscan section in hardhat.config.ts with one key and clean URLs (no ?apikey= anywhere): Example:
Step 5: Installing Dependencies
Install hardhat via the terminal (if not done already):
Step 6: Compile the Contracts
Step 7: Deploying a MultiAccount Contract (Polygon)
In this example, we're deploying a MultiAccount contract on Polygon, using the address of the diamond deployed there (--symmio-address). A comprehensive list of all the deployed Diamond addresses can be found here.
This will print to the terminal:
You can find the deployed addresses in /tasks/data/deployed.json. This file is used for verification in the following step.
Step 8: Verifying the MultiAccount contract
Simply run the verification script with the appropriate network flag to verify the contracts.
Troubleshooting
“Using deprecated V1 endpoint / API key invalid” → ensure you have ETHERSCAN_API_KEY (single key, not a string) and your
apiURLs don’t contain?apikey=..Node warning →
node -vmust be v20.x.Compiler mismatch → run
npx hardhat clean && npx hardhat compile. (Stick with the repo’s existing Solidity settings.)
Last updated
