比特币是每隔 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(双花...
比特币被称为 区块链1.0,以太坊被称为 区块链2.0
一、以太坊和区块链的对比1、出块时间以太坊的出块时间从比特币的 10分钟 降低到了十几秒
2、共识机制以太坊设计了新的 ghost 共识机制
3、mining puzzle以太坊设计了新的 mining puzzle:比特币的 mining puzzle 是计算型的,比拼的是算力;而以太坊的 mining puzzle 是 memory...
一、哈希指针指针保存的是本地的内存地址,区块链中的哈希指针是如何传递的?其实区块中保存的只有哈希,没有指针(只是形象化的说法)。全节点会把区块以 (key, value) 存储在数据库(level DB)中,且只保存最近的几千个区块
二、区块恋双方把私钥截成两段,每方保存一段不可取,有两点问题:
蛮力攻击更加容易
永久占据 UTXO,浪费资源
建议采取 MULTISIG(多重签名)
三、...
一、比特币的匿名性anonimity(匿名性)、privacy(隐私性)
比特币使用的是 pseudonymity(假名)
Example:一个人通过自己的两个账户 addr1 和 addr2,向商家账户转账 addr3,然后把零钱转入自己的另一个账户 addr4
Inputs: addr1, addr2
Outputs: addr3, addr4
1、破坏比特币匿名性的方法:(1)比特币不...
略(基本没有新东西),详情可参考课程视频:
https://www.bilibili.com/video/BV1Vt411X7JF?spm_id_from=333.788.videopod.episodes&vd_source=69ac93649ea21c4726fe85f272b6d968&p=11