跳转到主要内容
状态:草案规范 (Phase 1) 用于目标 profile、制品元数据和编译时拒绝的规范能力 id。语义含义与 RFC 0002 中的矩阵保持一致。 图例:Y 已支持(计划中或已实现),P 部分支持/仅限 spike,N 不支持, 不适用。

与目标 id 的关系

  • 目标 id 记录在 docs/decisions.md 中,并由 docs/rfcs/0002-target-implementation-design.md 汇总。
  • 此注册表拥有能力 id,而非目标生命周期阶段。
  • 文档不得为相同的语义发明替代 id。

与 Contract Intent 和 Target Extension 的关系

capability id 是 target selection 之后使用的下层协议,不是默认面向用户的 SDK。portable contract 通常应调用链中立的 Contract Intent API。所选 target adapter 会把这些 intent 解析为 capability plan,然后在降级前检查本注册表。 Target Extension SDK 可以暴露 Solana PDA/CPI/runtime allocator 配置、Move resource 或 UTXO covenant primitive 等目标特定操作。这些 extension 仍通过 capability id 和 target metadata 路由,使诊断、制品元数据和跨 target 支持检查保持统一。

核心能力

Solana 列反映规范的 solana-sbpf-asm 路线(D-026):直接生成 sBPF assembly。Solana 使用 crosscall.cpi(不是 crosscall.invoke)和 storage.pda,这些按 D-027 保持为 Solana 特定能力。
能力 id可移植含义EVMNEARCosmWasmSolanaAptosSuiPsy DPN
storage.scalar单个持久化标量YYYYYYY
storage.map键值对或映射存储YYYPPPP
storage.array固定大小的索引存储数组PNNYNNP
caller.sender交易签名者/调用者YYYYYYP
value.native调用附带的原生代币YYYYYYP
events.emit结构化日志/事件输出YYYYYYY
crosscall.invoke调用另一个合约/程序YNYNYYP
env.block区块高度/时间/链 id 读取YYPPPPP
control.conditional使用目标支持的布尔谓词进行语句级条件分支PNNYNNP
control.bounded_loop目标可展开或静态处理的有界循环NNNPNNP
data.fixed_array固定大小数组值类型、字面量和索引表达式PNNYNNP
data.struct结构体值类型、字面量和字段访问PNNYNNP
crypto.hash宿主或库哈希YYYYYYY
assertions.check从 portable IR 语句发射运行时或电路断言YYNYNNP
account.explicit具名账户/对象/资源绑定PYNYYYP
storage.pda程序派生地址状态NNNYNNN
runtime.allocator目标运行时堆分配器约定NYPYPPP
runtime.memory目标运行时内存操作NNNYNNN
runtime.return_data目标运行时返回数据缓冲区操作NNNYNNN
runtime.compute_units目标运行时计算预算自省NNNPNNN
crosscall.cpi带有账户元数据的 Solana CPINNNYNNN
zk.circuit将入口编译为目标电路定义NNNNNNY
zk.proof目标证明生成或验证流NNNNNNP

Id 命名规则

  • 格式:<domain>.<operation><domain>.<variant>(小写,点分隔)。
  • 领域:storage, caller, value, events, crosscall, env, control, data, crypto, assertions, account, runtime, zk
  • 制品元数据列出了构建所使用的 id(参见 RFC 0002 制品 schema)。
  • 诊断信息在拒绝时必须引用能力 id 和目标 id。

尚未注册的候选能力

这些候选项仅用于目标研究。在目标 profile 和 lowering 规则被接受前,不要将它们加入 ProofForge.Target.Capability

Kaspa Toccata

参见 Kaspa Toccata 目标
候选 id可移植含义为什么需要单独表达
storage.utxo状态位于 covenant 控制的 UTXO 或状态承诺中不是账户/对象存储,也不是 EVM slot
covenant.lineage后继输出保持在被授权的 covenant family 中这是交易/输出校验,不是普通存储
tx.v1目标使用 Kaspa transaction v1 语义交易投影和 payload 规则会影响正确性
tx.compute_budget每个 input 的脚本 compute budget 是显式字段预算是交易设计的一部分,不只是 gas 计量
lane.userapp operation 可以使用 user lanebased-app 排序和 proof anchoring 需要它
zk.verify脚本验证 L1 支持的证明不等同于把目标本身编译成电路
zk.circuit 仍保留给主制品是电路或电路导向源包的目标。Toccata 可以使用证明,但它的 base target 是 Kaspa covenant package。

Stellar Soroban

参见 Stellar Soroban 目标 大部分 Soroban 行为可以先从现有 Wasm-host 能力集开始,但若干目标语义还没有被当前 registry 覆盖。
候选 id可移植含义为什么需要单独表达
auth.require合约要求地址级 authorization payload比读取 caller/sender 更强、更结构化
auth.account_contractcontract account 通过目标原生账户逻辑验证 authorizationSoroban account-contract flow 需要它
storage.ttl状态条目有 TTL extension、archival 和 restoration 行为标量/映射存储本身无法表达
artifact.contract_spec构建输出包含 tooling 和 bindings 使用的 contract interface/spec metadata这是制品级要求,不是运行时存储
asset.stellar合约使用 Stellar Asset Contract 或 token-interface 集成原生资产表面不同于通用 value.native

Internet Computer

参见 Internet Computer 目标 ICP canister 与 Wasm-host 家族有重叠,但在添加 target profile 前,需要显式表达若干 canister 语义。
候选 id可移植含义为什么需要单独表达
abi.candid构建输出并验证 Candid service interface公开 ABI 不只是导出的 Wasm symbol
canister.method_modeentrypoint 区分 update、query 和 composite query methodcall mode 影响 persistence、consensus 和 call restrictions
storage.stable_memory状态使用 stable memory 或 stable structures 跨 upgrade 保留标量/映射存储本身无法表达
storage.orthogonal_persistence状态遵循 Motoko-style orthogonal persistence 语义不同于显式 key-value store
principal.idcaller/canister/user identity 是 Principal不是 EVM address 或通用 account id
cycles.manage目标可以 inspect、accept、send 或 account for cyclescycles 是资源计量,不是普通 value.native
crosscall.asynccross-canister call 是异步消息流不同于同步 contract call
canister.lifecycle目标支持 install、upgrade、stop/start 和 lifecycle hookslifecycle 是 deployment 与 state safety 的一部分
certified.data目标暴露 certified variables 或 certified data responsesIC certification pattern 需要它
management.canister目标可以调用 virtual management canistersystem lifecycle API 是目标原生能力

Algorand AVM

参见 Algorand AVM 目标 Algorand 与通用合约能力有部分重叠,但 AVM programs、storage classes、transaction groups 和 explicit resource references 在添加 target profile 前需要显式表达。
候选 id可移植含义为什么需要单独表达
avm.applicationtarget 发射 stateful application approval 和 clear-state programsapplication artifact 有两个 AVM programs 和 app lifecycle semantics
avm.logicsigtarget 发射 stateless LogicSig programLogicSig 是独立的 stateless authorization artifact,不是 app call
abi.arc4构建输出或验证 ARC-4 ABI / app spec metadatapublic method shape 是 tooling-visible metadata,不只是导出的代码
storage.globalcontract 使用 application global statelimits 和 access rules 不同于 local 或 box state
storage.localcontract 使用 account-local application statestate 按 account 和 app 索引,不是 global contract map
storage.boxcontract 使用 box storage,并带显式 box referencesbox access 需要 resource references 和 budget planning
tx.groupcontract 依赖 atomic transaction group ordering 或 inspectiongroup semantics 是目标原生 transaction context
tx.resource_refsapp call 需要显式 accounts、assets、apps 或 boxes referencesresource availability 会影响 AVM execution 能否访问数据
itxn.submitapplication 提交 inner transactionsinner effects 是 transaction-level,不是同步 method call
asset.asacontract 处理 Algorand Standard Assetsnative asset model 不同于通用 value.native
gas.avm_budgetlowering 跟踪 AVM opcode budget、costs 和 program limitsAVM budget constraints 不是 EVM gas 或 Wasm host fuel
artifact.algokit构建输出 AlgoKit / Puya app artifacts 和 validation metadata目标工具链需要 app spec 和 bytecode package metadata

Cardano Plutus/Aiken

参见 Cardano Plutus/Aiken 目标 Cardano 与 UTXO covenant 目标有重叠,但 eUTXO validator roles、datum、redeemer、script context、execution units 和 Plutus blueprint metadata 在添加 target profile 前需要显式表达。
候选 id可移植含义为什么需要单独表达
storage.eutxostate 和 value 位于 eUTXO outputs不是账户/对象存储或 global contract state
validator.spendtarget 发射 spending validatorspending validator 有 datum/redeemer/script-context 语义
validator.minttarget 发射 minting policyminting policy 语义不同于 spending validation
validator.withdrawtarget 发射 withdrawal validatorwithdrawal validation 是 Cardano 独立角色
datum.inlinecontract 依赖 inline datum encodingdatum placement 会影响 transaction construction 和 validation
redeemer.inputentrypoint arguments 是 redeemersarguments 来自 transaction redeemers,不是 method calldata
tx.script_contextvalidator 读取 Cardano script contextcontext 是 validation correctness 的核心
tx.validity_rangevalidator 约束 slot/time validityvalidity ranges 不同于通用 block reads
tx.balancingvalidation 包含 transaction balancing 和 fee handlingoff-chain transaction construction 是实际正确性的一部分
asset.native_tokencontract 处理 Cardano native multi-assetsnative asset model 不同于通用 value.native
budget.exunitsartifact 记录 Plutus execution unitsexecution-unit budgeting 是目标特有能力
artifact.plutus_blueprint构建输出 CIP-57 blueprint metadatablueprint metadata 是 Cardano tooling surface 的一部分

Tezos Michelson/LIGO

参见 Tezos Michelson/LIGO 目标 Tezos 与通用 contract storage 和 entrypoints 有部分重叠,但 Michelson typed data、operation-list effects、views、events、tickets 和 gas/storage-burn 语义需要在添加 target profile 前显式表达。
候选 id可移植含义为什么需要单独表达
vm.michelsontarget 发射或验证 Michelson codeMichelson 是 typed stack VM,有目标特有约束
abi.entrypoint构建输出 entrypoint/parameter schema metadatapublic entrypoint shape 是 target-visible metadata
storage.michelinestorage 编码为 typed Micheline data不是 EVM slots 或 generic JSON
storage.big_mapcontract 使用 Tezos big_map storagebig_map persistence/indexing 不同于普通 maps
operation.listentrypoint 返回 Tezos operations listeffects 是返回数据,不是 direct synchronous calls
view.contractcontract 暴露 Tezos viewsviews 是独立 public read surface
events.tezoscontract 发射 Tezos eventsevent payload 和 indexing semantics 是目标原生语义
ticket.handlecontract 创建、转移或消费 ticketstickets 是 native linear assets,不是 generic tokens
privacy.saplingcontract 使用 Sapling state 或 transactionsprivacy state 是目标原生且非通用
delegate.setcontract 可以 change 或 clear delegationdelegation 是 Tezos-specific operation
gas.tezosartifact 记录 Tezos gas/storage-burn constraintsfee model 不同于 EVM gas 和 Wasm fuel
artifact.ligo构建输出 LIGO 和 compiled Michelson metadata目标工具链要求

Starknet Cairo

参见 Starknet Cairo 目标 Starknet 与 contract storage、events 和 calls 有部分重叠,但 Cairo/Sierra/CASM artifacts、class hashes、account abstraction、syscalls 和 L1/L2 messaging 在添加 target profile 前需要显式表达。
候选 id可移植含义为什么需要单独表达
vm.cairotarget 发射 Starknet Cairo sourceCairo 是 source language 和 execution model boundary
artifact.sierra构建输出 Sierra contract class artifactsSierra 是必需的 intermediate contract class metadata
artifact.casm构建输出 CASM artifactsCASM 是不同于 source 和 ABI 的目标制品
class.declaredeployment flow 包含 class declarationStarknet 将 declaring a class 与 deploying an instance 分离
class.hashartifact 记录 class hash 和 class identityclass hash 是 deployment 和 upgrade semantics 的一部分
abi.starknet构建输出 Starknet ABI 和 selector metadataABI shape 不是 EVM ABI
storage.starknetcontract 使用 Starknet storage paths/maps/componentsstorage paths 和 components 是目标原生语义
account.abstractiontarget 依赖 Starknet account-contract semanticsaccounts 是 contract-level protocol participants
syscall.starknetcontract 使用 Starknet syscallscalls、deploys、events、storage 和 messaging 使用 syscall surfaces
message.l1_l2contract 发送或消费 L1/L2 messagesmessaging 不同于普通 contract calls
fee.starknetartifact 记录 Starknet fee/resource constraintsfee/resource model 是目标特有语义
test.snforgevalidation 使用 Starknet Foundry 或 devnetlocal smoke tooling 是 target validation 的一部分

Aleo Leo

参见 Aleo Leo 目标docs/zh/superpowers/specs/2026-07-01-aleo-leo-design.zh.md Aleo 与 source-generation 和 ZK 目标有重叠,但它的 contract model 有明确的 proof/finalization split。private execution 生成 transitions 和 proofs;public finalization 在链上更新 mappings 或 storage。Records、program ids、imports、 Aleo Instructions、Aleo VM bytecode、ABI、prover/verifier artifacts、fees 和 devnet validation 在添加 target profile 前需要显式表达。

规范能力(Road 1 spike)

以下能力已被第一个 aleo-leo spike 接受,并在设计规格中文档化。在 spike 成功前, 它们不会被加入 ProofForge.Target.Capability
能力 id可移植含义为什么需要单独表达
lang.leotarget 发射 Leo source packagesLeo 是第一版稳定 sourcegen boundary
vm.aleo_avmtarget 运行在 Aleo VM 上避免与 Algorand AVM 混淆
artifact.avmbuild 发射 Aleo VM bytecodedeployment artifact 是目标原生制品
artifact.aleo_abibuild 发射 Aleo ABI metadataABI shape 遵循 Aleo program interfaces
execution.finalizeprogram 有公开链上 finalization logicfinalization 是 public 且 validator-executed
state.mappingpublic state 位于 mappingsmappings 是链上公开 key-value state
input.publicfunction input 是 public datapublic inputs 在 transaction context 中可见
output.publicfunction output 是 publicpublic outputs 需要显式 metadata
test.leovalidation 使用 Leo testslocal validation 是目标工具链

研究候选能力(未来 spike)

以下能力仍作为候选,直到 private records、transitions、proofs、imports、deployment 或 devnet validation 被纳入范围。
候选 id可移植含义为什么需要单独表达
ir.aleo_instructionsbuild 发射或消费 Aleo InstructionsAleo lower-level compiler target 不同于 Leo
proof.prover_keybuild 或 execute flow 生成 prover artifactsproof generation 有 target-owned artifacts
proof.verifier_keybuild 或 deploy flow 记录 verifier artifactsverification keys 属于 deployment/execution metadata
execution.transitionentry execution 生成 transition 和 prooftransition 是 Aleo function-call unit
state.recordprivate state 位于 encrypted recordsrecords 是 UTXO-like,不是 EVM storage
state.storagepublic state 可使用 storage variables 或 storage vectorsAleo storage 不同于 mappings 和 private records
input.privatefunction input 是 private proof-context dataprivacy 是 function signature 的一部分
output.privatefunction output 默认 privateoutput visibility 是目标语义
program.importprogram import 并调用另一个 Aleo programcross-program calls 生成 composed transitions/finalization
program.upgradedeployment 可支持显式 program upgradesupgrade rules 是 program/deploy metadata
transaction.executevalidation 可生成 execute transactionexecute transactions 携带 transitions 和 proofs
transaction.deployvalidation 可生成或检查 deploy transactiondeploy 发布 program code 和 verification metadata
fee.creditsfees 以 Aleo Credits 支付,可 public 或 privatefee visibility 和来源会影响 privacy 与 validation
test.aleo_devnetvalidation 使用 Leo devnet 或 devnode-backed flowsnetwork-backed smoke 不同于 local compile/test
现有 zk.circuit capability 不足以描述 Aleo。它可以描述 proof surface 的一部分, 但 Aleo 还需要 program、transaction、state-record、finalization 和 artifact 能力。

TON TVM

参见 TON TVM 目标 TON 与通用合约能力有部分重叠,但 TVM cells、messages 和 actions 在添加 target profile 前需要显式表达。
候选 id可移植含义为什么需要单独表达
storage.cellcontract state 编码为 TVM cells、slices 和 builders不是 EVM slot storage 或 host KV
abi.tlb构建输出或验证 TL-B/cell layout metadata公开数据形态是 cell-oriented
message.recvcontract 处理 internal 或 external inbound messagesentrypoint 形态由 message 驱动
message.sendcontract 通过 action semantics 发出 outbound messages不是同步 cross-contract calls
method.getcontract 暴露 off-chain get methods不同于会改变状态的 message handlers
action.listtarget effects 累积在 TVM action lists 中send/deploy/reserve effects 需要它
state.initdeploy 需要 code/data StateInit handlingdeployment artifact 是目标原生制品
account.statusaccount lifecycle/status 影响行为uninit/active/frozen/deleted handling 需要它
gas.tvmTVM gas 和 fee model 显式存在不是通用 EVM gas 或 host fee metering
asset.jettoncontract 集成 TON jetton/token standards原生 token standard 不同于 value.native

Bitcoin Script/Miniscript

参见 Bitcoin Script/Miniscript 目标 Bitcoin 与 UTXO script targets 有重叠,但 base-layer Script 更适合建模为 spending policy,而不是 general contract execution。Miniscript、descriptors、Taproot/Tapscript、PSBT flows、standardness 和 weight/fee checks 在添加 target profile 前需要显式表达。
候选 id可移植含义为什么需要单独表达
script.bitcointarget 发射 Bitcoin Script 或 script fragmentsBitcoin Script 有独立的 consensus 和 standardness rules
script.miniscripttarget 发射可分析的 Miniscript policy对 spending policies 来说,它比 raw Script 更适合作为第一制品
descriptor.outputtarget 发射 Bitcoin Core output descriptorsdescriptors 驱动 wallet/address/script workflows
script.segwittarget 发射 P2WPKH/P2WSH 等 SegWit v0 script pathsSegWit witness semantics 不同于 legacy script paths
script.taproottarget 发射 Taproot key-path 或 script-path outputsTaproot 改变 address、commitment 和 spend semantics
script.tapscripttarget 发射或验证 Tapscript semanticsTapscript 改变 opcode 和 signature behavior
witness.stackartifact 声明 required witness stack itemsunlocking data 是 spend validation 的一部分
sighash.modesignature semantics 依赖显式 sighash flagssighash choice 影响 signature commits to 的内容
hashlock.preimagespending policy 依赖揭示 hash preimages常见 Bitcoin contract primitive
multisig.thresholdspending policy 使用 threshold signatures 或 multisig structure不等同于 account-level authorization
psbt.flowvalidation 使用 PSBT creation、signing 和 finalization实际 Bitcoin workflows 依赖 transaction construction
policy.standardnessartifact 检查 relay/mining standardness policyconsensus-valid scripts 可能仍然 non-standard
fee.weightartifact 记录 transaction weight、vbytes、fee 和 dust constraintsfee 和 relay viability 是实际正确性的一部分
test.bitcoin_corevalidation 使用 Bitcoin Core regtest 或 RPC checkstarget validation 依赖 Bitcoin Core behavior
Bitcoin 应在语义匹配时复用已有 UTXO candidate ids,包括 storage.utxoscript.p2shscript.unlockertimelock.locktimesignature.checksigtx.builder

Zcash Shielded

参见 Zcash Shielded 目标 Zcash 与 Bitcoin-derived UTXO flows 有重叠,但它的 shielded pools 不是普通 Bitcoin Script,也不是 generic ZK circuit target。Sapling/Orchard notes、 nullifiers、commitment tree anchors、value-balance constraints、viewing-key disclosure 和 protocol-defined proofs 在添加 target profile 前需要显式表达。
候选 id可移植含义为什么需要单独表达
privacy.shieldedtarget 使用 shielded value poolprivacy 是 transaction construction property,不只是 proof flag
privacy.transparenttarget 同时处理 transparent Zcash inputs 或 outputstransparent 和 shielded pools 会泄漏不同信息
pool.saplingtarget 使用 Sapling shielded semanticsSapling 有独立 notes、keys 和 proof semantics
pool.orchardtarget 使用 Orchard shielded semanticsOrchard 有 action bundles 和 Halo 2 proof semantics
note.shieldedstate/value unit 是 shielded note不是 EVM storage、account state 或普通 UTXO script data
note.commitmentartifact 记录 note commitment semanticstree membership 和 output construction 需要它
nullifier.revealspend 公开 nullifier 作为 double-spend guardpublic nullifiers 是 shielded spend validity 的核心
anchor.commitment_treespend 针对 commitment tree anchor 证明 membershipmembership anchor 是 public proof statement 的一部分
zk.zcash_prooftransaction 携带 Zcash protocol proofcircuit 由协议定义,不是 arbitrary application code
zk.witnessbuild 需要用于 proving 的 private witness datawitness data 必须留在链下,且边界可审计
value.balanceartifact 记录 shielded value-balance constraintsshielded pools 与 transparent turnstiles 间的守恒是目标专属语义
key.viewingvalidation/disclosure 可以使用 viewing keys链下可观测性不是 contract state
address.unifiedtarget 处理 unified addresses 和 receiver selectionaddress semantics 影响 pool choice 和 recipient leakage
privacy.policyartifact 记录允许的信息泄漏zcashd 在 transaction construction 中暴露 privacy-policy 选择
test.zcashdvalidation 使用 zcashd RPC 或兼容本地库target validation 依赖 Zcash tooling,不只是 Bitcoin Core
Zcash 在 transparent flows 中应在语义匹配时复用已有 UTXO candidate ids,包括 storage.utxotx.buildersignature.checksigfee.weight。现有 zk.circuit capability 不是普通 Zcash shielded transfer 的第一抽象;它只适合 未来在 Zcash 共识证明系统之外做辅助 proof-program work。

Bitcoin Cash CashScript

参见 Bitcoin Cash CashScript 目标 BCH/CashScript 与 UTXO covenant 目标有重叠,但 CashVM、transaction introspection、CashTokens 和 transaction-builder 语义在添加 target profile 前需要显式表达。
候选 id可移植含义为什么需要单独表达
storage.utxostate 和 value 位于 spendable UTXOs不是账户/对象存储或 global contract state
script.p2shcontract deployment/addressing 使用 P2SH locking scriptsdeployment/address surface 是目标原生能力
script.unlockercontract calls 是 selected UTXOs 的 unlocking scripts不是普通 method dispatch
tx.introspectioncontract 读取当前交易 inputs/outputs 和 active input dataBCH CashVM 的核心 covenant mechanism
covenant.introspectioncontract 通过 introspection 约束 successor outputscovenant-style state transition 需要它
storage.local_statelocal state 通过 script data 或 CashTokens commitments 模拟不是 persistent global storage
asset.cashtokencontract 处理 CashTokens category、capability、NFT commitment 和 token amountnative asset model 不同于通用 value.native
timelock.locktimecontract 依赖 locktime、sequence 或 age checks不同于普通 block reads
signature.checksigcontract 将 signature verification 作为 spend conditionUTXO spend authorization 是 script-level
artifact.cashscript构建输出 CashScript artifact JSON 和 bytecode metadata目标工具链要求
tx.buildervalidation 包含构造并评估 spend transaction实际目标语义需要 transaction construction

EVM 映射 (基准)

能力 idEVM 降级
storage.scalarStorage.load / Storage.store (sload/sstore)
storage.mapStorage.mapLoad / Storage.mapStore
caller.senderEnv.sender
value.nativeEnv.value
events.emitlog0log4
crosscall.invokecall, staticcall, delegatecall, create, create2
env.blockEnv.blockNumber, 等
目前通过 ProofForge.Evm / Lean.Evm 实现 —— 参见 targets/evm.md

Phase 1 验收标准

  • 此表中的每个 id 至少出现在一个目标的 TargetProfile.capabilities 中。
  • EVM Counter 构建在制品元数据中列出 storage.scalar(以及其他使用的 id)。
  • 在 EVM 上尝试 storage.pda 会失败并显示 capability unsupported 诊断信息。
  • 当 RFC 0002 语义矩阵发生变化时,注册表保持同步。

更新日志

日期变更
2026-06-30初始注册表;取代中文技术方案中的临时 id
2026-06-30添加了 Psy DPN research 列和 ZK 能力 id