ETH-概述
约 2902 字大约 10 分钟
2021-10-03
相关术语
mining puzzle 采矿谜题
memory hard mining puzzle 内存困难的挖矿谜题
ASIC resistance 抗ASIC
Scrypt 一种密码学哈希函数
decentralized currency 去中心化货币
decentralized contract 去中心化合约
satoshi 比特币计量单位
Wei 以太币计量单位
fiat currency 法币
概述
比特币和以太坊是两种最重要的加密货币,比特币被称为区块链1.0,以太坊被称为区块链2.0。以太坊在设计上针对比特币运行过程中出现的一些问题进行了改进,比如说出块时间,比特币出块时间上10分钟,以太坊的出块时间大幅度降低到了10几秒,而且为了适应这种新的出块时间,以太坊还设计了一套基于GHOST协议的共识机制。以太坊做的另外一个改进就是挖矿时的mining puzzle
, 比特币的mining puzzle
是计算密集型的,比拼的是计算hash
值的算力,这样造成的结果是挖矿设备的专业化,很多年前使用普通的台式机已经无利可图挖不倒矿了,现在都是清一色的ASIC
芯片。很多人认为,这种情况跟区块链当时宣扬的去中心的理念是不符合的,所以以太坊设计的mining puzzle对内存的要求就是很高的叫做memory hard mining puzzle
。这样设计在一定程度上限制了ASIC
芯片的使用,管它叫做ASIC resistance
。将来的以太坊还有一些更加革命性的改变,用权益证明来替代工作量证明。比特币的是工作量证明proof of work
,就是挖矿,证明在挖到区块之前做了好多工作,所以叫工作量证明。将来要改成proof of stake
,权益证明,这时候就不挖矿了,类似于股份投票的方法决定下一个区块的产生,这些都是以太坊在系统设计上做的一些改进。除此之外,以太坊还增加了一个重要的功能,对智能合约smart contract
的支持!
ASIC resistance
ASIC resistance(抗ASIC)是指区块链挖矿算法能够抵御专用集成电路(ASIC)专用硬件实施的能力。ASIC是专为执行单一任务而设计的硬件,例如加密货币挖矿。抗ASIC的概念出现,是为了维护公平竞争的挖矿环境,确保拥有消费级硬件的小玩家仍然能够参与挖矿,并因其对网络的贡献而获得奖励。
抗ASIC主要通过设计一种难以在ASIC中实施的挖矿算法来实现网络更加去中心化,从而抵抗资本充足的大型矿工的集中化趋势。实现抗ASIC的一种方法是采用内存密集型算法,这种算法需要大量内存来供挖矿硬件使用,以便执行挖出区块所需的计算。相比于纯计算任务(如哈希函数)的ASIC相比,这种方法显著增加了ASIC的研发和制造成本。
以太坊和莱特币等加密货币就采用了抗ASIC的挖矿算法。以太坊使用的挖矿算法是Ethash,它属于内存密集型算法,需要从内存中读取大量数据,而且这个需求会随着时间的推移而增加,从而导致旧的硬件无法用于挖矿。莱特币的挖矿算法基于Scrypt,这是一个对内存要求很高的哈希函数,通过增加密码生成的复杂度,同时也增加了暴力破解的难度,实现了对ASIC的不友好。
Memory hard mining puzzle
Memory hard mining puzzle
是一种挖矿算法,它通过增加对内存访问的需求来设计挖矿难题,目的是在一定程度上限制ASIC(专用集成电路)芯片的使用,从而实现ASIC resistance
(抗拒专用矿机)。这种算法的核心思想是,ASIC芯片虽然在计算能力上很强,但在内存访问性能上与普通计算机差距不大,因此通过增加内存访问需求来提高ASIC挖矿的难度,使得普通计算机也有机会参与挖矿过程。
在以太坊中,memory hard mining puzzle
被用来设计挖矿算法,以太坊的挖矿算法被称为Ethash
。Ethash算法要求挖矿设备需要有较大的内存,这对于ASIC芯片来说是一个劣势,因为ASIC芯片在内存访问上并没有太大优势。以太坊挖矿算法使用两个数据集:一个是16MB的Cache,另一个是1GB大小的数据集(DAG),DAG是从Cache中生成的。这种设计使得以太坊挖矿主要以使用GPU为主,成功实现了ASIC resistance。
莱特币(Litecoin)也是一个采用memory hard mining puzzle
的加密货币,其挖矿算法基于Scrypt,这是一个对内存要求很高的哈希函数。Scrypt
算法的设计思想是,在内存中设置一个很大的数组,按照顺序填充伪随机数,挖矿时需要按照伪随机顺序从数组中读取一些数,每次读取位置与前一个数相关。如果数组足够大,对于挖矿矿工来说,必须保存该数组以便查询,否则每次不仅计算位置,还要根据Seed
计算整个数组数据,才能查询到对应位置的数据,这对于矿工来说,计算复杂度大幅度上升。
总的来说,memory hard mining puzzle 是一种旨在提高挖矿去中心化程度的挖矿算法,通过增加对内存的需求来限制ASIC矿机的优势,使得挖矿更加公平,普通计算机用户也有机会参与挖矿过程。
Scrypt
Scrypt是一种密码学哈希函数,最初由Colin Percival在2009年发明,用于他的备份服务Tarsnap。 Scrypt算法特别设计为内存密集型,以抵御针对密码哈希的暴力破解和特定硬件攻击。 这种算法在2016年被发布在RFC 7914中。 Scrypt算法的简化版被用在多个密码货币的工作量证明(Proof-of-Work)上,包括莱特币(Litecoin)。
Scrypt算法的核心在于其对内存的需求,这使得并行计算多个摘要变得困难,从而增加了暴力破解的难度。 它不仅计算所需时间长,而且占用的内存也多,这使得利用rainbow table进行暴力攻击更加困难。 Scrypt算法的设计有助于保持加密货币网络的去中心化,因为普通用户可以使用CPU或GPU进行挖矿,而不需要购买昂贵的ASIC设备。 这种设计还提供了较高的安全性,因为攻击者需要付出更高的成本来尝试破解密码或进行其他恶意活动。
Scrypt算法在区块链应用中的一个典型例子是莱特币,莱特币选择Scrypt算法作为其挖矿算法,主要是因为Scrypt算法对内存资源的需求较高,这使得使用专用硬件(如ASIC矿机)进行挖矿变得相对困难。 相比之下,比特币使用的SHA-256算法更容易被ASIC矿机优化,导致挖矿活动逐渐集中在少数拥有大量ASIC矿机的矿工或矿池中。
智能合约
为什么要搞智能合约?比特币实现的是去中心化的货币,decentralized currency
。区块链成功后,很多人思考一个问题,如果货币可以去中心化,还有什么是可以去中心化的?If we can decentralized currency, what else can we decentralized?
以太坊Ethereum的出现,增加了一个特性:decentralized contract
去中心化合约。比特币的符号是BTC
,以太坊的符号是ETH
,以太坊的币通常叫做Ether
或者以太币。俩个计量单位不一样,BTC
最小计量单位叫一聪,satoshi
。以太坊的计量单位叫一Wei
,都是非常小的计量单位。
货币本来是由政府发行,货币的价值是建立在政府公信力的基础上,政府通过司法手段来维护这个货币体系的正常运行。比特币的出现,用技术的手段把政府的这些智能给取代了,通过密码学、共识机制等来维护加密货币体现的正常运行。去中心化的合约也是类似的意思,现实生活中,合约的有效性也是通过司法手段,通过政府来维护的。比如跟别人签一个合同,这个合同如果出现纠纷,通过打官司通过法院判决什么的,查看这个合同是谁签的,有没有当事人的合法签名,这个合同内容是怎么规定的,是谁违反了合同,然后对于违约方按照合同条款应该给予什么处罚,这就是现实生活的合同,通过司法手段维护合同的有效性。 那能不能通过技术手段把司法手段给取代了,这就是以太坊智能合约的设计目的。
如果合同的内容是可以通过程序代码实现出来的,那么把这个代码放在区块链上,通过区块链的不可篡改性,来保证代码的正确运行。当然不是所有的合同的内容都可以用编程语言实现,也不是所有的合同条款都是可以量化的,但是有些逻辑比较简单,比较清晰的合同是可以写成智能合约的形式。
这种去中心的合同有什么好处呢?现实中的合同体现也挺好的,为什么搞这么个去中心化的合同呢?同样,思考去中心化的货币有什么好处,跟法币fiat currency
相比?一个应用场景是跨国转账,用法币是很麻烦的,时间上、利率换上、手续费各种原因,如果用比特币就会好很多。智能合约也有类似的应用场景,比如说合同的签署方是来自世界各地的!没有一个统一的司法管辖权,这个时候如果用司法手段就比较困难。其实就算合同的签署方都在同一个司法管辖权之下,真正想通过司法手段维护合同的执行,也是一个比较费时费力的过程,就算官司打赢了,也不一定收到钱。所以可以通过技术手段,从一开始就保证没有人能违约,这是比较厉害的。而智能合约的一个好处就是,代码一旦发布到区块链上,那么区块链的不可篡改性,谁也改不了这个代码,包括写代码的作者,自己也改不了,这样就能保证大家按照代码中制定的规则来执行。
接下来,好好探究一下以太坊的数据结构、共识机制。挖矿算法,包括工作量证明、权益证明,以及智能合约!