How It Works

Learn how the OneClick Deployer helps you deploy contracts without coding

Introduction

OneClick Deployer allows you to deploy three types of Ethereum smart contracts without writing code:

  • Simple Contract - A basic smart contract that handles deployment fees
  • Token Contract (ERC20) - A simple ERC20 token with customizable supply
  • NFT Contract (ERC721) - A basic NFT contract with minting capabilities

Key Features

  • Deploy to 85+ EVM networks including Ethereum, Monad, Somnia, other testnets
  • No coding required - just fill in basic information
  • Low gas fees optimization
  • Track deployments across all chains
  • Instantly verify and share your contract

Deployment Process

  1. Connect Your Wallet

    Click the "Connect Wallet" button to connect your Web3 wallet (MetaMask, WalletConnect, etc.)

  2. Select Network

    Choose the blockchain network you want to deploy to from the dropdown menu

  3. Choose Contract Type

    Select the type of contract you want to deploy (Simple, Token, or NFT)

  4. Configure Parameters

    Fill in the required parameters (name, symbol, supply, etc.) or use the default values

  5. Deploy

    Click the "Deploy" button and confirm the transaction in your wallet

  6. View Results

    After deployment, you'll receive the contract address and transaction hash

Smart Contract Code

View the actual code that will be deployed

Simple Contract

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleContract {
    constructor(address payable _feeReceiver, bool _feeRequired, uint256 _feeAmount) payable {
        if (_feeRequired) {
            require(msg.value >= _feeAmount, "Fee amount too low");
            require(_feeReceiver != address(0), "Invalid fee receiver address");
            
            (bool success, ) = _feeReceiver.call{value: msg.value}("");
            require(success, "Fee transfer failed");
        }
    }
}

Token Contract (ERC20)

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleToken {
    string public name;
    string public symbol;
    uint8 public decimals = 18;
    uint256 public totalSupply;
    
    mapping(address => uint256) public balances;
    
    constructor(
        string memory _name, 
        string memory _symbol, 
        uint256 _initialSupply, 
        address payable _feeReceiver, 
        bool _feeRequired, 
        uint256 _feeAmount
    ) payable {
        name = _name;
        symbol = _symbol;
        totalSupply = _initialSupply * 10**decimals;
        balances[msg.sender] = totalSupply;
        
        if (_feeRequired) {
            require(msg.value >= _feeAmount, "Fee amount too low");
            require(_feeReceiver != address(0), "Invalid fee receiver address");
            
            (bool success, ) = _feeReceiver.call{value: msg.value}("");
            require(success, "Fee transfer failed");
        }
    }
}

NFT Contract (ERC721)

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleNFT {
    string public name;
    string public symbol;
    uint256 public maxSupply;
    uint256 public totalSupply;
    
    mapping(uint256 => address) public ownerOf;
    
    constructor(
        string memory _name, 
        string memory _symbol, 
        uint256 _maxSupply, 
        address payable _feeReceiver,
        bool _feeRequired,
        uint256 _feeAmount
    ) payable {
        name = _name;
        symbol = _symbol;
        maxSupply = _maxSupply;
        totalSupply = 0;
        
        if (_feeRequired) {
            require(msg.value >= _feeAmount, "Fee amount too low");
            require(_feeReceiver != address(0), "Invalid fee receiver address");
            
            (bool success, ) = _feeReceiver.call{value: msg.value}("");
            require(success, "Fee transfer failed");
        }
        
        // Auto mint one token to contract deployer
        mint();
    }
    
    function mint() public {
        require(totalSupply < maxSupply, "Max supply reached");
        totalSupply++;
        ownerOf[totalSupply] = msg.sender;
    }
}

Note: These contracts are simple examples with basic functionality.