Skip to content

[DBIP] Normalize faucet dispense amounts and cooldown periods #3598

Description

@jairozapat

Proposal type

Modify column

Affected scope (files/folders/chains)

references/offers/faucets.csv; listings/**/faucets.csv; faucet column definitions and validation

Motivation / problem statement

The current dripLimitAmount and dripLimitPeriod fields mix quantities, asset symbols, prose, multiple tiers, missing units, and literal null sentinels. A census of current listing rows found periods such as 24, 24h, 10sec, 0.1, NULL, and blank, while amounts include 0.1 ETH/1 ETH72h, 0.5/1/2.5/5 SOL, up to 1 TON, bare numbers, and asset-qualified numbers. These values cannot be compared or validated reliably, and ambiguous bare periods can be interpreted as hours, seconds, or counts.

Detailed proposal

Category/table: faucets

Column changes:

  • Replace free-text dripLimitAmount with dripLimits, a JSON array of objects. Each object has required numeric-string amount, required asset, and optional integer cooldownSeconds and optional short condition.
  • Deprecate dripLimitPeriod after migration because cooldown belongs to the same tier as its amount.

Examples:

  • [{"amount":"0.01","asset":"ETH","cooldownSeconds":86400}]
  • [{"amount":"0.5","asset":"SOL","cooldownSeconds":28800},{"amount":"1","asset":"SOL","cooldownSeconds":28800}]
  • [{"amount":"1","asset":"TON","condition":"maximum; exact amount chosen by provider"}]

Constraints:

  • Decimal values remain strings to avoid binary floating-point changes.
  • asset uses the official ticker shown by the faucet.
  • cooldownSeconds is a non-negative integer; blank means the official source does not specify a cooldown.
  • Empty data is a blank cell, never literal null/NULL.
  • Multi-tier faucets use one object per tier, keeping each amount paired with its cooldown.

Migration can be incremental: add dripLimits, migrate only source-verified rows, then remove the two legacy columns after no populated legacy cells remain.

Measured evidence: current main contains more than 60 distinct non-empty amount/period combinations, including unitless periods and compound values that cannot be parsed consistently.

AI disclosure: AI assisted with the census and drafting; the value inventory was computed directly from the downloaded current main branch.

Contact (optional)

No response

Rewards address (optional)

0xc2633a3baf513319b2bc9cec7d5ac65a8103fbbe

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    DBIPFor database improvement proposals

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions