DAO 合约接入与状态查询¶
先确认网络与 ABI¶
目标账户通常为 dao.gov、dao.treasury、flon、voter.reward,仍应以所选网络配置和已部署 ABI 为准。读取 chain ID、代码哈希、ABI、global/config;未初始化或缺关键 action 时保持只读,不生成假数据或模拟成功。
下例仅查询本机节点。远程使用前替换 RPC 并独立核对 chain ID:
export FULLON_RPC='http://127.0.0.1:8888'
curl --fail --silent --show-error --max-time 15 \
-X POST "$FULLON_RPC/v1/chain/get_info" \
-H 'Content-Type: application/json' --data '{}' | jq
curl --fail --silent --show-error --max-time 15 \
-X POST "$FULLON_RPC/v1/chain/get_table_rows" \
-H 'Content-Type: application/json' \
--data '{"json":true,"code":"dao.gov","scope":"dao.gov","table":"riskconfigs","limit":100}' | jq
表与 scope¶
| code | table | scope | 用途 |
|---|---|---|---|
| dao.gov | global / config | dao.gov | 管理、票权来源、总量、基础规则 |
| dao.gov | powers | dao.gov | 当前账户 POWER |
| dao.gov | checkpoints | voter 账户名 | 票权序列历史 |
| dao.gov | proposals / policysnaps | dao.gov | 提案与风险/规则快照 |
| dao.gov | riskconfigs / actpolicies / allowlist | dao.gov | 风险门槛、动作等级和执行授权 |
| dao.gov | endorsements / ballots | proposal_id 的十进制字符串 | 附议与投票记录 |
| dao.treasury | global / assets / grants | dao.treasury | 治理账户、资产账目与预算 |
| dao.treasury | payments | grant_id 的十进制字符串 | 分期付款记录 |
proposal_id=1 的查询示例,须换成实际 ID:
curl --fail --silent --show-error --max-time 15 \
-X POST "$FULLON_RPC/v1/chain/get_table_rows" \
-H 'Content-Type: application/json' \
--data '{"json":true,"code":"dao.gov","scope":"1","table":"ballots","limit":100}' | jq
分页读取 more / next_key;不要将一次 limit=100 的结果当作全量。uint64、资产整数和 bps 运算避免 JavaScript 浮点精度损失。接口的时间字段按链上语义解释;当前 UI 阶段不能只看 status,还需比较窗口。
用户动作¶
| 方法 | 参数/约束 |
|---|---|
| propose | proposer、proposal_type、title、summary、content_hash、metadata_uri、discussion_uri、actions;详见 ABI |
| endorse | endorser、proposal_id;个人门槛与唯一记录 |
| castvote | voter、proposal_id、choice;0 反对、1 赞成、2 弃权,不能改票 |
| activate / finalize / queue / execute / expire | proposal_id;受阶段、时间和策略限制 |
| cancel / setforum | proposer 身份,且仅附议阶段 |
以下是两种独立操作的语法示例,不是需要连续执行的步骤;会产生写交易。只在隔离链或已核对的测试网替换账户、ID、权限并独立满足各自阶段后使用,不在主网试跑:
fucli -u "$FULLON_RPC" push action dao.gov endorse \
'{"endorser":"voteracct","proposal_id":1}' -p voteracct@active
fucli -u "$FULLON_RPC" push action dao.gov castvote \
'{"voter":"voteracct","proposal_id":1,"choice":2}' -p voteracct@active
冻结数据与实际授权¶
proposal_action 包含 contract、action_name、data,没有逐动作 authorization 字段;execution_hash 对打包后的 action 列表求哈希。执行时从 allowlist 读取 authorization_actor / authorization_permission。核验版本的 setallow 禁止修改既有规则的授权身份/权限,但 enabled 与大小限制可变;queue/execute 仍重新校验策略。
按目标 ABI 序列化 bytes,核对原始内容 SHA-256,不将 forum 内容或页面标题当作可执行指令。新 ABI/新参数应重新构造提案,不能在已冻结提案上替换。记录网络、提案 ID、快照、交易 ID 和目标状态;等 LIB 后再完成业务确认。
来源限制¶
源码描述不证明任意链部署相同实现。本次发布附有主网代码哈希,但没有进行源码到链上 WASM 的可复现构建比对。附议累计 POWER 的实现边界见参数页。
来源与范围¶
源码、查询快照与资料差异。实现说明基于所列提交;运行配置以目标网络当前状态为准。