Workspace IndexKnowledge Notes › A faucet without limits is a payout, not a feature

#147PoC

A faucet without limits is a payout, not a feature

Anything free and permissionless — faucets, airdrops, gasless calls, referral bonuses — gets farmed by generated wallets within hours. Abuse economics is application design: price the free thing in something the attacker cannot mint.

Deploy a naive faucet, drain it with fifty generated wallets, then rebuild it behind cost-bearing gates — per-address cooldown, proof-of-personhood stub, small stake, or paid gas — and measure how each gate changes the attacker's unit economics.

Why

In a permissionless system, an address costs nothing — so any benefit keyed to an address is keyed to nothing. One person is a thousand wallets whenever a thousand wallets pay better than one. Every airdrop-farming industry, every drained testnet faucet, every sybil-swept referral program is the same arithmetic: benefit per wallet greater than cost per wallet, repeated until the pool is empty.

The defense is not detection — it is repricing. Attach to each claim a cost the attacker cannot manufacture: time (cooldowns cap extraction rate), money (a small stake makes 1,000 wallets 1,000 stakes), computation, or identity (proof-of-personhood, at its own trust cost). The design question is a product question: which cost can you impose that a legitimate user barely notices and a wallet-generator cannot amortize? The faucet is the minimal lab for this, but the same table prices your airdrop, your free tier and your sponsored gas.

How it works

One naive faucet, one scripted sybil, four gates, and the attacker's P&L per gate.

PoC

On anvil (or a public testnet): Faucet.sol paying 0.1 tokens per claim. Attack script: generate 50 wallets, claim with each, sweep balances to one address — record time and gas spent vs tokens extracted. Then add gates one at a time and rerun: (1) per-address cooldown of 24h — extraction throttles but new wallets bypass it, proving address-keyed limits alone fail; (2) claim requires a 0.02 stake locked for a week — the sybil's capital cost now scales with wallet count; (3) claimer pays own gas on a chain where gas is nontrivial — same effect via fees; (4) a proof-of-personhood stub (one signature per registered identity). Output: one table, rows = gates, columns = attacker cost, attacker yield, legitimate-user friction.

What it proves

Sybil resistance is not a detection feature bolted on later — it is the pricing of the free thing, decided at design time. The winning gates are the ones that scale cost with wallet count while staying flat for a human with one wallet; the table makes that trade-off measurable instead of rhetorical. Directly reusable for the paymaster caps in sponsored-gas-is-cogs and any future Jayverse airdrop.

Where it lands in Jayverse

  • Devnet: run this page's PoC directly against the devnet faucet. Fifty generated wallets, measure extraction, then add a per-address cooldown or small stake gate and re-measure before any public-facing devnet faucet ships.
  • Rabbit: apply the same cost-the-attacker-cannot-mint table to sponsored session-key calls. Size paymaster caps from cooldown, stake, or proof-of-personhood gates rather than a flat sponsorship limit.
  • Token: fill in the attacker P&L table per gate for any future JYVE airdrop or referral bonus before launch, not after farming is observed.

Key expressions

Words and phrases from this page worth keeping, with the Korean meaning and the sentence they come from.

Expression뜻 · 쓰이는 자리
farm (동사)(부정 이득을) 파밍하다, 긁어모으다 · 무료 혜택을 대량 지갑으로 반복 착취하는 행위. "gets farmed by generated wallets within hours"
sybil-swept시빌 공격으로 싹쓸이당한 · 가짜 계정을 대량 생성해 시스템을 속이는 공격의 결과. "every sybil-swept referral program"
keyed to~에 연동된, ~을 기준으로 결정되는 · 혜택이 주소 하나에 결부되어 있다는 뜻. "any benefit keyed to an address"
amortize(비용을) 분산 상각하다, 나누어 감당하다 · 공격 비용을 여러 시도에 나눠서 줄이는 것. "a wallet-generator cannot amortize"
repricing가격 재산정 · 공짜였던 것에 비용을 다시 매기는 방어 전략. "The defense is not detection — it is repricing"
bolt on(나중에) 덧붙이다, 임시로 추가하다 · 사후에 급조해 붙인 기능을 비판할 때. "not a detection feature bolted on later"
cooldown재사용 대기시간, 쿨다운 · 남용을 막기 위해 두는 시간 제한. "a per-address cooldown of 24h"
unit economics단위 경제성 · 지갑 하나당 수익과 비용 구조. "how each gate changes the attacker's unit economics"
P&L손익(수익-비용) · 공격자의 수익 구조를 표로 나타낼 때 쓰는 약어. "the attacker's P&L per gate"
stub임시 구현체, 최소 동작 코드 · 완전한 기능 대신 껍데기만 있는 코드. "a proof-of-personhood stub"
proof-of-personhood인격 증명(사람임을 증명하는 절차) · 실명이 아니라 '한 사람=한 신원'임을 증명하는 시빌 저항 기법. "identity (proof-of-personhood, at its own trust cost)"
paymaster페이마스터(가스비 대납 컨트랙트) · 사용자 대신 가스비를 지불하는 계정 추상화 구성요소. "reusable for the paymaster caps in sponsored-gas-is-cogs"

← All Knowledge Notes · Workspace Index · Top ↑

한도 없는 파우셋은 기능이 아니라 지출이다

무료이면서 무허가인 모든 것 — 파우셋, 에어드랍, 가스리스 호출, 추천 보너스 — 은 몇 시간 안에 생성 지갑들에게 파밍당합니다. 남용 경제학은 애플리케이션 설계입니다: 공격자가 찍어낼 수 없는 것으로 공짜의 값을 매기세요.

순진한 파우셋을 배포해 생성 지갑 50개로 고갈시킨 뒤, 비용을 지우는 게이트들 — 주소별 쿨다운, 인격 증명 스텁, 소액 스테이크, 유료 가스 — 뒤에 다시 만들어 각 게이트가 공격자의 단위 경제를 어떻게 바꾸는지 측정합니다.

무허가 시스템에서 주소는 공짜입니다 — 그래서 주소에 묶인 혜택은 아무것에도 묶이지 않은 것입니다. 지갑 천 개가 하나보다 더 벌리는 순간, 한 사람은 지갑 천 개가 됩니다. 모든 에어드랍 파밍 산업, 모든 고갈된 테스트넷 파우셋, 모든 시빌에게 쓸려 나간 추천 프로그램은 같은 산수입니다: 지갑당 혜택 > 지갑당 비용, 풀이 빌 때까지 반복.

방어는 탐지가 아니라 재가격 책정입니다. 각 청구에 공격자가 제조할 수 없는 비용을 붙이세요: 시간(쿨다운은 추출 속도를 상한), 돈(소액 스테이크는 지갑 1,000개를 스테이크 1,000개로 만듦), 연산, 또는 신원(인격 증명 — 그 자체의 신뢰 비용을 치르고). 설계 질문은 제품 질문입니다: 정상 사용자는 거의 못 느끼고 지갑 생성기는 상각할 수 없는 비용이 무엇인가? 파우셋은 이것의 최소 실험실이지만, 같은 표가 당신의 에어드랍, 무료 티어, 스폰서드 가스의 값을 매깁니다.

동작 방식

순진한 파우셋 하나, 스크립트 시빌 하나, 게이트 넷, 그리고 게이트별 공격자 손익계산서.

PoC

anvil(또는 공개 테스트넷)에서: 청구당 0.1 토큰을 주는 Faucet.sol. 공격 스크립트: 지갑 50개 생성, 각각 청구, 잔액을 한 주소로 쓸어 모음 — 추출한 토큰 대비 쓴 시간·가스를 기록. 그다음 게이트를 하나씩 더해 재실행: (1) 주소별 24시간 쿨다운 — 추출은 느려지지만 새 지갑이 우회, 주소 기반 한도 단독은 실패함을 증명; (2) 청구에 一주일 잠기는 0.02 스테이크 요구 — 시빌의 자본 비용이 지갑 수에 비례; (3) 가스가 사소하지 않은 체인에서 청구자가 자기 가스 지불 — 수수료로 같은 효과; (4) 인격 증명 스텁(등록 신원당 서명 하나). 산출물: 표 하나 — 행 = 게이트, 열 = 공격자 비용, 공격자 수익, 정상 사용자 마찰.

무엇을 증명하나

시빌 저항은 나중에 덧붙이는 탐지 기능이 아니라 설계 시점에 결정되는, 공짜의 가격 책정입니다. 이기는 게이트는 지갑 수에 비용이 비례하면서 지갑 하나인 인간에게는 평평한 것들이고, 표는 그 트레이드오프를 수사가 아니라 측정으로 만듭니다. sponsored-gas-is-cogs 의 페이마스터 상한과 미래의 Jayverse 에어드랍에 그대로 재사용됩니다.

Jayverse에서의 위치

  • Devnet: 이 페이지의 PoC를 devnet 파우셋에 직접 실행한다. 생성한 지갑 50개로 인출량을 측정한 다음, 주소당 쿨다운이나 소액 스테이크 게이트를 추가해 재측정하고, 공개용 devnet 파우셋을 배포하기 전에 이를 거친다.
  • Rabbit: 공격자가 만들어낼 수 없는 비용을 부과한다는 같은 표를 스폰서 세션 키 호출에도 적용한다. 페이마스터 한도를 균일한 후원 한도가 아니라 쿨다운·스테이크·proof-of-personhood 게이트로부터 산정한다.
  • Token: 향후 JYVE 에어드롭이나 추천 보너스는 출시 전에 게이트별 공격자 손익 표를 채워둔다. 파밍이 관찰된 다음이 아니라 출시 전에 한다.

핵심 표현

이 페이지의 영어 본문에서 배울 만한 단어와 표현, 뜻과 나온 자리.

Expression뜻 · 쓰이는 자리
farm (동사)(부정 이득을) 파밍하다, 긁어모으다 · 무료 혜택을 대량 지갑으로 반복 착취하는 행위. "gets farmed by generated wallets within hours"
sybil-swept시빌 공격으로 싹쓸이당한 · 가짜 계정을 대량 생성해 시스템을 속이는 공격의 결과. "every sybil-swept referral program"
keyed to~에 연동된, ~을 기준으로 결정되는 · 혜택이 주소 하나에 결부되어 있다는 뜻. "any benefit keyed to an address"
amortize(비용을) 분산 상각하다, 나누어 감당하다 · 공격 비용을 여러 시도에 나눠서 줄이는 것. "a wallet-generator cannot amortize"
repricing가격 재산정 · 공짜였던 것에 비용을 다시 매기는 방어 전략. "The defense is not detection — it is repricing"
bolt on(나중에) 덧붙이다, 임시로 추가하다 · 사후에 급조해 붙인 기능을 비판할 때. "not a detection feature bolted on later"
cooldown재사용 대기시간, 쿨다운 · 남용을 막기 위해 두는 시간 제한. "a per-address cooldown of 24h"
unit economics단위 경제성 · 지갑 하나당 수익과 비용 구조. "how each gate changes the attacker's unit economics"
P&L손익(수익-비용) · 공격자의 수익 구조를 표로 나타낼 때 쓰는 약어. "the attacker's P&L per gate"
stub임시 구현체, 최소 동작 코드 · 완전한 기능 대신 껍데기만 있는 코드. "a proof-of-personhood stub"
proof-of-personhood인격 증명(사람임을 증명하는 절차) · 실명이 아니라 '한 사람=한 신원'임을 증명하는 시빌 저항 기법. "identity (proof-of-personhood, at its own trust cost)"
paymaster페이마스터(가스비 대납 컨트랙트) · 사용자 대신 가스비를 지불하는 계정 추상화 구성요소. "reusable for the paymaster caps in sponsored-gas-is-cogs"

← 전체 기술 노트 · 워크스페이스 인덱스 · 맨 위 ↑