UGE 开发者联调控制台

verified chain-source · 发布链 uptick_7777-1(EVM 7777)· 凭证仅存本浏览器,绝不上传第三方
未连接

应用概览

保存凭证后点击「刷新」。

注册新应用(自助,无需联系运营方)

提交后立即返回 app_id 与 api_key。api_key 只显示这一次,关闭页面即无法找回(只能找运营方重置)。

Webhook

配置 / 修改回调地址

验签:x-uge-signature = HMAC-SHA256(signing_secret, 原始请求体)。signing_secret 仅在配置 webhook 时返回一次,控制台不展示历史值、不存储——请当场保存。

QBT 联调助手(emitter 路径)

填写业务参数 → 本地复算 family_id 与 proof_hash → 生成 reportQBT calldata;由你自己的 reporter 私钥在你的环境执行(控制台不收集私钥)。执行后 ≤10 分钟运营方 sync 结算并回调 webhook。

Family 查询

PAV(可审计 Gas 权益账本)

红线提醒:阶段 1/2 为「可审计的 Gas 权益账本」,不得表述为 Gas 抵扣 / 返还。

挑战 Attestation(MetaMask 签名 → 服务端中继上链)

挑战是 permissionless 动作:任何人在挑战窗口内可对一笔 attestation 提交 evidence_hash 发起挑战,需押 challenge_bond(由服务端中继账户垫付,dev 链联调用)。
架构:MetaMask personal_sign 仅证明 EVM 地址所有权 + 防重放 + 限流;链上 MsgChallengeAttestation 由宿主机 watcher 用链 key 签发——你的 EVM 私钥不离开 MetaMask。
未连接

可挑战的 Attestation

发起挑战

执行记录(最近 50 条)

奖励(查看 / 领取)

链上没有「按笔领取」:UGE 为 epoch 提交 attestation,挑战窗口过后由 permissionless 的 MsgFinalizeAttestation 一次性结算,奖励由链自动从奖励池转入 app owner。 这里的「领取」= 对挑战窗已过、尚未终局的 attestation 触发这笔结算交易(服务端中继代发,gas 由中继账户垫付)。
架构:MetaMask personal_sign 仅证明 EVM 地址所有权 + 防重放 + 限流;链上交易由宿主机 watcher 用链 key 签发——你的 EVM 私钥不离开 MetaMask。
未连接

查看奖励

可领取(挑战窗已过、未终局)

查看奖励后自动刷新。

领取记录(最近 50 条)

申报 Attestation(MetaMask 签名 → 服务端中继上链)

申报 = 把一段时间窗口内的订单证据打包成 attestation 承诺提交上链:三个 sha-256 哈希 (attestation_hash / evidence_root / result_commitment)+ 该 epoch 的 reward_requested(auptick 整数)。 挑战窗口(默认 500 块)过后即可在「奖励」tab 触发结算发放。
链上约束:发送者必须是应用注册的 attestation_submitter——此处由宿主机链 key(mykey)代签,(app_id, epoch) 键唯一、重复提交会被链拒绝。
架构:MetaMask personal_sign 仅证明 EVM 地址所有权 + 防重放 + 限流;链上 MsgSubmitAttestation 由宿主机 watcher 签发——你的 EVM 私钥不离开 MetaMask。
未连接

提交申报

申报记录(最近 50 条)

数据契约速查

QBT 字段约束

字段约束
app_id32 字节小写 hex(64 字符)
tier枚举 A/B/C(emitter uint8:A=0 B=1 C=2)
action_typePAID_ORDER=0 · QUALIFIED_ACTIVATION=1 · QUALIFIED_RETENTION=2 · VERIFIED_SERVICE=3;须在应用 profile 白名单内
underlying_action_id1-128 UTF-8 字节;同族 QBT 的分组键
gross / refund十进制整数字符串 ^0$|^[1-9][0-9]*$(最小单位),refund ≤ gross
proof_hash32 字节 hex;建议 SHA-256(规范化订单证据 JSON)

family_id 计算

family_id = SHA-256( "UGE-QBT-FAMILY-V1" || 0x00 || app_id(32 原始字节) || underlying_action_id(UTF-8) )

Family 结算语义

状态含义
ACCEPTED_PRIMARY族内首笔,qnr += net
DEDUPLICATED_FAMILY同族同参重放,0 计入
CONFLICTED_FAMILY / REJECTED_FAMILY_CONFLICT同族参数冲突,整族回退(qnr -= 族 net)
REJECTED_DUPLICATE_SOURCEsource_ref 重复(链上路径 = evm:{chain}:{tx}:{log},天然唯一)

Webhook 事件

事件触发载荷
webhook.test配置 webhook 后立即configured_at
qbt.processedQBT 结算(链 sync 或直传)status / family_id / qnr / ail(+ chain_id / block_height)
pav.createdPAV 构建成功epoch / pav_id / integrity / verification_valid

链上调用

QBTEmitter @ 0x472D4Ac31581AA8349ca8E2c1f42C87Daee5b09F(uptick_7777-1 · EVM 7777 · registry uptick-dev-7777-emitter-0.1.0)
reportQBT(bytes32 appId, uint8 tier, uint8 actionType, address subject,
          string underlyingActionId, string denom, uint256 gross, uint256 refund, bytes32 proofHash)
防重:qbtId = keccak256(chainid, emitter, reporter, familyId, proofHash) → 重复 revert "duplicate QBT"

完整规格见 docs/DEVELOPER-CONSOLE-DATA-SPEC-0.1.md;接入步骤见《UGE接入开发文档》。