Emissions
This section covers the on-chain execution mechanics: how Bitcoin blocks pace rewards in the street-token contract, how emission-epoch track events, and what external triggers are used to call mint events.
Designing the Emission Schedule
After selecting a fixed-emission model (as described in issuance), Welsh Street faced the practical challenge of designing a specific emission schedule. Three parameters needed to be set: the baseline reference supply, the emission amount per event, and the emission interval. Each choice was made independently based on technical constraints and cultural references. What emerged from the modeling was unexpected.
Baseline Reference Supply
The starting point was WELSH itself. WELSH launched with a total supply of 10 billion tokens — a fully distributed, fixed-supply community meme coin with no ongoing issuance.
For STREET, that 10 billion baseline became both a cultural reference and a practical modeling constraint. The conditional hard cap (activated via the kill switch, described in governance) was set to match WELSH’s total supply, creating symmetry between the base asset and the rewards token if the community eventually chooses to terminate emissions.
Fixed Emission Amount
With a baseline reference supply established, the next question was how many tokens to emit per event. The answer came from researching existing fixed-emission blockchains.
The most prominent example — and one of the most successful by market capitalization over time — is Dogecoin. After an early period of declining block rewards, Dogecoin settled into a constant block subsidy of 10,000 DOGE per block. That became tail emissions: permanent fixed issuance that does not decay over time.
The fact that Dogecoin is a fixed-emission blockchain and a fellow dog meme coin is either pure coincidence or divine intervention on behalf of the crypto gods.

DOGE-Inspired Emissions
Dogecoin started with a declining block-subsidy schedule, but once it reached its final reward epoch it switched to permanent fixed issuance: 10,000 DOGE per block. Because Dogecoin targets ~1-minute blocks, that becomes ~10,000 DOGE per minute in steady state. In Dogecoin Core, this is implemented as “constant inflation” after the last halving-era threshold (6 halving intervals × 100,000 blocks = 600,000).
Dogecoin became a fixed-emission, disinflationary token in February of 2014, approximately two months after it’s launch in December 2013.
The code block excerpt below is from Dogecoin Core dogecoin.app lines 127 to 149. This code block defaults the block subsidy to 10,000 DOGE per block as tail emissions at the end of the halving cycles.
CAmount GetDogecoinBlockSubsidy(...) // [redacted]
{
int halvings = nHeight / consensusParams.nSubsidyHalvingInterval;
if (!consensusParams.fSimplifiedRewards)
{
// Old-style rewards derived from the previous block hash
// ... [redacted]
return (1 + rand) * COIN;
} else if (nHeight < (6 * consensusParams.nSubsidyHalvingInterval)) {
// New-style constant rewards for each halving interval
return (500000 * COIN) >> halvings;
} else {
// Constant inflation
return 10000 * COIN;
}
}Dogecoin became a fixed-emission, disinflationary token in February 2014, approximately two months after its launch in December 2013.
Emission Interval
The final parameter was timing: how frequently should emissions occur?
Stacks is built on Bitcoin. WELSH is a token on Stacks. By proxy, STREET has access to Bitcoin state through Clarity smart contracts. The Stacks blockchain can read Bitcoin block height via burn-block-height, which makes Bitcoin blocks a natural pacing signal for emissions.
Bitcoin targets a 10-minute block interval. In the Bitcoin source code , the parameters that define this target are found in chainparams:
consensus.nPowTargetSpacing = 10 * 60; // 10 minutes
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeksStacks has access to Bitcoin’s block height via the burn-block-height function in Clarity smart contracts. This makes Bitcoin blocks a natural pacing signal for emissions. The emission interval targets one epoch per Bitcoin block, approximately every 10 minutes.
What the Model Revealed
With the three parameters set — 10 billion baseline, 10,000 tokens per epoch, 10-minute intervals — the team ran simulations to understand the long-term behavior of the system.
The initial supply would be 5 billion STREET (distributed at genesis, as described in distribution). The conditional hard cap would be 10 billion STREET (matching WELSH’s total supply). Emissions would add 10,000 tokens per epoch until governance activates the kill switch or the cap is reached.
The modeling results were striking:
- Supply reaches 10B at epoch 500,000, which occurs in cycle 9.52 — approximately 10 years
- Initial inflation rate at epoch 1 calculates to 10.50% — approximately 10%
- Effective annual inflation rate over the full emission schedule averages 7.44%
- Final inflation rate (if the cap is reached) converges to 5.40%
The pattern wasn’t designed. It emerged from the model. Each parameter was chosen independently for its own reasons, but when the numbers were plugged into the algorithms, the pattern of 10s appeared naturally in the output.
For those trained in the arts of tokenomics and who have spent time in the industry, this emission schedule just works.
Emission Metadata
Based on the 10 Billion token reference model, the data table below summarizes the emission and inflation parameters over this life cycle:
| Parameter | Value |
|---|---|
| Model | Fixed Emission Rate |
| Total cycles | 10 |
| Epochs per year | 52,500 |
| Total epochs | 525,000 |
| Fixed emission amount (per epoch) | 10,000 |
| Fixed emission amount (per cycle) | 525,000,000 |
| Initial supply | 5,000,000,000 |
| Total emissions | 5,250,000,000 |
| Final total supply | 10,250,000,000 |
| Total growth factor | 2.05x |
| Effective annual inflation rate | 7.44% |
| Average inflation rate | 7.45% |
| Final inflation rate | 5.40% |
| Initial inflation rate (epoch 1) | 10.50% |
| Inflation rate reaches 10% | Epoch 25,000 (cycle 0.48) |
| Supply reaches 10B | Epoch 500,000 (cycle 9.52) |
The table captures the full emission lifecycle. With the conditional hard cap in place, the system gives the community approximately 10 years to mature governance and make an informed decision about STREET’s long-term supply policy. To the best of our knowledge, no one has ever launched an infinite-supply token with the sole purpose of boosting a fixed-supply token. The programmed emission rate ensures the community has plenty of time to debate, model, and decide the best path forward.
Emission Triggers
Permissionless Public Minting
The mint function in the emission-controller contract is completely public. Any participant can call it at any time. There are no privileged addresses, no administrator control, and no centralized entity required to trigger emissions.
This design makes STREET a truly community-minted token. Emissions occur when community members interact with the protocol, not when developers or administrators decide to release tokens.
Sybil Protection via Minimum CREDIT Balance
To prevent spam and sybil attacks, the mint function requires the caller to hold a minimum CREDIT balance:
- Minimum requirement: 0.01% of total CREDIT supply, or 10 CREDIT tokens (whichever is greater)
- Purpose: Ensures caller has participated in liquidity provision
- Effect: Limits mint calls to active protocol participants
This requirement creates a permissionless but spam-resistant system. Anyone can participate, but they must first interact with the protocol by providing liquidity.
Bounty Incentive Structure
Each successful mint call distributes 10,000 STREET tokens:
- 9,990 STREET → Rewards pool (distributed to CREDIT holders)
- 10 STREET → Bounty to the caller (0.1% of emission)
The bounty compensates the caller for transaction fees and provides an incentive for timely emission execution. However, the bounty is intentionally small to prevent extractive behavior.
Even if a sophisticated bot operator controlled 100% of all emission calls across the entire 10-year emission schedule, they would receive only 52,500 STREET (0.1% of total emitted supply). This makes bounty extraction economically insignificant compared to participating in the protocol through liquidity provision.
Rate Limiting
The emission-controller enforces one emission per Bitcoin block:
(asserts! (not (is-eq burn-block-height last-mint)) ERR_EMISSION_INTERVAL)This prevents multiple emissions within a single Bitcoin block and ensures emissions pace at Bitcoin’s ~10-minute interval. The deployer cannot modify this rate limit.
Complete Immutability
The emission mechanics are hardcoded into the emission-controller contract:
- Emission amount (10,000 STREET) cannot be changed
- Bounty amount (10 STREET) cannot be changed
- Reward amount (9,990 STREET) cannot be changed
- Rate limit (1 per Bitcoin block) cannot be changed
- Eligibility criteria (minimum CREDIT) cannot be changed
The deployer has no administrative functions to alter emission behavior. The contract executes autonomously based on its immutable code.
Community Execution
Because the mint function is public and permissionless, emissions occur only when community members choose to call it. If no one calls the function during a particular Bitcoin block, no emission occurs for that block.
This creates organic pacing: emissions happen when the community is active and engaged with the protocol. There is no guaranteed emission schedule independent of community participation.
Technical Specifications
Emission Controller Contract
The emission-controller contract implements the public permissionless mint function. Any address can call this function to trigger an emission event.
;; Welsh Street Emission Controller
;; constants
(define-constant REWARD u9990000000) ;; 9,990 STREET to rewards pool
(define-constant BOUNTY u10000000) ;; 10 STREET to caller
(define-constant BASIS u10000) ;; 0.01% basis points
(define-constant CREDIT u10) ;; minimum 10 CREDIT
;; variables
(define-data-var current-epoch uint u0)
(define-data-var last-burn-block uint u0)
(define-data-var last-winner (optional principal) none)
(define-public (mint)
(let (
(last-mint (var-get last-burn-block))
(total-lp (unwrap-panic (contract-call? .credit-token get-total-supply)))
(caller-credit (unwrap-panic (contract-call? .credit-token get-balance tx-sender)))
(min-credit (if (< total-lp BASIS) CREDIT (/ total-lp BASIS)))
)
(begin
;; Require active liquidity pool
(asserts! (> total-lp u0) ERR_NO_LIQUIDITY)
;; Rate limit: one emission per Bitcoin block
(asserts! (not (is-eq burn-block-height last-mint)) ERR_EMISSION_INTERVAL)
;; Sybil protection: require minimum CREDIT balance
(asserts! (>= caller-credit min-credit) ERR_NOT_ELIGIBLE)
;; Mint bounty to caller
(try! (contract-call? .street-token mint BOUNTY tx-sender))
;; Mint reward to pool
(try! (contract-call? .street-token mint REWARD .street-rewards))
;; Update rewards pool
(try! (contract-call? .street-rewards emission-rewards REWARD total-lp))
;; Update state
(var-set current-epoch (+ (var-get current-epoch) u1))
(var-set last-burn-block burn-block-height)
(var-set last-winner (some tx-sender))
(ok {
block: burn-block-height,
epoch: (var-get current-epoch),
reward: REWARD,
user: BOUNTY
})
)
)
)Key Properties
- Public function: Any address can call
mint - No admin control: No privileged addresses or owner functions
- Fixed amounts: REWARD and BOUNTY are hardcoded constants
- Rate limited: Maximum one emission per Bitcoin block
- Sybil resistant: Requires minimum CREDIT balance (0.01% of supply or 10 CREDIT)
- Autonomous execution: Contract operates independently of developer actions