بنقرة واحدة
rust-contract-domain-modeling
// Domain-driven modeling patterns for Axone contracts. Use when introducing domain concepts, encoding invariants, or deciding boundaries between domain, handlers, services, gateways, queries, and state.
// Domain-driven modeling patterns for Axone contracts. Use when introducing domain concepts, encoding invariants, or deciding boundaries between domain, handlers, services, gateways, queries, and state.
Axone contract structure and Abstract SDK patterns. Use when scaffolding or refactoring contracts, deciding layer boundaries, wiring AppContract entrypoints, or adding module metadata and replies.
Axone deployment workflows with cargo-make, cw-orch, and Abstract. Use when publishing modules, installing them on accounts, running local chain tasks, or inspecting deployments.
Repository quality gates for Rust and generated artifacts. Use when validating changes locally or before committing Rust, schema, or documentation updates.
Patterns for Rust testing in Axone CosmWasm contracts. Use when adding unit tests, integration tests, data-driven cases, or coverage-oriented test scenarios.
Best practices for designing CosmWasm smart contract APIs. Use when defining message types, designing execute/query interfaces, or optimizing API ergonomics.
Guide for writing Rust doc comments that produce accurate generated contract documentation. Use when editing Instantiate/Execute/Query/Response types or any public schema-facing API.
| name | rust-contract-domain-modeling |
| description | Domain-driven modeling patterns for Axone contracts. Use when introducing domain concepts, encoding invariants, or deciding boundaries between domain, handlers, services, gateways, queries, and state. |
| license | BSD-3-Clause |
| metadata | {"author":"axone.xyz","version":"1.0"} |
Keep business invariants in explicit domain types instead of scattering them across handlers, query builders, or storage code.
domain/ owns business concepts and invariants.handlers/ decode messages, orchestrate use cases, and shape responses.services/ compose domain logic with environment-dependent enrichment or cross-module coordination.gateway/ isolates external module interaction and protocol-specific I/O.queries/ build external query payloads or request strings; they should not become the home of business rules.state/ persists data and reconstructs domain values; it should not silently redefine domain invariants.new or try_new that reject invalid states up front.TryFrom when validating a parsed or transport-level representation into a domain type.from_state.Case::new and TryFrom<Term> validate that a case is a ground Prolog dict before it can circulate as a domain object.Constitution::try_new validates UTF-8, required predicates, and engine feedback before a constitution exists as a valid domain value.Constitution::from_state reconstructs a previously validated value from storage without re-running external validation.Decision::new captures an immutable decision snapshot from already validated inputs.Authority::new canonicalizes a bech32 account into the DID form exposed by the contract.