《精通比特币》学习笔记(第四章)
![《精通比特币》学习笔记(第四章)](https://static001.geekbang.org/infoq/94/9489772f8b99a9ece077434ec3ad1d95.png)
1、比特币的所有权是通过数字密钥、比特币地址和数字签名来确定的。
2、数字密钥是由用户生成之后,存储在一个叫做钱包的文件或简单的数据库中。存储在用户钱包中的数字密钥完全独立于比特币协议,可由用户的钱包软件生成并管理,而无需参照区块链或访问网络。
3、大多数比特币交易都需要一个有效的签名才会被存储在区块链。只有有效的密钥才能产生有效的数字签名,因此拥有密钥副本就拥有了对该帐户的比特币的控制权。
4、用于支出资金的数字签名也称为见证。比特币交易中的见证数据证明了所用资金的真正归谁所有。
5、密钥是成对出现的,由一个私钥和一个公钥所组成。公钥就像银行的帐号,而私钥就像控制账户的 PIN 码或支票的签名。
6、一般情况下,比特币地址由一个公钥生成并对应于这个公钥。然而,并非所有比特币地址都是公钥;他们也可以代表其他支付对象,譬如脚本。
7、在比特币系统中,我们用公钥加密创建一个密钥对,用于控制比特币的获取。密钥对包括一个私钥,和由其衍生出的唯一的公钥。公钥用于接收比特币,而私钥用于比特币支付时的交易签名。
8、支付比特币时,比特币的当前所有者需要在交易中提交其公钥和签名(每次交易的签名都不同,但均从同一个私钥生成)。
9、一个比特币钱包中包含一系列的密钥对。私钥(k)是一个数字,通常是随机选出的。有了私钥,我们就可以使用椭圆曲线乘法这个单向加密函数产生一个公钥(K)。有了公钥(K),我们就可以使用一个单向加密哈希函数生成比特币地址(A)。
(通过椭圆曲线乘法从私钥计算得到公钥是不可逆转的过程:K = k * G 。其中 k 是私钥,G 是被称为生成点的常数点, K 是所得公钥。其反向运算,被称为“寻找离散对数”——已知公钥 K 来求出私钥 k——是非常困难的,就像去试验所有可能的 k 值,即暴力搜索。)
10、可以将私钥应用于交易的数字指纹以产生数字签名。该签名只能由知晓私钥的人生成。但是,访问公钥和交易指纹的任何人都可以使用它们来验证签名。
11、私钥必须始终保持机密,因为一旦被泄露给第三方,相当于该私钥保护之下的比特币也拱手相让了。私钥还必须进行备份,以防意外丢失。
12、生成一个比特币私钥在本质上与“在 1 到 2^256 之间选一个数字”无异。只要选取的结果是不可预测或不可重复的,那么选取数字的具体方法并不重要。比特币软件使用操作系统底层的随机数生成器来产生 256 位的熵(随机性)。
13、比特币私钥空间的大小是 2^256,这是一个非常大的数字。用十进制表示的话,大约是 10^77,而可见宇宙被估计只含有 10^80 个原子。
14、要使用比特币核心客户端生成一个新的密钥,可使用 getnewaddress 命令。出于安全考虑,命令运行后只显示生成的公钥,而不显示私钥。如果要显示私钥,可以使用 dumpprivkey 命令。
15、比特币地址是一个由数字和字母组成的字符串,可以与任何想给你比特币的人分享。由公钥(一个同样由数字和字母组成的字符串)生成的比特币地址以数字“1”开头。
16、在比特币中,大多数需要向用户展示的数据都使用 Base58Check 编码(Base58 由不包括(0,O,l,I)的大小写字母和数字组成),可以实现数据压缩,易读而且有错误检验。
17、公钥和私钥的都可以有多种格式。一个密钥被不同的格式编码后,虽然结果看起来可能不同,但是密钥所编码数字并没有改变。这些不同的编码格式主要是用来方便人们无误地使用和识别密钥。
18、公钥也可以用多种不同格式来表示,它们分为非压缩格式或压缩格式公钥这两种形式。
19、引入压缩格式公钥是为了减少比特币交易的字节数,从而可以节省那些运行区块链数据库的节点磁盘空间。大部分比特币交易包含了公钥,用于验证用户的凭据和支付比特币。每个公钥有 520 比特(包括前缀,x 坐标,y 坐标)。如果每个区块有数百个交易,每天有成千上万的交易发生,区块链里就会被写入大量的数据。
20、“压缩的私钥”实际上只是表示“用于生成压缩格式公钥的私钥”,而“非压缩格式私钥”用来表明“用于生成非压缩格式公钥的私钥”。可以说导出格式 是“WIF 压缩格式”或者“WIF”,而不能说这个私钥是“压缩”的。
21、传统的比特币地址从数字 1 开头,来源于公钥,而公钥来源于私钥。虽然任何人都可以将比特币发送到一个 1 开头的地址,但比特币只能在通过相应的私钥签名和公钥哈希值后才能消费。
24、靓号地址包含了人类可读信息的有效比特币地址。例如,1LoveBPzzD72PUXLzCkYAtGFYmK5vYNR33 就是包含了 Base-58 字母 love 的。靓号地址需要生成并通过数十亿的候选私钥测试,直到一个私钥能生成具有所需图案的比特币地址。
25、靓号地址既可以增加、也可以削弱安全措施。一方面,一个独特的地址使对手难以使用他们自己的地址替代你的地址,以欺骗你的顾客支付他们的账单。另一方面,靓号地址也可能使得任何人都能创建一个类似于随机地址的地址,甚至另一个靓号地址,从而欺骗你的客户。
26、纸钱包是打印在纸张上的比特币私钥。纸钱包是一个非常有效的建立备份或者线下存储比特币(即冷存储)的方式。纸钱包可以提供安全性,以防在电脑硬盘损坏、失窃或意外删除的情况下造成密钥的的丢失。作为一个冷存储的机制,如果纸钱包密钥在线下生成并永久不在电脑系统中存储,他们在应对黑客攻击,键盘记录器,或其他在线电脑威胁更有安全性。
评论