中本聪这一项设计,卧槽,好有道理……

大家好,我是三七,今天我们依旧接着上期继续共读《精通比特币》,今天的内容主要分为两部分:比特币客户端和密钥、地址、钱包。

第一,比特币客户端

第二,密钥、地址、钱包是什么?

一、比特币客户端

比特币客户端通常由一个钱包和多个比特币地址组成,比特币地址是可以公开的,任何人都可以通过这些地址转把币转到你的钱包。

大概长成这样:Acdid9KFAaatwczBwBttQcwXYCpvK8h7FK,或者是一个二维码。发送比特币的人只需要输入地址和金额,收到的人就会用私钥(以下会介绍)签名这笔交易,这也相当于公告了全网:比特币从一个地址转移到了另外一个地址。

从交易完成到"确认"大概需要10分钟,因为交易须由旷工开采打包成区块,这样才会被全网接受为"已确认"。

接下来我们详细看下整个过程:

—1.完整客户端—

自己维护一个全节点客户端的成本比较高,但是可以保证你的钱包是安全的。如果你有几千个甚至几万个比特币,可以考虑用这种方式来实现安全存储。如果数量不多,可以依赖于其他的服务器和第三方服务,就是普通用户常用的"轻量级客户端", 不保存完整历史,而通过信赖的第三方服务器来获取交易信息。大家通过OkCoin、云币网购买BTC就是这种形式。

我们主要来看维护一个全节点客户端。

从bitcoin.org下载的客户端包含了比特币系统的所有方面,是一个独立的完整节点。但是正因为包含了所有历史数据,下载整个区块链可能就需要好几天,请确保你有足够的容量的硬盘、带宽和时间。

—2.编译比特币源码—

对于开发者,可以从GitHub上的比特币页面 https://github.com/bitcoin/bitcoin 下载代码自行编译,从终端运行bitcoind,也需要下载所有区块。在书里面一步步教授了比特币核心的JSON_RPC API接口的使用,包括以下技能点:

(1) 获取比特币核心客户端状态信息

(2) 钱包设置及加密

(3) 钱包备份、纯文本导出和恢复

(4) 钱包地址及接收交易

(5) 查看区块信息

(6) 基于UTXO(未花费的交易输出)的建立、签名与提交

二、密钥、地址、钱包

比特币的所有权是通过数字密钥、比特币地址和数字签名来确立的。数字密钥实际上并不是存储在网络中,而是由用户生成并存储在一个文件或者简单的数据库当中,我们把它称为钱包。

存储在用户钱包中的数字密钥完全独立于比特币协议,通过用户的钱包软件生成管理,并不需要区块链或网络。在这当中,密钥实现了比特币的许多有趣特性,比如说去中心化信任和控制、所有权认证和基于密码学证明的安全模型。

每一次比特币交易都要一个有效的签名才会被存储在区块链,而数字签名是由数字密钥产生,有了比特币的密钥就有了账户里比特币的控制权,所以大家一定要注意安全哦!

—1.密钥是什么?—

密钥是成对出现的,由一个“私钥”和一个“公钥”所组成。公钥就像银行的帐号,而私钥就像控制账户的PIN码或支票的签名。公钥用来接收比特币,私钥用来对收到的比特币进行签名。公钥由私钥产生,但知道公钥是不能反向推导出私钥,这就保证了比特币的安全性,这种加密方式称为非对称加密。

注意的是,区块链里面的私钥都是由钱包来生成的,不是人设定的,由于私钥的原始格式非常长,直接让用户设定是非常麻烦的,所以这个工作由钱包来完成了。但为了保证私钥的安全性,钱包会“非常随机”的来生成私钥。

因此大家在创建钱包的时候,是不需要设定私钥的,而是设定“转账密码”或者“开启APP的PIN码”之类的密码,但他们并不是私钥!

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181114A1Z5YH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区