来源:公众号郑成文(chengwennotes) 原文标题:来,喝了“币乎”这碗解毒汤! 0、利益相关。有点需要先说,我这篇文章并不是来黑“币乎”的。首先,我是属于早期加入“币乎奖励”的...
精通比特币(25):钱包技术概述
“钱包”一词在比特币中有多重含义。 广义上,钱包是一个应用程序,为用户提供交互界面。 钱包控制用户访问权限,管理密钥和地址,跟踪余额以及创建和签名交易。 狭义上,即从程序员的角度来看,“钱包”是指用于...
精通比特币(89):改变共识之软分叉
并非所有共识规则的变化都会导致硬分叉。只有向前不兼容的共识规则的变化才会导致分叉。如果共识规则的改变也能够让未修改的客户端仍然按照先前的规则对待交易或者区块,那么就可以在不进行分叉的情况下实现共识修改...
精通比特币(88):改变共识之硬分叉
网络也可能会分叉到两条链条,这是由于共识规则的变化。这种分叉称为硬分叉,因为这种分叉后,网络不会重新收敛到单个链路上。相反,这两条链子独立发展。当比特币网络的一部分节点按照与网络的其余部分节点不同的一...
Go入门(4):标准库
第八章学习笔记 Go标准库是一组核心包,用来扩展和增强语言的能力。这些包为语言增加了大量不同的类型。开发人员可以直接使用这些类型,而不用再写自己的包或者去下载其他人发布的第三方包。由于这些包和语言绑在...
精通比特币(27):交易的技术细节
简介 比特币交易是比特币系统中最重要的部分。 根据比特币系统的设计原理,系统中任何其他的部分都是为了确保比特币交易可以被生成、能在比特币网络中得以传播和通过验证,并最终添加入全球比特币交易总账簿(比特...
精通比特币(66):Merkle树和简单支付验证(SPV)
SPV节点不保存所有交易也不会下载整个区块,仅仅保存区块头。它们使用认证路径或者Merkle路径来验证交易存在于区块中,而不必下载区块中所有交易。 例如,一个SPV节点想知道它钱包中某个...
Go入门(5):测试和性能
第九章学习笔记 作为一名合格的开发者,不应该在程序开发完之后才开始写测试代码。 使用Go语言的测试框架,可以在开发的过程中就进行单元测试和基准测试。 go test命令可以用来执行写好的...
精通比特币(84):随机值升位方案the extra nonce solution
2012年以来,比特币挖矿发展出一个解决区块头基本结构限制的方案。在比特币的早期,矿工可以通过遍历随机数 (Nonce)获得符合要求的hash来挖出一个块。 难度增长后,矿工经常在尝试了...
精通比特币(73):什么样的交易能通过节点校验?
每一个节点在校验每一笔交易时,都需要对照一个长长的标准列表: ▷交易的语法和数据结构必须正确。 ▷输入与输出列表都不能为空。 ▷交易的字节大小是小于 MAX_BLOCK_SIZE 的。 ▷每一个输出值...