Robinhood MainnetChain ID: 4663
Contract detail

PonsV2LauncherToken

PonsV2LauncherToken is a verified Robinhood Chain smart contract at 0xee5576fa…f384eb01 with 6342 indexed transactions.

Address type
Smart contract
Transactions
6342
First indexed block
#45332515
Latest indexed block
#88612578
Emitted events
106692
Verification
Verified
Compiler
0.8.35+commit.47b9dedd
Verification match
partial
Creation transaction
0xbebe5e0a…281bb687
Created at block
#45332515
Language
Solidity
EVM version
cancun
License
MIT
Compiler optimization
Enabled · 200 runs
Deployed bytecode hash
0xc95f518da431326e81a95ea4e7cba683ea02488e702604042fe57299345e2baa
Related activity

Transactions

Verified contract

Contract source code

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

import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {ERC20Burnable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";

/**
 * @title PonsV2LauncherToken
 * @notice Fixed-supply ERC-20 deployed by PonsV2LaunchFactory for a v2 launch.
 * The entire supply mints directly to the token's bonding curve instead of a
 * Uniswap position. Anyone, the deployer included, may buy any amount from
 * the curve at any time; the curve's own price impact and its reserved pool
 * allocation are the only limits on a large buy. `deployer` is carried here
 * as immutable reference data for off-chain attribution only, and confers no
 * privileges over the token.
 * `ERC20Burnable` lets any holder voluntarily burn their own balance; the
 * protocol's buyback mechanism does not use it, bought-back tokens are
 * locked into `PonsV2BuybackVault` for a five-year vest instead of being
 * burned.
 */
contract PonsV2LauncherToken is ERC20, ERC20Burnable {
    struct Socials {
        string twitter;
        string telegram;
        string discord;
        string website;
        string farcaster;
    }

    error ZeroAddress();

    address public immutable deployer;
    address public immutable launchFactory;
    address public immutable curve;

    string public logo;
    string public description;

    Socials private _socials;

    /**
     * @notice Creates a v2 launch token and mints its entire supply to the bonding curve.
     */
    constructor(
        string memory name_,
        string memory symbol_,
        string memory logo_,
        string memory description_,
        Socials memory socials_,
        address deployer_,
        address curve_,
        address launchFactory_,
        uint256 supply_
    ) ERC20(name_, symbol_) {
        if (deployer_ == address(0) || curve_ == address(0) || launchFactory_ == address(0)) {
            revert ZeroAddress();
        }

        deployer = deployer_;
        // Passed explicitly rather than read from msg.sender: PonsV2LaunchFactory
        // deploys this token indirectly through PonsV2LaunchDeployer to keep its
        // own bytecode under EIP-170's size limit, so msg.sender at construction
        // time would otherwise resolve to that deployer helper, not the factory.
        launchFactory = launchFactory_;
        curve = curve_;
        logo = logo_;
        description = description_;
        _socials = socials_;

        _mint(curve_, supply_);
    }

    /**
     * @notice Returns the launch token's five social metadata fields.
     */
    function socials()
        external
        view
        returns (
            string memory twitter,
            string memory telegram,
            string memory discord,
            string memory website,
            string memory farcaster
        )
    {
        Socials memory values = _socials;
        return (values.twitter, values.telegram, values.discord, values.website, values.farcaster);
    }

    /**
     * @notice Returns creator and metadata in the launcher-compatible tuple.
     */
    function getTokenInfo()
        external
        view
        returns (
            address tokenDeployer,
            string memory tokenLogo,
            string memory tokenDescription,
            Socials memory tokenSocials
        )
    {
        return (deployer, logo, description, _socials);
    }
}