Contract Analysis
DISCLAIMER // NFA // DYOR
This analysis is based on observations of the contract behavior. We are not smart contract security experts. This document aims to explain what the contract appears to do based on the code. It should not be considered a comprehensive security audit or financial advice. Always verify critical information independently and consult with blockchain security professionals for important decisions.
⊙ generated by robots | curated by humans
Analysis Date: 2026-01-24
Metadata
Primary Contract
| PROPERTY | VALUE |
|---|---|
| Contract Address | 0x1aa0c77d207cd2e20dc00523ee0511ac6514aeb3 (etherscan) |
| Network | Ethereum Mainnet |
| Contract Type | Standalone |
| Deployment Date | 2025-11-25 19:34:59 UTC |
| Deployment Block | 23,879,687 |
| Contract Creator | 0x8758ca21...bfd76968 (etherscan) |
| Creation TX | 0x3d9ef3bb...9b2debbb (tx) |
| Compiler Version | Solidity 0.8.30 |
| Total Functions | 13 |
| External Contract Dependencies | 0 |
| Upgrade Mechanism | ☒ None - Not Upgradeable |
| Verification Status | ☒ NOT VERIFIED |
| Audit Status | ☒ NO AUDIT FOUND |
Related Addresses
| TYPE | ADDRESS | NOTES |
|---|---|---|
| Owner | 0x8758ca21...bfd76968 (etherscan) |
Single EOA with full admin control; same owner as all Sentinel contracts |
| SENT Token | 0xe88BAab9...5aDc304 (etherscan) |
|
| Token Allocation | 0x8e1621a5...3745a0CC (etherscan) |
Possible consumer of day percent config |
| Claim Rewards | 0x33184cD3...528A606D (etherscan) |
Possible consumer of day percent config |
Executive Summary
Based on bytecode analysis and transaction patterns, this contract appears to be a day percent configuration registry for the Sentinel token ecosystem. It stores up to 100 days of parameters, with each day configured with both a percentage (in basis points, max 1,000,000 = 100%) and an amount. The owner can batch-configure multiple days or adjust individual parameters.
The contract does not hold, transfer, or interact with any tokens. It serves purely as a read-only data source that other Sentinel contracts (likely Token Allocation or Claim Rewards) query. Analysis of the first 10 transactions shows the owner configured days 1-7 during the initial deployment window (November 25-29, 2025), with multiple adjustments to individual days suggesting iterative configuration.
Key trust assumptions center on the contract owner (single EOA) who can arbitrarily modify daily parameters with immediate effect and no timelock delay. There is no multisig protection, no pause mechanism, and no configuration versioning. The unverified source code prevents independent audit, requiring trust in bytecode decompilation accuracy.
Notable risks include centralized owner control, immediate data propagation to dependent contracts, the ability to permanently freeze configuration via renounceOwnership(), and the absence of validation between configured amounts and actual allocations.
DASHBOARD INTEGRATION
This contract was identified via the Sentinel Dashboard source code, referenced by environment variable DAY_PERCENT_MANAGER_ADDRESS. Analysis of the dashboard JavaScript reveals a fetchSwarmMetrics() function that queries this contract, filtering for days where getCoreCount() == 10 (all cores active). The function interprets dayInfo.amount as total transaction amount and dayInfo.percent as profit percentage, calculating profit as amount * (percent / 100). This suggests the contract may serve as a metrics registry for all trading days, with Swarm metrics being a filtered subset where all 10 cores are used.
USE OF 'SCHEDULE' TERMINOLOGY
The contract's bytecode contains function names using "schedule" terminology: batchSetDaySchedule(), DaySchedule struct, and BatchScheduleUpdated event. The term "schedule" was originally interpreted here as "vesting schedule", however due to other research around the current state of the project's development, we do not want to dismiss the obvious coorelation that the swarm metrics/results values could be "scheduled" ahead of time for future use (e.g., to be used in simulated dashboard data).
That said, the dashboard implementation interprets this data as historical trading metrics (transaction amounts and profit percentages). Without verified source code or developer documentation, we can only call it out as-is and make note of it for future reference.
Architecture
graph TD
Owner[Owner EOA<br/>0x8758...6968]
Config[SENT Day Percent Manager<br/>0x1aa0...aeb3]
Consumer[Consumer<br/>ex: Claim Rewards]
Owner -->|batchSetDaySchedule| Config
Owner -->|setDayPercent / setDayAmount| Config
Consumer -.->|dayInfo / getPercentRange / getAmountRange| Config
style Config fill:#f9f,stroke:#333,stroke-width:2px
style Owner fill:#faa,stroke:#333,stroke-width:2px
style Consumer fill:#eee,stroke:#999,stroke-dasharray: 5 5
System Overview
This contract functions as a centralized configuration store within the Sentinel ecosystem. Its primary purpose is to define day-indexed schedule parameters that other contracts query.
- Stores day-indexed parameters (percent + amount) for up to 101 entries (days 0-100)
- Does not hold, transfer, or interact with any tokens
- No public state-changing functions exist; only the owner can modify configuration
- Consumer contracts (inferred) query day percent data via view functions
Design Patterns Used
- Ownable (OpenZeppelin-like): Standard single-owner pattern with
transferOwnership()andrenounceOwnership() - Batch Operations:
batchSetDaySchedule()enables efficient multi-day configuration in a single transaction - Range Queries:
getPercentRange()andgetAmountRange()allow bulk data retrieval for consumer contracts
Access Control
Roles & Permissions
| ROLE | ASSIGNED BY | REVOKABLE | CALL COUNT |
|---|---|---|---|
| Owner | Constructor (deployer) | ☑ Yes - transferOwnership() or renounceOwnership() |
Unlimited |
| Public | N/A | N/A | View functions only |
Permission Matrix
| FUNCTION | OWNER | PUBLIC |
|---|---|---|
| batchSetDaySchedule() | ☑ | ☒ |
| setDayPercent() | ☑ | ☒ |
| setDayAmount() | ☑ | ☒ |
| renounceOwnership() | ☑ | ☒ |
| transferOwnership() | ☑ | ☒ |
| owner() | ☑ | ☑ |
| dayInfo() | ☑ | ☑ |
| MAX_PERCENT() | ☑ | ☑ |
| MAX_DAY() | ☑ | ☑ |
| getPercent() | ☑ | ☑ |
| getAmount() | ☑ | ☑ |
| getPercentRange() | ☑ | ☑ |
| getAmountRange() | ☑ | ☑ |
Time Locks & Delays
| ACTION | TIME LOCK | CAN CANCEL | PURPOSE |
|---|---|---|---|
| Modify schedule | None | N/A | ☒ Immediate, no protection |
| Transfer ownership | None | N/A | ☒ Immediate, no protection |
| Renounce ownership | None | N/A | ☒ Immediate, permanent, irreversible |
Economic Model
This contract has no economic model. It does not hold funds, charge fees, or transfer tokens. It serves purely as a configuration registry.
Current Configuration Status
Based on on-chain queries (as of analysis date):
| DAY | PERCENT | PERCENT (%) | AMOUNT |
|---|---|---|---|
| 1 | 43,500 | 4.35% | 230,222 |
| 2 | 52,100 | 5.21% | 334,111 |
| 3 | 21,000 | 2.10% | 159,000 |
| 4 | 34,000 | 3.40% | 133,000 |
| 5 | 44,000 | 4.40% | 35,484 |
| 6 | 50,000 | 5.00% | 28,313 |
| 7 | 47,000 | 4.70% | [incomplete] |
Basis Points Convention: 1,000,000 = 100%. So 43,500 = 4.35%.
Note: Days 0 and 8-100 return (0, 0). It is unclear whether these are unconfigured or intentionally set to zero.
Dashboard Calculation Discrepancy
The Sentinel Dashboard JavaScript includes code that divides the percent value by 100 rather than 1,000,000:
This creates conflicting interpretations of the same stored values:
| DAY | STORED VALUE | BYTECODE INTERPRETATION | DASHBOARD INTERPRETATION |
|---|---|---|---|
| 1 | 43,500 | 4.35% (43500 ÷ 1,000,000) | 435% (43500 ÷ 100) |
| 2 | 52,100 | 5.21% (52100 ÷ 1,000,000) | 521% (52100 ÷ 100) |
Without verified source code, we cannot determine which interpretation is correct. Possible explanations:
- ◇ Dashboard contains a calculation bug (off by 10,000x)
- ◇ Storage convention differs from standard basis points (values represent hundredths instead)
- ◇ Contract has been superseded by a newer version with different encoding
The fact that the fetchSwarmMetrics() function containing this calculation is unused in production suggests the discrepancy may not have been discovered yet, or the contract is no longer actively used. The MAX_PERCENT constant (1,000,000) in the bytecode strongly suggests basis points encoding was intended, which would make the dashboard calculation incorrect.
Summary of Observations
Based on bytecode decompilation and transaction analysis, this contract appears to be a day percent configuration store deployed as part of the Sentinel token infrastructure. The contract was identified via the Sentinel Dashboard source code where it is referenced as the DAY_PERCENT_MANAGER_ADDRESS — the use of an environment variable implies this contract address is expected to change (future iterations would be deployed as new contracts).
The contract follows a standard Ownable pattern with no additional governance protections. The owner (0x8758ca21...76968) deployed and configured days 1-7 between November 25-29, 2025, with multiple revisions to days 4 and 5 suggesting iterative tuning. Since November 29, 2025, the contract has seen zero activity — no further configuration changes and no non-owner interactions.
The dual-parameter design (percent + amount per day) and the 7-day configuration window align with the Sentinel "Swarm" system which is documented as running in 7-day cycles. Dashboard source code reveals this contract is queried for metrics on days where all 10 cores are active, suggesting it may serve as a general metrics registry rather than exclusively for Swarm data. However, the function that queries this contract is not currently used on the live site, and a calculation discrepancy exists between the MAX_PERCENT constant (1,000,000, suggesting basis points) and the dashboard's divide-by-100 logic (suggesting hundredths). The incomplete configuration (only 7 of 100 possible days) and 56-day period of inactivity may indicate a development pause, contract supersession, or intentionally limited scope.
Strengths:
- Clean, minimal design with well-defined boundaries
- Input validation on day range (0-100) and percent max (1,000,000)
- Batch operations reduce gas costs for multi-day setup
- Range query functions enable efficient consumer reads
Weaknesses:
- Single EOA owner with no multisig or timelock
- No configuration versioning or rollback capability
- No pause mechanism for emergency freezes
- No cross-validation with actual token allocations
- Source code not verified on Etherscan
- No distinction between unconfigured and intentionally-zero days
This analysis was performed for educational purposes and should not be considered an official security audit or financial advice. We recommend independent verification of all findings and professional security review for any financial decisions.
References
| RESOURCE | NOTES |
|---|---|
| Etherscan - Contract | Contract page (unverified) |
| Etherscan - Transactions | Transaction history showing 10+ calls |
| SWARM Dashboard Analysis | Frontend code analysis showing contract integration |
| Foundry Cast Reference | Used for on-chain queries and storage reads |
| EIP-1967 | Checked proxy slots (not applicable - standalone) |
| 4byte.directory | Function selector lookup for signature identification |
Change Log
| DATE | AUTHOR | NOTES |
|---|---|---|
| 2026-01-24 | Artificial. | Generated by robots. Gas: 65 tok |
| 2026-01-24 | Denizen. | Reviewed, edited, and curated by humans. |