Skip to content

Robinhood Chain·Scanned 05 Nov 2026, 11:02 UTC

PonsV2LauncherToken $ARCOM

0xd31e178d7e33694a7f538b5c2698a644556699ee

Verdict

Caution

66/100 safety

Template token with no owner powers; buys and sells work at ~3% curve fee; 18.8% was sniped at launch, and one cluster…

ARCOM is a standard Pons launchpad token with no owner powers, and buys and sells work at about a 3% curve fee. The main risks are on the holder side: snipers and bundles took about 19% of supply in the first seconds and have since sold, and one funder's six wallets still hold about 7% against only about $3k of liquidity. The bonding curve contract is unverified, and the launchpad owner keeps limited, mostly timelocked powers. The project is brand new, with an anonymous team, a new X account and a domain registered the day before launch.

Score breakdown

  • Contract
    85
  • Token
    50
  • Social / X
    50
  • Website
    50

Higher is safer · 0 = worst · 100 = best

Yes
3%
None (no owner role)
0% / 0%

Key findings

  • MediumUnverified bonding curve holds 57% of supply and all buy money
  • MediumLaunchpad owner can redirect creator fees after a 3-day timelock
  • MediumOne funder's six wallets hold about 7% against thin liquidity
  • LowLaunch sniped: 16 wallets took 18.8% of supply in 11 seconds
  • GoodToken is a fixed-supply template with no owner powers

What would change the verdict

  • Raises safety:Bonding curve source gets verified and confirms factory-only access → contract score up
  • Lowers safety:Launchpad owner repoints the locker/vault factory or force-sweeps reserves → down
Post on XView on explorer ↗

Findings

14 findings

Risks (7)

  • MediumUnverified bonding curve holds 57% of supply and all buy moneyotherAI

    Every trade goes through the curve contract, which holds 56.83% of supply plus the collected quote reserve. Its source is not verified. Its function list includes sweepFees, rescueFees, setCreatorFeeRecipient, setBuybackEnabled, initialize and graduate, but who may call these, and what they can move, cannot be confirmed. The factory code calls the curve's rescueFees, setCreatorFeeRecipient, setBuybackEnabled and graduate, which suggests these are factory-gated. That is an inference, not proof, so the safety of the curve reserves rests on unverified code.

    Evidence

    • on-chainrelated contract curve 0x73ecCD7c2F1e5BaFC4F386730A51561D7D535470 verified=false
    • on-chaintopHolders: 0x73ecCD7c2F1e5BaFC4F386730A51561D7D535470 pct 56.8326 label bonding curve
    • codePonsV2LaunchFactory.sol:L1222-L1226
      Show source
      function rescueCurveFees(address token) external onlyOwner nonReentrant {
              LaunchedToken storage launch = _launchedTokens[token];
              if (!launch.exists) revert TokenNotFound();
              PonsV2BondingCurve(payable(launch.curve)).rescueFees();
          }

    Confirmed by: claude-opus-5.5, grok-4.7, gpt-5.6-sol

  • MediumLaunchpad owner can redirect creator fees after a 3-day timelockownershipAI

    The factory owner (0x263e…19Dd) can propose a new creator fee recipient for any launch. Once 3 days pass, anyone can execute it within a 3-day window. This redirects the 2% creator tax and the buyback-vault vest beneficiary, and the code comments state the creator cannot veto it. This affects the creator's income, not holders' tokens or the curve reserves. The owner can also turn the buyback off for a launch, but cannot turn it on.

    Evidence

    • codePonsV2LaunchFactory.sol:L946-L957
      Show source
      function setCreatorFeeRecipient(address token, address newRecipient) external onlyOwner {
              LaunchedToken storage launch = _launchedTokens[token];
              if (!launch.exists) revert TokenNotFound();
              if (newRecipient == address(0)) revert ZeroAddress();
      
              uint256 effectiveAt = block.timestamp + CREATOR_FEE_RECIPIENT_TIMELOCK;
              uint256 expiresAt = effectiveAt + CREATOR_FEE_RECIPIENT_EXECUTION_WINDOW;
              pendingCreatorFeeRecipient[token] =
                  PendingCreatorFeeRecipient({newRecipient: newRecipient, effectiveAt: effectiveAt, expiresAt: expiresAt});
      
              emit CreatorFeeRecipientChangeProposed(token, launch.creatorFeeRecipient, newRecipient, effectiveAt, expiresAt);
          }
    • codePonsV2LaunchFactory.sol:L99
      Show source
      uint256 public constant CREATOR_FEE_RECIPIENT_TIMELOCK = 3 days;
    • codePonsV2LaunchFactory.sol:L988-L1003
      Show source
      function _setCreatorFeeRecipient(address token, LaunchedToken storage launch, address newRecipient) private {
              if (newRecipient == address(0)) revert ZeroAddress();
      
              address previousRecipient = launch.creatorFeeRecipient;
              launch.creatorFeeRecipient = newRecipient;
      
              if (launch.phase == GraduationPhase.PoolCreated) {
                  memeHook.setCreatorFeeRecipient(_poolIdFor(token, launch), newRecipient);
              } else {
                  PonsV2BondingCurve(launch.curve).setCreatorFeeRecipient(newRecipient);
              }
      
              // Keep the buyback vest's beneficiary aligned with the live creator
              // recipient so recovery and self-service transfers redirect vested
              // buyback tokens as well, not only immediate fee payouts.
    • codePonsV2LaunchFactory.sol:L904-L911
      Show source
      function setBuybackEnabled(address token, bool enabled) external {
              LaunchedToken storage launch = _launchedTokens[token];
              if (!launch.exists) revert TokenNotFound();
              bool isCreator = msg.sender == launch.creatorFeeRecipient;
              bool isOwner = msg.sender == owner();
              if (!isCreator && !isOwner) revert NotBuybackController();
              // Enabling spends the creator's bucket, so only the creator may enable.
              if (enabled && !isCreator) revert NotBuybackController();

    Confirmed by: claude-opus-5.5, gpt-5.6-sol

  • MediumOne funder's six wallets hold about 7% against thin liquidityinsidersAI

    Wallet 0xf70d…dbef funded six wallets that together hold 7.07% of supply now. Two of them bought as a bundle in the first blocks. Four of the top-10 holders belong to this cluster. If one entity controls these wallets, it can sell about 7% at once into a curve with only about $3,089 of liquidity, causing a sharp price drop.

    Evidence

    • on-chainclusters: funder 0xf70da97812cb96acdf810712aa562db8dfa3dbef, 6 wallets, pctSupplyHeldNow 7.0678
    • on-chainbundle block 106516347 wallets 0x879ceea9c1b363f2a02d95a77db1da29e9b36cac, 0xf3f0d201bb034a4922f578cc6d69c5efa729622c commonFunder 0xf70da97812cb96acdf810712aa562db8dfa3dbef pctSupply 2.7898
    • on-chainliquidity pons-v2-bonding-curve liquidityUsd 3089

    Confirmed by: claude-opus-5.5, grok-4.7 · Disputed by: gpt-5.6-sol

  • LowLaunch sniped: 16 wallets took 18.8% of supply in 11 secondssnipersDeterministic

    The launch was captured: 16 wallets bought 18.8% of the supply within 11 seconds. A small, fast group set the early price and could sell into everyone who bought later — bad for launch fairness and a strong insider/bot signal. They now hold 0% of supply, so current dump pressure from them is low — most of it was already sold, i.e. they exited on later buyers.

    Evidence

    • on-chainsnipers: windowBlocks=100, wallets=16, pctSupplyBought=18.7512, pctSupplyHeldNow=0
    • on-chainsnipers: pctSupplyBought 18.7512, pctSupplyHeldNow 0

    Confirmed by: facts, claude-opus-5.5, grok-4.7, gpt-5.6-sol

  • LowOwner can rescue reserves only if graduation cannot be seededliquidityAI

    At graduation the curve's reserves move into the factory. They are then seeded by createGraduatedPool, which anyone can call and retry, into a full-range Uniswap v4 position minted to the Pons locker. The owner can send swept reserves to an address of their choice only in two cases. First, rescueSweptGraduation, which requires the launch to sit in the Swept phase for 7 days. Any holder can close that window permanently by calling createGraduatedPool. Second, forceSweptGraduation, which reverts if the seed is still viable. So the owner cannot take a healthy launch's liquidity, but they are trusted in the edge case of a launch that cannot be seeded.

    Evidence

    • codePonsV2LaunchFactory.sol:L1254-L1285
      Show source
      function rescueSweptGraduation(address token, address recipient) external onlyOwner nonReentrant {
              LaunchedToken storage launch = _launchedTokens[token];
              if (!launch.exists) revert TokenNotFound();
              if (launch.phase != GraduationPhase.Swept) revert WrongGraduationPhase();
              if (recipient == address(0)) revert ZeroAddress();
      
              uint256 availableAt = launch.sweptAt + GRADUATION_RESCUE_DELAY;
              if (block.timestamp < availableAt) revert GraduationRescueTooEarly(availableAt);
      
              uint256 quoteAmount = launch.sweptQuote;
              uint256 tokenAmount = launch.sweptTokens;
              address pairToken = launch.pairToken;
      
              launch.sweptQuote = 0;
              launch.sweptTokens = 0;
    • codePonsV2LaunchFactory.sol:L1109-L1123
      Show source
      function forceSweptGraduation(address token) external onlyOwner nonReentrant {
              LaunchedToken storage launch = _launchedTokens[token];
              if (!launch.exists) revert TokenNotFound();
              if (launch.phase != GraduationPhase.NotGraduated) revert WrongGraduationPhase();
              PonsV2BondingCurve curve = PonsV2BondingCurve(launch.curve);
              if (!curve.readyToGraduate()) {
                  revert PonsV2BondingCurve.NotReadyToGraduate();
              }
              if (_graduationSeedable(token, launch, curve.realQuoteReserve(), curve.tokenReserve())) {
                  revert GraduationStillViable();
              }
      
              _sweepCurve(token, launch, curve);
              emit LaunchForceSwept(token);
          }
    • codePonsV2LaunchFactory.sol:L1193-L1211
      Show source
      function createGraduatedPool(address token) external nonReentrant returns (uint256 positionId) {
              if (address(graduationExecutor) == address(0)) revert GraduationExecutorNotSet();
              LaunchedToken storage launch = _launchedTokens[token];
              if (!launch.exists) revert TokenNotFound();
              if (launch.phase != GraduationPhase.Swept) revert WrongGraduationPhase();
      
              uint256 sweptQuote = launch.sweptQuote;
              _assertGraduationSeedable(token, launch, sweptQuote, launch.sweptTokens);
              uint256 tokenAmount = _lockExcessGraduationTokens(token, launch, sweptQuote, launch.sweptTokens);
      
              launch.sweptQuote = 0;
              launch.sweptTokens = 0;
              launch.sweptAt = 0;
              launch.phase = GraduationPhase.PoolCreated;
    • codePonsV2LaunchFactory.sol:L1386-L1402
      Show source
      (int24 tickLower, int24 tickUpper) = _fullRangeTicks(launch.tickSpacing);
              positionId = positionManager.nextTokenId();
      
              uint256 nativeValue = _fundGraduationExecutor(currency0, currency1, amount0, amount1);
              graduationExecutor.mintFullRangePosition{value: nativeValue}(
                  token,
                  key,
                  tickLower,
                  tickUpper,
                  sqrtPriceX96,
                  amount0,
                  amount1,
                  currency0,
                  currency1,
                  policy.protocolFeeRecipient

    Confirmed by: claude-opus-5.5, gpt-5.6-sol

  • LowOwner can repoint the locker and buyback vault factory addressproxy-upgradeAI

    The owner 0x263e…19Dd can call setFactory on both the LP locker and the buyback vault. These contracts trust the factory for locking positions, locking tokens and updating vest recipients. Their sources were omitted, so it cannot be checked whether a replaced factory could unlock positions or move vested tokens. No timelock is shown.

    Evidence

    • on-chainPonsV2LaunchLocker setFactory(address) [owner] @PonsV2LaunchLocker.sol:L60-L66
    • on-chainPonsV2BuybackVault setFactory(address) [owner] @PonsV2BuybackVault.sol:L98-L104

    Confirmed by: claude-opus-5.5 · Disputed by: gpt-5.6-sol

  • LowWebsite domain registered the day before the token launchwebsiteAI

    arcom.space shows a domain creation date of 2026-11-04, one day before the token launch. Yet the Wayback Machine has snapshots back to 2018. This pattern suggests an expired domain re-registered for this project, so the older history does not belong to this team.

    Evidence

    • on-chainsite.domainCreatedAt = 2026-11-04T18:28:14.960Z
    • on-chainsite.waybackFirstSeen = 2018-09-04T20:59:43Z

    Confirmed by: claude-opus-5.5, grok-4.7 · Disputed by: gpt-5.6-sol

Positive signals (2)

  • PositiveToken is a fixed-supply template with no owner powersownershipAI

    ARCOM is the standard Pons V2 launch token: plain OpenZeppelin ERC20 plus ERC20Burnable. The whole supply is minted once to the bonding curve in the constructor, and no further mint function exists. There is no owner, fee, blacklist, pause or max-transaction logic. deployer, launchFactory and curve are immutable reference values and give no privileges. Holders can only burn their own tokens, or tokens they have been approved to spend. Slither reported no issues.

    Evidence

    • codePonsV2LauncherToken.sol:L21
      Show source
      contract PonsV2LauncherToken is ERC20, ERC20Burnable {
    • codePonsV2LauncherToken.sol:L44-L71
      Show source
      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();
              }
    • codeERC20Burnable.sol:L35-L38
      Show source
      function burnFrom(address account, uint256 value) public virtual {
              _spendAllowance(account, _msgSender(), value);
              _burn(account, value);
          }
    • staticslither 0.11.6: issues = []

    Confirmed by: claude-opus-5.5, gpt-5.6-sol

  • PositiveSimulated buy, sell and transfer work at about 3% curve feehoneypotAI

    A real buy and sell on the bonding curve both succeeded. A second wallet that received tokens by transfer could also sell, and a sell one hour later worked. Buy tax was 2.98% and sell tax 3%, which is the curve's 1% protocol fee plus the 2% creator tax. Wallet-to-wallet transfers have no tax. Nothing indicates a honeypot.

    Evidence

    • forkcanBuy=true, canSell=true, buyTaxPct=2.98, sellTaxPct=3, transferTaxPct=0
    • forksecond wallet (received via transfer) could sell
    • forkcurve fees: feeBps=100, creatorTaxBps=200

    Confirmed by: claude-opus-5.5, grok-4.7, gpt-5.6-sol

Notes (5)

  • InfoOne-time burn: 1.1% of supply sent to a burn addressburnDeterministic

    1.1% of the supply ever minted is burned, in 1 burn transfer(s), last 2026-11-05. Burned by: the deployer 0xea47…cb5b (1.1%, 1 burn). This happened once, around launch; there is no sign of a continuing burn mechanism.

    Evidence

    • on-chainTransfer events to 0x0 / 0x…dEaD and balanceOf(burn addresses) of 0xd31e178d7e33694a7f538b5c2698a644556699ee
    • on-chainDeployer 0xea47b808dbebeff4a7da7f946c226b0743b8cb5b holds 0% now
    • on-chainburns.by: 0xea47b808dbebeff4a7da7f946c226b0743b8cb5b kind deployer pct 1.1415

    Confirmed by: facts, claude-opus-5.5, grok-4.7, gpt-5.6-sol

  • InfoLaunchpad fee settings cannot change this token's feesfeesAI

    The launchpad owner's setters only govern new launches. These include the snipe-tax start, bounded to 0 or 2001-9900 bps, and the snipe-tax window, bounded to 1-60 s. The code bounds these setters, contrary to the 'unbounded' note in the params table. This token's 2% creator tax is fixed at launch, and its snipe tax has already decayed to 0.

    Evidence

    • codePonsV2LaunchFactory.sol:L564-L583
      Show source
      function setSnipeTaxStartBps(uint256 bps) external onlyOwner {
              if (bps != 0 && (bps <= MAX_TOTAL_TRADE_FEE_BPS || bps > MAX_SNIPE_TAX_START_BPS)) {
                  revert InvalidBasisPoints();
              }
              snipeTaxStartBps = bps;
              emit SnipeTaxStartBpsUpdated(bps);
          }
      
          /**
           * @notice Sets the decay window new launches snapshot at creation, in
           * seconds. Capped at one minute so a misconfiguration cannot leave a
           * launch effectively closed to the public for minutes; disabling the
           * tax is done through `setSnipeTaxStartBps`, so a zero window is
           * refused rather than overloaded to mean off.
           */
    • codePonsV2LaunchFactory.sol:L545-L554
      Show source
      /**
           * @notice Adjusts the ceiling a creator's chosen trade tax is validated
           * against at launch time. Already-launched tokens keep the immutable
           * tax rate they launched with regardless of later ceiling changes.
           */
          function setMaxCreatorTaxBps(uint256 bps) external onlyOwner {
              if (bps > MAX_CREATOR_TAX_CEILING_BPS) revert InvalidBasisPoints();
              maxCreatorTaxBps = bps;
              emit MaxCreatorTaxUpdated(bps);
          }
    • on-chaincurve: graduated=false, feeBps=100, creatorTaxBps=200, snipeTaxNow=0bps over 3s

    Confirmed by: claude-opus-5.5, gpt-5.6-sol

  • InfoSite has no on-chain features, so the mint test could not runwebsiteAI

    The scripted mint test made no transaction because the site is a read-only AI-agent workspace with no mint feature. No approvals or signatures were requested, so the failure does not indicate a trap. An upgradeable EtherPool contract (UUPS, admin can pause) was referenced in the site's JavaScript. Its connection to the project is unclear, and the test made no interaction with it.

    Evidence

    • forkdappTests mint: observed
      Show source
      wallet no balance change; 0 tx (none).
    • on-chainEtherPool 0xEC5266c9e44631e1ba22FD6377C38130c1F3B738 found via site-js:index-BDT92T_b.js (L2); admin = 0x44eb9939cfdE7C394f1632C6890191d695f0a3ce

    Confirmed by: claude-opus-5.5, grok-4.7, gpt-5.6-sol

  • InfoNew, unverified X account created on launch daysocialAI

    @arcomspace was created on 2026-11-05, about two hours before this token was deployed, and is not verified (87 followers, following 3). arcom.space was registered the day before. The posts describe the same product as the site (read-only Robinhood Chain tools, app or MCP, opened by holding $10 of $ARCOM). Nothing in the posts shows an older unrelated account that was renamed, but there is also no public track record before this launch.

    Evidence

    • Show source
      your agent can write code all day and still can't read Robinhood Chain Arcom gives it a computer that can nine live tools, one workspace, an app you can install
    • Show source
      Arcom is the agent computer for Robinhood Chain: agents with live tools for stock tokens, Morpho rates, new coins, wallets and the model router, in a web app you can install and over MCP for Claude Code, Codex and Cursor. Opened by holding $10 of $ARCOM.
    • on-chaindeployedAt=2026-11-05T06:08:20.000Z; deployerHistory=[]

    Confirmed by: grok-4.7

  • InfoNo rug reports found; one caller's holder figures contradict factssocialAI

    A search for scam, rug, and honeypot posts did not return accusations naming $ARCOM or this contract. Mentions of @arcomspace are mostly generic follow-back, DM, and collab replies, not independent holder warnings. Larpcheck (an automated scanner) called the story partly real and the coin neutral, and said agent runs behind the $10 hold were not tested. That is an allegation, not proof the app works or fails. One caller post claimed top 10 holders own 53%; the facts given here say top 10 hold about 23.2%, so that caller figure is not supported.

    Evidence

    Confirmed by: grok-4.7, claude-opus-5.5

Score breakdown

Higher is safer. The overall is the weighted average of the assessed parts, then capped by hard facts.

  • Contract

    weight 45%
    85

    The token is a clean, verified fixed-supply template with no owner powers, but the curve holding the reserves is unverified and the launchpad owner keeps some limited powers.

    Why this score

    Raised the score

    • Verified, non-upgradeable ERC20 with no owner, mint, blacklist or pause
    • Buy, sell and transfer all pass in simulation
    • About 3% curve fee, no transfer tax
    • Slither found no issues

    Lowered the score

    • Bonding curve holding 57% of supply is unverified
    • Launchpad owner can redirect creator fees after a 3-day timelock
    • Owner can repoint the locker and buyback vault factory address
  • Token

    weight 30%
    50

    The launch was captured by snipers and bundles who have since exited, and a single funded cluster still holds about 7% against very thin liquidity.

    Why this score

    Raised the score

    • Deployer holds 0% and sold nothing
    • Snipers now hold 0%
    • Top 10 holders hold about 23%

    Lowered the score

    • 16 sniper wallets bought 18.8% in the first 11 seconds
    • Five same-block bundles at launch
    • Six wallets with one funder hold about 7%
    • Only about $3,089 of liquidity on the curve
  • Social / X

    weight 15%
    50

    The X account is brand new, unverified and anonymous, but its posts match the site and no scam reports were found.

    Why this score

    Raised the score

    • Posts consistently describe the same product as the site
    • No rug or scam accusations found

    Lowered the score

    • X account created on launch day and not verified
    • Team is not identified
    • Replies are mostly collab spam
  • Website

    weight 10%
    50

    The site is a minimal one-page product description on a freshly registered domain; it is read-only, and its token-gating claims are unverified.

    Why this score

    Raised the score

    • Site confirmed read-only and never asks for signatures
    • Burn claim confirmed on-chain

    Lowered the score

    • Domain registered the day before launch
    • Older archive history likely belongs to a previous owner
    • Claim that holding $10 of the token unlocks the app is untested