Public Key 公钥

公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对,公钥是密钥对中公开的部分,私钥则是非公开的部分,从公钥不能推算出私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密,两者都无法自己解密自己加密的文件。比如:我的好朋友小探探用我的公钥加密了文件A,生成了文件B,放在网上。别人看到了这个文件,但因他们不知道我的私钥,无法解密B文件。只有使用我的私钥才能解密,得到文件A。这样,我们可以安全的传送数据。

Private Key 私钥

在比特币的语境中,私钥是指与一个地址(地址是与私钥相对应的公钥的哈希值)相关联的一把密钥。私钥是只有你自己才知道的一串字符,用来操作比特币地址里面的钱。私钥和地址是一把钥匙和一把锁的关系,每个地址只有一个私钥,每个私钥也只能操作一个比特币地址。因为公钥和地址都可以从私钥推算出,所以私钥要绝对安全。如果私钥泄露,任何知道私钥的人都可以偷走你的比特币地址里的币;如果私钥丢失,那么与之对应的比特币地址里面的币也就永远无法使用了。

Encryption Algorithm 加密算法

数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的看似随机的一段字符,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 这个流程是不可逆的,也就是无法通过密文,算出原始明文文件或数据。加密算法使得私密数据通过网络传输时不需要担心被第三方知道传输内容。

Hash 哈希

哈希也叫做散列函数,是指把任意长度的输入变换成固定长度的输出,该输出就是哈希值(散列值)。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改一个字母,随后的哈希都将产生不同的值。要找到哈希值相同的两个不同的输入,在计算上是不可能的。HASH算法是密码学的基础,比较常用的有MD5和SHA,不可逆和无冲突是其重要性质。不可逆是指:知道A的HASH值,无法求出A;无冲突是指:知道A,无法求出一个B, 使A与B的HASH值相同。

Bitcoin Address 比特币地址

比特币地址是一个字符串,像这样:1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp,是通过你的公钥加密而来。地址就好比银行卡号一样,用来表示一个账户。如果你需要发送比特币给我,你就需要知道我的比特币地址,才能向我发送比特币。创建比特币地址和相对应的私钥这一操作,可以通过比特币客户端完成。每个人可以拥有的比特币地址是没有数量限制的。

Digital Signature 数字签名

数字签名可以被附着在一条消息后面,证明这条消息的发送者就是和某个公钥相对应的私钥的所有人。即私钥签名的内容可以用公钥验证;公钥能验证的签名均可视为私钥持有人所签署。

Bitcoin Client 比特币客户端

比特币客户端是用来接收与发送比特币的软件。常用的比特币客户端有Bitcoin-Core(完整节点)、Electrum等,更多选择可以去 bitcoin.org 了解和下载。

Wallet 钱包

钱包既可以看做比特币客户端的同义词(尽管有稍稍的不同,“客户端”更多的是指功能全面的桌面客户端,而“钱包”则更多的用于指代轻量级的基于浏览器的在线管理服务),也可以是指一个文件,这个文件里面包含了所有者的比特币地址以及使用这些地址时所需要的相对应的私钥。

Bitcoin Network 比特币网络

比特币网络是指参与维护公共区块链的所有旷工节点以及比特币交易广播到的客户端节点,共同组成的网络。

Transaction 交易

交易是发送到比特币网络的一条消息,用于通告全网一次比特币的所有权转移发生了,使得接收者能够花费掉收到的比特币,同时阻止发送者再次使用已经发送了的比特币。

Blockchain 区块链

区块链是比特币的底层技术,其本质上可以类比为一个去中心化的数据库。区块链按照时间顺序将区块做链式连接,并通过密码学保证其不可篡改性和不可伪造性,在比特币等加密货币领域常被称为分布式账本。

区块是区块链上的独立单位,每一个区块都包含了前一个区块的哈希值、网络上找到的还没有被确认的交易、以及一个叫做nonce随机数的数字。想要创建一个区块的节点,必须找到一个合适的nonce随机数,以使得这个区块的哈希值低于某个阈值(the target 目标值)。这只能通过不断的随机选择数值去计算区块的哈希值,直到哈希值满足阈值条件(阈值越低就越难找到合适的随机数)。区块链的这种设计,可以比较好的解决“双花问题”。

The Genesis Block 创世区块

创世区块是指区块链网络上的第一个区块,比特币创世区块于2009年1月4日(北京时间)被创建。

Confirmation 确认

当一笔交易被打包到区块里面,成为了区块链的一部分的时候,一个确认就产生了。确认表示交易已被网络验证,每一个确认数的增加都使交易被回滚的概率降低。在比特币交易中,一个确认就比较安全,但是对于比较大额的转账,建议等待交易得到更多的确认,一般认为6次确认就足够安全了。在其他加密货币交易中,比较安全的确认数会各有差异。

Unconfirmed Transaction 未确认的交易

未确认的交易是指还没有被打包到区块里的交易。

Double Spend 双重支付(双花)

双重支付是电子货币才有的一个重要问题。因为电子货币不像真实货币可以用防伪技术使它难以被伪造,电子货币是一串二进制码,很简单就能复制,如果一个用户试图将同一笔电子货币资产进行两次支付操作,这就是双重支付。在进行比特币交易时,付款方有可能尝试双重支付,如果收款方不等待足够的交易确认数(一般为6次),就认可交易,则有可能被双花攻击而受到损失。

Hash Rate 哈希率

在比特币网络中,哈希率是网络计算能力的衡量单位。为了安全,比特币网络必须进行高强度的数学运算。网络的哈希率达到1GH/S,意味着这个网络每秒能处理10亿次哈希运算,1PH/S=1000TH/S,1TH/S=1000GH/S。

Miner 矿工

旷工是指尝试创建区块并将其添加到区块链上的计算设备或者软件。在一个区块链网络中,当一个新的有效区块被创建时,系统一般会自动给予区块创建者(矿工)一定数量的代币,作为奖励。

Difficulty 难度

难度用于表示创建一个新的区块的困难程度,一般可以通过修改相关哈希函数的参数进行调节。比如,比特币网络每隔2016个区块就会进行一次难度调整,已保证全网平均10分钟产生一个新的有效区块。

Mining Pool 矿池

矿池是一个全自动的挖矿平台,使得矿工们能够贡献各自的算力一起挖矿以创建区块,获得区块奖励,并根据算力贡献比例分配利润(即矿机接入矿池—提供算力—获得收益)。这使得矿工能够获得持续稳定的收入,而不是小概率的一次性获得一个区块产生的比特币奖励。

举个例子:假设100万人参与比特币挖矿,全网400P算力,其中90%的矿工为1P(1000T)以下的算力,如果投入一台1T矿机,将占全网算力的40万分之1,理论上平均每40万个10分钟能挖到一个区块,也就是7.6年才能挖到一个区块然后获得区块奖励。那么,假如再找9个拥有1T算力矿机的矿工,达成协定一起挖矿,总共10个人,其中任何一个人挖到区块,都按照每人的算力占比来进行分配,那么总算力为10T,那么平均0.76年即可挖到一个区块。如果组织100人、1000人、1万人甚至10万人呢?如果是10万人,那么平均100分钟就能挖到1个区块,作为团队的一份子,旷工的收入将会趋于稳定。这就是矿池的基本原理,即大家组队进行比特币挖矿。

51% Attack 51%攻击

所谓51%攻击,是指利用比特币以算力作为竞争条件的特点,凭借算力优势篡改或者撤销自己的付款交易。如果有人掌握了50%以上的算力,他能够比其他人更快地找到开采区块需要的那个随机数,因此他能够比其他人更快的创建区块。

举个例子:A和 B之间使用比特币完成了一笔交易,B在收到A的转账通知(不是交易确认的通知,只是发起了交易)认为交易会被确认,等待比特币到账即可。正常情况下,这笔交易会马上被放入交易池等待挖矿节点打包,加入一个新的区块并开始挖矿。

假设A就是那个拥有网络51%算力的人,他不愿意该笔款项支付出去,于是他开始攻击。网络上很多节点都收到了这笔交易并加入区块准备运算了,A也同样开始贡献算力,但是在开始之前他把区块里的这笔交易改了,本来这是一笔A付款给B的交易,被改成A转给自己的一笔交易了(更改很容易,只要把接收地址和签名改掉即可)。A开始尝试用这个伪区块进行计算,因为拥有51%的算力,A比别的节点更容易计算成功,导致一个数据伪造的区块加入了主链。现在网络中有两个区块链:一个是原来的主链,另一个是比原来的主链高出一个区块的伪造链。按照区块链的原则,更高的这个链就代替了原有的链成为后面的主链。这笔伪造的交易就被所有节点认可成为了“真实的交易”。这种情况下B就会一直收不到钱。

Transaction Fee 交易手续费

交易手续费是指在付款方发起交易时,提供的超过该次交易金额的部分,一般作为挖矿奖励支付给旷工。交易手续费除了激励矿工外,还有一个好处是能够防止利用大量的小额交易来对区块链网络进行攻击。