Skip to main content
Elysium Names uses dedicated deployment scripts to deploy its smart contracts and configure the protocol. The deployment process covers the core name contract, registration controller and auction contract. It also includes the authorisations and initial settings required for the contracts to operate together. This page provides an overview of the deployment structure and the checks developers should perform before deploying to a live network.

1. Deployment Overview

The protocol consists of three primary contracts:
  • ElyNamesMainnet — manages name NFTs, ownership, records, expiry, resolution and royalties.
  • ElyControllerMain — manages registration, pricing, renewals, referrals, discounts and partner programmes.
  • ElyAuction — manages the auction distribution of reserved single-character names.
All three contracts must be deployed and configured correctly for the complete protocol to operate as intended.

2. Deployment Script

The main deployment script is: script/mainnet/DeployMainnet.s.sol This script handles the deployment and initialisation of the protocol contracts. Its responsibilities include:
  1. Deploying ElyNamesMainnet.
  2. Deploying ElyControllerMain.
  3. Deploying ElyAuction.
  4. Configuring the controller’s authorisation on the core name contract.
  5. Configuring the auction contract’s authorisation.
  6. Applying the reserved-name configuration.
  7. Optionally transferring contract ownership to the configured final owner.
The script is designed to establish the relationships between the contracts rather than deploy them as unrelated components.

Final owner

The deployment configuration includes a FINAL_OWNER setting. When configured, the script can transfer administrative ownership to the designated address. Because the contracts use Ownable2Step, the nominated address must accept ownership to complete the transfer. The final owner should be a verified administrative wallet. A multisignature wallet is recommended for critical production administration.

3. Reserved-Name Configuration

The deployment process also applies the protocol’s reserved-name configuration. This includes:
  • Designated brand or protocol-reserved labels.
  • All 36 single-character labels, consisting of a-z and 0-9, reserved for auction distribution.
Reserved labels are excluded from ordinary public registration. The single-character labels are intended to be distributed through the auction contract.

4. Auction Scheduling

The separate auction scheduling script is: script/mainnet/ScheduleAuctions.s.sol It schedules the 36 single-character auctions according to the configured auction parameters. The documented auction configuration includes: The scheduling script should be executed against the intended network and verified before announcing auction start times.

5. Deployment Configuration

Before deployment, developers should review the configuration values used by the scripts. Important settings include:
  • Network and chain configuration.
  • Deployment account and signing permissions.
  • Constructor arguments.
  • Final administrative owner.
  • Treasury wallet.
  • Royalty wallet and royalty rate.
  • Controller and auction authorisations.
  • Reserved-name configuration.
  • Auction schedule and parameters.
Treasury and royalty settings must be checked independently because they serve different purposes. Do not assume that the intended configuration is automatically the same as the configuration active in a deployed contract. A deployment should follow a controlled sequence.

Before deployment

  • Review the contract source and deployment scripts.
  • Confirm the target network.
  • Verify the deployment wallet and required funds.
  • Check constructor arguments and configuration values.
  • Confirm the intended administrative owner.
  • Verify treasury and royalty recipient addresses.

During deployment

  • Deploy the core name contract.
  • Deploy the controller contract.
  • Deploy the auction contract.
  • Configure the required contract permissions.
  • Apply reserved-name settings.
  • Complete any configured ownership transfer.

After deployment

  • Verify the deployed contract addresses.
  • Confirm controller and auction authorisations.
  • Check ownership and administrative permissions.
  • Verify treasury and royalty configuration.
  • Test registration and name resolution.
  • Test renewal and ownership operations.
  • Confirm reserved-name restrictions.
  • Verify the auction configuration before scheduling or opening auctions.
All important configuration should be checked against the actual onchain state.

7. Testnet and Mainnet

The protocol has been developed and tested on Elysium Testnet. The documented testnet configuration is: These settings are specific to testnet. For mainnet deployment, use the official Elysium mainnet chain configuration, RPC endpoint and verified contract addresses. Never reuse testnet addresses or assume that testnet configuration represents the live mainnet deployment.

8. Deployment Scripts and Source Code

The deployment scripts and contract source are maintained in the Elysium Names repository: https://github.com/bonaventure001/ely-names Relevant script locations:
Developers should inspect the scripts directly for the exact environment variables, constructor arguments, execution commands and configuration values required for a particular deployment. This overview describes the deployment structure; it is not a substitute for reviewing the actual script before execution.

9. Important Considerations

  • Deploy the contracts to the intended network.
  • Verify all contract addresses after deployment.
  • Confirm the required contract authorisations.
  • Review ownership transfers carefully.
  • Check treasury and royalty settings separately.
  • Confirm reserved-name configuration before public registration.
  • Schedule auctions only after verifying the auction contract and parameters.
  • Keep deployment credentials and administrative keys secure.
  • Do not publish unverified addresses as official deployment information.

10. Summary

Elysium Names uses a dedicated main deployment script to deploy and initialise its three primary contracts, while a separate script schedules the single-character auctions. Correct deployment depends on more than successfully creating the contracts. Their authorisations, ownership, reserved-name settings, payment recipients and auction configuration must also be verified. For exact execution instructions, environment variables and deployment parameters, refer to the scripts in the official repository.