一、智能合约Is smart contract really smart?
Smart contract is anything but smart.
有人认为应该把智能合约叫做自动合约,ATM 就是一种自动合约,实际上来说,智能合约是一种代码合同
二、不可篡改性Irrevocability is a double edged sword(区块链的不可篡改性是一把双刃剑)
三、真的不可篡改不...
DAO(Decentralized Autonomous Organization)
DAC(Decentralized Autonomous Corporation)
The DAO 事件是以太坊历史上一个重要的里程碑,涉及到智能合约的漏洞、重组攻击、以及随后的硬分叉。这一事件导致以太坊网络分裂成了两个不同的区块链:以太坊(ETH)和以太坊经典(ETC)
1、背景The DAO 是一个...
一、智能合约概念Smart contract(智能合约)是运行在区块链上的一段代码,代码的逻辑定义了合约的内容
智能合约的账户保存了合约当前的运行状态
balance 当前余额
nonce 交易次数
code 合约代码
storage 存储,数据结构是一颗 MPT
Sodility 是智能合约最常用的语言,语法上与 JavaScript 很接近
二、Sodility 数据结构
其中,bi...
POW(Proof of work,工作量证明)受到的普遍批评是浪费电
以太坊交易的能耗比比特币低,是因为出块时间更短
一、POS 基本思想POS(Proof of Stake,权益证明)的基本思想是:按照每个人投入资金的多少来决定收益的分配,这也叫做 virtual mining(虚拟挖矿)
采用权益证明的货币,在发行前一般会预留一部分货币给开发者,也会出售一部分货币来换取开发所需的资金。...
比特币是每隔 2016 个区块会调整挖矿难度,目标是维持出块时间在十分钟左右;以太坊是每个区块都可以修改挖矿难度
一、难度调整公式
基础部分的作用是维持出块时间在 15秒 左右
ε 是难度炸弹,为了以太坊从 POW 逐步过渡到 POS
1、基础部分
x 是难度调整的力度,为父区块的难度除以 2048,再向下取整
一次性下调难度最多是父区块难度的 99/2048
2、难度炸弹
二、...
Block chain is secured by mining(挖矿保障了区块链的安全性),比特币的挖矿算法是一个天然的 bug bounty(悬赏找bug),如果能找到漏洞或挖矿的捷径(shortcut)就能获取很大的利益
很多人认为,挖矿设备的专业化 和比特币的去中心化理念是相违背的(one cpu, one vote),普通人能够参与挖矿有利于分散算力,预防 51% attack。所...
以太坊出块时间的显著降低,使得更容易出现分叉(甚至多个分叉),大型矿池有优势,尤其对个体矿工不公平
因为当出现分叉时,所有个体矿工的算力是分散的,而矿池中的所有算力会集中在其挖出的区块,导致矿池挖出的区块更容易成为最长合法链,造成 mining centralization,这种情况也叫做 centralization bias(中心化带来的不成比例的优势);再加上矿池会在网络的多个地方有接...
以太坊中的交易树和收据树也是 MPT,其好处是支持查找操作,查找的键值是交易在发布的区块中的序号(即排第几),其顺序由发布交易的区块确定
交易树和收据树都是只把当前区块发布的交易组织起来,而状态树是把系统中所有账户的状态都包含进去(原因是:便于查找账户余额,尤其是很久没发生过交易的区块,更重要的是无法找到新账户)
上节课讲到,多个区块的状态树是共享节点的;而每个区块的交易树和收据树是独立的
...
从账户地址到账户状态的映射:addr -> state
以太坊中的账户地址是 160 bits,也就是 20字节,一般表示为 40个 16进制的数;比特币和以太坊的地址格式、长度都不同,但是以太坊中的地址也是由公钥转换来的(公钥取哈希、进行截取,并只保留后面)
在比特币中,merkle tree 除了证明账户上有多少钱之外,还可以维护各个全节点之间状态的一致性
以太坊的状态树结构以太坊...
一、比特币——基于交易的账本比特币用的是 transaction-based ledger(基于交易的账本),系统没有显示地记录账户的金额,需要通过 UTXO 计算,这种方式隐私性好,但不便于使用
二、以太坊——基于账户的账本以太坊用的是 account-based ledger(基于账户的账本),转账时不需要说明币的来源
1、好处不会出现 double spending attack(双花...