Ares Wikipedia

Ares Wikipedia

  • 文档
  • 贡献
  • Languages icon中文
    • English

›Oracle

概览

  • 概述
  • 延伸
  • 术语

白皮书

  • 介绍
  • 技术框架
  • 数据市场
  • 经济模型

学习

    质押挖矿

    • trojan质押
    • iliad 质押
    • 资产跨链桥
  • 流动性挖矿
  • Gladios

    • 账户
    • 领取测试币
    • 转账
    • 设置链上身份

    Oracle

    • Ares预言机
    • 预言机提供的支持
    • 预言机经济
    • 抵押扩展

    插槽竞拍

    • Kusama
    • Dot
  • 获取价格
  • 获取交易对

构建

    Basic

    • 跨链获取价格

    Gladios指南

    • 搭建验证人节点
    • 报价节点RPC工具

节点

  • 硬件环境
  • 运行节点
  • 运行验证节点
  • 运行验证节点 Q&A
  • 启动预言机服务
  • 启动Warehouse服务
  • Warehouse接口文档

主网

    验证人教程

    • 如何创建Odyssey账户
    • 映射ERC20/BEP20 ARES代币
    • 如何绑定 stash & controller账户
    • 验证人节点程序升级/部署
    • 设置 Session Keys
    • 验证人节点校验
    • 惩罚校验&提取资产

    网络提名人教程

    • 创建Odyssey账户&质押
    • 为任一或多个节点提名
    • 查询惩罚情况&提取资产

Ares预言机

Tx 方法

submit_local_xray

offchain-work调用此方法将本地节点上的一些调试信息发送到链上。

此调用无需签名

host_key: 一个节点的随机u32
request_domain: 节点当前设置的仓库参数
authority_list: 本地存储的ares-authority公钥列表
network_is_validator: 是否是验证节点
  • submit_local_xray的参数
host_key: u32
request_domain: RequestBaseVecU8
authority_list: AuthorityAresVec
network_is_validator: bool

submit_ask_price

用户通过此交易发起一个询价请求,该请求是付费的。

此交易需要用户签名

max_fee: 可以承受的最高费用。
request_keys: 交易对的列表,如果有多个交易对,用逗号隔开,如:eth-usdt,dot-sudt等。
  • submit_ask_price 的参数
max_fee: BalanceOf
request_keys: Vec

submit_forced_clear_purchased_price_payload_signed

offchian-worker调用此方法,提交并保存付费的结果数据。如果由purchase-id提交的验证人的数量已经达到阈值要求,那么平均价格将被汇总并标记为 PURCHASED_FINAL_TYPE_IS_PARTICIPATE

此调用无需签名

– price_payload: 提交的签名数据
  • submit_forced_clear_purchased_price_payload_signed 的参数
price_payload: PurchasedForceCleanPayload
signature: OffchainSignature

submit_purchased_price_unsigned_with_signed_payload

offchian-worker调用此方法,提交并保存购买结果数据。如果所有验证者都提交价格结果,那么平均价格将被汇总,并标记为PURCHASED_FINAL_TYPE_IS_ALL_PARTICIPATE。

此调用无需签名

– price_payload: 提交的签名数据
  • submit_purchased_price_unsigned_with_signed_payload 的参数
price_payload: PurchasedPricePayload
signature: OffchainSignature

submit_price_unsigned_with_signed_payload

offchian-worker调用此方法,提交并保存免费的ares-price结果

此调用无需签名

price_payload: 要上传的Ares-price数据
  • submit_price_unsigned_with_signed_payload 的参数
price_payload: PricePayload
signature: OffchainSignature

submit_create_pre_check_task

提交一个预检查任务。当一个新的验证人被选出时,在era到来前,将通过这个方法提交一个pre_check_task任务。

该任务用于确保验证节点的ares-price响应功能可以正常使用。

此调用无需签名

precheck_payload: 预先检查任务数据,包括验证人和他们的授权账户数据。
  • submit_create_pre_check_task 的参数
precheck_payload: PreCheckPayload
signature: OffchainSignature

submit_offchain_pre_check_result

当验证者响应 pre-check 任务时,将 pre-check 结果数据提交到链上。 如果通过审核,它将在下一个选举周期中参与选举,而不是立即通过选举。

此调用无需签名

preresult_payload: 审查响应结果数据,这将在链上进行比较
  • submit_offchain_pre_check_result 的参数
preresult_payload: PreCheckResultPayload
signature: OffchainSignature

submit_offchain_http_err_trace_result

当offchain-work的http请求出现错误时,错误数据将通过这个请求提交到链上,以供审查。

此调用无需签名

err_payload: Http错误数据
  • submit_offchain_http_err_trace_result 的参数
err_payload: HttpErrTracePayload
signature: OffchainSignature

update_purchased_param

更新与购买报价相关的参数设置,需要技术委员会的签名才能执行。

调用人必须是技术委员会

submit_threshold: 聚合的阈值(百分比)
max_duration: 等待全节点响应的最大延迟
avg_keep_duration: 保存结果的最大延迟
  • update_purchased_param 的参数
submit_threshold: Percent
max_duration: u64
avg_keep_duration: u64

update_ocw_control_setting

更新Ares-oracle的控制参数

调用人必须是技术委员会

need_verifier_check: 是否启动验证人检查程序
open_free_price_reporter: 是否启用了免费价格模式
open_paid_price_reporter: 是否启用了问价模式
  • update_ocw_control_setting的字段
need_verifier_check: bool
open_free_price_reporter: bool
open_paid_price_reporter: bool

revoke_update_request_propose

撤销请求令牌列表上的密钥对。

调用人必须是技术委员会

price_key: 一个价格对,如btc-usdt
  • revoke_update_request_propose 的参数
price_key: Vec

update_request_propose

修改或添加一个价格对到请求列表。

调用人必须是技术委员会

price_key: 一个价格对,如btc-usdt
price_token: 一个价格代币,如btc
parse_version: 解析版本,目前只支持参数2。
fraction_num: 解析数字时的分数
request_interval: 验证者在链上提交价格的时间间隔
  • update_request_propose 的参数
price_key: Vec
price_token: Vec
parse_version: u32
fraction_num: FractionLength
request_interval: RequestInterval

update_allowable_offset_propose

更新允许偏移参数的值,以确定提交价格的异常范围

调用人必须是技术委员会

offset: 一个百分比值
  • update_allowable_offset_propose 的参数
offset: Percent

update_pool_depth_propose

更新价格池的深度。当价格池达到最大值时,平均价格将被汇总并放在链上。

调用人必须是技术委员会

depth: 深度
  • update_pool_depth_propose 的参数
depth: u32

update_pre_check_token_list

更新用于检查验证人价格功能的交易对列表

调用人必须是技术委员会

token_list: 交易对列表
  • update_pre_check_token_list的字段
token_list: TokenList

update_pre_check_session_multi

session-multi 表示轮换 era 前的触发预检查时段

调用人必须是技术委员会

multi: integer
  • update_pre_check_session_multi 的参数
multi: T::BlockNumber

update_pre_check_allowable_offset

验证时允许预检的最大偏移量

调用人必须是技术委员会

offset: 百分比
  • update_pre_check_allowable_offset 的参数
offset: Percent

工作流程

验证人审计

  1. Ares-oracle通过IStakingNpos::pending_npos Trait 获得新选出的验证人,并通过submit_create_pre_check_task交易将预检查任务提交给链。
  2. 使用IStakingNpos::near_era_change Trait 来确定是否已达到接近选举的session周期,如果是,则通过submit_offchain_pre_check_result交易向链提交新的验证任务。
  3. 没有通过审查的验证人将不会出现在选举目标的名单中。

免费交易价格

  1. 当offchain工作时,将根据authorship提供的数据获得当前区块的作者。
  2. 如果区块作者对应的 authority-id与本地 keystore用户一致,则获得区块对应的 交易对列表,并发送http请求以获得其价格,然后调用 submit_price_unsigned_with_signed_payload 交易,将结果上传至链。
  3. 链将验证提交的内容是否与当前区块的区块作者相匹配,如果是,结果将被存储在价格池中。
  4. 当 价格池达到指定的深度(这个深度可以通过交易 update_pool_depth_propose 修改)。平均价格聚集事件Event::AggregatedPrice发生,这将在链上产生一个新的平均价格。
  5. 与 trade pairs 相关的价格可以通过 "aresOracle.aresAvgPrice"存储读取。

付费的交易价格

  1. 用户可以提交一个submit_ask_price交易,让链上的所有节点进行报价。但这需要支付一些费用,但比免费获得价格更有时效性。
  2. 如果成功提交任务,你需要从Event::NewPurchasedRequest事件中获得purchase_id,将被用作查询价格时的键值。所需支付的金额与交易对请求的数量有关。如果参与响应的节点低于响应阈值,则任务将失败,费用将不会被扣除。(这个阈值可以通过交易update_purchased_param修改)。
  3. 一旦价格被成功汇总,将产生一个Event::PurchasedAvgPrice事件。并且相关的费用将从用户账户中扣除,之后用户可以通过aresOracle.purchedAvgPrice从存储中读取相应的结果数据。

节点提交数据时的验证

  1. 当offchain_worker被执行时,将获得当前区块的作者,如果其对应的ares-authority在本地keystore存在。它将获得提交价格的权利。
  2. 价格被提交后,validate_unsigned 中方法将再次确认请求的出块人在验证人集合中。
  3. 最后,通过Runtime的apply_extrinsic和validate_transaction中的AresOracleFilter完成第三次验证,这一点非常重要,如果没有这一层检查,可能会在分叉过程中产生多余的提交,或者无法避免旧块攻击。
← 设置链上身份预言机提供的支持 →
  • Tx 方法
    • submit_local_xray
    • submit_ask_price
    • submit_forced_clear_purchased_price_payload_signed
    • submit_purchased_price_unsigned_with_signed_payload
    • submit_price_unsigned_with_signed_payload
    • submit_create_pre_check_task
    • submit_offchain_pre_check_result
    • submit_offchain_http_err_trace_result
    • update_purchased_param
    • update_ocw_control_setting
    • revoke_update_request_propose
    • update_request_propose
    • update_allowable_offset_propose
    • update_pool_depth_propose
    • update_pre_check_token_list
    • update_pre_check_session_multi
    • update_pre_check_allowable_offset
  • 工作流程
    • 验证人审计
    • 免费交易价格
    • 付费的交易价格
    • 节点提交数据时的验证
关于我们

首个链上验证的去中心化跨链预言机服务协议,为万链互联和数字经济提供安全可信的数据服务。

Email   info@aresprotocol.io
快速链接
网站博客代币经济学购买代币挖矿
资源
文档Github区块浏览器
社会媒体
Copyright © 2023 Ares Protocol 保留所有权利.