EMO's Blog

Thinking will not overcome fear but action will.

chainlink源码分析六

OCR流程分析

chainlink源码分析 EMO’s Blog 链下聚合DataFeed 简介 所谓的DataFeed服务,本质上是通过不断更新的方式在链上维护一个链下数据的镜像,方便链上合约访问。很明显这种方式的缺点是,维护成本高,数据的时效性差以及数据范围受限。主要是为了满足对于一些需求很大的特定数据的访问,如 Eth 的价格等。 目前提供两种实现方式 链上聚合喂价 链下聚...

chainlink源码分析五

DataFeed链上聚合源码解析

chainlink源码分析 EMO’s Blog 简介 DataFeed 这边的核心功能主要涉及到对多节点提交的多结果进行根据聚合规则得到一个确定性的唯一结果。其他的主要就是一些经济模型相关的奖励机制了。DataFeed 主要分为两种,一种是链上聚合,一种是链下聚合。其中链上聚合,需要每个节点都直接将自己获取到的结果上传到聚合合约当中,缺点是会产生大量的 gas 消耗,优点是...

chainlink源码分析四

VRF源码解析

chainlink源码分析 EMO’s Blog 介绍 这个服务是链下节点为用户提供可验证的 VRF 随机数。涉及两个合约,Consumer 和 Coordinator ,其中 Consumer 比较简单,核心的方法都是在 Coordinator 合约上的,会主要针对这个合约讲解。 而使用 VRF 服务,有两种方式 VRF Direct funding 和使用 A...

chainlink源码分析三

AnyAPI源码解析

chainlink源码分析 EMO’s Blog 介绍 basic request model 用于实现 链下 api 访问服务 。这种模型其实只是提供了一个链上链下交互的桥梁,提供了成熟的框架帮助开发者快速开发。其实这里并没有解决 去中心化的链下节点返回的结果的可信性 问题。因为 api 的访问是单点的,实际上并没有经过去中心化的共识机制来提高 api 返回结果的可信性。所...

chainlink源码分析二

LinkToken源码解析

chainlink源码分析 EMO’s Blog 简介 link token 是继承于 ERC677 的一个代币合约。ERC677 和 ERC20 比较相似,只不过 ERC677 增加了 transferAndCall 方法,支持在代币转账的时候调用特定的函数。这个代币合约比较简单,大概看看代码就好。 代码分析 ERC677 相比起 ERC20 ,ERC677 添加了一个新...

chainlink源码分析一

chainlink总览

chainlink源码分析 EMO’s Blog 预言机简介 在区块链当中,我们需要任何一次操作产生的结果都是具备确认性的。也就是,任何节点任何事件执行操作产生的结果都是确定的。只有这样,区块链才能验证操作并达成一致。 但是在和链下世界的交互当中,产生的结果收到链下世界自身状态的影响,从而会导致交互的结果不具备确认性。比如,链上想要通过访问 API 去获取关于温度的信息,不...

OpenZeppelin分析三

Governance源码解析

OpenZeppelin EMO’s Blog 简介 Governance板块,主要是为了方便用户构建自己的治理合约。所谓的治理合约,其实就是围绕 Proposal 展开的,简要归纳下来它的流程如下 提起 Proposal Proposal 进入投票阶段,成员利用 token 对 Proposal 进行投票 投票阶段结束后,进行计票 Proposal 如果通...

OpenZeppelin分析二

Security源码解析

OpenZeppelin EMO’s Blog security 主要是实现了几个security相关的通用的安全设计模式 Pausable 可以让合约停止服务 PullPayment 不自动转账而是让用户来自己领取 ReentrancyGuard 防止回调重入 上面三个合约的代码和功能都很简单,就直接看看代码就行了。 Pausable // SPDX-L...

OpenZeppelin分析一

Token源码解析

OpenZeppelin EMO’s Blog token token根据其 同质化性质(fungibility) 分为两种, 同质化token,如Ether,我们在意的是我们的balance的大小 非同质化token,如NFTs,我们在意的是我们有什么 每一种token的开发,都是一个链上的合约,那么如果要让合约和合约之间能够相互协作,就需要有统一的标准,下面...

AQS源码分析

AbstractQueuedSychronizer设计思路与细节

AQS EMO’s Blog 概览 AQS总体是基于两种队列来设计的 CLH队列,这是一种虚拟队列,没有一个队列实体,只由节点自己来维护队列关系。主要承担的功能是t acquire锁 release锁 Condition队列,这是一个单向链表,主要是用来实现和Sychronized里的wait,notify以及not...

{ % if page.mermaid % } { % endif % }