Skip to main content

Client

Clients can interact with the mint module through:

CLI​

The command-line interface provides query commands to inspect the mint module state.

History query conventions​

Four queries — reduction-factor, reward-mint-history, burn-history, replacement-mint-history — share a unified shape:

  • --epoch N (with N > 0) returns the single entry for that epoch as a one-entry list, or NotFound if the epoch has no record.
  • Without --epoch, the command paginates over all stored entries using the standard Cosmos pagination flags: --limit, --offset, --page-key, --count-total, --reverse. The default page limit is 100 entries; setting --limit 0 falls back to that same default (it does not mean "unbounded"). --epoch and pagination flags are mutually exclusive.

Query Commands​

Query Params​

Get the current mint module parameters:

d q mint params

Example Output:

params:
mint_denom: adt
genesis_epoch_provisions: "76923076923075000000000000.000000000000000000"
epoch_identifier: week
reduction_period_in_epochs: 52
reduction_factor: "0.800000000000000000"
distribution_proportions:
staking: "1.000000000000000000"
community_pool: "0.000000000000000000"
minting_rewards_distribution_start_epoch: 27
max_supply: "100000000000000000.000000000000000000"
burn_replacement_ratio: "0.000000000000000000"

Query Epoch Provisions​

Get the current epoch provisions (amount minted per epoch):

d q mint epoch-provisions

Example Output:

epoch_provisions: "76923076923075000000000000.000000000000000000"

This value changes over time as reductions are applied.

History Queries​

Four range-capable queries cover reduction factors, reward mints, observed burns, and replacement mints. The single-epoch case returns a one-entry list; without --epoch, the query paginates over all stored entries.

CLIHTTP
d query mint reduction-factor --epoch NGET /d/mint/v1/reduction_factor?epoch_number=N
d query mint reward-mint-history --epoch NGET /d/mint/v1/reward_mint_history?epoch_number=N
d query mint burn-history --epoch NGET /d/mint/v1/burn_history?epoch_number=N
d query mint replacement-mint-history --epoch NGET /d/mint/v1/replacement_mint_history?epoch_number=N

To paginate over all stored entries, omit --epoch and pass pagination flags — e.g. d query mint <topic> --limit 50 --count-total, equivalent to GET /d/mint/v1/<topic>?pagination.limit=50&pagination.count_total=true.

Burn and replacement-mint values are stored math.Int decimals as strings. burn-history returns B_n (adt burnt during epoch n). replacement-mint-history returns the replacement amount recorded at epoch n after replacement-priority bookkeeping. reward-mint-history returns the amount actually minted in epoch n (capped). reduction-factor returns the factor applied at each reduction epoch as a LegacyDec.

Last Epoch Supply​

A singleton snapshot (not range-capable):

d query mint last-epoch-supply

Returns the snapshot currentSupply + cappedTotal persisted at the end of the most recent AfterEpochEnd call.

Examples:

# Single epoch
d query mint burn-history --epoch 79
d query mint replacement-mint-history --epoch 79
d query mint reward-mint-history --epoch 79
d query mint reduction-factor --epoch 52

# Paginated scan over all entries
d query mint burn-history --limit 20 --count-total
d query mint reduction-factor --reverse

# Continue from a previous page
d query mint burn-history --page-key <next_key_from_previous_response>

Transaction Commands​

The mint module does not provide direct transaction commands. Parameter updates must be done through governance proposals using the standard governance module commands.

Example governance proposal to update mint params:

d tx gov submit-proposal /path/to/proposal.json --from=<key>

Where proposal.json contains:

{
"messages": [
{
"@type": "/d.mint.v1.MsgUpdateParams",
"authority": "dchain10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn",
"params": {
"mint_denom": "adt",
"genesis_epoch_provisions": "76923076923075000000000000",
"epoch_identifier": "week",
"reduction_period_in_epochs": 52,
"reduction_factor": "0.8",
"distribution_proportions": {
"staking": "0.9",
"community_pool": "0.1"
},
"minting_rewards_distribution_start_epoch": 27,
"max_supply": "100000000000000000",
"burn_replacement_ratio": "0.500000000000000000"
}
}
],
"metadata": "ipfs://CID",
"deposit": "10000000000000000000adt",
"title": "Update Mint Distribution",
"summary": "Allocate 10% of minted tokens to community pool"
}

gRPC​

Query Service​

The mint module provides a gRPC query service defined in d/mint/v1/query.proto.

Params​

Get module parameters:

grpcurl -plaintext localhost:9090 d.mint.v1.Query/Params

Request:

message QueryParamsRequest {}

Response:

message QueryParamsResponse {
Params params = 1;
}

EpochProvisions​

Get current epoch provisions:

grpcurl -plaintext localhost:9090 d.mint.v1.Query/EpochProvisions

Request:

message QueryEpochProvisionsRequest {}

Response:

message QueryEpochProvisionsResponse {
bytes epoch_provisions = 1 [
(cosmos_proto.scalar) = "cosmos.Dec",
(gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
(gogoproto.nullable) = false
];
}

History Queries (ReductionFactor, RewardMintHistory, BurnHistory, ReplacementMintHistory)​

All four share a request shape:

message Query<Topic>Request {
int64 epoch_number = 1; // 0 = unset, use pagination
cosmos.base.query.v1beta1.PageRequest pagination = 2; // ignored when epoch_number > 0
}

Response is always a list:

message Query<Topic>Response {
repeated <Entry> entries = 1; // one entry on a single-epoch hit
cosmos.base.query.v1beta1.PageResponse pagination = 2; // populated only on paginated responses
}

epoch_number > 0 together with pagination returns InvalidArgument. A single-epoch miss returns NotFound. Values are stored math.Int decimals serialized as strings; reduction_factor is a LegacyDec.

Single-epoch example:

grpcurl -plaintext -d '{"epoch_number": 79}' localhost:9090 d.mint.v1.Query/BurnHistory

Paginated example:

grpcurl -plaintext -d '{"pagination": {"limit": 20, "count_total": true}}' \
localhost:9090 d.mint.v1.Query/BurnHistory

LastEpochSupply​

Get the singleton snapshot persisted at the end of the most recent AfterEpochEnd:

grpcurl -plaintext localhost:9090 d.mint.v1.Query/LastEpochSupply

REST​

Query Endpoints​

REST endpoints are available via the gRPC-gateway.

GET /d/mint/v1/params​

Get the current mint module parameters.

Example:

curl http://localhost:1317/d/mint/v1/params

Response:

{
"params": {
"mint_denom": "adt",
"genesis_epoch_provisions": "76923076923075000000000000.000000000000000000",
"epoch_identifier": "week",
"reduction_period_in_epochs": "52",
"reduction_factor": "0.800000000000000000",
"distribution_proportions": {
"staking": "1.000000000000000000",
"community_pool": "0.000000000000000000"
},
"minting_rewards_distribution_start_epoch": "27",
"max_supply": "100000000000000000000000000000.000000000000000000"
}
}

GET /d/mint/v1/epoch_provisions​

Get the current epoch provisions.

Example:

curl http://localhost:1317/d/mint/v1/epoch_provisions

Response:

{
"epoch_provisions": "76923076923075000000000000.000000000000000000"
}

History Endpoints​

All four history endpoints share the same query-parameter contract.

EndpointDescription
GET /d/mint/v1/reduction_factorReduction factors applied at reduction epochs
GET /d/mint/v1/reward_mint_historyActual amount minted per epoch
GET /d/mint/v1/burn_historyObserved adt burn per epoch
GET /d/mint/v1/replacement_mint_historyReplacement-mint amount recorded per epoch

Query parameters:

  • epoch_number=N (with N > 0): returns the single entry for that epoch.
  • pagination.limit, pagination.offset, pagination.key, pagination.count_total, pagination.reverse: standard Cosmos pagination (used when epoch_number is omitted or 0).

Single-epoch:

curl 'http://localhost:1317/d/mint/v1/burn_history?epoch_number=79'

Paginated scan:

curl 'http://localhost:1317/d/mint/v1/burn_history?pagination.limit=20&pagination.count_total=true'

GET /d/mint/v1/last_epoch_supply​

Get the singleton snapshot persisted at the end of the most recent AfterEpochEnd.

curl http://localhost:1317/d/mint/v1/last_epoch_supply

Monitoring and Analytics​

Useful Queries for Monitoring​

Check if max supply is approaching:

# Get current supply
d q bank total --denom=adt

# Get max supply
d q mint params | grep max_supply

# Calculate percentage
# percentage = (current_supply / max_supply) * 100

Track minting history:

# Query events from recent blocks
d q txs --events 'mint_epoch_end.epoch_number=79'

Monitor current minting rate:

# Get current epoch provisions
d q mint epoch-provisions

# Calculate annual minting (assuming weekly epochs)
# annual_minting = epoch_provisions * 52

Check when next reduction occurs:

# Get current epoch
d q epochs current-epoch week

# Get last reduction epoch (from state or events)
# next_reduction = last_reduction + reduction_period_in_epochs

Event Monitoring​

Monitor minting events in real-time:

# Subscribe to new blocks and filter for mint events
d q block --height=<height> | jq '.result.events[] | select(.type=="mint_epoch_end")'

Event attributes to monitor:

  • epoch_number: Track minting epochs
  • epoch_provisions: Monitor current provisions (detects reductions)
  • amount: Actual minted amount
  • total_supply_after: Track supply growth
  • last_reduction_epoch: Identify reduction events

Common Use Cases​

1. Check Current Minting Status​

# Get all relevant minting info
d q mint params
d q mint epoch-provisions
d q bank total --denom=adt

2. Verify Reduction Applied Correctly​

# After a reduction epoch, verify:
# 1. Epoch provisions decreased
d q mint epoch-provisions

# 2. Check event was emitted
d q txs --events 'mint_epoch_end.epoch_number=<reduction_epoch>'

3. Estimate Time Until Max Supply​

# Get current supply and provisions
current_supply=$(d q bank total --denom=adt -o json | jq -r '.supply[0].amount')
epoch_provisions=$(d q mint epoch-provisions -o json | jq -r '.epoch_provisions')
max_supply=$(d q mint params -o json | jq -r '.params.max_supply')

# Calculate remaining supply and epochs
# remaining = max_supply - current_supply
# epochs_remaining ≈ remaining / epoch_provisions (simplified, doesn't account for reductions)

4. Propose Parameter Changes​

See the governance proposal example in the Transaction Commands section above.