客户端授权的原生操作
paranoid_prepareNativeIntent 为明确提供的所有者地址准备代币、交易和 NFT 操作。客户端从桌面钱包采用的同一规划器接收规范意图和精确审核内容。客户端在提交前完成操作授权。
此方法使用本地所有者 RPC 访问。Web 服务通过 loopback 调用节点,并通过 HTTPS 提供自身受限的应用 API。
准备
参数为 [owner, request, expected_parent_hash?]。请求使用原生操作动作。金额为最小单位的十进制整数字符串。可选父区块哈希固定调用方预期的规范快照。
{
"jsonrpc": "2.0",
"id": 1,
"method": "paranoid_prepareNativeIntent",
"params": [
"<owner address>",
{
"action": "trade",
"asset_id": "<64-character asset ID>",
"buy": true,
"gross_input": "1000000",
"slippage_bps": 1000
},
"<canonical parent hash>"
]
}
响应为 NativeClientPlan:
| 字段 | 含义 |
|---|---|
schema_version |
响应模式版本,当前为 1 |
plan_id |
对父区块、所有者、锚、请求和未授权意图的 BLAKE3 承诺 |
intent_id |
逻辑操作 ID 或带资金交易授权 ID |
owner |
其秘密授权此操作的地址 |
candidate_height |
用于规则与费用规划的高度 |
parent_header_hex |
完整规范的 212 字节父区块头 |
chain_id |
原生操作的链身份 |
epoch_anchor |
候选高度的交易锚 |
owner_authorization_version |
候选规则选择的构造 |
intent_kind |
operation 或 trade |
unsigned_intent_hex |
授权为空的规范传输意图 |
review |
请求、State 身份、精确金额、费用和操作条款 |
审核内容包括 NOID 扣款和入账、费用与上限、持有人储备、创建者购买、赎回、报价与最小输出、期限、资产和集合 ID、序号范围及输入/输出数量。交易审核还报告本地待处理策略预测。
准备读取已验证 State 和本地内存池,保持节点钱包地址、密钥、本地活动及预留状态不变。多个客户端可以为各自地址请求计划。计划作为快照,不预留输入或输出槽位。完成的意图到达时,接纳检查会验证其可用性。
客户端检查与授权
- 依据应用选定的节点连接检查
schema_version、链、父区块头、时期锚和候选规则。 - 将
unsigned_intent_hex解码为operation的NativeIntent,或trade的TradeOwnerIntent,并检查授权为空。 - 重新计算规范所有者声明和
intent_id。对照用户批准的操作检查所有者、确切动作、资产身份、资金来源、接收者、输出和费用。交易还检查总输入、最小输出、费用上限和有效区间。 - 使用
owner_authorization_version生成 Owner 胶囊。原生资产、金融和交易授权函数在证明前检查各自公开关系。 - 在本地验证完成的胶囊,将其规范包字节放入
authorization_bytes,再序列化同一意图。 - 通过
paranoid_submitTxIntent提交这些字节。保存操作 ID 和确认收据以供跟踪及导出。
金融操作使用候选高度、父区块 ID 和父分配计数器构造 NftRoundContext。这些值都包含在返回的区块头和计划中。公开关系由解码出的操作选择。
原生操作采用 NOIDNT21 格式。带资金交易采用 NOIDTO21,其中包含规范交易策略和资金声明。详见传输格式。
重现计划身份
对以下字节序列计算 BLAKE3:
"NOIDNativeClientPlan1"
|| parent_header_bytes
|| owner_bytes
|| epoch_anchor_bytes
|| request_json_length_u32_le
|| request_json_bytes
|| unsigned_intent_bytes
request_json_bytes 是 NativeWalletRequest 按声明顺序生成的紧凑 Serde 编码。计划身份使客户端能够保存精确准备并审核的内容。Owner 胶囊绑定规范意图的授权声明。
快照与资源边界
expected_parent_hash 不匹配时返回错误 -32041,并附带当前 height 和 block_hash。刷新 State 后重新准备。规划器还检查资金记录的链顶绑定和待处理策略快照。
请求编码上限为 32 KiB。NOID 资金发现最多读取 16,384 个已验证来源。归集可减少资金碎片化所有者的来源数量。全部原生页、动作、市场和费用检查采用已安装运行时的常规接纳预算。
交易默认值与期限规则同原生钱包 API。传入 slippage_bps: 1000 以采用桌面 GUI 的 10% 容差,或指定明确最小输出。通过 getMempoolEntry 和规范收据跟踪提交操作。过期未成交策略离开内存池后,其未花费来源可以用于新计划。