为了防止交易重播,ETH(ETC)节点要求每笔交易必须有一个nonce数值。每一个账户从同一个节点发起交易时,这个nonce值从0开始计数,发送一笔nonce对应加1。当前面的nonce处理完成之后才会处理后面的nonce。注意这里的前提条件是相同的地址在相同的节点发送交易。
以下是nonce使用的几条规则:
● 当nonce太小(小于之前已经有交易使用的nonce值),交易会被直接拒绝。
● 当nonce太大,交易会一直处于队列之中,这也就是导致我们上面描述的问题的原因;
● 当发送一个比较大的nonce值,然后补齐开始nonce到那个值之间的nonce,那么交易依旧可以被执行。
● 当交易处于queue中时停止geth客户端,那么交易queue中的交易会被清除掉。
第一个字段 AccountNonce ,直译就是账户随机数。它是以太坊中很小但也很重要的一个细节。以太坊为每个账户和交易都创建了一个Nonce,当从账户发起交易的时候,当前账户的Nonce值就被作为交易的Nonce。这里,如果是普通账户那么Nonce就是它发出的交易数,如果是合约账户就是从它的创建合约数。
为什么要使用这个Nonce呢?其主要目的就是为了防止重复攻击(Replay Attack)。因为交易都是需要签名的,假定没有Nonce,那么只要交易数据和发起人是确定的,签名就一定是相同的,这样攻击者就能在收到一个交易数据后,重新生成一个完全相同的交易并再次提交,比如A给B发了个交易,因为交易是有签名的,B虽然不能改动这个交易数据,但只要反复提交一模一样的交易数据,就能把A账户的所有资金都转到B手里。
当使用账户Nonce之后,每次发起一个交易,A账户的Nonce值就会增加,当B重新提交时,因为Nonce对不上了,交易就会被拒绝。这样就可以防止重复攻击。当然,事情还没有完,因为还能跨链实施攻击,直到EIP-155引入了chainID,才实现了不同链之间的交易数据不兼容。事实上,Nonce并不能真正防止重复攻击,比如A向B买东西,发起交易T1给B,紧接着又提交另一个交易T2,T2的Gas价格更高、优先级更高将被优先处理,如果恰好T2处理完成后剩余资金已经不足以支付T1,那么T1就会被拒绝。这时如果B已经把东西给了A,那A也就攻击成功了。所以说,就算交易被处理了也还要再等待一定时间,确保生成足够深度的区块,才能保证交易的不可逆。
Price 指的是单位Gas的价格,所谓Gas就是交易的消耗,Price就是单位Gas要消耗多少以太币(Ether),Gas * Price就是处理交易需要消耗多少以太币,它就相当于比特币中的交易手续费。
GasLimit 限定了本次交易允许消耗资源的最高上限,换句话说,以太坊中的交易不可能无限制地消耗资源,这也是以太坊的安全策略之一,防止攻击者恶意占用资源。
Recipient 是交易接收者,它是common.Address指针类型,代表一个地址。这个值也可以是空的,这时在交易执行时,会通过智能合约创建一个地址来完成交易。
Amount 是交易额。这个简单,不用解释。
Payload 比较重要,它是一个字节数组,可以用来作为创建合约的指令数组,这时每个字节都是一个单独的指令;也可以作为数据数组,由合约指令来进行操作。合约由以太坊虚拟机(Ethereum Virtual Machine,EVM)创建并执行。
V、R、S 是交易的签名数据。以太坊当中,交易经过数字签名之后,生成的signature是一个长度65的字节数组,它被截成三段,前32字节被放进R,再32字节放进S,最后1个字节放进V。那么为什么要被截成3段呢?以太坊用的是ECDSA算法,R和S就是ECSDA签名输出,V则是Recovery ID。
R,S,V是交易签名后的值,它们可以被用来生成签名者的公钥;R,S是ECDSA椭圆加密算法的输出值,V是用于恢复结果的ID
㈡ 区块链技术中智能合约的商业落地空间有多大
在区块链时代之前,尼克萨博就于1996年首次提出智能合约概念:一套以数字形式定义的约定,包括合约参与方可以在上面执行这些约定的协议。智能合约的基本思想是,在区块链上可以自动执行的(由事件驱动的)、以代码形式编写的合同(特殊的交易)。
从以太坊智能合约的建立以来,90%以上的合约都用于发行代币,相关商业场景的落地仍然泛善可呈。智能合约未来究竟是怎样的?这里可以看看刚刚发布消息推出智能合约的比原链Bytom。作为首个在MIT发布人工智能共识算法的公链项目——比原链Bytom,继4月主网成功上线后,又于26日发布基于UTXO模型的智能合约。
区别于以太坊智能合约构建在账户模型上,比原链是整个区块链行业首批在UTXO模型上构建智能合约的公链,比原链同时将UTXO进行了改造和深化,使其能够支持多种资产的操作。此外,比原链智能合约采用自有的Equity语言,这是一种图灵完备,解释型的高级语言,可以方便地对比原链上的资产进行操作,并灵活地融入各种资产业务场景。
而除合约语言的发布外,比原链还同时发布了多个合约模板,这些模板直接附带清晰的业务含义,从这些合约模板中,可以直接看到未来商业化落地的场景,并可进行更大范围的延展想象。
币币交易合约
通过该合约,用户可以不通过中心化的机构即可在比原链和其他人进行多种资产的交易。即通过合约锁定部分资产,只有当其他用户打入规定数量的指定资产时,才能解锁这部分资产。
例如,在合约基础上构建一个去中心化的交易所,通过合约直接撮合想要交换不同币种不同资产的双方,成交速度快并且只收取非常少量的交易手续费。
第三方信任机构托管合约
该合约模板下,用户可以将指定资产打入第三方的账户,并由第三方来决定是打给指定账户或者返回原账户。第三方信任托管合约规定第三方机构只能将资产打到指定账户或者返回原账户,杜绝了第三方账户监守自盗的可能性。在商业场景落地中,可以预想到,未来可在第三方信任机构托管合约的基础上构建一个资产托管平台,通过可信第三方和合约的双重信任来保证用户资产的保管,交易和流通。
抵押贷款合约
即借方将所借资产,贷方将抵押资产打到同一个合约中,贷方获取借方资产,如果在某个区块高度时,贷方未能把借方的资产归还,那么借方将自动获得贷方的抵押资产。
看涨期权合约
在这一合约中,资产发行方可以以一定的价格售卖某种资产,购买者可以以该价格购买资产,当超过某个区块高度,该资产自动返回给资产发行方。
从以上比原链智能合约的设计中,我们可以看到这样一些优势:
首先,多种具有业务含义的模板为上层构建Dapp提供了方便,不需要太多的开发量即可实现某些核心的业务过程;其次,比原链发行资产的智能合约均有模板。相较于由不同开发者自行编写,标准模板下安全风险降低很多。此外,比原链在创建智能合约时就将调用合约作为子合约纳入,日后调用的合约模板更改或出现纰漏,都不影响所有已完成的智能合约,这对于前期的智能合约而言其安全价值极高。
我们可以这样理解,使用扩展UTXO模型BUTXO的比原链,把资产作为新的UTXO形式进行交互,不仅规避了以太坊帐户模型所存在的数据溢出等其它漏洞的出现,同时兼具灵活性、多样性及可控性。
而对于比原链来说,智能合约的发布也标志着其核心的确定,将进一步推进项目的商业化落地。
㈢ 第三代区块链将弥补以太坊留下的 Defi 漏洞
由于ETH 2.0 升级距离全面发布还有数月甚至数年的时间,第三代区块链协议正在迅速赶上取代以太坊作为 dapps 和 defi 的“首选”枢纽。
尽管很多人可能只是最近才发现它,但区块链技术已经存在了足够长的时间,可以从第一代协议发展到第二代协议,现在已经发展到第三代协议。
第一代区块链始于比特币,比特币是中心化金融服务霸权的替代方案。它为去中心化的金融生态系统奠定了基础,但比特币网络提供的功能有限,需要巨大的计算能力才能运行,并且严重缺乏互操作性。
这导致了 2015 年以太坊的出现,标志着第二代区块链协议的曙光。随着 Vitalik Buterin 在区块链上引入智能合约功能,它引发了范式转变,使加密货币能够从金融工具过渡到更实用的目的。
以太坊通过在链上实现数据和价值的“有条件转移”,打开了去中心化的金融 (defi) 的大门。从那以后,以太坊一直在疯狂发展,巩固了自己作为启动 dapps、NFT 和 defi 协议的首选平台的地位。
开发人员和采用者接受了复仇,并开始生成自己的ERC20令牌,这么多的社交媒体平台开始谈论的“flippening” -在ETH将超过BTC市值的条款。
然而,尽管它取得了成功,但问题很快在以太坊区块链上显现出来。随着新项目大量进入以太坊生态系统,网络开始面临可扩展性问题。Gas 费用飙升,有限的交易吞吐量成为日常问题。
以太坊的创造者 Vitalik Buterin 也表达了他对以太坊扩展能力的怀疑,他说:
虽然提议的以太坊 2.0 升级承诺解决当前使以太坊网络蒙上阴影的问题,但事情并没有按计划进行。ETH 2.0的第一阶段最初定于 2019 年推出,于 2020 年 12 月开始。还有两个阶段,在 2022 年之前完全发布的可能性很小。
因此,声称该网络在实现其成为世界“去中心化计算机”的核心愿景之前还有很长的路要走,这并不夸张。
尽管比特币和以太坊带来了创新,但这些链都受到各自的可扩展性和效率问题的困扰。同时,这两个网络都需要大量的计算资源才能运行。所有这一切都导致了令人痛苦的缓慢吞吐率和过高成本的永久循环。
已经开发了许多地方 2 层次扩展解决方案来克服比特币和以太坊的固有问题,每个解决方案都取得了不同程度的成功。二层解决方案在一定程度上解决了互操作性和可扩展性问题,但与共识机制和挖矿相关的核心问题还有待解决。
这就是第三代区块链出现的地方。虽然一些第三代协议可以补充现有的区块链网络,但其他一些是全新的区块链,拥有广泛的特性和功能。从多层架构到创新的共识机制,第三代区块链协议不仅完全能够解决出现的可扩展性问题,而且还具有高度的互操作性、快速性和成本效益。
不可否认,defi 热潮是因为以太坊而发生的,并且以太坊仍然主导着 defi 市场。然而,随着基于第三代区块链协议的新定义项目的出现,以太坊的权威无疑将受到挑战。
随着 defi 不断扩大其市场,下一个“Defi 热潮”很可能来自于比早期区块链网络创新更敏捷、更专注的新兴产业。也就是说,随着加密世界为“下一次大翻转”奠定了基础,有前途的项目正在排队等待更新的区块链技术。
在市场主导地位方面,Cardano、Solana 和 Polkadot 处于领先地位。每个平台都提供一系列功能,这就是为什么新项目联盟正在排队开始在这些平台上构建他们的想法。
例如,卡尔达诺的稳定币和 defi 中心Ardana使卡尔达诺能够扩展到 defi 领域。该平台及其组成协议是从定义宏观的角度设计的,旨在为用户提供所需的功能,以帮助维护卡尔达诺链上所有类型的去中心化经济。它将作为一个金融基础层,通过采用 历史 证明的可组合性、资本效率和稳定性的协议模型来支持卡尔达诺的去中心化经济。
作为其战略路线图的一部分,Ardana 将很快推出 dUSD。这种可验证的、链上抵押支持的稳定币将帮助用户将他们的ADA和其他支持的资产投入使用。该平台还将推出其 AMM dex(去中心化交易所)Danaswap,用于稳定的多资产池。根据 Ardana 团队的说法,Danaswap 将提供资本高效的掉期,同时以最小的滑点为目标,并使流动性提供者能够利用低风险的收益机会。
另一项雄心勃勃的计划是Acala,它是利用第三代区块链协议 Polkadot 的内置功能的 Defi 流动性中心。目前,几乎所有稳定币都建立在以太坊网络上,限制了采用和使用。Acala 希望通过利用 Polkadot 的速度、跨链互操作性和成本效率来改变这一现实,以提供具有内置流动性和现成的去中心化金融应用程序的 defi 中心。
同样,Acala 声称以其他网络所需的一小部分来结算交易,在 defi 竞赛中建立了数量优势。该平台将通过 Polkadot 基于权重的费用模型支持受交易复杂性影响很小的小额 Gas 费用。此外,Acala 还将引入“算法风险调整”功能,该功能将自动修改其借贷协议的风险参数,包括利率和抵押品比率。
最后,在这场正在进行的 defi 市场份额争夺战中,建立在 Solana 区块链网络上的一体式加密交易平台Atani是另一个需要监控的重量级竞争者。该平台提供免费的加密交易工具,并与 Kucoin、Binance、Okex、Bitfinex、Poloniex 等顶级交易所合作,为用户提供更低的交易费用。
Atani 最近在 Solana 上推出了新的 dex 聚合器,以提供订单路由功能,同时提供投资组合跟踪、价格警报、技术分析等附加组件。有了这个聚合器和 Solana 的嵌入特性,Atani 的计划是减少分散的 defi 生态系统之间的摩擦,将 cexs(中心化交易所)和 dexs 的流动性提供给 Solana 生态系统,同时确保多链支持。
当谈到挖掘 defi 的真正潜力时,我们还没有真正触及表面。Web 3.0 正在发展,地球村正在变得越来越小。与此同时,defi 服务对于全球没有银行账户和银行账户不足的人来说都是革命性的,他们需要更多空间来扩展,就像现有协议推动网络容量限制一样。
从公正的角度来看,Polkadot、Cardano、Solana 和其他几个第三代区块链平台为阻碍传统链的可扩展性和互操作性提供了急需的解决方案。它们更快、更安全、更具成本效益且资源消耗低,将它们定位为可广泛使整个加密货币行业受益的多合一解决方案。随着以太坊 2.0 的首次亮相还有很长的路要走,第三代区块链协议已经在这里完成繁重的工作并将 defi 提升到一个新的水平。
您认为哪个网络会赢得 defi 竞赛?请在下面的评论部分告诉我们。
#热议区块链# #数字货币# #比特币[超话]#
㈣ 以太坊带来了那些争议和质疑呢
以太坊和比特币是有着本质区别的,区别在哪里呢?比特币定义的是一套货币体系,而以太坊侧重的是打造一条主链(可以理解为一条公路),可以让大量的区块链应用跑在这条公路上。
从这一点来看,以太坊的应用场景更广泛,这也是为什么我们说以太坊标志着区块链
1.0时代一个单纯的货币体系,向区块链2.0时代实现其他行业以及应用场景的转变。
但是,世界上没有十全十美的事物,以太坊虽然拓展了区块链在各行各业的应用范围,还提升了处理交易的速度,但是它也存在着一定的争议与质疑。
一、以太坊的扩展性不足的解决之道:分片技术和雷电网络
以太坊的底层设计,最大的问题是以太坊只有一条链,没有侧链,这就意味着,所有程序都要对等地跑在这条链上,消耗资源的同时,还会引发系统拥堵。正如去年非常火爆的以太坊游戏“加密猫”,这个游戏火爆的时候,一度引发以太坊网络瘫痪。
对于提升处理能力这个问题,以太坊提出两种方式:一个是分片技术(shard),一个是雷电网络,下面我们分别介绍一下这两种技术。
(一)分片技术
以太坊创始人 V 神(Vitalik Buterin)认为,诸如比特币这种主流的区块链网络,之所以处理交易的速度很慢,是因为每一个矿工要处理全网的每一笔交易,这样的效率其实是非常低下的。分片技术的构想是:一笔交易不必发动全网所有节点都去处理,只要让网络中的一部分节点(矿工)处理就好了。于是,以太坊网络被划分成很多片,同一时间,每一分片都可以处理不同的交易,这样一来,会大大提升网络性能。
但是,分片技术也是有一定争议的。我们知道,区块链技术的重要思想是去中心化,全网都去见证(处理)同一交易,这才具有最高的权威性。而以太坊分片技术,并不是所有节点共同见证,而是类似于分小组见证,这样一来,它便失去了绝对的“去中心化”属性,只能通过牺牲掉一定的去中心化特性来达到高性能的目的。
(二)雷电网络
雷电网络使用的是链下交易的方式。这是什么意思呢?它的意思是:使用雷电网络的参与者在互相转账时,不需要通过以太坊主链交易确认,而是通过参与者之间创建支付通道,在链下完成。
不过,雷电网络并不是脱离主链的,在建立支付通道之前,需要先用主链上的资产做抵押,生成余额证明(Balance Proof),拥有余额证明才能表明你能做出相应余额的转账。在交易双方都持有余额证明的情况下,双方可通过支付通道在链下进行无限制次数的转账。
只有在完成链下交易,需要将资产转回链上时,才会在以太坊主链上登记主链账户的余额变化信息,而这期间不管发生多少次交易在主链上是不会有记录的。
雷电网络还有一个实实在在的好处,就是可以为你省下矿工费用。目前我们在以太坊主链上进行交易,需要消耗 Gas,需要支付矿工费用,那么一旦将交易搬到链下,就可以节省这一部分的成本。
当然,雷电网络并不是十全十美的。在使用雷电网络时需要用主链上的资产作抵押;而这部分资产作为抵押物,在使用者完成链下交易之前是不能使用的。这也就决定了,雷电交易只适合小额交易。
上面就是以太坊扩展性不足的问题,以及目前提出的两个主要解决方案:分片技术和雷电网络。
二、以太坊的智能合约存在漏洞与臭名昭著的 The Dao 事件
以太坊的智能合约很强大,但是,凡是代码都会存在漏洞的,以太坊智能合约最大的争议就在于所谓的漏洞,也就是安全性问题。据相关研究表明,在基于以太坊的近100万个智能合约上,发现有34200(约3%)个含有安全漏洞,将允许黑客窃取ETH、冻结资产或删除合约,比如说,臭名昭著的The Dao 事件。
(一)Dao是什么意思?
介绍 The Dao 事件之前, 我们先见到介绍一下 DAO 是什么。DAO 是 Decentralized
Autonomous Organization 的简称,可以理解为:去中心化自治组织。从以太坊的角度来理解,DAO 是区块链上的某一类合约,或者一个合约组合,用来代替政府的审查以及复杂等中间程序,从而实现高效的、去中心化的信任的系统。所以,DAO 不是特定的某个组织,也就说呢,可以有很多的DAO,各种各样的DAO。
(二)臭名昭著的The Dao事件
但是,我们现在提到DAO,基本上所指的都是The DAO事件,也就是我们刚刚说的那个臭名昭著的黑客攻击事件。我们知道,英文中的 The是特指的意思,The DAO事件呢就
是特指的那个DAO事件,因为我们刚刚说了DAO不是特定的某个组织,可以有很多的DAO,各种各样的DAO。
2016 年的时候,德国一家专注“智能锁”的公司 Slock.it,为了实现去中心化的实物交换(比如说:公寓啊,船只啊),在以太坊上发布了 DAO项目。并且于2016年4月
30日开始,融资窗口开放了28天。
没想到,这个DAO项目的人气非常高,短短半个月就筹得了超过一亿美元,而到整个融资期结束,一共筹集到1.5亿美元,由此呢,它成为历史上最大的众筹项目。然而好景不长,到了6月份,黑客利用智能合约里面的漏洞,成功转移了超过360万个以太币,并投入到一个DAO子组织中,这个组织和The DAO有着同样的结构。以至于当时以太币价格从20多美元直接跌破13美元。
这个事件说明智能合约的确是有漏洞的,而且一旦漏洞被黑客利用,那么后果是非常严重的。这就是现在很多人批评以太坊,说它的智能合约不智能。
对于这个问题,目前国外有很多公司为了解决智能合约的漏洞问题 ,开始提供代码审计服务。而从技术的角度来说,目前一些团队正在对智能合约进行检验,这些团队多数由哈佛、斯坦福和耶鲁的教授带队,部分团队已经获得了头部机构的投资。
除了目前以太坊存在的扩展性不足、智能合约漏洞问题,对于以太坊的争议还在于它所追求的POS共识机制,也就是权益证明机制,在权益证明机制下,如果说谁持币的数量越大、持币时间越久,获得的“权益”(利息)就越多,还有机会得到记账权力,记账又可以获得奖励,那么这样一来,容易造成“强者越强”的寡头优势。
还有一个问题就是ICO乱象的问题。ICO是区块链项目筹措资金的常用方式,咱们可以理解为预售。以太坊上ICO项目的爆发,滋生了打着ICO旗号进行资金盘、诈骗圈钱等不法行为,对社会和金融稳定造成安全隐患。
㈤ 以太坊是骗人的吗怎么做
不是骗人的,必须要懂行的人带你入行,不然不熟的人带你你就会走进资金盘,做以太坊可以有两个方向,
第一:下载交易所软件在上面交易,跟股票交易一样的,可以买多,也可以做空,也可以量化,也可以开合约,也可以开杠杆,总之跟股票操作差不多,这种来钱快,亏欠也快。
第二种:就是去厂家买显卡或者矿机回来连网通电就可以在电脑上挖矿,每天都有收益可以提现,这个很轻松没有风险,只有回本周期,这行就属于投资越大回本越快赚得越多。
希望可以帮到你
㈥ 以太坊是骗人的吗怎么做
以太坊并非骗局,但是不法分子围绕着以太坊设计的骗局数不胜数,规避以太坊骗局的最好方式就是,切莫轻信比人保证的投资收益率,管理好自己的钱袋子。选择正规的数字货币交易所,去做投资。目前市场上主流的数字货币交易所有币安、火币网、比特网等。
拓展资料
以太坊设计原则
简洁原则
以太坊协议将尽可能简单,即便以某些数据存储和时间上的低效为代价。一个普通的程序员也能够完美地去实现完整的开发说明。这将最终有助于降低任何特殊个人或精英团体可能对协议的影响并且推进以太坊作为对所有人开放的协议的应用前景。添加复杂性的优化将不会被接受,除非它们提供了非常根本性的益处。
通用原则
没有“特性”是以太坊设计哲学中的一个根本性部分。取而代之的是,以太坊提供了一个内部的图灵完备的脚本语言以供用户来构建任何可以精确定义的智能合约或交易类型。想建立一个全规模的守护程序(Daemon)或天网(Skynet),你可能需要几千个联锁合约并且确定慷慨地喂养它们,一切皆有可能。
模块化原则
以太坊的不同部分应被设计为尽可能模块化的和可分的。开发过程中,应该能够容易地让在协议某处做一个小改动的同时应用层却可以不加改动地继续正常运行。以太坊开发应该最大程度地做好这些事情以助益于整个加密货币生态系统,而不仅是自身。
无歧视原则
协议不应主动地试图限制或阻碍特定的类目或用法,协议中的所有监管机制都应被设计为直接监管危害,不应试图反对特定的不受欢迎的应用。人们甚至可以在以太坊之上运行一个无限循环脚本,只要他愿意为其支付按计算步骤计算的交易费用。
㈦ 伦敦硬分叉在即,六年前以太坊的创世地址们在干嘛
撰文:潘致雄
北京时间 2015 年 7 月 30 日晚上 11 点 26 分, 以太坊 0 号 区块 被正式挖出,该区块中包含了 8893 笔创世交易 ,为 8893 个地址分配了以太坊网络中初始的 7200 多万个 ETH 。
刚刚过完 「六岁生日」 的以太坊网络即将在本周迎来 伦敦硬分叉升级 ,此次升级中的 EIP-1559 是 以太坊诞生以来首次经济模型修改 ,该提案的重要性不言而喻,但也引发了部分矿工和社区的巨大争议。截止发文时,仍有 35% 的节点未升级支持伦敦硬分叉,不过无论如何,这一切都将在两天后尘埃落定。
在这个对于以太坊颇具纪念意义的时刻,我们对那几千个创世地址的特征和资产持有情况做了些简单的分析,也发现了一些有意思的结论。
有两个比较直观的维度可以参考这 8893 个地址目前持有 ETH 的情况,一个是这些地址总共持有的 ETH 和持有 ETH 数量的分布情况。
据链闻统计的数据,这 8893 个地址当前持有的 ETH 总量约为 309 万 ETH ,相比六年前的 7200 万 ETH 减少了 近 96% 。
但是如果以美元价值来看,这些地址资产价格提升的幅度很大。参考 CoinMarketCap 上 ETH 在 2015 年 8 月 7 日的开盘价格 2.83 美元,六年前 7200 万 ETH 的总价值为 2 亿美元;但是按照 ETH 目前的 2500 美元的价格计算,309 万 ETH 的总价值超过 77 亿美元,是六年前的近 40 倍,而在不久前以太坊创出 4300 美元 历史 高点时,这一增幅更加可观。
另一个维度是持有 ETH 数量的分布情况,特别是余额小于 0.01 ETH 的地址,很可能是被抛弃不用的地址。
经整理发现,目前有 5317 个创世地址 的余额小于 0.01,占全部创世地址的约 60% 。如果扩大该标准为小于 1 ETH 的地址数量,则占全部创世地址的约 82% (7248 个) 。
虽然这些地址已经将绝大多数的以太坊转出,但这并不代表这些地址背后的用户卖掉了以太坊,因为也很有可能只是转移到了其他地址,或用户是在对地址进行整理,不过这些情况无法从链上准确判断。
在这批创世用户中,仍有 8% 的地址几乎未挪动手中的 ETH,特别是在这六年的时间里,以太坊的价格从最低不到 1 美元涨到了最高 4000 多美元,这些人的浮盈至少有了几千倍。
从具体的规则来说,我们获取了这些地址创世时的余额和当前的余额,如果差值介于 0.01 ETH 至-0.01 ETH 之间,则符合该标准,因为其中不少的地址收到过各种各样的空投,或创建过智能合约,所以可能会增加或者减少一些 ETH。
所有符合该标准的地址数量为 723 个,更可怕的是,这些地址持有的 ETH 数量超过 200 万 ETH ,占 8893 个地址当前 ETH 总持有量 (309 万 ETH) 的 65%。这 200 万个 ETH 目前的价值约 50 亿美元。
在这 8893 个地址中,有一个地址的当前余额相比创世时减少了超过 1190 万个 ETH,也就是该地址在创世阶段的几乎所有 ETH 都已转出,只留下了零头 (不到 10 ETH) 。
该地址 (0x5abfec2…56f9) 在创世时收到了 1190 万个 ETH (也是创世时余额最大的地址) ,一周后该地址创建了一个智能合约地址 (0xde0B295…7BAe) 用以管理这 1190 万个 ETH,目前该地址在 Etherscan 上被打上了 「Ethereum Foundation」 (以太坊基金会) 的账户标签和 「EthDev」 (以太坊开发者) 的姓名标签 (一个账户标签下可能有多个姓名标签) 。
所以从 EthDev 这个地址来看,目前的余额接近 40 万 ETH,相比创世时的 1190 万个 ETH 减少了 97% 的 ETH。不过和上面的情况一样,其实持有的美元价值是增长了,从创世时的 3368 万美元 (ETH 以 2.83 美元计) 增长至如今的 10 亿美元 (ETH 以 2500 美元计) 。
蓝色是 ETH 余额,黑色折线是持有 ETH 的美元总价值
另外在 8893 个地址中,有 40 多个地址 的余额相比创世时的余额还增长了,其中增长最多的一个地址增加了超过 3 万个 ETH (现在价值 7500 万美元) 。
该地址 (0xddbd2b9…121a) 在创世时获得了 1 万个 ETH,没过几天这位未知用户就把 ETH 全部转到了 Kraken,或许是在出售这些 ETH,或提供流动性。然后该地址又在 10 天后收到了一笔 8 万多 ETH 的转账,后来又陆陆续续分批转移出 (部分流向了交易所) ,剩下约 4 万个 ETH。该地址自 2015 年 10 月以来,余额就再未变化过。
而该地址收到的 8 万个 ETH,其实最终还是来自于上述的这个 EthDev 的。所以一个比较合理的猜测是,这位用户 (机构) 除了参与创世之外,还和以太坊基金会有较深的关联,或许是某个开发者、某个以太坊基金会的内部地址、某个早期投资机构等。
网络中对于该地址的信息极少,不过在 Etherscan 的 开发者文档 中,使用了该地址作为演示,这也许并不是一个巧合。
㈧ 区块链容量瓶颈遭质疑,生态令技术突发“奇思妙想”
在当前区块链技术从成为主流应用技术的态势下,区块链系统最首要的容量瓶颈本质上受限于单台全节点的内存容量,这一点直接制约了吞吐量。而生态令就吞吐量问题,利用新技术解决区块链容量遭质疑的问题。
只要是区块链技术系统,无论使用何种共识算法机制,无论是POW、POS,还是委托权益证明,都将面临同样的问题。假设物理网络的延迟和带宽可以忽略不计,就像基于信息中心高速链路的 EOS,系统第二个瓶颈是受限的账本存储容量,本质上被单台全节点的内存容量所限制,这一点直接限制了区块网络可以承载多少个参与者地址,和多少个 DApp应用。
当前大部分主流的区块链技术系统,包括以太坊、比特币区块链、EOS等,都存在当下问题,并且更为不幸的是,这个问题也是无解的。多级缓存的信息库技术可以稍微改善一下所面临的限制,使得只有用户活跃才会受到存储容量限制,而总用户基数局限于硬盘的容量。但是这也指标不治本,难以从根本上解决这个问题。
于是,ECOL生态令技术将其关注点聚焦于吞吐量,在解决吞吐量这个短板的问题基础上,将区块所存在的容量问题暴露出。
ECOL生态令了解到共识算法其实帮不了解决性能和容量的瓶颈,便试图从标新立异的共识算法出发,提升区块链系统性能的努力。基于ECOL生态令信用体系基础,采用信用准入原则,借现有区块链账本确定性和唯一性,将各节点进行单点广播权确定和验证的系统完美协调。ECOL生态令的 POCM 共识机制规避了 POW 工作量证明的不够环保节能,有算力垄断,中化心趋向问题,解决了 POS 的权益不均问题,并处理了 DPOS 的操作效率弊病。
一般的“区块+链式”架构,所有的交易要打包到区块才生效。如果区块的容量存储小,则交易量大时,许多交易打包速度变慢,甚至有失败风险。如果区块容量存储大,则会使区块链信息迅速膨胀,普通电脑无法运行全节点,全节点的运行权则掌握在少数人手里,这将与去中心化的结果相悖。这也是比特币扩容之争的根本矛盾点。ECOL生态令没有区块这一概念,所以解决了传统区块+链式结构先天性的悖论两难问题。
总之,面临容量瓶颈,分布式技术系统设计上的巧思概念极为重要,这和共识算法有关,也和密码学有关,ECOL生态令在这一点上做得非常好
㈨ 以太坊技术系列-以太坊数据结构
本篇文章和大家介绍一下以太坊的数据结构,上篇文章我们提到,以太坊为了实现智能合约这一功能,使用了基于账户的模型。我们来看看以太坊中数据结构。
既然是基于账户的模型,我们需要通过账户地址找到账户的状态。就像通过银行卡号可以找到你在银行中的各种信息一样。最简单的想法当然是一个简单的哈希表 key是账户地址 value是账户状态。但这里有个问题解决不了。
轻节点如何校验账户合法性?
上篇我们说过,区块链中有2类节点,全节点和轻节点,轻节点只会存储block header,所以轻节点如何才能校验账号是否合法呢?
这个思路和我们平时用的md5校验一致,我们会对区块内的信息进行hash运算从而得出区块内信息唯一确定的值,区块链所有节点中这个值都是相同的。
在这个过程中我们用到了一种数据结构Merkle Tree(哈希树),我们先看下Merkle Tree(哈希树)的示意图。
上篇文章说到区块链中的链表(哈希链)和我们平时常见链表不同的是将指针从地址改为了hash指,这里也一样,哈希树和二叉树的区别有2个
1.将地址改为了哈希值
2.只有叶子节点存储数据
回到之前的问题轻节点是如何校验1个账户或交易是否是在链上的呢?
整个流程如上图所示
1.轻节点需要判断1个账号是否合法
2.轻节点由于只存储block header,所以拿到1个账号的时候会向全节点发出请求
3.全节点存储了所有账户状态,将账户路径中的需要计算用到的hash值返回给轻节点
4.轻节点本地进行计算根hash值,如果计算结果和自己存储一致则账户合法,不一致则不合法。
那以太坊中的账户信息的数据结构就是这样吗?
直接用这样的数据结构来存储账户信息会有2个问题
查找困难
生成hash值不确定
第1个问题应该比较容易发现,在这个树中寻找1个账号需要的复杂度是O(n),因为没有任何顺序。
第2个问题其实也是因为无序导致的,无序的组合每个节点针对同一批账户生成的hash值不一致,这就导致无法达成共识。
既然2个问题都和顺序有关,那我们类似二叉排序树一样,使用哈希排序树是不是就可以解决问题了呢?
使用排序树后会带来另外1个问题
插入困难
因为要维持树是有序的,很可能带来树结构的很大变动。
以太坊中使用了另外一种数据结构字典树。和哈希树不同,字典树应该是很多地方都有使用。我们简单来看下字典树的结构。
字典树能够较好地解决哈希树的2个缺点1.查找困难 2.生成的hash值不确定以及排序二叉树的1个缺点 插入困难。
但字典树我们可以看到可能树的深度可能由于部分元素导致整棵树深度非常深。
这时我们可以进一步优化,将相同路径进行压缩。这就是压缩字典树。
将哈希树和压缩字典树结合,就可以得到以太坊存储账户的最终数据结构-MPT。
将压缩字典树里面的指针从地址改为指针,并且将数据存储在叶子节点中即可。
介绍完状态树的数据结构,我们接下来讨论1个问题,区块中存储的账户状态是什么样的范围。有2种选择。
只保存当时区块中产生交易的账户状态。
保存全局所有的账户。
我们可以看下这2种方式,无非就是空间和时间的平衡,只保存当前区块产生的交易意味着是做懒加载(需要的时候才去寻找账户),在区块链中这个代价是非常大的,因为寻找的账户之前从未交易过,这样会遍历整个区块链。另外一种保存全局的账户方式虽然看起来空间消耗较大,但查找快捷,而且空间的问题我们可以通过其他方式优化。所以最终以太坊选择了第2种每个区块都报错全局所有账户的方式。
我们来看下以太坊中是如何保存状态树的。
可以看到以太坊中虽然每个区块都保存了全部账户,但是会将未发生变化的账户状态指向前1个节点,本身只存储发生变化的状态,这样可以较大程度优化空间占用。
介绍完以太坊中比较复杂的状态树后,我们继续来看看以太坊中的另外两棵树,交易树和收据树。
首先介绍一下,为什么需要交易树&收据树。
1.交易树
虽然以太坊是基于账户的模型,但是就像银行不仅会存储银行卡的余额,还会存储卡中的每笔钱怎么来的以及怎么花的。交易树中就存储着当前区块中的包含的所有交易。
2.收据树
由于智能合约的引入增加了不少复杂性,所以以太坊用收据树存储着一些交易操作的额外信息。比如交易过程中执行日志就包含在收据树中方便查询。收据树和交易树是一一对应的。每发生一次交易就会有一次收据。
和状态树不同交易树和收据树只维护当前区块内发生的交易,因为当时区块发生交易时不需要再去查找另外1个交易,也就之前需要可能遍历整个区块链的查找操作了。
由于以太坊中的出块速度较快,我们进行一些查询一些符合条件交易的时候会面临大量数据遍历困难的问题。收据树中引入了布隆过滤器可以帮助我们有效缓解这一困难。
布隆过滤器将大集合中每个元素进行hash运算映射到1个较小的集合,这时再来1个元素要判断是否在大集合的时候,不需要遍历整个大集合,而是去进行hash运算去小集合中寻找是否存在,如果不存在,肯定不在大集合中,如果存在则不能说明任何问题。
如上图所示,布隆过滤器只能证明某1个元素不在集合中,不能证明1个元素在结合中。
以太坊中如果我们要在较多区块中寻找某1个交易,则可以利用布隆过滤器,过滤掉肯定不存在目标交易的区块,然后进入收据树内继续利用布隆过滤器筛选,剩下的才是可能的目标交易的交易,进行一一比对即可。
我们介绍了以太坊的核心数据结构,状态树&交易树&收据树,他们都是使用相同的数据结构-哈希压缩字典树。但状态树是维护1颗全局账户树,交易树和收据树则是维护本区块内的交易或收据。
介绍完数据结构后,后面我们会用几篇文章来介绍以太坊中的一些核心算法,比如共识机制,挖矿算法等。