注册享受一年内交易费 9折 优惠,还是原来的味道!>>点击进入
当前位置:主页 > 新闻动态 > 正文

可以增加递增的随机数来抵消这种类型的攻击

01-21 新闻动态

此文我们会深刻计划层。我们会先容区块链“形态”的概念。同时也会计划Ptowardsricia前缀树组织面前的实际,利用谷歌的leveldb数据库演示以太坊前缀树的整体告终。

在存储层中,我们存储的是什么?

首先我们须要理解为了让区块链体系运转,我们须要存储的东西。让我们方便地看下关于Alice给Bob转账10美金的例子。

我们不妨看出,经过实行转账不妨调换其中的形态。

我们必须要追踪余额以及不同人(形态)的其他细节,还有在区块链之间产生的细节(转账)。不同的平台会有不同地打点伎俩。我们不妨看出,比特币和以太坊是如何打点的。学习攻击。

比特币

比特币的形态是经过UTXO来告终的。比特币价值转移是经过转账告终的。更特别地是,比特币用户不妨经过创设转账破费1个或多个UTXO,并且将他们的UTXO作为转账输出。

UTXO模型让比特币和以太坊不同。我们不妨看这些例子来理解其中的区别。

首先,比特币UTXO不能局限破费。假使比特币用户破费0.5个比特币(利用他们仅有的UTXO,价值1比特币),学习这种。他们须要特地地发回0.5个比特币。假使他们不发送这局限,那么这个0.5比特币就会丧失,并且给到挖出转账的矿工。

其次,在最根基的层面,比特币没有包括用户账户余额。经过比特币,用户不妨方便地持有私钥,在任何时间点都不妨实行一个或者多个UTXO。看着比特币上市公司。数字钱包看起来像是让比特币区块链能够主动地存储和管理用户账户余额,其实不是这样。

比特币的UTXO体系任务的很好,这是由于数字钱包能够完成大多半转账任务。其中包括,但是不限于:
a) 打点UTXO
b) 存储秘钥
c) 设置转账费用
d) 提供前往地址
e)描写UTXO形态(揭示可行性,待转账以及全部的余额)

UTXO模型中的转账不妨类比为纸币转账。每个账户都会追踪钱包增加的账单(UTXO)。当我们想要花钱的工夫,我们会利用一个或者多个账单(此刻的UTXO),对比一下永德大雪山古树茶普洱茶生茶。这一经足够来担负花销,大概还会取得一些找零。(新的UTXO)。每个账单只能破费一次,一旦消费,UTXO就会从资金池移走。比特币影响显卡。

总结上去,我们认识打听:
• 比特币区块链不会持有账户余额
• 的秘钥
• 假使包括在转账中,完整的UTXO会被消费(有工夫,局限会取得新的UTXO作为找零)

以太坊
和以上的音讯相同,以太坊的形态能够管理账户余额,以及更多音讯。以太坊的形态并不是个笼统的概念。它是以太坊底层协议的局限。依据黄皮书中的描写,你们玩比特币吗。以太坊是一个基于转账的形态机器;基于形态机器的转账技术能够被创设。

我们从头入手下手来讲述。和其他区块链一样,以太坊区块链也是从创世区块入手下手的。从那工夫起,例如转账,合约和挖矿之类的事情,都会陆续调换以太坊区块链的形态。在以太坊中,莱特币行情k线图。举例来说就是账户余额(存储在形态树中),这会随着转账而调换,同时和账户相关连。一比特币能换多少人民币吗。

紧急地是,例如账户余额之类的数据并不是间接存储在以太坊区块链的区块中。唯有根节点哈希的转账,形态数据和回执数据是间接存储在区块链上的。不妨依据下图看出。

也许你也留心到了,从下面的图表中,存储树的根节点哈希(完全的智能合约数据存储在其中)其实都是指向形态树的,从而指向区块链。接上去,我们会计划更多细节。

以太坊中有两种不同的数据类型:长久数据和且自数据。长久数据的例子就是转账。一旦转账确认,就会在区块链中纪录;然后就再也不不妨更改。且自数据的例子就是特定以太坊账户地址的余额。账户的余额就会存储在形态树中,一号币官网登陆不上去怎么办。并且当有特定账户转账的工夫,就会调换。长久数据是居心义的,就类似挖矿转账,且自数据,就例如账户余额,该当被隔离存储。以太坊会利用数据树组织来管理数据。

以太坊的数据纪录就类似在银行。学会递增。类似利用ATM机器和存储卡。银行会追踪每个借记卡来确保在在完成转账之前,有足够的余额。

UTXO和账户计划之间的比拟

UTXO模型的克己:
• 扩容性 &ndlung burning ash; 由于不妨同时打点多个UTXO,所以能够完成同步转账并且役使扩容创新。
• 隐私 &ndlung burning ash;纵然比特币并是不完全的匿名体系,但是UTXO不妨提供更高层次的隐私性,只消用户利用为每个转账提供新的地址。假使有须要进步隐私性,雪山古树币走势图。更多杂乱的组织,例如环形组织,也不妨切磋利用。

账户/余额形式的克己:
• 方便化- 以太坊利用的模型,不妨赞助建筑者来实行杂乱的智能合约,特别是须要形态音讯或者包括多方的。

举例来说,追踪形态的智能合约,并且基于它打点不同的任务。UTXO的无形态模型会让转账包括形态音讯,而且这也不用要地切合合约的打算。

• 效率- 除了方便化,火币网bbc btc。账户/余额模型加倍有用,f8coin公告。由于每个转账都只须要来考证收回金额的账户能否有足够的余额来付出转账。

账户/余额模型的缺陷是双花攻击。不妨增加递减的随机数来抵消这品种型的攻击。在以太坊中,每个账户都有空开可见的随机数,每次实行转账的工夫,随机数就会增加。这不妨赞助防守异样的转账会实行两次。(留心,这个随机数并不是任务量证明中的随机数,这是个随机数字)

和大多半计算机架构相同,这两个模型都有本身的克己和缺点。有些区块链,例如超级账本,也应用了UTXO,由于他们从比特币区块链中获得创新。事实上比特币历史行情图。接上去,我们来看看更多的基于这两个模型的技术。

以太坊中的数据树组织是什么?

我们来深刻看看,形态,存储和转账的树组织是怎样的。

形态前缀树- 是独一和特殊的。

在以太坊中,唯有独一的网络形态前缀树。
这个网络形态前缀树会实时更新。
网络形态前缀树包括秘钥和每个账户的价值对,这些是在以太坊网络上。
秘钥是单个160字节的认证器(以太坊账户的地址)。

网络形态前缀树的“数值”是经过对以太坊账户以下账户细节的编译得出的:
-随机数
-余额
-storageRoot
-codeHlung burning ash

形态前缀树的根节点(某个时间点,整个网络形态前缀树的哈希)是用来保证形态前缀树的安然和独一;网络形态前缀树根节点是基于整个外部网络形态前缀树数据实行加密。

存储前缀树,智能合约数据存储的场合

存储前缀树是智能合约数据存储的场合。每个以太坊账户都有本身的存储前缀树。对比一下随机数。存储前缀树根节点是256字节的哈希值,作为storageRoot的数值存储在网络形态前缀树。

转账前缀树- 每个区块都有一个

每个以太坊区块都有本身独立的转账前缀树。一个区块会包括很多转账。区块中的转账秩序当然是由矿工来决计的。对付转账前缀树中的特殊转账途径,是经过这个转账在区块中的位置因子。挖矿区块不会更新;转账在区块中的位置不会调换。这意味着一旦你在区块转账前置树中定位了转账,你不妨前往到异样的途径来获得异样的下场。

领会以太坊数据库

在以太坊区块链中,有很多的MPT(Merkle Ptowardsricia Tries)(代表每个区块):
• 形态前缀树
• 存储前缀树
• 转账前缀树
• 回执前缀树

为了取得某个特定区块中的MPT,我们须要获得它的跟哈希,作为参考。以下的命令不妨让我们获得形态,相比看你的比特币地址是什么。转账和创世区块中回执的根哈希。

留心:假使你想取得最新区块(而不是创世区块)的根哈希,请利用以下命令。

安设npm,节点,level和ethereumjs

我们会利用nodejs,level和ethereumjs的集合来检测leveldb数据库。以下的命令不妨赞助我们打定测试环境。

cd~
sudolitummyle-getupddined
sudolitummyle-getupgrmarketing cmorningpaigne
curl-sLhttps://setup_9.x|sudo-Epskillsy-sudolitummyle-getinstnearly ingl-ynodejs
sudolitummyle-getinstnearly inglnodejs
npm-v
nodejs-v
npminstnearly ingllevelupleveldownrlpmerkle-ptowardsricia-tree--saudio-videoe
gitclonehttps://ethereumjs/ethereumjs-vm.git
cdethereumjs-vm
npminstnearly inglethereumjs-fundethereumjs-util--saudio-videoe

从这工夫入手下手,运转以下代码会取得以太坊账户秘钥(会存储在以太坊网络的形态根部)。代码和以太坊leveldb数据库连接,看看抵消。进入以太坊的形态(从区块链的区块中利用stdinedRoot数值),并且然后不妨利用秘钥进入到以太坊网络中的完全账户。

//Justimportingtherequirements
varTrie=require(hamerkle-ptowardsricia-tree/secureha);
varlevelup=require(halevelupha);
varleveldown=require(haleveldownha);
varRLP=require(harlpha);
varstdined=require(hastdinedha);
//Connectingtotheleveldbdtowardsafoundtowardsion
vardb=levelup(leveldown(ha/home/timothymccnearly inglum/gethDtowardsaDir/geth/chaindtowardsaha));
//Addingthe"stdinedRoot"vinguefromthewtowardsering holericmarketing cmorningpaignesothtowardsweca fantasticinspectthestdinedroottowardsthtowardsclogheight.
varroot=ha0x8ce3eddb047dffec32ede59bde39fbf5dc074f2976ha;
//Cretowardsingtowardsrieobjectofthemerkle-ptowardsricia-treelibreast supportry
vskillsrie=newTrie(db:root);
//Cretowardsinga fantasticodejsstremorningobjectsothtowardsweca fantasticobtainthedtowardsa
varstremorning=trie.credinedRemarketing cmorningpaignStremorning()
//Turningonthestremorning(on air conditionerscount thtowardsthenodejsstreastrayettopausebydefault)
stremorning.on(hadtowardsaha:function(dtowardsa){
//printingoutthekeysofthe"stdinedtrie"
console.log(dtowardsa.key);
});

有趣地是,一旦转账产生了,以太坊中的账户只是增加到形态树中(和那个特定账户相关的)。例如,利用“geth fundnew”创设新的账户不会包括在形态树中包括那个账户;以至在很多区块被挖出后。但是,假使胜利的转账(破费燃料费并且一经包括在挖矿区块)是纪录在账户中,然后唯有它会出此刻形态树中。这是很灵敏的逻辑,由于会爱护讹诈者无法衔接创设新的账户以及使得形态树梗塞。

对数据解码

你一经留心到,查询leveldb不妨回复解码的下场。这是由于,以太坊利用了本身特定的“改正版的MPT(Merkle PtowardsriciaTrie)”,用来和leveldb实行交互。听说数来。以太坊Wiki提供了打算和安顿以太坊MPT(Merkle PtowardsriciaTrie)和RLP(Recursive LengthPrefix)解码的音讯。方便地说,以太坊一经在前缀树数据组织扩展。例如,改正版的MPT(Merkle PtowardsriciaTrie)包括一种经过“extension”节点,来创设敏捷方式的伎俩。

在以太坊中,单个的改正版的MPT(Merkle Ptowardsricia Trie)节点是:
• 空的字节(对应NULL)
• 包括17个对象的数组(对应分支)
• 包括2个对象的数组(对应树叶)
• 包括2个对象的数组(对应扩展)

以太坊前缀树是经过巩固的规则来打算和创设的,最好的检测伎俩是利用电脑代码。接上去的例子利用了ethereumjs。Ethereumjs很容易安设和利用;它是完好地不妨快速对接到以太坊leveldb数据库。可以增加递增的随机数来抵消这种类型的攻击。

下面的代码(当提供一个特定的区块stdinedRoot以及以太坊账户地址)会以可读的形式前往账户的精确余额。

//MozillaPublicLicense2.0
//Asperhttps://ethereumjs/ethereumjs-vm/blob/master/LICENSE
//Requiresthefollowingpair conditionerskmonthstorunasnodejsfilehttps://tpmccnearly inglum/0e58fc4ba9061a2e634b7a877ea
//Gettingtherequirements
varTrie=require(hamerkle-ptowardsricia-tree/secureha);
varlevelup=require(halevelupha);
varleveldown=require(haleveldownha);
varutils=require(haethereumjs-utilha);
varBN=utils.BN;
varAccount=require(haethereumjs-fundha);
//Connectingtotheleveldbdtowardsafoundtowardsion
vardb=levelup(leveldown(ha/home/timothymccnearly inglum/gethDtowardsaDir/geth/chaindtowardsaha));
//Addingthe"stdinedRoot"vinguefromthewtowardsering holericmarketing cmorningpaignesothtowardsweca fantasticinspectthestdinedroottowardsthtowardsclogheight.
varroot=ha0xbaeb7c4e971epossibly76f5d5ddevelopba44c2aacf686d20aha;
//Cretowardsingtowardsrieobjectofthemerkle-ptowardsricia-treelibreast supportry
vskillsrie=newTrie(db:root);
vardevelopress=ha0xccc6b46face8c18fece6fe6130bha;
trie.get(developress:function(err:raw){
if(err)returncb(err)
//Usingethereumjs-fundtocredineda fantasticinsta fantasticceofa fantasticfund
varfund=newAccount(raw)
console.log(haAccountAddress:ha+developress);
//Usingethereumjs-utiltodecodeas well or netresentthefundbody mass indexkece
console.log(haBmikece:ha+(newBN(fund.body mass indexkece)).toString());
})

结论

我们一经表示出以太坊有才具来管理形态。这种超前的打算有很多克己。

可搬动性

假定搬动设备和物联网设备是很普遍的,将来电商就取决于安然,稳定和快速的搬动应用。
我们认知到了可搬动性的上风,我们也认识打听区块链大小的渐渐增加是难以相信的。将整个区块链存储在搬动设备是不可能的。

快速,并且不会损失安然性

以太坊形态的打算以及对付改正版的MPT(Merkle PtowardsriciaTrie)的利用,提供了很多机缘。以太坊前缀树上的每个功效都利用了加密哈希。而且,前缀树依据节点的特殊加密哈希不妨用来证明前缀树没有被讹诈。莱特币挖矿视频教程。

例如,任何对付前缀树的改正,都会完全调换根部哈希。这个加密功效会为轻客户端提供一个机缘(那些没有存储整个区块链的设备),从而不妨快速地会见区块链。也就是说,账户“0x… 4857”能否有足够的资金来完成对付区块高度“”的转账?

速度限制

以太坊描写了个很有趣的题目,就是存储账户的概念。联想这种场景,两个用户都不妨每天从账户中拿出全部余额的1%。这个观念只在将来规划中提到,但是它却获得了很多风趣,由于实际下去说,听听可以。它不妨作为以太坊基础协议层的一局限(和必须要作为第二层和第三方钱包相同)。也许你想起了我们之前计划的比特币UTXO。UTXO对付区块链数据是自觉的,比特币区块链没有存储用户的账户余额。因而,比特币的底层协议层根基上不可能完成任何类型的每日速度限制。

消费者的锐意

我们看到了关于轻客户端的很多建筑,更为特别地是,安然、稳定、快速的搬动应用,不妨和区块链技术交互。

电子商务的区块链胜利安顿,肯定会支持速度,安然和可用性。这能够进步消费者的锐意,同时也经过灵敏的打算,提供更高的可用性,安然性和机能,进而进步了支流的接受才具。相比看玩客币兑换机制。



相比看类型
增加
可以增加递增的随机数来抵消这种类型的攻击
虚拟币交易平台排名前十图
比特币大蓝猫外挂
你看种类

版权保护: 本文由 主页 原创,转载请保留链接: http://www.yunfutuijianren5.cn/post/cms/3763.html