博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
区块链解读5-名词解释
阅读量:4170 次
发布时间:2019-05-26

本文共 3835 字,大约阅读时间需要 12 分钟。

解读区块链,名词解释

前面几篇文章大致解释了区块链中几个重要关节,这一章针对区块链中常见的几个名词词汇作一个汇总解释。
区块:block 记录一段时间内发生的交易和交易状态结果,同时对当前账本状态有一次共识。以比特币区块为例,包括区块头和区块体。其中区块头中记录,版本号(version)、前一区块地址(prev-block)、时间戳(timestamp)、随机数(nonce)、当前目标哈希值、merkle-root信息。区块体中包含交易的详细信息(交易数量和交易详情)。
这里写图片描述
链:chain 一个个区块顺序串联而成,整个系统状态变化的日志记录。
这里写图片描述
公有链:public blockchains 公共区块链是指全网开放,任何人都可以读取、可交易、可获得交易确认、任何人都可根据共识机制约定参与的区块链,公共区块链作为中心化或者准中心化信任的替代物,目前被追广泛认可。该类型区块链的安全有加密数字经济维护,加密数字经济通过工作量或者权益证明机制等,将经济奖励和加密数字验证结合,并遵循每个人都可以获得经济奖励,对共识机制的贡献成正比,这类区块链通常被认为“完全去中心化”。该链中所有的节点都是公开节点。权利和义务均等。
私有链:Fully private blockchains,为什么加一个fully、为了体现完全私有,这类区块链的写入权限完全掌握在一个组织中,读取权限可完全或有限制的对外开放,这类区块链适用审计,权力相对集中公司。尽管在有些情况下希望它能有公共的可审计性,但在很多的情形下,公共的可读性并非是必须的。该类型区块链对去中心化概念有一定程度的颠覆,权力集中。
联盟链:共同体区块链Consortium blockchains,是指其共识过程受到预选节点控制的区块链;例如,不妨想象一个有15个金融机构组成的共同体,每个机构都运行着一个节点,而且为了使每个区块生效需要获得其中10个机构的确认(2/3确认)。区块链或许允许每个人都可读取,或者只受限于参与者,或走混合型路线,例如区块的根哈希及其API(应用程序接口)对外公开,API可允许外界用来作有限次数的查询和获取区块链状态的信息。这些区块链可视为“部分去中心化”
这里写图片描述
联盟链鉴于公有链和私有链之间,取舍两者的权利和义务的分配,并对分布式账本的访问做一定的访问控制。
针对公有链和私有链再做一个优缺点比较:
公有链优缺点:公有链中权利完全开放,如果遵循这个原则,开发程序的人就会放弃自己的权限,那每个用户权利义务均等,用户间将无条件的互相信任,区块链上交易信用也将因为这个机制得到先天的保障,这样使得交易完全可不依赖第三方信任机构,交易也将更高效,所有用户的资产交易信息共同存放在公共数据库中。这是优点当然也有人认为是缺点,这个就看具体应用上的权益关系了。
私有链优缺点:首先私有链是针对共同体或者单独公司的,这在实现推广上可能更容易,当然这样的应用场景不可能完全做到去中心化,肯定会出现相应的权力节点对区块链的结构或规则进行修改,这样可避免51%攻击风险(比特币中如计算资源超过51%将可改变区块生成),节点可更快生产交易区块,不像比特币中平均需要10分钟生成一个区块,区块的快速生成是对即时类交易的最大支持。当然在保护隐私权这一方面,私有链更好。
半衰期:这个针对比特币产生的一个概念,即为矿工每验证一个区块即可得到的奖励。从最开始的50BTC,每四年减半,目前是12.5BTC,已经历过2次半衰(50BTC–>25BTC–>12.5BTC)。
分叉:分叉分为软分叉和硬分叉,软分叉:当新共识规则发布后,没有升级的节点会因为不知道新共识规则下,而生产不合法的区块,就会产生临时性分叉。硬分叉:区块链发生永久性分歧,在新共识规则发布后,部分没有升级的节点无法验证已经升级的节点生产的区块,通常硬分叉就会发生。
PKI体系:在非对称加密中,公钥则可以通过证书机制来进行保护,PKI(Public Key Infrastructure)是建立在公私钥基础上实现安全可靠传递消息和身份确认的一个通用框架,PKI框架包含CA\RA、证书数据库三个重要组件,CA(Certification Authority):负责证书的颁发和作废,接收来自 RA 的请求,是最核心的部分,RA(Registration Authority):对用户身份进行验证,校验数据合法性,负责登记,审核过了就发给 CA,证书数据库:存放证书,一般采用 LDAP 目录服务,标准格式采用 X.500 系列。
图灵完备:现在区块链技术中都会强调的一个概念,比特币中脚本语言是图灵不完备的,现在ETH等新出来的区块链技术脚本都支持图灵完备,图灵完备:一台计算机也是一个图灵机,一个图灵完备的语言意味着这个语言可以使用计算机完成任何计算机可以完成的任务,也就能够发挥计算机的所有能力。
HASH哈希:哈希也叫做散列函数,是指把任意长度的输入变换成固定长度的输出,该输出就是哈希值(散列值)。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改一个字母,随后的哈希都将产生不同的值。要找到哈希值相同的两个不同的输入,在计算上是不可能的。HASH算法是密码学的基础,比较常用的有MD5和SHA,不可逆和无冲突是其重要性质。不可逆是指:知道A的HASH值,无法求出A;无冲突是指:知道A,无法求出一个B, 使A与B的HASH值相同。
Confirmation 确认:当一笔交易被打包到区块里面,成为了区块链的一部分的时候,一个确认就产生了。确认表示交易已被网络验证,每一个确认数的增加都使交易被回滚的概率降低。在比特币交易中,一个确认就比较安全,但是对于比较大额的转账,建议等待交易得到更多的确认,一般认为6次确认就足够安全了。在其他加密货币交易中,比较安全的确认数会各有差异。
UTXO:Unspent Transaction Outputs是未花费的交易输出,它是比特币交易生成及验证的一个核心概念。交易构成了一组链式结构,所有合法的比特币交易都可以追溯到前向一个或多个交易的输出,这些链条的源头都是挖矿奖励,末尾则是当前未花费的交易输出。所有的未花费的输出即整个比特币网络的UTXO。比特币规定每一笔新的交易的输入必须是某笔交易未花费的输出,每一笔输入同时也需要上一笔输出所对应的私钥进行签名,并且每个比特币的节点都会存储当前整个区块链上的UTXO,整个网络上的节点通过UTXO及签名算法来验证新交易的合法性。这样,节点不需要追溯历史就可以验证新交易的合法性。
公钥、私钥、地址:
这里写图片描述
针对比特币中的公钥、私钥、地址对这三个名词作一个解释。
私钥:私钥本质上是32个byte组成的数组,1个byte等于8位二进制,一个二进制只有两种可能性0或者1,所以私钥的总数就是2^(8*32)=2^256个,这个数量已经超过了宇宙中原子的总数,想要遍历所有的私钥,耗尽整个太阳的能量也是不可能成功的。我们所说的比特币私钥的是密码学上面安全的,并不是不可能出现重复的私钥,而是说不可能通过遍历所有的私钥方式,或者其它的方式,找到上面有比特币的私钥,所以私钥是密码学上安全的。32个byte组成的数组是由256个0或者1组成的,如果显示出来,不仅仅是识别率太差,而且太长。因此私钥就会被转换成上面的样子,上面私钥的样子是对32个byte的数组做了Base58的转换,Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址和私钥。相比Base64,Base58不使用数字”0”,字母大写”O”,字母大写”I”,和字母小写”l”,以及”+”和”/”符号。主要就是为了肉眼容易识别。
公钥:公钥是由私钥生成的,通过椭圆曲线(ECPoint)生成,一个私钥经过椭圆曲线变换之后会生成一个65个byte的数组,公钥一般是把byte数组是经过hex(16进制)的处理之后显示出来的,不同于私钥的Base58,公钥是用来解开私钥签名的数据,使用私钥签名交易之后,会把自己的公钥一起发送,私钥签名的数据可以使用公钥解密,发送公钥之后旷工才能验证私钥的签名的正确性,私钥和公钥是成对出现的,一个私钥签名的数据,只有对应的公钥才能解开,而地址也是从公钥生成的,这样就可以验证花费的交易是不是属于这个地址的。
地址:地址是由公钥产生的,看到的地址都是Base58编码处理的,地址的生成比较复杂,说地址之前不得不先说下hash160,地址是由公钥生成的的,但是公钥生成地址的时候会先生成一个hash160。生成的过程是,先对公钥做一次SHA256,再对得到的结果做一次RIPEMD160,再从结果中取20个byte的数组,这个得到的数组就是得到的hash160,在这个20位的byte数组前面再加上一个byte,就是地址的version信息(当前为0)得到一个21位的byte数组,对它进行Base58转换就是我们看到的地址的样子,也就是说hash160和是可以和地址相互转换的
参考该文,简单明了解释很清楚。
区块链的几个名词解释大概写这些,如概念解释有误望及时提出,笔者初学区块链,很多东西也是慢慢摸索,之所以写下这些基本概念一方面作为自己学习的整理,另一方面也希望更多交流学习的机会。有兴趣的可以加我的公众号或者微信。
这里写图片描述
这里写图片描述

你可能感兴趣的文章
Oracle EBS R12 - 报FRM-91126错的一种可能原因和解决方法
查看>>
iptables常用规则 - 未完待续
查看>>
rh333 - 启用apache的UserDir(~user)支持
查看>>
rh333 - kinit(v5): Password incorrect while getting initial credentials
查看>>
strace,ltrace linux下跟踪进程调用的命令
查看>>
Linux下简单samba共享配置
查看>>
rh333 - 搭建简易CA中心
查看>>
rh333 - 利用apache搭建简易https服务器
查看>>
adpatch OPTIONS
查看>>
How to get details about patch applied in Oracle Applications by OAM & SQL?
查看>>
配置作为客户机的iptables规则 - ArchLinux
查看>>
Oracle EBS R12 - ad_bugs.BUG_NUMBER和ad_applied_patches.PATCH_NAME的关系
查看>>
rh436 - ssh验证/连接很慢
查看>>
rh436 - Linux下如何根据fdisk/tune2fs -l/dumpe2fs来计算分区的大小
查看>>
高cpu占用sql的诊断流程
查看>>
Archlinux上fcitx怎麼才能輸入正體中文
查看>>
AUTOTRACE与EXPLAIN PLAN,ANALYZE与DBMS_STATS
查看>>
rh442 - Linux下性能监控命令vmstat的简单理解
查看>>
RMAN备份时报“ORA-19504: failed to create file”和“ORA-27038: created file already exists”的一种情况和解决办法
查看>>
rman之resetlogs及恢复备份控制文件的一点理解
查看>>