定义及理解
区块链外信息写入区块链内的机制,一般被称为预言机 (oracle mechanism) 。
预言机的功能就是将外界信息写入到区块链内,完成区块链与现实世界的数据互通。它允许确定的智能合约对不确定的外部世界作出反应,是智能合约与外部进行数据交互的唯一途径,也是区块链与现实世界进行数据交互的接口。
工作机制
这就是理想中预言机的工作流程,即用户的智能合约把请求给链上 Oracle 合约,通过链下的 API 接口获得外部数据,更确切的说是外部把数据给链上的 Oracle 合约,然后 Oracle 合约再把数据给用户的智能合约。
现有项目及其技术细节
预言机的差别在于数据来源(一种或多种来源)、信任模型(中心化或去中心化)和系统架构(立即读取、发布-订阅和请求-响应)。
我们还可以根据以下因素区分预言机:是否检索外部数据供链上合约使用(输入预言机)、将区块链中的信息发送给链下应用程序(输出预言机)或在链下执行计算任务(计算预言机)。
1. Oraclize:为以太坊提供中心化预言机服务
中心化预言机会因为单点故障(网络宕机、节点拒绝提供服务)等问题瘫痪
问题较为明显,没有过多展开
2. Chainlink:以太坊上第一个去中心化预言机解决方案
chainlink中有多个聚合数据的节点,每个节点各自通过 适配器或代码中间件(图中的Adapter) 从不同的数据源(Web Server) 中获取数据,然后节点之间经过特定的共识达成一个结果并将结果通过交易传至链上的预言机合约以供链上的项目使用。(chainlink中预言机节点之间的共识实际上是 可信节点的数据上链然后在链上取中位数
EG. Chainlink Data Feeds(chainlink底下的喂价平台,主要是提供可信的货币价值
chainklink的核心机制 — 三层聚合:
① 数据源聚合:原始市场数据首先在交易所(如Coinbase、Uniswap)层面完成首次聚合,交易平台基于实时交易活动对价格指标进行初步清洗和计算。专业数据提供商(CoinMarketCap、CoinFecko等) 通过多源采集系统抓取各交易所行情数据,采用交易量加权算法生成基准价格,并在计算过程中实施异常检测机制,自动过滤无效报价和偏离值。
② 节点运营商聚合:如右图展示,chainlink里各个节点从不同数据源(>=3个)中获取价格数据,在本地 二次聚合 。但是这些数据不会立即被同步到链上
③ 智能合约网络聚合:当触发更新条件,各个节点把本地聚合值传到链上,在链上执行 **聚合合约(Aggregator)**进行 三次聚合,生成最终的链上价格
更新条件:偏差超过了容忍的阈值 或 达到设定的刷新周期
其他:2/3比例节点的要求 ……
安全性保障
对chainlink节点的选择依赖于历史声誉,声誉高更具有优先权被选择(虽然声誉高的节点更有保障,但是这可能导致中心化
3. DOS Network:支持多条主流公链的去中心化预言机服务网络
chainlink每次更新数据,都根据过往声誉选择节点,每个节点把数据提交到链上,在链上进行聚合,gas消耗高。
DOS Network 的核心区别是,**数据提供节点选择上的去中心化。**其每次报价的节点通过 VRF 随机选择,然后通过门限签名在 链下达成 共识,聚合结果最后上传到链上验证。
此种方式在节点端更加去中心化,攻击难度更高,但如果节点数量很多,则节点收益可能难以保证。
DOS 是由用户自己选择数据源,然后通过随机选择节点来防止攻击,只是尽可能避免数据被篡改,相比chainlink并没有有效手段提高数据质量
研究方向
1. 数据可信性与聚合机制
通过多源数据验证、分布式共识算法提升数据可信性,解决单点数据源易受攻击的问题。
- 多层级聚合:Chainlink 采用链上链下三层聚合(数据源层、节点本地聚合层、链上合约聚合层),确保价格数据可靠性
- 阈值签名与零知识证明:DOS Network通过BLS阈值签名链下聚合结果,并结合zkSNARKs验证计算过程,减少链上开销
- 随机预言机模型(ROM):Chainlink VRF,在区块哈希的基础上加上了预言机的私钥作为随机数函数的输入,使得输出随机数无法预测
2. 隐私保护与数据安全
在保证数据可用性的同时,防止敏感信息泄露。
- 多方安全计算(MPC):如杭州云象网络的专利技术,结合可信执行环境(TEE)实现链下数据隐私处理
- 同态加密与零知识证明:上海区块链专项行动方案提出研发全同态加密硬件加速芯片,提升密态数据处理效率
- 数据脱敏与访问控制:农业科技成果交易场景中,通过动态权限管理和链上-链下存储分离保护交易隐私
3. 跨链互操作性与标准化
解决多链环境下预言机数据互通问题。
- 跨链桥协议:如上海区块链方案提出基于可信执行环境(TEE)的跨链网关,支持异构链互操作
- 模块化架构:RedStone通过模块化设计适配EVM与非EVM链,实现多链数据流统一管理
- 标准化接口:Oracle Database 23ai引入AI Vector Search,支持跨链数据检索与智能合约交互
4. 安全模型与攻击防御
针对预言机操纵攻击(如价格预言机攻击)提出防御策略。
- 时间加权平均价格(TWAP):通过延长数据采样窗口降低闪贷攻击风险
- 动态数据源切换:DOS Network支持异常数据源自动切换至备用源,提升鲁棒性
- 经济博弈模型:Witnet通过质押与罚没机制激励节点诚实行为,降低女巫攻击概率
5. 去中心化身份与节点管理
提升预言机节点的去中心化程度与身份可信性。
- NFT映射节点身份:如开放区块链预言机方案使用非同质化通证(NFT)跟踪节点加入状态,避免虚拟货币抵押的合规问题
- 分布式密钥生成(DKG):基于椭圆曲线群的DKG算法实现链下数据聚合与链上验证
- 声誉系统:Chainlink通过节点历史表现评分优化数据源选择策略
Q & A
- 区块链是个去中心化系统,但是外界可获取的是个中心化系统(数据全由数据源说了算,是否可信)。简单来说,预言机只是把输入答案这个事情自动化一点,如果输错了也是错了。预言机是否是伪概念???
离开具体场景谈中心化、去中心化和信任就容易得出错误的结论。
- “飞机晚点了没” - 正常是不是去查一下飞常准或者google flights?
- “现在几度” - 一般是不是用气象软件或雅虎天气搜一下?
- “现在BTC/USD什么价格” - 是不是看一下CoinMarketCap或者某个常用交易所的数据?
我们已经默认了 数据源 可信。追根到底信任总是有一个载体,不会凭空产生。
预言机也正是如此,由智能合约来选择 数据源。智能合约承认数据源可信 是预言机的前提。
这里实际上是对预言机的去中心化理解有误。
预言机去中心化 的概念是它在将外界数据送入区块链系统这一过程是去中心化的,没有作恶篡改输入。
而预言机的作用是将区块链与外界连通,让智能合约有大规模应用场景。
但实际上,其实这个问题的目的应该是想要追求一种 绝对可信 的环境,过程中的任意一个环节都不能有中心化因素的参与。感觉有点像 元宇宙,除非外部世界也是用区块链系统组织起来(如头号玩家里的虚拟世界,一切事物都写在代码里),否则没办法做到这一点**。**
总结
预言机只是把外界数据导入了区块链中,只能通过 自己不作恶/不出错…… + 选一个相对合适、可信的数据源 来确保获取到的数据 尽可能可信