Skip to main content

Connect a Wallet

Connect walletClick Sign Up in the header. Any EVM wallet (MetaMask, Rabby, Coinbase Wallet) works.

Connect Your Wallet

Connect popupWe ask for a single EIP-712 signature—no gas, no keys shared.

Smart Wallet Deployment

Deploy walletOutcome deploys a minimal-proxy contract wallet on HyperEVM and covers the deployment gas.
The Smart Wallet acts as a programmable escrow. It never moves funds without your signature.

Behind the scenes

 /**
     * @notice Create a new BeaconProxy wallet with a given salt.
     * @param salt A user-defined salt for CREATE2.
     * @param owner The owner of the wallet.
     * @return walletAddress The deployed wallet address.
     */
    function createWallet(bytes32 salt, address owner) external onlyServer returns (address walletAddress) {
        require(ownerToWallet[owner] == address(0), "Owner already has a wallet");

        // Data for `initialize(owner, server, feeCollector)`
        bytes memory initData = abi.encodeWithSignature("initialize(address,address,address)", owner, server, feeCollector);

        // Build BeaconProxy bytecode using CREATE2
        bytes memory beaconProxyBytecode = abi.encodePacked(
            type(BeaconProxy).creationCode,
            abi.encode(beacon, initData)
        );

        assembly {
            walletAddress := create2(
                0,
                add(beaconProxyBytecode, 0x20),
                mload(beaconProxyBytecode),
                salt
            )
            if iszero(walletAddress) {
                revert(0, 0)
            }
        }

        // Map owner to deployed wallet and emit event
        ownerToWallet[owner] = walletAddress;
        emit WalletCreated(owner, walletAddress);
    }