| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 如何设计一个数字货币? 《区块链技术与应用》Lesson4学习笔记(BTC-协议) -> 正文阅读 |
|
[区块链]如何设计一个数字货币? 《区块链技术与应用》Lesson4学习笔记(BTC-协议) |
文章目录如何设计一个数字货币? 《区块链技术与应用》Lesson4注:本文为 1. BTC协议数字货币与纸质货币的不同:
这种情况称为double spending attack 1.1 解决方法1中心化方法:维护一个大型数据库,每一笔交易都要在里面更改记录 1.2 解决方法2去中心化方法:区块链
一个区中心化的货币系统,需要考虑以下两个问题:
有两个Hash指针
证明这个钱不是凭空捏造的,防止Double Spending 在比特币中,地址是通过公钥得到的(Hash映射) 注意:
在交易中,主要有两个部分:
2. 如何验证交易的正确性?交易及验证的比特币系统截图如下所示(默克尔树Merkle Tree) 在挖币初始阶段,会产生一个公钥,说明挖出来的币是谁的,随着交易记录溯源,能够说明这个币是否属于A 在比特币系统中我们通常使用脚本来进行检测,我们使用一个脚本来验证 将当前交易的输入脚本,拼接前面交易的输出脚本,合在一起运行,如果没有错误,就证明这个交易是合法的 3. 区块链中的信息
只有block header 才有串起来的区块指针 取hash的时候,只会对header取,因为header中的阈值已经保证了block body中的数据是没有被串改的了
full node:节点全部信息
light node: 轻节点(系统中大多数) 4. 如何写入区块链?每个节点都可以发布交易,哪谁来决定哪些交易能被写道区块中呢? (我记的账本和你记的账本不太一样?) 为此,我们提出了分布式的共识(distribution consensus)
4.1 不可能言论 impossible result :在分布式系统中,通常有以下几个言论:
其中CAP指:
是指在分布式系统中,这三个性质,只能满足其中的两个,不可能三个都满足 在分布式协议(distributed consensus)中,有这样一个协议:
4.2 比特币中的共识协议Q:在比特币系统中,绝大多数的节点都是好的,只有少部分节点是有恶意的,那么我们应该怎么去设计这个系统呢? Answer1:投票决定区块是否合法
Answer2:使用算力投票
但是如果仍然发一个block,往前验证,这是正确的 那应该怎么规定去避免的情况? 应该发在区块的最长合法链上 所以区块链只区块的最长合法链上的区块才会被接收 4.3 冲突区块即使是这样还是会出现一种情况两个矿工同时找到了一个合法的区块,就会在链子上出现分叉的情况 相当于带领了两班人,互相用算力(也有可能是运气)竞争,最后接的长的那个区块会被命名为最终的正确区块 但是不应该只有记账权作为奖励,我们是希望凡是合法的交易都应该写入到区块链中 4.4 出块奖励比特币规定,获得记账权的那个节点在发布区块的时候会有铸币的权利,可以发送一定数量的比特币 (block reward) coinbase transaction(发行比特币的唯一方法) 哪能造多少呢?(21w个区块以后就要减半):
puzzle friendly:保证了只能通过算力来求解这个问题 (不停地去试随机数) 算力可以折射为(hash rate),这就解决了之前的sybil attack的问题,因为创建多个账户并不会使你拥有更多的算力 写在最后各位看官,都看到这里了,麻烦动动手指头给博主来个点赞8,您的支持作者最大的创作动力哟! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:58:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |