Skip to content

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

PonsV2LauncherToken $PRIORS

0xedbf91223639800bcd5756815caf908df3b890be

Verdict

Caution

50/100 safety

Token has no owner powers, but a test buy reverted; creator-declared wallets bought 38.6% at launch and sold out.

The PRIORS token contract is a standard Pons template with no owner powers, but our simulated buy on the main pool reverted, so trading on that venue is unverified. The launch was captured by wallets the creator declared at launch, which skipped the snipe tax, bought 38.6% of supply and have fully sold into later buyers. Side pools have unlocked liquidity controlled by those insiders. Separately, the owner of the fee-to-credit treasury can redirect fees and withdraw tokens. On the positive side, the project has a consistent verified X account, real product documentation, and a permanent Pons locker holding part of the supply.

Score breakdown

  • Contract
    55
  • Token
    35
  • Social / X
    62
  • Website
    55

Higher is safer · 0 = worst · 100 = best

Unknown
—
None (no owner role)
0% / 0%
MC at check
$11.34M
MC now
no live price
Since check
—
Liquidity
$1.22M

$PRIORS · Live price chart

Live chart

The chart updates live; “MC at check” above is the market cap when this check ran.

LIVE
DexScreener · uniswap · pair 0xff7b…fd92

Key findings

  • HighCreator-declared wallets bought 38.6% of supply at launch
  • MediumToken's pool uses an unverified v4 hook
  • MediumToken's pool uses an unverified v4 hook
  • MediumToken's pool uses an unverified v4 hook
  • GoodToken is a fixed-supply Pons template with no owner powers

What would change the verdict

  • Lowers safety:Insider wallets pull their unlocked liquidity from the secondary v4 pools would move the verdict down
  • Lowers safety:The treasury owner uses rescue or redirects the creator-fee stream away from agent credit would move the verdict down
  • Raises safety:Pons factory and seat-vault sources are verified, with a timelock on owner actions, would move the verdict up
Post on XView on explorer ↗

Findings

18 findings

Risks (13)

  • HighCreator-declared wallets bought 38.6% of supply at launchinsidersDeterministic

    34 wallet(s) linked to the team (declared by the creator at launch, exempt from the snipe tax) bought 38.6% of the supply in the first blocks — an insider allocation that real buyers did not get. They now hold 0%, so current dump pressure from them is low; most of it has already been sold.

    Evidence

    • on-chaininsiders: 34 wallets, fundedBy declared by creator at launch (snipe-tax exempt on curve; creator 0x9f05f7d48653d248c90c41ee97730a05b8f8ac0f), bought at launch 38.6%, pctSupplyHeldNow 0
    • on-chaintoken.bundles[0]: block 67325240, commonFunder 0xe5e24290ade95d6e5f259bc4a70c95d655a773fd, pctSupply 38.6
    • on-chaintoken.insiders[0].fundedBy
      Show source
      declared by creator at launch (snipe-tax exempt on curve; creator 0x9f05f7d48653d248c90c41ee97730a05b8f8ac0f)
    • on-chaintoken.snipers: pctSupplyBought 49.4709, pctSupplyHeldNow 0
    • codePonsV2BondingCurve.sol:L315-L335
      Show source
      function currentSnipeTaxBps(address recipient) public view returns (uint256) {
              if (snipeTaxExempt[recipient]) return 0;
              uint256 startBps = snipeTaxStartBps;
              if (startBps == 0) return 0;
              uint256 elapsed = block.timestamp - launchedAt;
              uint256 window = snipeTaxSeconds;
              if (elapsed >= window) return 0;
              return startBps >> ((elapsed * 14) / window);
          }
      
          /**
           * @notice Marks `account` as exempt from the snipe tax. Called by the
           * factory during the launch transaction for the creator, their fee
           * recipient, and any bundle wallets the creator declared, so a team's
           * own opening buys clear at the untaxed price while sniper bots in the
    • on-chaincurve param snipeTaxStartBps = 9900 (99%), snipeTaxSeconds = 3

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

  • MediumToken's pool uses an unverified v4 hookhoneypotDeterministic

    A Uniswap v4 pool of this token (pool.hooks (0x1fe1d9a6…)) runs hook 0x419e…2Ac0 on every swap (beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap). The hook's source code is not verified, so it cannot be checked whether it blocks sells for some wallets or later, or takes a hidden fee. A passing sell simulation only shows it works for our test wallet right now.

    Evidence

    • on-chainpool hook 0x419e4D8EF9a35Bd97ca53dcBf4AbaFC5526F2Ac0 permission bits: beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap

    Confirmed by: facts

  • MediumToken's pool uses an unverified v4 hookhoneypotDeterministic

    A Uniswap v4 pool of this token (pool.hooks (0xaf952c88…)) runs hook 0x3493…2ac0 on every swap (beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap). The hook's source code is not verified, so it cannot be checked whether it blocks sells for some wallets or later, or takes a hidden fee. A passing sell simulation only shows it works for our test wallet right now.

    Evidence

    • on-chainpool hook 0x3493b97FBF6917C91caB8E2Ba9C871D31AA82ac0 permission bits: beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap

    Confirmed by: facts

  • MediumToken's pool uses an unverified v4 hookhoneypotDeterministic

    A Uniswap v4 pool of this token (pool.hooks (0x11460423…)) runs hook 0xa735…EaC0 on every swap (beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap). The hook's source code is not verified, so it cannot be checked whether it blocks sells for some wallets or later, or takes a hidden fee. A passing sell simulation only shows it works for our test wallet right now.

    Evidence

    • on-chainpool hook 0xa735d365630987D86789d5aEFBd91b244A7fEaC0 permission bits: beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap
    • codewthHOOKV2.sol:L127-L134
      Show source
      function changeExecutorAddress(address newExecutor) external onlyOwner {
              require(newExecutor != address(0), "Zero address");
              require(
                  newExecutor != registryMaintainer,
                  "Maintainer cant be the executor"
              );
              executor = IHookArbitrageExecutor(newExecutor);
          }
    • codewthHOOKV2.sol:L453-L478
      Show source
      function _beforeSwap(
              address sender,
              PoolKey calldata key,
              SwapParams calldata params,
              bytes calldata
          ) internal override returns (bytes4, BeforeSwapDelta, uint24) {
              if (sender != address(executor)) {
                  (address token, address quote, bool configured) = _route(key);
      
                  address rawToken = quote == Currency.unwrap(key.currency0)
                      ? Currency.unwrap(key.currency1)
                      : Currency.unwrap(key.currency0);
      
                  bool tokenIn = params.zeroForOne ==
                      (Currency.unwrap(key.currency0) == rawToken);
    • on-chainv4-hook 0xa735d365630987D86789d5aEFBd91b244A7fEaC0 verified=false: fn setGlobalPaused(bool), withdrawFloat(address,uint256,address); permissions beforeRemoveLiquidity, beforeSwap

    Confirmed by: facts, claude-opus-5.5

  • MediumToken's pool uses an unverified v4 hookhoneypotDeterministic

    A Uniswap v4 pool of this token (pool.hooks (0x22b38031…)) runs hook 0xa317…C040 on every swap (afterSwap). The hook's source code is not verified, so it cannot be checked whether it blocks sells for some wallets or later, or takes a hidden fee. A passing sell simulation only shows it works for our test wallet right now.

    Evidence

    • on-chainpool hook 0xa31729621a2280C0Ff9Aaff5B3F357cFF1bEC040 permission bits: afterSwap

    Confirmed by: facts

  • MediumBuying currently failshoneypotDeterministic

    A simulated buy reverted. Trading may not be enabled yet, or the contract restricts who can buy. Re-check before interacting.

    Evidence

    • forkfork simulation on uniswap-v4 pool 0x9be7ab27227e115085b0949a819a73f6963ddc6da0c6204d37757c24297706e8: buy reverted
      Show source
      buy reverted: Execution reverted for an unknown reason. | venue uniswap-v4 fee tier 10000 — pool LP fee is included in quotes; reported taxes are token-level
    • forkbuy reverted
      Show source
      buy reverted: Execution reverted for an unknown reason.
    • on-chainuniswap-v4 0x9be7ab2722…: v4 position liquidity: none tracked
    • codePonsV2MemeHook.sol:L184-L201
      Show source
      function getHookPermissions() public pure override returns (Hooks.Permissions memory) {
              return Hooks.Permissions({
                  beforeInitialize: true,
                  afterInitialize: false,
                  beforeAddLiquidity: false,
                  afterAddLiquidity: false,
                  beforeRemoveLiquidity: false,
                  afterRemoveLiquidity: false,
                  beforeSwap: false,
                  afterSwap: true,
                  beforeDonate: false,
                  afterDonate: false,
                  beforeSwapReturnDelta: false,
                  afterSwapReturnDelta: true,
                  afterAddLiquidityReturnDelta: false,

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

  • MediumLaunch sniped: 34 wallets took 49.5% of supply in 10 secondssnipersDeterministic

    The launch was captured: 34 wallets bought 49.5% of the supply within 10 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=34, pctSupplyBought=49.4709, pctSupplyHeldNow=0

    Confirmed by: facts

  • MediumInsider wallets hold unlocked liquidity in side v4 poolsliquidityAI

    The Uniswap v4 pool 0xff7b… ($273k, using the Pons hook) shows lpLockedPct 0. Five wallets from the launch bundle/insider list hold about 70% of its tracked position liquidity (17.0%, 16.2%, 16.1%, 10.7%, 10.2%). Pool 0x451b… ($215k) has 100% of tracked liquidity held by one address and is also not locked. These holders can remove that liquidity at any time, which would make those pools much thinner. The Pons locker is designed to hold the graduation position permanently. However, the facts do not show which tracked liquidity, if any, is that locked position.

    Evidence

    • on-chainuniswap-v4 0xff7b3bd2db…: v4 position liquidity other holders
      Show source
      0xf1d860234017a30481358a2453707ea6a6f9a65d 17.0386%, 0x4d87d74fec4c3118a8164bb58b1e9b278b5defa2 16.1987%, 0x38349ec3cae7d6ddb9c28718b6913672d9b37b3e 16.0787%, 0x53cac93303b7198dada1a27b8786f055476a70cd 10.6791%, 0x0664697e52bf8e82dd344b298b51bbacd94228b5 10.1991%
    • on-chainliquidity pool 0xff7b3bd2db34d9ed8160e6dedf1d448777abaa1fa6fc8a31144930a1a656fd92: lpBurnedPct 0, lpLockedPct 0
    • on-chainuniswap-v4 0x451b15f8f7…: v4 position liquidity other holders: 0xf8b94cbe19e10213aa8c522ffdcbc230306f90c2 100%

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

  • MediumTreasury owner can redirect creator fees and withdraw any tokensclaims-mismatchAI

    The project says PRIORS fees 'back the first credit any ERC-8004 agent gets'. That money path is TreasurySponsorV5, and its single owner 0x20c6… has several powers with no timelock shown: - rescue(token,to) sends any token the treasury holds, or its escrow balance, to any address. - setFeeSink changes where collected fees go. - transferCreatorFeeRecipient tells the Pons factory to move the token's creator-fee stream to a new address. - freeze(id,bool) can freeze agents in the credit pool. Whether the fees really fund agent credit therefore depends on trusting this owner.

    Evidence

    • codeTreasurySponsorV5.sol:L616-L633
      Show source
      function rescue(address token, address to) external onlyOwner {
              if (token == address(0)) {
                  if (address(escrow) != address(0) && escrow.balanceOf(address(this)) > 0) escrow.claim();
                  uint256 bal = address(this).balance;
                  (bool ok,) = to.call{value: bal}("");
                  if (!ok) revert TransferFailed();
                  emit Rescued(address(0), to, bal);
              } else {
                  if (token == address(asset)) revert UseSweep();
                  if (address(escrow) != address(0) && escrow.balanceOfToken(address(this), token) > 0) {
                      escrow.claimToken(token);
                  }
                  uint256 bal = IERC20(token).balanceOf(address(this));
                  IERC20(token).safeTransfer(to, bal);
                  emit Rescued(token, to, bal);
    • codeTreasurySponsorV5.sol:L582-L587
      Show source
      function setFeeSink(address sink) external onlyOwner {
              if (sink == address(0)) revert InvalidAddress();
              feeSink = sink;
              emit FeeSinkUpdated(sink);
          }
    • codeTreasurySponsorV5.sol:L610-L613
      Show source
      function transferCreatorFeeRecipient(address launchToken, address newRecipient) external onlyOwner {
              factory.transferCreatorFeeRecipient(launchToken, newRecipient);
          }
    • codeCreditPoolV2.sol:L664-L673
      Show source
      function freeze(uint256 agentId, bool frozen_) external nonReentrant {
              Agent storage a = _agents[agentId];
              uint256 s = a.sponsor;
              if (s == 0) revert WrongSponsor(agentId, 0);
              _onlyOwnerOf(s);
              a.frozen = frozen_;
              emit Frozen(s, agentId, frozen_);
              if (frozen_) _releaseFrozen(agentId, a);
          }
    • on-chainTreasurySponsorV5 0xFe8fdf43c4b0443aCF8E8CD8facD62F1B770e267 owner = 0x20c6816B2419616238772591965E6E9AbE493fD5
    • Show source
      Deposit USDG into the pool agents borrow from.

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

  • MediumUnverified lending vault and old treasuries have rescue powershidden-functionAI

    The site config points to several contracts whose source is not verified, so what their functions do cannot be confirmed: - Seat vault 0xb1c3…, owner 0x97C4…, exposes close(uint256), setFeeSink, rescue(address,address) and withdrawOffer. - Older treasuries 0x59f2… and 0x0c50… expose rescue, sweep and setFeeSink. If these contracts hold lender or protocol USDG, an owner-only rescue could remove it. The dApp test 'Lend USDG' timed out without any transaction, and 'Withdraw USDG' was skipped. Depositing and withdrawing are therefore unverified, not proven safe or proven broken.

    Evidence

    • on-chainvault 0xb1c3a04496238D62E3c93118C297163855e22192 verified=false owner=0x97C4e594D458f8BBE961d5384Bbd8a9Cc2D18777: fn close(uint256), rescue(address,address), setFeeSink(address)
    • on-chaintreasury 0x0c5091235A25bBFD3F5a009cBe04120D0CBAD573 verified=false: fn rescue(address,address), sweep(), freeze(uint256,bool)
    • forkdappTests: Lend USDG
      Show source
      could not complete "Lend USDG" in the UI (timeout: goal time cap reached)
    • forkdappTests: Withdraw USDG
      Show source
      skipped: the dApp-test time budget ran out before this goal

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

  • MediumWebsite still shows the old 50% lender fee splitclaims-mismatchAI

    The homepage and protocol page still describe the old fee split: about half of each loan fee to lenders and a quarter to the backer. On 4 Nov 2026 the project account said that split changed the same day so lenders get 75% and the backer 25%, with the reserve taking none of a new fee. Anyone deciding to lend or to back an agent from the website can be working off a split the team already said is outdated. This is a docs mismatch, not a proven token-tax change.

    Evidence

    Confirmed by: grok-4.7, gpt-5.6-sol

  • MediumNo outside audit and pool settings can change with no timelock waitwebsiteAI

    Priors' own protocol page says the lending pool is owned by PoolSteward, which answers to a Safe through a timelock that has had no waiting time since 11 October 2026, so a scheduled change can run at once. The same page says the contracts have had no outside audit and that lent USDG is still at risk even though they claim a default is paid from the backer's stake, not lenders. That is a trust point for anyone who deposits USDG or stakes $PRIORS as backing: the team says a Safe can change pool settings immediately, and nobody independent has signed off.

    Evidence

    Confirmed by: grok-4.7, gpt-5.6-sol

  • LowThird-party accounts post fake airdrop and vote baitsocialAI

    Several accounts posted near-copy text telling people that voting or backing this contract address unlocks a locked allocation or airdrop. The official @priors_trade posts in this review do not announce any airdrop or vote-to-claim. Treat those posts as third-party bait, not a team offer.

    Evidence

    Confirmed by: grok-4.7

Positive signals (3)

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

    PRIORS is a standard OpenZeppelin ERC20 plus ERC20Burnable. The whole supply was minted once to the bonding curve in the constructor. There is no owner, no mint, no fee, no blacklist, no pause and no transfer hook. The deployer field is reference data only and gives no privileges. Nobody can change balances or block transfers at the token level. Slither reported no issues.

    Evidence

    • codePonsV2LauncherToken.sol:L21-L71
      Show source
      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;
    • codePonsV2LauncherToken.sol:L70
      Show source
      _mint(curve_, supply_);
    • on-chaincontract.privileges = [] ; isProxy=false
    • staticslither 0.11.6: issues = []

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

  • PositivePons locker and buyback vault have no admin withdrawal pathliquidityAI

    The Pons LP locker has no withdraw function and no arbitrary-call function. Its owner can only wire the factory once, and renouncing ownership is disabled. The locker currently holds 8.16% of PRIORS supply as permanently locked remainder. The buyback vault pays out only through a linear 5-year vest to the recorded creator and protocol recipients.

    Evidence

    • codePonsV2LaunchLocker.sol:L60-L65
      Show source
      function setFactory(address factory_) external onlyOwner {
              if (factory != address(0)) revert AlreadyInitialized();
              if (factory_ == address(0)) revert ZeroAddress();
              factory = factory_;
              emit FactorySet(factory_);
          }
    • codePonsV2LaunchLocker.sol:L109-L115
      Show source
      function lockTokenSupply(address token, uint256 amount) external onlyFactory {
              if (token == address(0)) revert ZeroAddress();
              if (amount == 0) return;
              IERC20(token).safeTransferFrom(msg.sender, address(this), amount);
              lockedTokenSupply[token] += amount;
              emit TokenSupplyLocked(token, amount);
          }
    • codePonsV2BuybackVault.sol:L178-L198
      Show source
      function release(address token) external nonReentrant returns (uint256 released) {
              if (factory == address(0)) revert NotFactory();
      
              LaunchVest storage v = _vaults[token];
              if (msg.sender != v.creatorRecipient && msg.sender != v.protocolRecipient) revert NotVestBeneficiary();
      
              _checkpoint(v, block.timestamp);
              released = v.vestedUnreleased;
              if (released == 0) return 0;
              v.vestedUnreleased = 0;
              v.totalReleased += released;
      
              uint256 protocolAmount = (released * v.protocolFeeShareBps) / BASIS_POINTS;
              uint256 creatorAmount = released - protocolAmount;
    • on-chain0x267444d099b10fb5ed7c3cc7b7c767adca574952 (LP locker) 8.1632%

    Confirmed by: claude-opus-5.5 · Disputed by: grok-4.7

  • PositiveVerified X account, domain and launch dates line upsocialAI

    @priors_trade was created on 10 Sep 2026, the same day the priors.trade domain was registered, and the token was deployed nine days later. The account is verified, follows few accounts, and posts product updates rather than generic 100x calls. Robinhood's crypto account replied to one of their posts. That supports a real, consistent project identity. It does not prove the contracts are safe or that the team is identified by legal name.

    Evidence

    Confirmed by: grok-4.7 · Disputed by: gpt-5.6-sol

Notes (2)

  • LowGraduated pool trade fee is fixed at 3% and cappedfeesAI

    The Pons hook takes hookFeeBps plus creatorTaxBps on every swap, out of the side of the trade the swapper did not specify. Both values are frozen per pool when the pool is registered. The hook owner's later changes only affect future launches. For PRIORS the fee is 1% protocol plus 2% creator. The combined fee can never exceed 20% (MAX_TOTAL_TRADE_FEE_BPS). The hook cannot revert a swap based on who is trading, so it cannot turn the pool into a honeypot.

    Evidence

    • codePonsV2MemeHook.sol:L352
      Show source
      if (uint256(creatorTaxBps) + policy.hookFeeBps > MAX_TOTAL_TRADE_FEE_BPS) revert InvalidBps();
    • codePonsV2MemeHook.sol:L364-L378
      Show source
      launches[poolId] = LaunchInfo({
                  registered: true,
                  memecoinIsCurrency0: memecoinIsCurrency0,
                  memecoin: memecoin,
                  quoteToken: quoteToken,
                  creator: creator,
                  buybackCreatorRecipient: buybackCreatorRecipient,
                  protocolFeeRecipient: policy.protocolFeeRecipient,
                  creatorTaxBps: creatorTaxBps,
                  protocolFeeShareBps: policy.protocolFeeShareBps,
                  buybackBurnBps: policy.buybackBurnBps,
                  hookFeeBps: policy.hookFeeBps,
                  maxInternalPriceImpactBps: policy.maxInternalPriceImpactBps,
                  buybackEnabled: buybackEnabled
              });
    • codePonsV2MemeHook.sol:L464-L484
      Show source
      uint256 unspecified = uint256(uint128(unspecifiedAmount));
              uint256 feeAmount = (unspecified * info.hookFeeBps) / BASIS_POINTS;
              uint256 taxAmount = (unspecified * info.creatorTaxBps) / BASIS_POINTS;
              uint256 totalAmount = feeAmount + taxAmount;
              if (totalAmount == 0) return (IHooks.afterSwap.selector, 0);
      
              address feeCurrencyAddr = Currency.unwrap(feeCurrency);
              _takeExact(feeCurrency, feeCurrencyAddr, totalAmount);
              if (feeAmount != 0) {
                  pendingFees[poolId][feeCurrencyAddr] += feeAmount;
                  if (info.buybackEnabled) {
                      // The buyback comes out of the creator's bucket alone, so it
                      // is measured against what remains after the protocol's share.
                      uint256 creatorSlice = feeAmount - (feeAmount * info.protocolFeeShareBps) / BASIS_POINTS;
                      pendingBuyback[poolId][feeCurrencyAddr] += (creatorSlice * info.buybackBurnBps) / BASIS_POINTS;
    • on-chainlaunchpad.fees: buyPct 3, sellPct 3, protocol fee 1%; creator tax 2%

    Confirmed by: claude-opus-5.5

  • InfoDeployer launched earlier tokens with unknown outcomesdeployer-historyAI

    The creator 0x9f05… previously launched NLUSDG, NLUI, NLAUTO, NLTAX1 and USDG5. Their outcomes are unknown, so this history is context only and not evidence of past rugs.

    Evidence

    • on-chaintoken.deployerHistory: NLUSDG, NLUI, NLAUTO, NLTAX1, USDG5 outcome unknown
    • on-chaindeployerHistory deployer 0x9F05F7d48653d248C90C41ee97730a05b8f8Ac0F tokens NLUSDG, NLUI, NLAUTO, NLTAX1, USDG5 outcome unknown
      Show source
      outcome unknown

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

Score breakdown

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

  • Contract

    weight 45%
    55
    Capped · max 60

    simulation: buy failed → max 60

    The token itself is a clean, immutable Pons template with no owner powers, but the simulated buy reverted and several surrounding contracts are unverified or owner-controlled.

    Why this score

    Raised the score

    • Verified, non-upgradeable fixed-supply token with no owner powers
    • No mint, blacklist, pause or token-level fee
    • Slither reported no issues
    • Pons hook fees are frozen at 3% and capped

    Lowered the score

    • Simulated buy on the graduated pool reverted
    • Unverified hooks with pause and withdraw functions on other pools
    • Treasury owner can rescue tokens and redirect creator fees
    • Pons factory and seat vault source not verified
  • Token

    weight 30%
    35

    The launch was captured: creator-declared, snipe-tax-exempt wallets took 38.6% and snipers 49.5%, and all of it has since been sold into later buyers.

    Why this score

    Raised the score

    • Snipers and insiders now hold 0%, so their dump pressure is low
    • About $1.2M liquidity on the graduated pool
    • Pons locker holds 8.2% of supply with no withdrawal path
    • 5,044 holders; top holders are spread thin

    Lowered the score

    • Creator-declared wallets bought 38.6% at launch, exempt from snipe tax
    • 34 wallets sniped 49.5% of supply in 10 seconds
    • Insider wallets hold about 70% of an unlocked side pool's liquidity
    • Deployer launched several earlier tokens with unknown outcomes
  • Social / X

    weight 15%
    62

    The verified X account matches the domain age and posts real product updates, but third-party accounts spread airdrop bait for the token.

    Why this score

    Raised the score

    • Verified X account created the same day as the domain
    • Posts product updates rather than hype
    • Account was acknowledged by Robinhood's crypto account

    Lowered the score

    • Copy-paste airdrop and vote bait from stranger accounts
    • No legally identified team
  • Website

    weight 10%
    55

    The site is detailed and openly discloses its risks, but its fee split is outdated and it admits there is no audit and no timelock delay.

    Why this score

    Raised the score

    • Detailed protocol documentation and public GitHub
    • Site openly discloses experimental status and risks

    Lowered the score

    • Site still shows a 50% lender fee split after the team announced 75%
    • No outside audit, per the site
    • Pool Safe can change settings with no timelock wait
    • Lend and withdraw flows could not be verified in testing