摘要: 双花攻击数字货币本身为带有签名的数据文件,可以进行复制。即:对用户来说,可以将同一货币花费两次。修改:对货币添加唯一编号(不可篡改),每次支付向货币发行单位查询真伪。该方法每次交易都需要依赖于第三方机构来判断货币真伪且防止双花攻击。是一个典型的第三方中心化方案。现实中,我们通过支付宝、微信、信用卡等 阅读全文
posted @ 2022-02-11 21:42 xjspyx 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 可否各个节点独立完成区块链构建?很明显不行,各个节点独立打包交易,形成区块链,必然无法避免区块链内容不一致。从分布式系统角度来说,账本内容需要取得分布式共识,从而保证区块链内容在不同节点上的一致性。 根据FLP不可能结论,在一个异步系统中,网络时延无上限,即使只有一个成员是有问题的,也不可能达成共识 阅读全文
posted @ 2022-02-11 21:42 xjspyx 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 背景:假设系统中存在部分节点有恶意,但存在比例较小。大多数节点为“好”的节点,在这种情况下进行共识协议设置。想法1:直接投票某个节点打包交易到区块,将其发给其他节点,其他节点检查该候选区块,检查若正确投赞成票,若票数过半数,加入区块链。存在的问题1——恶意节点不断打包不合法区块,导致一直无法达成共识 阅读全文
posted @ 2022-02-11 21:42 xjspyx 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 指针在程序运行过程中,需要用到数据。最简单的是直接获取数据,但当数据本身较大,需要占用较大空间时,明显会造成一定麻烦。因此,可以引入指针这一概念。当需要获取数据时,只需要按照指针所给的地址,去对应的位置读取数据即可,这样大大节省了内存空间。在实际中,为了便于程序移植性等原因,指针实际上存储的是逻辑地 阅读全文
posted @ 2022-02-11 16:57 xjspyx 阅读(893) 评论(0) 推荐(0) 编辑
摘要: 为什么系统中节点要竞争记账权?需要提供算力和电力成本,节点为什么要去做? 比特币系统设计之初便考虑到了这个问题,那就是引入激励机制。比特币通过设置出块奖励来解决该问题,一个获得合法区块的节点,可以在区块中加入一个特殊交易(铸币交易)。事实上,这种方式也是唯一一个产生新比特币的途径。 比特币系统设计规 阅读全文
posted @ 2022-02-11 16:57 xjspyx 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 为一个区块的信息(取自视频中截图,源自blockchain.info) 什么是挖矿?可以看到,区块哈希与前一区块哈希都是以一长串0开头的,挖矿本身就是尝试各种nonce,使得产生的区块哈希值小于等于目标阈值。该目标阈值,表示成16进制,就是前面含有一长串的0下为block header的代码中实现的 阅读全文
posted @ 2022-02-11 16:57 xjspyx 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 比特币中账户管理在第三方中心化系统中,账户开通依赖于第三方。但去中心化的比特币系统中,很明显不能进行“申请账户”。在比特币系统中,申请账户是用户自己来处理的,即自己创建一个公钥-私钥对。(关于公私钥请自行了解非对称加密体系和对称加密体系)公钥和私钥的应用保证了“签名”的应用。当在比特币网络中进行转账 阅读全文
posted @ 2022-02-11 16:16 xjspyx 阅读(26) 评论(0) 推荐(0) 编辑
摘要: Markle Tree是比特币系统中又一个重要的数据结构首先,回顾一下Binary Tree(如果不懂请自行复习数据结构)。Markle Tree和Binary Tree的区别有哪些? Markle Tree用哈希指针代替了普通指针 上图即为一个简单的Markle Tree,其中A、B、C、D为数据 阅读全文
posted @ 2022-02-11 16:16 xjspyx 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 数字货币的发行由谁执行?如何发行?发行多少?什么时候发行?在传统中心化货币体系中,这些问题我们可以交给第三方机构(如:央行)。当引入去中心化思想后,系统中节点平等,交易不通过第三方,那么货币发行权的分配必然是一个需要解决的问题。在比特币系统中由挖矿来决定货币发行权和发行量。 如何验证交易是否有效?如 阅读全文
posted @ 2022-02-11 16:15 xjspyx 阅读(62) 评论(0) 推荐(0) 编辑