Skip to content

x/marketplace — Marketplace module

Where x/market implements the raw order–match–lease state machine, the x/marketplace module carries the coordination surfaces around it: how offerings are presented, how marketplace-level rules are applied, and how the exchange is exposed to client interfaces as a coherent product rather than a bag of primitives.

It gives the protocol a place to evolve marketplace behavior — listing rules, offering metadata, cross-module orchestration — without overloading the core matching engine.

Marketplace coordination lives here: offerings are presented to tenants with shared resource units and attributes, marketplace-level rules shape what tenants see and how offers compete, and the exchange reaches client interfaces as one integrated surface instead of raw primitives.

In the code the Go package lives at x/market/types/marketplace (keeper and types), while the registered Cosmos module wrapper is x/marketplace. Genesis covers offerings, orders, bids, allocations, provider identity settings, MFA action configs, event sequence, and the canonical lifecycle flag.

Separating the matching engine from marketplace presentation is a deliberate design split: the core exchange must stay minimal and stable, while the marketplace surface can grow with the network. The two-module split keeps consensus-critical logic isolated from product-level iteration.

ConceptDefinition
OfferingA provider-facing presentation of leasable capacity, described with shared resource units and attributes.
Approved clientA client interface permitted to interact with identity-sensitive marketplace flows, governed via x/config.
  1. Present — Offerings are presented. Provider capacity surfaces through offering metadata that tenants can browse, filter, and compare.
  2. Rule — Marketplace rules apply. Listing rules and marketplace-level behavior shape what tenants see and how offers compete.
  3. Expose — Clients get a coherent product. The exchange reaches client interfaces as one integrated surface instead of raw primitives.
  4. Evolve — Behavior grows without core risk. New marketplace behavior lands in this module; the x/market state machine stays small and verifiable.
MessagePurpose
MsgAcceptBidAccepts a provider’s bid on an order.
MsgCreateOfferingCreates an offering presented to tenants.
MsgUpdateOfferingUpdates an existing offering.
MsgDeactivateOfferingRemoves an offering from active presentation.
MsgPauseAllocationPauses an active allocation.
MsgResizeAllocationResizes an active allocation.
MsgTerminateAllocationTerminates an allocation.
MsgWaldurCallbackProcesses a callback from the Waldur integration.
QueryPurpose
AllocationsByCustomer / AllocationsByProviderAllocations listed from the customer or provider side.
OfferingPriceThe price recorded for an offering.
ModuleHow they interact
x/marketBuilds directly on the order, match, and lease primitives.
x/providerSurfaces provider offerings and attributes to tenants.
x/resourcesUses shared resource definitions to describe offerings consistently.
x/reviewReputation signals feed offer presentation and tenant choice.

Separating the matching engine from marketplace presentation keeps consensus-critical logic isolated from product-level iteration — the core exchange stays minimal and stable while the surface grows with the network.

Coordination surfaces — offerings, listing rules, cross-module orchestration — live here. Order–match–lease state transitions live in x/market. See the x/market module.

Review and standing signals feed offer presentation and tenant choice through this surface, so track records influence discovery where decisions happen. See the x/review module.