Version: 2.0
Date: 2026-03-20
Purpose: Single, up-to-date reference for DAL
smart-contract workflows: trust split model, EVM path maturity,
ABI/decode reliability, and remaining gaps.
DAL now supports a stronger smart-contract path than the previous review:
@compile_target("blockchain") emits Solidity/ABI/bin
artifacts when toolchain is present.chain::call_typed and chain::deploy_typed
expose typed evidence fields.stdlib::abi_codec) is
extracted and used at integration boundaries.function_signature.What is still not complete:
DAL “contracts” are services with trust and chain attributes. There
is no separate contract keyword.
Key attributes:
| Attribute | Role |
|---|---|
@trust("decentralized" | "hybrid" | "centralized") |
Declares trust model and policy envelope |
@chain("...") |
Declares chain context and allowed chain namespace usage |
@secure / @public |
Access semantics; mutually exclusive |
@compile_target("blockchain") |
Routes service into blockchain compile backend |
decentralized: deterministic-only
path; disallowed orchestration namespaces are blocked by
policy/checks.hybrid: orchestration + chain
interaction; now supports dual-artifact split for mixed logic.centralized: runtime-centric
orchestration path.Important product direction:
decentralized to
zero is planned with compatibility aliasing; not yet cut
over.@compile_target("blockchain") currently supports:
.abi/.bin outputs
(when available)For @trust("hybrid") +
@compile_target("blockchain"):
auth::,
cloudadmin::, cloud alias) are auto-routed to
HTTP/orchestration artifact output.<Service>.http.json.This enables one hybrid service definition to produce dual artifacts without silent cross-boundary leakage.
chain::deploy_typed(...)chain::call_typed(...)Both carry evidence contracts including:
contract_address /
result_hex)tx_hashreceipt_statusrevert_dataerror_codemessagechain::deploy/chain::call remain as
compatibility wrappers.
Strict policy controls synthetic fallback behavior:
ABI golden vectors now cover:
uint, bool,
address, bytes32)Error(string),
Panic(uint256))string, bytes)tuple(string,bytes))src/stdlib/abi_codec.rs now contains decode-focused
helpers:
This extraction is additive and compatibility-safe: behavior remains pinned by vectors.
ABI metadata is registered per contract identity:
(chain_id, contract_address)Registration occurs during
add_sol::register_contract(...).
chain::call_typed now attempts decode through registry
identity:
chain_id + contract_address + function_namedecodeddecode_errorFor overloaded function names:
function_signature hint is used for
deterministic disambiguationdecode_errorThis is aligned with audit-ready deterministic behavior.
add_sol is now runtime-integrated (no longer
“stdlib-only/not wired”):
add_sol::call_with_abi(...) (legacy string
projection)add_sol::call_with_abi_typed(...) (typed envelope with
decoded/evidence fields)Typed boundary fields include:
result_hexdecodeddecode_errortx_hashreceipt_statusrevert_dataerror_codemessage@secure remains the primary runtime guard for
authenticated, non-reentrant execution paths.| Area | Current gap |
|---|---|
| Full decentralized codegen | Broad subset still pending; many generated method bodies remain conservative |
| End-to-end production contract path | Still not equivalent to “drop-in Solidity replacement” for all patterns |
| Typed decode conventions in DAL call-sites | Signature-hint conventions and guidance are still being normalized |
| Audit package completeness | In progress; not yet final-form |
Good fit now
Use caution / expect work-in-progress
docs/development/implementation/TRUST_SPLIT_EVM_PRODUCTION_PLAN.mddocs/development/implementation/TRUST_SPLIT_EVM_HARDENING_REFACTOR_PLAN.md
(gateboard §7 = test/release style gates until a standalone test plan
file is added)docs/PROJECT_STATE_AND_ALIGNMENT.mdsrc/stdlib/chain.rssrc/stdlib/abi_codec.rssrc/stdlib/add_sol.rs.github/workflows/ci.yml
(trust-split-fast)Bottom line: DAL’s smart-contract path is now materially stronger than earlier states: typed evidence, hardened ABI decode, hybrid dual-artifact split, and overload-safe registry decode are in place. The strategic goal remains unchanged: continue converting this reliable integration/runtime surface into a full audit-ready contract-native path by closing the remaining decentralized codegen and final operational audit gaps.