Blog is A Room

Welcome to Nicodechal's Blog

patch 和 diff 命令的使用

Linux 常用命令使用记录

diff 命令 此用于比较两个目录或文件的差异,并输出他们之间的差异,差异可以理解为一系列的操作,对于源文件 A 和目标文件 B,使用 diff 结果描述的操作(对 A 文件增删改操作)后,可以将 A 文件内容修改到和 B 一致。使用下面命令输出 A 和 B 之间的差异: 123diff A B # 输出 A 文件和 B 文件的差异。diff -r A B # 输出 A *文件夹* 和 B......

EIP-225: Clique 权威证明 ( proof-of-authority ) 一致性协议

EIP-225 阅读及翻译

作者 Péter Szilágyi 讨论区 https://github.com/ethereum/EIPs/issues/225 状态 Final 类型 Standards Track 分类 Core 创建时间 2017-03-06 摘要 Clique 是一种权威证明一致性协议,它切合以太网主网的设计,所以可以以最小影响添加到客户端中。 动机 以太坊......

以太坊虚拟机执行模型

以太坊 Yellow Paper 学习笔记(五)

执行模型说明了在特定的字节码指令和环境数据下系统状态如何被修改。这部分使用以太坊虚拟机 EVM 描述。该虚拟机是一个准图灵完备的虚拟机,因为其能进行的计算受限于 gas。 执行环境 执行模型使用 Ξ\XiΞ 函数描述: (σ′,g′,A,o)≡Ξ(σ,g,I)(\mathbf{\sigma}',g',A,\mathbf{o})\equiv\Xi(\mathbf{\sig......

以太坊中的消息调用流程

以太坊 Yellow Paper 学习笔记(四)

之前已经提到过,交易有两种类型,一种是消息调用,使用 Θ\ThetaΘ 表示,合约创建其实就是创建账户的过程,账户是包含合约代码的账户。 (σ′,g′,A,z,o)≡Θ(σ,s,o,r,c,g,p,v,v~,d,e,w)(\mathbf{\sigma'},g',A,z,\mathbf{o})\equiv\Theta(\mathbf{\sigma},s,o,r,c,g,p,......

以太坊中的合约创建流程

以太坊 Yellow Paper 学习笔记(三)

之前已经提到过,交易有两种类型,其中一种为合约创建,使用 Λ\LambdaΛ 表示,合约创建其实就是创建账户的过程,账户是包含合约代码的账户。 (σ′,g′,A,z,o)≡Λ(σ,s,o,g,p,v,i,e,ζ,w)(\mathbf{\sigma'},g',A,z,\mathbf{o})\equiv\Lambda(\mathbf{\sigma},s,o,g,p,v,\ma......

以太坊交易执行 ( Transaciton Execution ) 流程

以太坊 Yellow Paper 学习笔记(二)

交易验证 交易执行前,首先需要进行交易验证,这个过程包括: 交易的 RLP 编码正确且尾部没有多余的字节。 交易签名验证。 交易的 nonce 个发送方的当前 nonce 相同。 gaslimit 不小于交易执行的 gas g0g_0g​0​​。 交易发送方的余额满足预先支付金额要求。 上面的 g0g_0g​0​​ 表示交易执行需要提前支付的 gas 的数量(注意只是提前预支的,最终实......

以太坊世界状态 ( World State ) 转移概览

以太坊 Yellow Paper 学习笔记(一)

以太坊可以看做基于交易的状态机,任意时刻,使用 σ\sigmaσ 表示以太坊的当前状态,即为任意时刻以太坊中各个账户信息的一个表,包含了以太坊中所有账户的剩余以太币数量等和账户相关的信息,可以使用 σ[a]\sigma[a]σ[a] 的方式取到账户 aaa 的相关信息,每个账户包含下面 4 个字段: nonce: σ[a]n\mathbf{\sigma}[a]_nσ[a]​n​​ 一个普通......

FLIP 动画初步

FLIP 介绍 FLIP 是 First、Last、Invert、Play 四个单词的缩写。代表了该动画技术的 4 个主要的步骤: First: 记录元素原本的位置 Last: 记录元素完成动画后的位置 Invert: 计算从 Last 位置回到 First 位置的参数 ( 例如 translate 的 x 和 y),并将处于 Last 状态的元素移回 First 位置 Play: 添加......

OT 算法的 transform 源码走读

协同编辑基础

Transform 逻辑介绍 ot.js 的逻辑 将用户的一次操作认为是一个光标从左到右完整遍历整个字符串并在过程中做出删除和插入操作的行为。 When an operation is applied to an input string, you can think of this as if an imaginary cursor runs over the entire stri......

Acorn 的 Tokenizer 工作流程( 一 )

Acorn 源码阅读笔记

Acorn 的 Tokenizer 是解析器对象 Parser 上的一个静态方法,该方法可以根据输入的字符串和相关选项对输入进行处理得到 Token: 123export function tokenizer(input, options) { return Parser.tokenizer(input, options)} 而 Parser.tokenizer 直接返......