导图社区 BTC技术栈
BTC技术栈的思维导图,整理了地址生成算法、理解开发HD钱包涉及的BIP32、BIP44、BIP39、UTXO账户模型、分叉、双花交易等内容,希望这份脑图会对你有所帮助。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
BTC技术栈
1、3、bc1 开头的比特币地址都有啥区别
1开头的地址,被称为传统地址 ( Legacy Address )。这就是最原始的比特币地址,1 开头的地址,采用 P2PKH ,P2PKH(Pay-to-Pubkey Hash),支付公钥哈希,即比特币交易输入输出脚本,采用公钥及公钥哈希。
3开头的地址,比如 3EktnHQD7RiAE6uzMj2ZifT9YgRrkSgzQX。2012年的比特币改进提案中,新增 P2SH 的地址。 P2SH (Pay-to-Script-Hash),支付脚本哈希,即比特币交易输入输出脚本,采用赎回脚本及赎回脚本哈希。其地址结构类似于 P2PKH,但它支持比传统地址更复杂的功能。P2SH 脚本函数最常用于 multisig 地址,这些地址可以指定多重数字签名来授权事务。举个例子:某个3开头的地址由三人控制,其中,任意两人同意,便可发起转账。
3开头的地址
多签地址
2012年的比特币改进提案中,新增 P2SH 的地址。P2SH (Pay-to-Script-Hash),支付脚本哈希,即比特币交易输入输出脚本,采用赎回脚本及赎回脚本哈希。其地址结构类似于 P2PKH,但它支持比传统地址更复杂的功能。P2SH 脚本函数最常用于 multisig 地址,这些地址可以指定多重数字签名来授权事务。举个例子:某个3开头的地址由三人控制,其中,任意两人同意,便可发起转账。
隔离见证地址
隔离见证是一种区块链扩容的方法,已在比特币和莱特币上成功实施。我们常见的部分 3 开头的地址,和 bc1 开头的比特币地址,就是隔离见证地址。普通用户只关心自己账户有多少比特币,并不需要验证每一笔交易。所以,隔离见证就把区块内的数字签名信息拿掉,从而减少交易字节数,让每个区块可以承载更多笔交易,进而达到扩容的目的。
隔离见证兼容地址
3开头的地址:因为使用 P2SH 方式打包,所以隔离见证兼容地址,也以3开头,旧节点能识别。 大家不需要知道——以3开头的比特币地址,到底是多签地址,还是隔离见证兼容地址,只需要知道以3 开头的地址,被广泛支持,可以向 1开头 和 bc1 开头的地址发送比特币即可。
原生隔离见证地址
bc1 开头的地址,是由新的隔离见证脚本生成的地址(P2WPKH 或 P2WSH),是纯正的隔离见证地址。 它采用 Bech32 编码,其风格和 P2PKH 和 P2SH(即 1开头和 3开头)风格的地址完全不同。 由于使用 bc1 前缀,它比上面两种地址要长,由42个符号组成.目前,只有部分钱包支持原生隔离见证地址 ,支持的交易所也不多
地址生成算法
理解开发HD 钱包涉及的 BIP32、BIP44、BIP39
BIP32
定义 Hierarchical Deterministic wallet (简称 "HD Wallet"),是一个系统可以从单一个 seed 产生一树状结构储存多组 keypairs(私钥和公钥)。好处是可以方便的备份、转移到其他相容装置(因为都只需要 seed),以及分层的权限控制等
BIP44
基于 BIP32 的系统,赋予树状结构中的各层特殊的意义。让同一个 seed 可以支援多币种、多帐户等。各层定义如下: m / purpose' / coin_type' / account' / change / address_index\btc: m/44'/0'/0'/0 eth: m/44'/60'/0'/0 m 是固定的 purpose 是固定的,值为44' Coin type 这个代表的是币种,0代表比特币,1代表比特币测试链,60代表以太坊
BIP39
将 seed 用方便记忆和书写的单字表示。一般由 12 个单字组成,称为 mnemonic code(phrase),一般为英文,中文称为助记词或助记码
UTXO账户模型
UTXO是Unspent Transaction Outputs的缩写,中文硬核翻译是没有花掉的交易输出,实际可以理解为在一次转账时剩余没有转出的资金。那比特币为啥要使用这么一个概念呢?这就要从记账方法的账户交易模型和账户余额模型说起了。因为在区块链上只能记录交易,没法记录账户余额。如果没有这个UTXO的话,要计算余额需要把一个账户的所有交易的入账和出账全部累加一遍,这是个非常消耗时间和计算资源的事情。而UTXO的出现巧妙的避免了在计算余额时要回溯所有交易的痛点问题。
子主题
分叉
软分叉
在原有的比特币网络里面进行优化修改bug提升区块的容量,比如改成2M、4M或者8M、16M,其中以SegWit闪电网络为主流解决方案,通俗的说,就相当于一条主路上堵车,开发团队就再建造一条辅路,帮助主路分流拥堵。 这是一种温和的解决方式,能让原有的比特币网络和软分叉之后的网络进行兼容,比特币的主要交易还在主链上。当然,软分叉存在缺点,那就是治标不治本,只能解决暂时的拥堵问题,执行软分叉后,也仅能保持数年内网络的通畅,未来还需要不断扩容,对系统稳定性有影响。
硬分叉
重新升级比特币系统,通过代码形式将区块的高度彻底改变,以bitcoin unlimited为主流解决方案。通俗的说,就相当于一条主路上堵车,我们直接弃用这条路,找个地方,做一个地上地下立体交通枢纽,新车都走这套交通系统,这套系统改变了比特币网络的区块大小,优化了网络的处理速度。但是硬分叉同样存在缺点,那就是不兼容原有的比特币系统,这就要求现在比特币网络所有的人都要支持硬分叉,若有部分人不支持硬分叉,比特币网络将会出现两个版本,也就产生了两个比特币,这两个比特币所存在的区块链形成竞争关系,这种内耗会导致价格波动较大,会导致比特币未来的局势不明朗。
双花交易
同一笔钱(数字加密货币)被重复支付两次,也就是将同一个地址上的数字加密货币同时支付给两个不同的收款地址。如果双重支付是有意而为之,那么就是双花攻击。在其它公链上双花攻击的确多次发生过,并且不幸的是作恶者硕果累累。
节点----区块链节点,通常指的是区块链网络中的计算机,也就是说任何连接到区块链网络的计算机(包括手机,矿机等)都称为节点。比如说比特币网络,是一个公有链,用户在自己的联网电脑上运行比特币程序时,这个电脑就成为比特币区块链网络中的一个节点。
SPV节点
而SPV节点不需要下载全部区块的数据,只需要下载全部的区块头数据,就可以验证支付。
全节点
全节点需要下载全部区块的数据,需要在本地保存全部数据。
轻节点
轻节点也需要下载全部区块的数据,并在本地存储与自身相关的交易数据,只是无需在本地保存全部数据而已。
挖矿过程
挖矿的具体过程为:参与者综合上一个区块的 Hash 值,上一个区块生成之后的新的验证过的交易内容,再加上自己猜测的一个随机数 X,一起打包到一个候选新区块,让新区块的 Hash 值小于比特币网络中给定的一个数。这是一道面向全体矿工的“计算题”,这个数越小,计算出来就越难。系统每隔两周(即经过 2016 个区块)会根据上一周期的挖矿时间来调整挖矿难度(通过调整限制数的大小),来调节生成区块的时间稳定在 10 分钟左右。为了避免震荡,每次调整的最大幅度为 4 倍。历史上最快的出块时间小于 10s,最慢的出块时间超过 1 个小时。
共识机制
工作量证明
权益证明