数字签名是一种由两部分组成的数学方案: 第一部分是使用私钥(签名密钥)从消息(交易)创建签名的算法; 第二部分是允许任何人验证签名的算法,给定消息和公钥。 创建数字签名 在比特币的ECDSA算法的实现...
精通比特币(33):比特币中使用的数字签名简介
维基百科对 “数字签名 ”的定义: 数字签名是用于证明数字消息或文档的真实性的数学方案。 有效的数字签名给了一个容易接受的理由去相信:1)该消息是由已知的发送者(身份认证性)创建的; 2)发送方不能否...
精通比特币(32):如何验证脚本?
每一个比特币验证节点会通过同时执行锁定和解锁脚本来验证一笔交易。每个输入都包含一个解锁脚本,并引用了之前存在的UTXO。 验证软件将复制解锁脚本,检索输入所引用的UTXO,并从该UTXO复制锁定脚本。...
精通比特币(31):比特币交易脚本和脚本语言
比特币交易脚本语言,称为脚本,是一种类似Forth的逆波兰表达式的基于堆栈的执行语言。 当一笔比特币交易被验证时,每一个输入值中的解锁脚本与其对应的锁定脚本同时 (互不干扰地)执行,以确...
精通比特币(30):怎样把交易费加到交易中?
交易的数据结构没有交易费的字段。相替代地,交易费是指输入和输出之间的差值。 从所有输入中扣掉所有输出之后的多余的量会被矿工作为矿工费收集走: 交易费即输入总和减输出总和的余量:交易费 = 求和(所有输...
精通比特币(29):费用估算算法
任何创建交易的比特币服务,包括钱包,交易所,零售应用等,都必须实现动态收费。动态费用可以通过第三方费用估算服务或内置的费用估算算法来实现。如果您不确定,那就从第三方服务开始,如果您希望去除第三方依赖,...
精通比特币(28):如何计算交易费?
大多数交易包含交易费(矿工费),这是为了确保网络安全而给比特币矿工的一种补偿。 费用本身也作为一个安全机制,使经济上不利于攻击者通过交易来淹没网络。 . 大多数钱包自动计算并计入交易费。但是, 如果你...
精通比特币(27):交易的技术细节
简介 比特币交易是比特币系统中最重要的部分。 根据比特币系统的设计原理,系统中任何其他的部分都是为了确保比特币交易可以被生成、能在比特币网络中得以传播和通过验证,并最终添加入全球比特币交易总账簿(比特...
精通比特币(26):钱包技术细节
助记码词汇(BIP-39) 助记码词汇是英文单词序列代表(编码)用作种子对应所确定性钱包的随机数。单词的序列足以重新创建种子,并且从种子那里重新创造钱包以及所有私钥。在首次创建钱包时,带有助记码的,运...
精通比特币(25):钱包技术概述
“钱包”一词在比特币中有多重含义。 广义上,钱包是一个应用程序,为用户提供交互界面。 钱包控制用户访问权限,管理密钥和地址,跟踪余额以及创建和签名交易。 狭义上,即从程序员的角度来看,“钱包”是指用于...