Pragma:Starknet原生去中心化预言机

Pragma是Starknet上的原生去中心化预言机,利用Cairo实现完全信任最小化的数据喂价。它去除了链下基础设施,原始数据由白名单提供商直接推送到链上,并在智能合约层完成聚合。文章介绍了Pragma的代码库结构,包括账户、管理员、数据条目、操作工具库、预言机主合约、发布者注册表、聚合计算引擎和VRF随机数模块。提供了测试套件、部署地址(Starknet Sepolia和Mainnet)和本地部署步骤。Pragma旨在为Starknet上的DeFi协议提供便捷、安全的数据服务。

Pragma,Starknet 的原生可验证预言机。

什么是 Pragma?

Pragma 是一个原生构建在 Starknet 上的去中心化预言机。它利用 Cairo 使数据馈送计算完全无需信任。

  • Pragma 从底层设计,消除了当前预言机设计中的所有信任假设。没有链下基础设施,原始数据由白名单数据提供者直接推送到链上,然后聚合在智能合约层面进行。
  • Pragma 提供了顶级的开发者体验,并经过了 Starknet 上 DeFi 关键参与者的审查。目标是尽可能简化 DeFi 协议的工作。

概述

  • <a href="/src/account">Account contract</a> 主要用于测试目的和作为参考。
  • <a href="/src/admin">Ownable contract</a> 用于访问控制。
  • <a href="/src/entry">Entry & Data Structures</a> 定义了协议中使用的数据结构以及通用的聚合方法。它从底层设计,确保添加新的入口类型可以无缝进行,而不涉及任何破坏性更改。
  • <a href="/src/operations">Operations</a> 定义了一些实用工具库(时间序列、排序、位操作),这些将用于不同的聚合方法和优化存储操作。
  • <a href="/src/oracle">Oracle</a> 是协议的主要入口点,最终开发者将与之交互以获取任何类型的数据。它经过精心设计和构建,以实现向后兼容性,并大量利用了 Cairo 的独特方面,特别是枚举、特征和泛型。
  • <a href="/src/publisher_registry">Publisher Registry</a> 处理不同发布者以及他们被允许推送数据的来源的注册。
  • <a href="/src/compute_engines">Summary Stats</a> 作为更复杂数据聚合(如波动率均值)的代理合约。
  • <a href="/src/randomness">Randomness</a> 是 VRF 请求者实现,还包括一个如何请求随机数的示例。

测试

  • <a href="/src/tests">Test suite</a>,单元测试直接提供在函数实现下方,而完整流程集成测试则在该测试套件中。目前使用 cairo-test,并彻底测试任何边缘情况。

缺少一些关键的测试功能,如模糊测试、合适的Hook函数和模拟作弊码。随着 Cairo 工具的成熟和改进,这些功能将会出现。

文档

更全面的文档可以在我们的官方网站上找到。

审计

Pragma Starknet 已经过行业中许多其他关键项目的同行评审。它也已由 Nethermind 审计,你可以在 <a href='/audits'>audits</a> 文件夹中找到完整报告。

部署地址

此仓库将逐步取代之前在 Cairo 0 中的 Pragma 实现,你可以在此处找到。

Starknet Sepolia

Starknet Mainnet

Pragma Devnet

本地部署

先决条件:

  1. 编译合约
cd pragma-oracle
scarb build
  1. 安装依赖
cd ../pragma-deployer
python -m venv .venv && source .venv/bin/activate
poetry install
  1. 设置环境文件
## 确保你在 pragma-deployer 文件夹中
cp .env.example .env

根据你希望部署的位置填充变量。

  1. 部署合约并设置

确保你的本地开发网络正在运行,请参阅此处的最新说明。

你也可以通过将 STARKNET_NETWORK 设置为其他值(例如 sepoliamainnetpragma_devnet)来指定不同的网络。


STARKNET_NETWORK=devnet poetry run deploy-pragma --port [DEVNET_PORT]
STARKNET_NETWORK=devnet poetry run deploy-summary-stats --port [DEVNET_PORT]
STARKNET_NETWORK=devnet poetry run register-publishers --port [DEVNET_PORT]

合约声明/部署后,你将在仓库根目录的 deployments/ 文件夹下找到它们。

问题和反馈

如有任何问题或反馈,请发送电子邮件至 <matthias@pragma.build>

许可证

代码采用 MIT 许可证,请参阅 <a href="./LICENSE">LICENSE</a>。

  • 原文链接: github.com/astraly-labs/...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
astraly-labs
astraly-labs
江湖只有他的大名,没有他的介绍。