Note on Mastering Bitcoin

Posted by Pengyu on February 5, 2018

一些小知识

地址:以1开头的一串字符或数字组成的比特币地址。

比特币总数:2100万。

1比特片=1,000毫比特币=100,000,000聪比特币。

一般来说,一个区块获得六次以上证明时就被认为时不可撤销的,因为要撤销和重建六个区块需要巨量的计算。

比特币使用的是椭圆曲线乘法作为其公钥加密的基础算法。

公钥 & 私钥

公钥和私钥是成对的,它们互相解密。 公钥加密,私钥解密。 私钥数字签名,公钥验证。

k(私钥) –(椭圆曲线相乘,单向)–> K(公钥) –(哈希函数,单向)–> A(比特币地址)

私钥用于生成支付比特币所需的签名以证明资金的所有权。

私钥是一个随机数字,256位的二进制数字。

secp256k1曲线函数,该函数可产生一条椭圆曲线: y^2 mod p = (x^3 + 7) mod p

  • 生成公钥

K = k * G; 其中k是私钥,G是生成点,比特币密钥的生成点都是相同的。

公钥K被定义为一个点 k = (x, y)

在椭圆曲线中,点的相加等同于从该点画切线找到与曲线相交的另一点,然后映射到x轴。

公钥通常表示为前缀04紧接着两个256比特的数字,分别是公钥的坐标xy

前缀04用来区分非压缩格式的公钥,压缩格式的公钥是以0203开头。

  • 公钥压缩
(x, y) --> 04 x y --> 如果y是偶数 --> 02 x
                  |-> 如果y是奇数 --> 03 x
  • 私钥格式

Hex:64位十六进制数

WIF:一般是5开头,经过Base58Check编码

BIP0038加密方案的结果是一个由Base58Check编码过的加密私钥,前缀为6P。

以数字3开头的比特币地址是P2SH地址,有时被错误的称为多重签名或多重签名地址。

交易

交易费是与参加交易的比特币值无关的,而是与交易的字节大小有关,一般以每千字节计算。

在比特币世界中,既没有账户,也没有余额,只有分散到区块链里的UTXO。

一个UTXO可以是一聪的任意倍,但是只要它被制造出来便不可再分割。

一般交易必须有一个或若干个输入和一个或若干个输出。交易不存在找零,必须显式的计算余额并分配到一个输出中,否则将作为报酬给予矿工。但是,每个区块的首个交易是没有输入的,即Coinbase交易,作为挖矿的奖励。

比特币网络

一个包含完整功能的比特币网络节点:钱包,矿工,完整区块链,网络路由节点

常见的节点类型:

核心客户端:包含钱包,矿工,完整区块链,网络路由节点的节点

完整区块链节点:完整区块链,网络路由节点的节点

独立矿工:矿工,完整区块链,网络路由节点

轻量(SPV)钱包:钱包,网络路由节点

矿池协议服务器:Pool服务器,Stratum服务器

挖矿节点:不具有区块链,但具备Pool协议或Stratum协议的节点

轻量(SPV)Stratum钱包:不包含区块链但有Stratum服务器的网络节点

具有多种节点类型,网关及协议的扩展比特网络 (图1)

节点通常采用TCP协议,使用8333端口。

链接

比特币Git

比特币客户端


Creative Commons License
This work is licensed under a CC A-S 4.0 International License.