Contract Analysis
DISCLAIMER // NFA // DYOR
This analysis is based on decompiled bytecode — the contract source code is not verified on Etherscan. Function names, parameter types, and internal logic are inferred from selector matching, transaction input decoding, and event log analysis. We are not smart contract security experts. This document should not be considered a comprehensive security audit or financial advice. Always verify critical information independently.
⊙ generated by robots | curated by humans
Analysis Date: 2026-03-29
Metadata
Primary Contract
| PROPERTY | VALUE |
|---|---|
| Contract Address | 0x99c96efF...Ab2dCC (etherscan) |
| Network | Ethereum Mainnet |
| Contract Type | Standalone |
| Deployment Date | 2026-03-28 10:43:35 UTC |
| Deployment Block | 24,755,545 |
| Contract Creator | 0x9fBcc72A...63eA03 (etherscan) |
| Creation TX | 0x72ab6761...cdc457 (tx) |
| Bytecode Size | ~19.8 KB |
| Total Functions | 44 |
| External Contract Dependencies | 3 (WETH, Uniswap V3 SwapRouter, SENT Token) |
| Upgrade Mechanism | ☒ None - Not Upgradeable |
| Verification Status | ☒ NOT VERIFIED |
| Audit Status | ☒ NO AUDIT FOUND |
Related Addresses
| TYPE | ADDRESS | NOTES |
|---|---|---|
| Owner | 0x9fBcc72A...63eA03 (etherscan) |
Single Externally Owned Account (EOA) with full admin control. Also deployer. |
| Keeper | 0x9fBcc72A...63eA03 (etherscan) |
Same as owner — executes trades on behalf of users |
| Fee Recipient | 0x90fF7835...fceEAD (etherscan) |
Receives 0.005 ETH per deposit |
| WETH | 0xC02aaA39...756Cc2 (etherscan) |
Canonical Wrapped ETH |
| Uniswap V3 Router | 0xe592427A...861564 (etherscan) |
Swap execution target |
| SENT Token | 0xe88BaAB9...aDc304 (etherscan) |
Sentinel token — used for eligibility/tier calculation |
| Presale Contract | 0x00000000...00000 |
Not set (address zero) |
Executive Summary
Based on bytecode analysis and transaction patterns, this contract appears to be a managed trading vault — part of the Sentinel project ecosystem. Users deposit ETH (and optionally declare a SENT token balance) to create "vaults." A designated keeper (currently the same address as the owner) then executes trades on users' behalf via Uniswap V3, swapping deposited ETH for stablecoins like USDC and USDT. The contract tracks per-user profit, trade history, and vault state.
The system operates as follows:
- Users call a deposit function (
0x4af9daa8), sending ETH and specifying a SENT token amount - The contract creates a vault entry, records the deposit, and sends a flat 0.005 ETH fee to the fee recipient
- The keeper calls the trade execution function (
0xea0ccfae), wrapping user ETH to WETH and swapping via Uniswap V3 - A second keeper function (
0xd86938ba) appears to close positions by selling acquired tokens back to ETH - Users can top up vaults (
topUp), withdraw fully (withdraw), or withdraw partially (withdrawPartial)
The contract holds user funds directly — currently ~4.84 ETH across 85 registered users with 162 trades executed and ~0.018 ETH reported profit. Key constants include a MAX_TRADE_ETH of 0.5 ETH per trade and a SWAP_DEADLINE_BUFFER of 60 seconds.
Trust assumptions are significant: the keeper has full discretion over when, what, and how much to trade. There is no on-chain strategy, no automated trigger, and no user approval for individual trades. The keeper can execute any trade with any token pair on Uniswap V3 using pooled user funds. Owner and keeper are the same single EOA with no Multisig, no timelock, and no governance mechanism. Source code is unverified.
Architecture
graph TD
User[User]
Contract[Sentinel Mites Vault<br/>0x99c96efF...Ab2dCC]
Owner[Owner / Keeper<br/>0x9fBcc72A...63eA03]
FeeRecip[Fee Recipient<br/>0x90fF7835...fceEAD]
WETH[WETH]
UniRouter[Uniswap V3 Router]
SENT[SENT Token]
User -->|deposit / topUp / withdraw| Contract
Owner -->|execute / close / admin| Contract
Contract -->|fee| FeeRecip
Contract -->|wrap ETH| WETH
Contract -->|swap| UniRouter
Contract -->|balanceOf| SENT
System Overview
This contract implements a managed vault system with the following characteristics:
- User Deposits: Users send ETH along with a SENT token amount parameter. The contract records a vault with the deposit amount, SENT amount, timestamps, and tier information. A flat 0.005 ETH fee is sent to the fee recipient on each deposit.
- Keeper-Executed Trades: The keeper wraps deposited ETH to WETH, approves the Uniswap V3 SwapRouter, and executes swaps (WETH → USDC, WETH → USDT). Trade parameters (target token, amount, fee tier, min output, direction) are all specified by the keeper at execution time.
- Profit Tracking: The contract tracks per-vault profit and a global
totalProfitGeneratedcounter. As of analysis, reported profit is ~0.018 ETH across 162 trades. - Multi-Vault Support: Each user can have multiple vaults (indexed by uint256 vault ID).
- Tier System: A
getUserTierfunction returns a tier value based on user address and vault ID. - Eligibility Check:
getEligibilityappears to check SENT token balance for determining access or tier.
The contract does NOT:
- Implement any automated trading strategy on-chain
- Give users control over individual trade decisions
- Use a timelock or Multisig for trade execution
- Verify trade profitability before execution
- Limit keeper authority over trade parameters
Design Patterns Used
-
Ownable: Standard ownership pattern with
owner()andtransferOwnership(address). Owner has exclusive access to all administrative functions. -
Keeper Pattern: Separate role (currently same address as owner) for trade execution. Can be reassigned via
setKeeper(address). -
Vault Accounting: Per-user vault structs storing deposit amount, SENT amount, trade count, tier, active status, timestamps, last trade token, and accumulated profit.
-
WETH Wrapper: Uses canonical WETH contract for ETH-to-ERC20 conversions before Uniswap swaps.
Access Control
Roles & Permissions
| ROLE | ASSIGNED BY | REVOKABLE | CALL COUNT |
|---|---|---|---|
| Owner | Constructor (deployer) | ☑ Yes - via transferOwnership | Unlimited |
| Keeper | Owner (setKeeper) | ☑ Yes - via setKeeper | Unlimited |
| User/Depositor | N/A - anyone can deposit | N/A | Multiple vaults per address |
Permission Matrix
| FUNCTION | OWNER | KEEPER | USER | ANYONE |
|---|---|---|---|---|
| deposit (0x4af9daa8) | ☑ | ☑ | ☑ | ☑ |
| topUp(uint256,uint256) | ☑ | ☑ | ☑ | ☑ |
| withdraw(uint256) | ☑ | ☑ | ☑ | ☑ |
| withdrawPartial(uint256,uint256) | ☑ | ☑ | ☑ | ☑ |
| executeTrade (0xea0ccfae) | ☑ | ☑ | ☒ | ☒ |
| closeTrade (0xd86938ba) | ☑ | ☑ | ☒ | ☒ |
| setKeeper(address) | ☑ | ☒ | ☒ | ☒ |
| setFeeRecipient(address) | ☑ | ☒ | ☒ | ☒ |
| setPresaleContract(address) | ☑ | ☒ | ☒ | ☒ |
| transferOwnership(address) | ☑ | ☒ | ☒ | ☒ |
| View functions | ☑ | ☑ | ☑ | ☑ |
Time Locks & Delays
| ACTION | TIME LOCK | CAN CANCEL | PURPOSE |
|---|---|---|---|
| executeTrade | ☒ None | ☒ N/A | ☒ Immediate - No protection |
| closeTrade | ☒ None | ☒ N/A | ☒ Immediate - No protection |
| setKeeper | ☒ None | ☒ N/A | ☒ Immediate - No protection |
| setFeeRecipient | ☒ None | ☒ N/A | ☒ Immediate - No protection |
| transferOwnership | ☒ None | ☒ N/A | ☒ Immediate - No protection |
Vault Mechanism
Deposit Flow
sequenceDiagram
participant User
participant Contract as 0x99c96efF...Ab2dCC
participant FeeRecip as Fee Recipient
participant SENT as SENT Token
User->>Contract: deposit(sentAmount) + ETH value
Contract->>Contract: Validate ETH sent > 0
alt sentAmount > 0
Contract->>SENT: balanceOf(msg.sender)
SENT-->>Contract: user SENT balance
Contract->>Contract: Verify balance >= sentAmount
end
Contract->>FeeRecip: Transfer 0.005 ETH fee
Contract->>Contract: Create vault entry
Contract->>Contract: Record deposit amount, SENT amount, tier, timestamps
Contract->>Contract: Increment user count (if new user)
Contract->>Contract: Add to users array (if new user)
Contract->>Contract: Emit VaultDeposit event
Contract-->>User: Success
Trade Execution Flow
sequenceDiagram
participant Keeper
participant Contract as 0x99c96efF...Ab2dCC
participant WETH
participant UniRouter as Uniswap V3 Router
participant Pool as WETH/Token Pool
Keeper->>Contract: executeTrade(user, vaultId, targetToken, fee, ethAmount, minOut, direction)
Contract->>Contract: Verify caller is keeper
Contract->>Contract: Load vault for user/vaultId
Contract->>WETH: deposit() (wrap ETH to WETH)
WETH-->>Contract: WETH tokens
Contract->>WETH: approve(router, amount)
Contract->>UniRouter: exactInputSingle(WETH→targetToken, fee, amount, minOut)
UniRouter->>Pool: Execute swap
Pool-->>Contract: Target tokens received
Contract->>Contract: Update vault (trade count, last token, profit, timestamp)
Contract->>Contract: Increment totalTradesExecuted
Contract->>Contract: Update totalProfitGenerated
Contract->>Contract: Emit TradeExecuted event
Contract-->>Keeper: Success
Key Statistics (at analysis time)
| METRIC | VALUE |
|---|---|
| Total Users | 85 |
| Total Trades Executed | 162 |
| Total Profit Generated | ~0.018 ETH |
| Total Deposits (est.) | ~5.09 ETH |
| Current ETH Balance | ~4.84 ETH |
| MAX_TRADE_ETH | 0.5 ETH |
| SWAP_DEADLINE_BUFFER | 60 seconds |
| Deposit Fee | 0.005 ETH (flat) |
| Contract Age | ~1 day (deployed 2026-03-28) |
External Dependencies
WETH (Wrapped Ether)
| PROPERTY | VALUE |
|---|---|
| Address | 0xC02aaA39...756Cc2 (etherscan) |
| Function Used | deposit() (wrap ETH), approve() |
| Purpose | Convert ETH to WETH for Uniswap V3 swaps |
| Verification Status | ☑ VERIFIED — canonical WETH9 |
Uniswap V3 SwapRouter
| PROPERTY | VALUE |
|---|---|
| Address | 0xe592427A...861564 (etherscan) |
| Function Used | exactInputSingle() |
| Purpose | Execute WETH → token swaps |
| Verification Status | ☑ VERIFIED — canonical Uniswap V3 |
SENT Token (Sentinel)
| PROPERTY | VALUE |
|---|---|
| Address | 0xe88BaAB9...aDc304 (etherscan) |
| Function Used | balanceOf() (via getEligibility) |
| Purpose | Tier/eligibility determination based on token holdings |
| Verification Status | ☒ See SENT Token Analysis |
Events
The contract emits the following events:
| EVENT | TOPIC HASH | PARAMETERS | COUNT |
|---|---|---|---|
| OwnershipTransferred | 0x8be0079c...6457e0 (events) |
address indexed prev, address indexed new |
1 |
| VaultDeposit | 0xed9d3a11...9b1cab (events) |
address indexed user, uint256 indexed vaultId, uint256 ethAmount, uint256 sentAmount |
28 |
| TradeExecuted | 0x0134eeea...8a59b (events) |
address indexed user, uint256 indexed vaultId, address indexed token, uint256 ethAmount, uint256 tokenAmount, uint256 direction, uint256 timestamp |
13 |
| TopUpOrWithdraw | 0x91ede45f...eada3 (events) |
address indexed user, uint256 indexed vaultId, uint256 amount, ... |
8 |
Summary of Observations
This contract implements a custodial trading vault where users deposit ETH and a single keeper (currently the owner EOA) executes all trades via Uniswap V3. The vault system supports multiple vaults per user, a tier system linked to SENT token holdings, and tracks profit/trade statistics globally and per-vault.
The contract is extremely young — deployed just one day before this analysis. Despite this, it already has 85 users and 162 trades with ~5 ETH deposited. The reported profit of ~0.018 ETH across 162 trades represents approximately 0.35% return on total deposits.
The fundamental architecture is a custodial fund where:
- Users deposit ETH and trust the keeper to trade profitably
- The keeper has complete discretion over trade timing, direction, token selection, and amounts
- There is no on-chain strategy, no automated triggers, and no user approval mechanism
- Owner and keeper are currently the same single EOA
- No timelock, no Multisig, no governance
The trade execution pattern observed shows the keeper swapping user ETH to USDC and USDT through Uniswap V3's 0.05% fee tier pools, with trade sizes of 0.008–0.2 ETH per execution. Internal transactions confirm ETH flows to the WETH contract (wrapping) and a flat 0.005 ETH fee to the fee recipient on each deposit.
This analysis was performed for educational purposes based on bytecode decompilation and transaction pattern observation. It should not be considered an official security audit or financial advice.
Related Research
This contract appears to be part of the Sentinel project ecosystem. The SENT token referenced in storage (0xe88BaAB9...aDc304) is the same Sentinel token analyzed previously.
Sentinel Project pages:
References
| RESOURCE | NOTES |
|---|---|
| Etherscan Contract Page | Transaction history and state verification |
| 4byte Directory | Function selector to signature mapping |
| Uniswap V3 SwapRouter | Swap execution target |
| WETH9 Contract | Canonical Wrapped ETH |
| Mastering Ethereum | Reference for EVM opcodes and storage layout |
Change Log
| DATE | AUTHOR | NOTES |
|---|---|---|
| 2026-03-29 | Artificial. | Generated by robots. Gas: 75 tok |
| 2026-03-29 | Denizen. | Reviewed, edited, and curated by humans. |