1. BSV商业世界首页
  2. 交易

区块链技术与应用

introduction
区块链的本质是什么?
观点1:区块链是下一代价值互联网。(信息传输-》价值交换)
观点2:世界上最慢的数据库(全冗余)
hash pointer代替指针的链表结构

BTC密码学原理篇
hash给定x和y,且有x!=y,但给定一个哈希函数Hash(),可以得到Hash(x)=Hash(y),则称为hash碰撞。collision resistance保证,如果有Hash(x)!=Hash(y),必然可以得到x!=y(当然,这是理想状态。有兴趣的可以了解针对哈希碰撞出现后如何处理,如:开放定址法、公共溢出区等)。在实际应用中,哈希碰撞基本上难以避免,我们只要保证给定x,很难找到一个y,能够在x!=y的前提下,使得Hash(x)=Hash(y)就认为其是collision resistance的,即无法人为制造hash collision
collision resistance用处:
如果我们自己有一条信息x,我们希望别人知道我有x但不想让别人知道x具体是什么,就可以通过告诉其Hash(x),由于该性质,保证了x!=y时,Hash(x)和Hash(y)是不相等的。我们只需要告诉别人Hash(x)即可,对方可以通过Hash(x)知道你确实知道x这个信息,但他无法(很难)通过Hash(x)反推出x。
hiding:
我们认为,给定x和Hash(),可以很容易得到Hash(x),但没有办法在已知Hash(x)和Hash()的情况下,反推出x的具体取值,当然这也是一个理想的情况。
collision resistance和hiding结合实现digital commitment:
某个人对某个股票进行涨停预测,我们如何保证能够知晓其预测是否准确?最简单的是提前公布,等待实际结果出现后验证。但实际中,当提前发布预测后,可能会由于预测者本身对股市实际结果造成影响。所以,应该将提前将其写于纸上并密封,交给第三方机构保管,等到实际结果出现后开启密封与实际对比,这就是digital commitment。而第三方机构需要能够使人信服,在实际生活中,有很多场景并不存在一个这样的第三方机构,而区块链技术正为此提供了一个很好的解决方法。
我们把预测结果看作x,提前公布Hash(x),等到预测结果发生时间来临后,公布x,如果根据x可以得到公布的Hash(x),则说明公布的x确实为***的内容。从而,我们可以实际进行判断预测是否准确。实际使用中,为了x足够大,会对拼接一个nonce,对其整体取Hash。
Puzzle friendly
比特币系统中,还需要第三个性质Puzzle friendly。该性质要求哈希值计算事先不可预测,仅仅根据输入很难预测出输出。例如:我们需要一个哈希值,存在于某一个范围内,只能通过不停运算查找出来。该性质保证了比特币系统中,只能通过“挖矿”获得比特币。也就是说,该性质保证了工作量证明(POW)机制可以运行下去【“挖矿难,但验证易”】。在比特币系统中采用SHA-256哈希函数
签名

比特币中账户管理
在第三方中心化系统中,账户开通依赖于第三方。但去中心化的比特币系统中,很明显不能进行“申请账户”。在比特币系统中,申请账户是用户自己来处理的,即自己创建一个公钥-私钥对。(关于公私钥请自行了解非对称加密体系和对称加密体系)。bitcoin has 2^160 address
公钥和私钥的应用保证了“签名”的应用。当在比特币网络中进行转账时,通过“签名”可以明确是由哪个账户转出的,从而防止不良分子对其他账户比特币的盗取。
在发布交易时,通过自己私钥签名,其他人可以根据公钥进行验证,从而保证该交易由自己发起。也就是说,只有拥有私钥,才能将该账户中的比特币转走。
BTC数据结构    Each block generates its own hash value based on its own block content, and each block (except the genesis block) holds the hash value of the previous block.It is important to note that the hash generation of this block depends on the content of this block, which contains the hash value of the previous block.This ensures that the block content is not tampered with.
Markle Tree
上图即为一个简单的Markle Tree,其中A、B、C、D为数据块。可见,A和B各有一个哈希值,将其合并放在一个节点中,C和D同样操作,而后,针对得到的两个节点分别取哈希,又可以得到两个新的哈希值,即为图中根节点。实际中,在区块块头中存储的是根节点的哈希值(对其再取一次哈希)。
该数据结构的优点在于:只需要记住Root Hash(根哈希值),便可以检测出对树中任何部位的修改。
例如,所绘制Markle Tree中节点B发生了改变,则对应的第二层第一个节点中第二个哈希值便也会发生改变,进而根节点中第一个哈希值也会发生改变,从而导致根哈希值也发生了改变。
在比特币系统中,不同区块通过哈希值指针连接,在同一个区块中的多个交易(数据块),则通过Markle Tree的形式组织在一起。区块本身分为两部分(块头和块身),在块头中存在有根哈希值(没有交易的具体信息),块身中存在交易列表。
Markle Tree可以用于提供Markle Proof。关于Markle proof,需要先了解比特币系统中节点。比特币中节点分为轻节点和全节点。全节点保存整个区块的所有内容,而轻节点仅仅保存区块的块头信息。一个block :1M

思考:是否存在不安全的情况?如下图我们要验证B,但是H(1)和H(4)都是全节点提供的。全节点可否修改B,通过H(1)调整,使得修改过后的H(1)和轻节点计算出的H(2)一起取得哈希仍然为H(3)?
实际上,这种情况为人为制造哈希碰撞。而由于公开课笔记2中可知,由于哈希函数的collision resistance性质,这种情况是不会发生的。从而,保证了系统的不可篡改性。同时,这样一个Markle Proof的事件复杂度为O(log n),非常高效
BTC共识协议数字货币中经常出现的问题double spending attack

去中心化需要解决的问题数字货币的发行由谁执行?如何发行?发行多少?什么时候发行?
在传统中心化货币体系中,这些问题我们可以交给第三方机构(如:央行)。当引入去中心化思想后,系统中节点平等,交易不通过第三方,那么货币发行权的分配必然是一个需要解决的问题。
-bitcoin only generated by mining,block reward 50btc per block
btc 中有两种hash pointer ,一种是指向下一个节点,一种是追溯btc来源。

比特币区块信息
block Header(区块宏观信息) block body
Version(版本协议) …
Hash of previous block header(指向前一个区块指针) …
Merkle root hash(默克尔树根哈希值) …
target(挖矿难度目标阈值) …
nonce(随机数) …
挖矿求解问题:Hash(block header)<=target
Hash of previous block header只计算区块块头部分的哈希( Merkle root hash保证了block body内容不被篡改,所以只需要计算block header即可保证整个区块内容不会被篡改)
区块链系统中,轻节点(只存储区块block header信息)只利用区块链,但并不参与区块链系统维护和构造。
分布式共识
可否各个节点独立完成区块链构建?
    -很明显不行,各个节点独立打包交易,形成区块链,必然无法避免区块链内容不一致。从分布式系统角度来说,账本内容需要取得分布式共识,从而保证区块链内容在不同节点上的一致性。
    根据FLP不可能结论,在一个异步系统中,网络时延无上限,即使只有一个成员是有问题的,也不可能达成共识。

    根据CAP Theorem(Consistency一致性、Availability可靠性、Partition tolerance容错性),任何一个分布式系统中,最多只能满足其中两个性质。
分布式共识中协议Paxos 可以保证Consistency(若达成共识必然一致),但在某些情况下,可能会一直无法达成共识。
比特币共识协议女巫攻击、大量生成私钥攻击
比特币系统中采用了很巧妙的方案解决这个问题。虽然仍然是投票,但并非简单的根据账户数目,而是依据计算力进行投票。在比特币系统中,每个节点都可以自行组装一个候选区块,而后,尝试各种nonce值,这就是挖矿。[H(block header)<=target]当某个节点找到符合要求的nonce,便获得了记账权,从而可以将区块发布到系统中。其他节点受到区块后,验证区块合法性,如果系统中绝大多数节点验证通过,则接收该区块为最新的区块并加入到区块链中
分叉攻击:

比特币激励机制比特币系统设计之初便考虑到了这个问题,那就是引入激励机制。比特币通过设置出块奖励来解决该问题,一个获得合法区块的节点,可以在区块中加入一个特殊交易(铸币交易)。事实上,这种方式也是唯一一个产生新比特币的途径。coinbase

比特币系统设计规定,起初每个区块可以获得50个比特币,但之后每隔21万个区块,奖励减半。等差数列求和,得到总数为2100w btc

区块中保存交易记录,那么,会不会存在节点只想发布区块而不想打包交易?中本聪在设计该系统时,引入了交易费(tx fee ETH:gas fee)。在一个区块中,其输入>=输出,差值便是给区块所属节点的手续费。

BSV商业世界分享比特币BSV应用,区块链应用,BSV交易,行情,平台,社区等区块链信息,所有信息均来自网络,不代表网站意见。特别提示,比特币及其他虚拟货币有超高风险,需谨慎对待,防范以“虚拟货币”“区块链”名义进行非法集资。

BSV商业世界提供比特币BSV应用,区块链应用,BSV交易,行情,平台,社区等区块链信息,所有信息均来自网络,不代表网站意见。特别提示,比特币及其他虚拟货币有超高风险,需谨慎对待,防范以“虚拟货币”“区块链”名义进行非法集资。如若转载,请注明出处:https://bitcoinwinds.com/420.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

QR code