比特币基本原理
1.要解决的问题
货币的发行权:国家(央行),货币总量,放水(超发)等 =>技术保障
货币的所有权:宣布作废,银行不承认等,法律保障 =>技术保障
点对点交易:传统的电子货币数字货币交易都有一个强中心来解决信任问题 =>技术保障
2.如何解决
如何设计一个去中心化的点对点的电子现金系统
所有权
公私钥体系
非对称加密:公钥公开,私钥进行加解密,双方不用交换密钥即可进行加密通信
私钥:比特币世界的私钥就是所有权的证明
地址:通过私钥进行一系列的运算得到。
签名:验证所有权,私钥进行签名,公钥验证通过
交易
白皮书这样定义:一枚电子货币(an electronic coin)是这样的一串数字签名:每一位所有者通过对前一次交易和下一位拥有者的公钥(Public key) 签署一个随机散列的数字签名,并将这个签名附加在这枚电子货币的末尾,电子货币就发送给了下一位所有者。而收款人通过对签名进行检验,就能够验证该链条的所有者。
双花问题
上述的交易过程 收款人没办法确认 付款人是否进行了双花。通常的解决方案,就是引入信得过的第三方权威,来对每一笔交易进行检验,以防止双重支付。
比特币的解决方案:
- 所有交易公开
- 系统内的所有参与者都有唯一公认的历史交易序列,最长链
接下来的所有设计都是为了达成这两个目的
网络,P2P, 节点,工作原理
- 新的交易向全网进行广播;
- 每一个节点都将收到的交易信息纳入一个区块中;
- 每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明;
- 当一个节点找到了一个工作量证明,它就向全网进行广播;
- 当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性;
- 其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造新的区块以延长该链条,而将被接受区块的随机散列值视为先于新区快的随机散列值。
时间戳服务器(Timestamp server),区块链结构,单节点容易篡改,分布式
- 打包的规则,谁来打包,间隔时间(设定为10分钟)
- 为啥要打包
工作量证明(Proof-of-Work),激励,挖矿
为了增大区块的篡改难度,在区块上引入了一个随机数Nonce,这个随机数要使得该给定区块的随机散列值出现了所需的那么多个0
这样的话只有最早计算出符合要求的区块hash的节点打的包才可以被其它节点节点。
同时这个也解决了投票表决“大多数”问题,能最早算出的节点,一定是投入算力比较大的节点。
- 同步
平均出块时间设定为10分钟(TPS约为7),便于世界范围内的节点同步,充分竞争。网络情况等
- 难度调整
通过对历史区块的出块时间进行移动平均,如果时间低于10分钟,那么难度加大,大于10分钟难度降低。
- 区块奖励,发行权,为了激励节点参与者打包区块,每个区块会发行一定数量的货币奖励给出块节点,手续费也是对出块节点的奖励。
3.生态参与方
- 节点:任何人都可以部署节点,同步账本,参与挖矿,广播交易等
- 矿工,矿池:主要是挖矿,打包交易,获取打包奖励以及手续费收益
- 用户:使用比特币进行交易的人,主要是通过一些钱包软件使用
- 开发者:控制比特币代码的开发,节点可以自主选择部署的版本。
4.存在问题
51%攻击
当一个节点掌握了超过50%的算力之后,理论上就可以对区块进行重组,篡改。并总是保持为最长链。
分叉
最长链,互相不承认,共识问题
参考文献
赞助一杯咖啡☕️
本文由 widdy 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Apr 8, 2021 at 02:47 pm