- A+
所属分类:学习笔记
学习区块链的第一步首先是要搞清楚区块链相关的一些概念,只有对概念有了基本的认识,才能在后续的学习中事半功倍。
如果你读懂了我下面分类的逻辑,说明你已经理解了区块链的原理。
- 中本聪
中本聪有可能是一个人或一群人的名字。中本聪是比特币的设计者,同时也创建了比特币的最初实现,比特币核心。作为实现的一部分,他们还发明了第一个区块链数据库。在这个过程中,他们是第一个为数字货币解决了双花问题的人或组织。但他们的真实身份仍然未知。 - 双重支付
双重支付是成功支付了1次以上的情况。比特币通过对添加到区块中的每笔交易进行验证来防止双重支付,确保交易的输入没有被支付过。
- SHA256
安全哈希是有NIST(国家标准技术研究所)发布的加密哈希函数族。 - BASE58
- 默克尔根
默克尔树的根是树的根节点,该节点为树中所有节点对的多次哈希计算结果。区块头必须包括区块中所有交易哈希计算得到的有效默克尔根。 - 默克尔树
生成一棵完整的Merkle树需要递归地对哈希节点对进行哈希,并将新生成的哈希节点插入到Merkle 树中,直到只剩一个哈希节点,该节点就是Merkle 树的根。在比特币中,叶子节点来自于单个区块中的交易。 - 椭圆曲线算法ECDSA
椭圆曲线数字签名算法(ECDSA)是比特币使用的加密算法,以确保资金只能被其正确拥有者支付。 - RIPEMD-160
RIPEMD-160是一个160位的加密哈希函数。RIPEMD-160是RIPEMD的加强版,其哈希计算后的结果是160位哈希值。通过RIPEMD-160加密期望能实现在未来的10年或更长时间都是安全的。 - LevelDB
LevelDB是一个开源的硬盘键值对数据库。LevelDB是一个用于持久性绑定多个平台的轻量级、单用途的库。 - 布隆过滤器
- 比特币
“比特币”既可以指这种虚拟货币单位,也指比特币网络或者网络节点使用的比特币软件。 - 地址
比特币地址(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由一串字符和数字组成。它其实是通过对160位二进制公钥哈希值进行base58check编码后的信息。就像别人向你的email地址发送电子邮件一样,他可以通过你的比特币地址向你发送比特币。 - coinbase
一个用于为创币交易提供专门输入的特殊字段。coinbase允许声明区块奖励,并为任意数据提供多大100字节。不要与创币交易混淆。
- 钱包
钱包指保存比特币地址和私钥的软件,可以用它来接受、发送、储存你的比特币。 - 冷钱包
- 热钱包
- 硬钱包
硬件钱包是一种特殊的比特币钱包,硬件钱包可以将用户的私钥存储在安全的硬件设备中。 - 纸钱包
- SPV
简化支付验证是在无需下载所有区块的情况对特定交易进行验证的方法。该方法被用在一些比特币轻量级客户端中。 - WIF(钱包导入格式)
钱包导入格式是一个数据交换格式,设计用于允许导出和导入单个私钥,该私钥通过标志标明是否使用压缩公钥。 - 密钥(私钥)
用来解锁对应(钱包)地址的一串字符,例如5J76sF8L5jTtzE96r66Sf8cka9y44wdpJjMwCxR3tzLh3ibVPxh+。 - HD协议
层级确定性(HD)密钥创建和传输协议(BIP32),该协议允许按层级方式从父密钥创建子密钥。 - HD钱包
使用创建层次确定的钥匙和BIP32传输协议的钱包。. - HD钱包种子
HD钱包种子或根种子是一个用于为HD钱包生成主私钥和主链码所需种子的潜在简短数值。
- 交易(转账)
- coinbase交易
区块中的第一个交易。该交易是由矿工创建的,它包含单个coinbase。不要与Coinbase混淆。
- 孤立交易
孤立交易是指那些因为缺少一个或多个输入交易而无法进入交易池的交易。 - 交易输出
交易输出(TxOut)是交易中的输出,交易输出中包含两个字段:1.输出值字段:用于传输0或更多聪;2.公钥脚本:用于确定这些聪需在满足什么条件的情况下才可花费。 - 交易池
比特币内存池是区块中所有交易数据的集合,这些交易已经被比特币节点验证,但为被确认。 - UTXO
UTXO是未花费交易输出,UTXO可以作为新交易的输入。
- OP_RETURN交易
OP_RETURN在比特币核心0.9.0中默认的一种被传播和挖出的交易类型,在随后的版本中添加任意数据至可证明的未花费公钥脚本中,全节点中无需将该脚本存储至他们的UTXO数据库中。不要与OP_RETURN操作码混淆。 - 多重签名
多重签名指的是需要多于一个密钥来验证一个比特币交易。 - 锁定时间
锁定时间(技术上来说是nLockTime)是交易的一部分,其表明该交易被添加至区块链中的最早时间或区块。 - 哈希时间锁定合约
哈希时间锁定合约(HTLC)是一类支付方式,其使用哈希锁和时间锁来锁定交易。解锁需要接收方提供通过加密支付证明承认在截止日期之前收到了支付,或者接收方丧失了认领支付的能力,此时支付金额将返回给支付方。
- 区块
一个区块就是若干交易数据的集合,它会被标记上时间戳和之前一个区块的独特标记。区块头经过哈希运算后会生成一份工作量证明,从而验证区块中的交易。有效的区块经过全网络的共识后会被追加到主区块链中。 - 创始块
- 旧块
旧块是那些被成功挖出,但是没有包含在当前主链上的区块,很有可能是同一高度的其他区块优先扩展了区块链长度导致的。 - 孤块
孤块由于父区块未被本地节点处理的区块,所以他们还不能被完全验证。 - 区块链
区块链是一串通过验证的区块,当中的每一个区块都与上一个相连,一直连到创世区块。
- 挖矿
- 矿工费
交易的发起者通常会向网络缴纳一笔矿工费,用以处理这笔交易。大多数的交易需要0.5毫比特币的矿工费。 - 奖励
每一个新区块中都有一定量新创造的比特币用来奖励算出工作量证明的矿工。现阶段每一区块有12.5比特币的奖励。 - 共识
当网络中的许多节点,通常是大部分节点,都拥有相同的本地验证的最长区块时,称为共识。不要与共识规则混淆。 - 共识规则
全节点与其他节点保持共识的区块验证规则。不要与共识混淆。 - 工作量证明(PoW)
工作量证明指通过有效计算得到的一小块数据。具体到比特币,矿工必须要在满足全网目标难度的情况下求解SHA256算法。 -
权益证明
权益证明(POS)是一种方法,加密货币区块链网络获得分发共识。POS会让用户证明其拥有的资产总量(他们在数字货币中的权益)。
- 随机数
随机数是比特币区块中一个32位(4字节)的字段,在设定了该值后,才能计算区块的哈希值,其哈希值是以多个0开头的。区块中的其他字段值是不变的,因为他们有确定的含义。 - 难度
整个网络会通过调整“难度”这个变量来控制生成工作量证明所需要的计算力。 - 难度重定
全网中每新增2016个区块,全网难度将重新计算,该新难度值将依据前2016个区块的哈希算力而定。 - 难度目标
使整个网络的计算力大致每10分钟产生一个区块所需要的难度数值即为难度目标。 - 超额随机数
随着难度增加,矿工通常在循环便利4亿次随机数值后仍未找到区块。因为coinbase脚本可以存储2到100字节的数据,矿工开始使用这个存储空间作为超额nonce空间,允许他们利用一个更大范围的区块头哈希值来寻找有效的区块。 - 分叉
分叉也被称为意外分叉,是在两个或多个区块拥有同一区块高度时发生的,此时使区块链产生了分叉。典型情况是两个或多个区块矿工几乎在同一时刻发现了区块。共识攻击的情况下也会出现分叉。
- 硬分叉
硬分叉,也叫硬分叉改变,是区块链中一个永久分歧。通常在已按照新的共识规则进行了版本升级的节点产生了新区块时,那些未升级节点无法验证这些新区块时产生硬分叉。不要与分叉、软分叉或者Git分叉混淆。 - 软分叉
软分叉是区块链中的一个短暂分叉,通常是由于矿工在不知道新共识规则的情况下,未对其使用节点进行升级而产生的。不要与分叉、硬分叉、软分叉或者Git分叉混淆。
- 矿池
矿池一种挖矿方式,在矿池中多个客户端共同贡献算力来产生区块,然后根据贡献算力大小来分配区块奖励。
- 脚本
比特币使用脚本系统来处理交易。脚本有着类Forth语言、简单、基于堆栈以及从左向右处理的特点。脚本故意限定为非图灵完备的,没有循环计算功能。 - ScriptPubKey (公钥脚本)
脚本公钥或者公钥脚本是包含在交易输出中的脚本。该脚本设置了比特币花费需满足的条件。满足条件的数据可以由签名脚本提供。 - ScriptSig (签名脚本)
签名脚本是由支付端生成的数据,该数据几乎总是被用作满足公钥脚本的变量。 - P2PKH
支付到比特币地址的交易包含支付公钥哈希脚本(P2PKH)。由P2PKH脚本锁定的交易输出可以通过给出由相应私钥创建的公钥和数字签名来解锁(消费)。 - P2SH
P2SH是一种强大的、新型的、且能大大简化复杂交易脚本的交易类型而引入。通过使用P2SH,详细描述花费输出条件的复杂脚本(赎回脚本)将不会出现在锁定脚本中。相反,只有赎回脚本哈希包含在锁定脚本中。 - P2SH地址
P2SH地址是基于Base58 编码的一个含有20 个字节哈希的脚本。P2SH地址采用“5”前缀。这导致基于Base58 编码的地址以“3”开头。P2SH 地址隐藏了所有的复杂性,因此,运用其进行支付的人将不会看到脚本。 - P2WPKH
P2WPKH签名包含了与P2PKH花费相同的信息。但是签名信息放置于见证字段,而不是签名脚本字段中。公钥脚本也被修改了。 - P2WSH
P2WSH与P2SH的不同之处在于加密证据存放位置从脚本签名字段转变至见证字段,公钥脚本字段也被改变。
- BIP
比特币改进提议 (Bitcoin Improvement Proposals的缩写),指比特币社区成员所提交的一系列改进比特币的提议。例如,BIP0021是一项改进比特币统一资源标识符(URI)计划的提议。 - 隔离见证
隔离见证是比特币协议的一个升级建议,该建议技术创新性地将签名数据从比特币交易中分离出来。隔离见证是一个推荐的软分叉方案;该变化将从技术上使得比特币协议规则更严谨。 - 染色币
比特币2.0开源协议允许开发者在比特币区块链之上,利用它的超越货币的功能创建数字资产。 - 闪电网络
闪电网络是哈希时间锁定合约(HTLCs)的一种建议实现方式。闪电网络通过双向支付通道方式允许支付方通过多个点对点支付通道安全地完成支付。这将允许一种支付网络的构建,该网络中的一方可以支付给其他任何一方,即使在他们双方没有直接建立支付通道的情况。