区块链原理(一)

一、公钥以及签名和认证

公私钥的关系

私钥通过椭圆曲线算法生成公钥是单向不可逆的。处理BASE58的箭头是双向,其他的都是单向的,为什么会这么设计的呢,这主要是为了安全考虑,不能反向推到出公私钥。

具体是怎么对交易进行交易签名

用私钥对 转账数额和转入钱包地址通过签名算法,私钥通过椭圆曲线算法得出转出公钥,转出公钥+转出签名+转账数额和转入钱包地址,然后生成正式的数据然后就广播了,广播到比特币的网络中进行转账。

交易时怎样验证的

二、分叉

分叉判断:区块链分叉判断,选择最长的区块链,最终创建区块。分叉分两大类:

1、同样机制的分叉

首先有一个矿工把答案算出来了,然后它向全网进行传播,然后全网进行验证,验证是通过的,继续传播。比如它在全网覆盖需要3秒时间,在第2秒的时候,另外一个矿工也算出这个结果,并且也是对的,并且他们同时在扩散,最后会造成一个结果,不同矿工看到这两个结果的顺序是不一样的,矿工会把看到的区块复制下来,继续挖矿,然后在这个区块的基础上继续挖新块。

那么这个怎么解决呢?

因为这两个区块的矿工数目是不一样的,所以它的算力也是不一样的,进过一段时间后,这两个区块的长短就分出来了。

当矿工发现更长的链的话,他就会抛弃短的链,把更长的链复制下来,在更长的链上继续挖矿。这分叉就消失了。

2、不同机制的分叉-THE DAO的硬分叉

分两种情况,一种情况是软分叉,这种还好解决,就是区块链软件升级的话,一部分矿工还没来得及升级,出现遵循不同的机制产生的分叉,只要这部分矿工软件升级后这个分叉就消失了。

还有一种是硬分叉,矿工间出现了分歧,一部分矿工采用不同的机制,比如说它坚决不升级,产生的分叉它不会消失。

给大家讲个案例,区块链当中最有影响力的硬分叉,应该以太坊的分叉事件,说到这就得提下DAO,DAO就是去中心化组织,由于它存在软件DA软件调用漏洞的问题,导致黑客窃取了360万个以太币,随后以太官方提出解决方案,进行下软分叉,把高度176万开始与DAO交易的为无效交易,用来攻击者在27天后与DAO提走的以太币,同时发布了软分叉的客户端,但攻击装肯定会反抗,它以智能合约的形式奖励不支持软分叉的矿工100万个以太币和100个比特币来对抗软分叉。为了解决大量资金被盗的问题,以太坊官方推出了针对软分叉版本,版本号为1.4.8的版本,这版本增加了一些规则,来锁定黑客锁定的以太币。然后绝大多数的矿工都升级了这个版本,软分叉似乎成功了,但是由于时间的仓储这版本遗漏了收取交易所收的燃料费的费用,这燃料费有两个作用,是矿工交易费以及增加攻击者的攻击成本,它没有了之后就成了DAO攻击的目标,攻击装可以0成本发起大量的攻击使整个网络瘫痪。以太坊团队通过修改以太坊代码,在2016年7月20号,在高度为1920000的区块中强行把DAO及其DAO的所有资金全部转换到一个特定的汇款合约地址,从而夺回了黑客所控制的DAO合约币。

猜你喜欢

转载自blog.csdn.net/qun_y/article/details/81262808