比特币“小白”入门概念的集锦

图片发自简书App

本文出自于金马老师课程——“金马带你定投区块链”的课程,还有“白话区块链”公众号中的概念,我的目的就是把对同一个概念不同描述同时记录下来,做一个对比,更加清楚的理解。

一方面,我是属于“盗版”,如果你觉得对你有价值,可以加入金马老师的“金马带你定投区块链”小密圈,它的课程可以帮你实现财富自由,也算是为老师做个推广。

另一方面,我是为了自己对区块链有个基础了解,看到不同的概念,可以直接从这里作对比。

1.什么是比特币?

金马老师给的定义:

比特币有两层含义,比特币是第一个区块链实现,比特币也是一种数字货币,我们今天重点说第二层含义。

第二层含义中,比特币是一种数字货币,没有实体, 拥有存在数字钱包里的密钥是使用比特币的唯一条件,这让控制权完全掌握在个人手中。

笑来老师给的定义:

第一种含义:比特币是这个世界上是一个被证明为成功的区块链应用。

第二种含义:运用去中心化的技术去维护的一个公开账户或者账务公开的的世界银行,建立在区块链技术基础上的世界银行。

第三种含义:去中心化的,有p2p的技术加密技术,区块链技术,去保证账务公开的世界银行叫做比特币的世界银行。发行了一种货币,恰巧也叫比特币。进一步说比特币是一种货币。

第四种含义:在这样一个世界里,不像现实世界一一对应,它可以是一个银行、可以是一个货币,比特币银行所发行的货币也叫比特币。这个比特币其实某种意义上相当于这家去中心化的世界银行的股份、股票。

举一个例子:

如果跳广场舞的大爷大妈们跑来问什么是比特币,我们该怎么解释给他们听呢。咳咳,旎叫瘦开讲咯,学着点哦~

假设广场舞俱乐部为了鼓励大家多来跳舞,规定每来一次加2分,无故不来扣3分,领舞一次加1分......积分变动的情况由俱乐部的王阿姨来记录。积分可以在年底兑换花生油等奖品……

其实,现实生活中,银行的职责和王阿姨的职责是一样的——都是记账(只不过王阿姨记的是积分,银行记的是钱)。发工资了,银行给你的账户上加2000块钱;买了一瓶洗发水减20元;存款一年加利息100元;转账就是在你账户上减1000,在对方账户上加1000......

但银行与王阿姨最大的不同在于,王阿姨是免费为大家服务的,银行却要问我们收钱,办卡费、年费、转账费......看看银行有多少座高楼大厦、雇了多少员工,就知道银行收了我们多少钱了。

如果某天我们不想要银行或王阿姨记账了,可以实现吗?

太可以了,比特币就是这样的。

我们可以把使用比特币的人看成是一个广场舞俱乐部的成员,这个俱乐部的积分是这样规定的:
1)每个人的最初的积分(就是比特币)数额都是0;
2)社群里的人共同维护一个账本,无论是否有变动,账本每10分钟更新一次,更新后要通知社群所有人;
3)社群里的任何一个人都有权记账,只要记账,就能获得50个比特币的奖励(每四年减半,现在是12.5个比特币)。
4)所有想记账的人都要算同一道数学题,第一个算对的人才有资格记账。
5)比特币的上限是2100万枚。如果全都发完了,抢到记账权的人就可以得到过去10分钟内所有转账的手续费。

我们把抢记账权从而获得比特币奖励的过程,称为挖矿。

最初比特币是没什么价值的,只有他的发明者中本聪愿意挖矿。在中本聪默默的挖了100多万枚比特币之后,终于开始陆续有人加入到挖矿队伍中。再后来,一些实体店铺、网站等开始接受比特币支付,人们对比特币的需求量越来越大,比特币就越来越值钱了。

这样的讲法,大爷大妈们应该能听懂吧?至少我那个每天都跳广场舞、一直担任领舞的老妈已经听懂了,哈哈哈~~~

2.什么是挖矿?

不同于央行统一发行的人民币,比特币是通过“挖矿”产生的。挖矿其实就是比赛解决一个数学问题,算得快的人得到新币加以鼓励。在这个过程中,每个矿工都用他的算力在验证和记录交易。相当于将央行货币发行和结算的任务分配给了每一个参加挖矿比赛的人,这就是“分布式”计算。

白话区块链给的解释:

什么是比特币说的“挖矿”?
答:比特币中的“挖矿”实际上就是记账的过程,比特币的运算采用了一种称为“工作量证明(Proof of Work,PoW)”的机制,系统为了找出谁有更强大的计算能力,每次会出一道数学题,只有最快解出这道题目的计算机才能进行记账。而抢到记账权的计算机会获得25个比特币的奖励。通常把这个行为称为“挖矿”,把获得的比特币视为挖矿成功获得的奖励

3.通货紧缩货币

通货膨胀的产生原因之一是政府超量地发行货币,这让我们每个人手里的钱都会越来越不值钱。而比特币的协议规定的是,新币的开采速度每四年就会减半,总的来说比特币总量不会超过2100万枚,并将在2140年左右达到。比特币总量的变化曲线如下图。

图片发自简书App

所以,从长期来看,比特币是通货紧缩货币。持有比特币是规避通货膨胀的手段之一。这个图的横坐标是时间,纵坐标是比特币数量。

我们看到越往后能挖出去的比特币会越少,自然挖矿成本就越高。

4.去中心化
传统货币系统的操作是“中心化”的,买卖东西总是要通过银行或大公司来拿钱或者收钱,否则就没有办法建立信任。例如,我们在淘宝上买东西,需要先把钱付给阿里巴巴,等确认收货了,阿里巴巴再把钱转给商家。

比特币的创新之处就在于,完全“去中心化”,不依赖阿里巴巴这样的中央权威。我可以直接把钱打给你,但也不怕你抵赖,因为在交易发生的时候全网无数的账本都会共同记录下这笔交易。而这个同步的记录过程是分布式、去中心化的。

5.比特币的四个创新点

金马老师给的定义:

1.一个去中心化的点对点网络:我可以直接向你发钱,不用通过银行、阿里巴巴等大公司

  1. 一个公共的交易账本:所有的交易都被记录在了全网共同维护的大账本中,也就是大名鼎鼎的“区块链”技术。
  1. 一个去中心化的数学的和确定性的货币发行:世界各地的矿工们都在比赛解数学题找币,币出现的速度会越来越慢,总量是确定的。
  1. 一个去中心化的交易验证系统:不需要权威机构就能互相“验明正身”。纸币可能会出现“造假”的情况,一张钱出现在不同的两个地方。但比特币通过数学验证机制保证了不会出现这样的“双重支付”。

白话区块链介绍比特币的特点:

1)去中心化。不依赖任何一个中心记账,而是由所有人一起来维护一个账本,任何人都可以去抢记账权。

2)不可篡改。每一个区块都被盖上了时间戳,所有区块首尾相连,一旦想更改区块内的数据,时间戳就对不上了;而且俱乐部所有人都在盯着呢,想篡改至少要有超过一半的人愿意跟你一起“指鹿为马”。

3)公开透明。任何一个账户的往来账目都可以在区块链上查到。当你转账给别人时,不用担心对方收了钱不认账,区块链上都记得一清二楚呢。

4)抗审查。政府不能让比特币挂掉,除非它不让任何人挖矿,也就是把全世界的网络弄瘫痪了,而银行、支付宝、微信要挂掉只是政府一句话的事(比如收回支付宝的牌照);你的比特币存在一个去中心化的网络里,任何人不能抢走,而政府随时都可以“抢走”你银行卡里所有的钱(比如你吃了官司)。

5)国际化。因为比特币只存在于互联网,如果想转账、支付、购买比特币,只需要联网操作一下就可以了。从比特币钱包的下载数据来看,全世界有200多个国家在用比特币,比美元、人民币等货币都更加国际化。

6)抗通胀。人民币的总量是没有上限的,政府每年都在大量印钱,比特币的上限是2100万,任何人不得更改。

6.比特币的客户端

参与比特币交易基本有两种方式,一种是维护一个“完整客户端”,自己保存所有的比特币整个交易历史,不依赖于其他的服务器和第三方服务。另外一种是普通用户常用的“轻量级客户端”,不保存完整历史,而通过信赖的第三方服务器来获取交易信息。大家通过okcoin、云币网购买BTC就是这种形式。

由于第三方介入是有风险的,即使比特币的交易账本是全网公开透明的,选择了不可靠的在线钱包服务还是可能会丢币。所以大家一定一定要选择有信用的靠谱的第三方交易客户端。

7 使用比特币客户端

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

发送比特币只需要输入地址和金额,收到钱的人会用私钥(以下会介绍)签名这笔交易,这就公告了全网:比特币从一个地址转移到了另外一个地址。从交易完成到“确认”大概需要10分钟,因为交易须由矿工开采打包成区块,这样才会被全网接受为“已确认”。

8.私钥

比特币的地址相当于带锁的信箱,私钥就好比这个锁唯一的钥匙。比特币地址是公开的,每个人都可以往这个地址发钱,但只有握有“私钥”的人才能打开用这个地址上锁的比特币。因为只要知道私钥就可以取走你的比特币,所以私钥一定要好好保管。

9.比特币交易过程

A给B付款0.1BTC的过程是这样的:A将要付B的0.1BTC用B的”专属地址“锁起来,然后向全网发送,相当于向所有人吼了一声:“我向能打开这把锁的人发送了0.1BTC”。

B在网络中会马上收到这条信息,于是拿出私钥试试能不能打开这把锁。因为只有B钱包里的私钥才可以匹配这个地址,所以只有B能兑换这笔钱。

10.将交易记录在总账本中

交易信息必须要被传送到比特币网络中,成为总账本的一部分。这个账本叫做区块链。一个“区块”里面记录了一段时间内的所有交易信息,“链”则是因为所有的历史数据块会一个个串联起来。

(1)全网传播

比特币的账本是分布式的,网络中的每个节点都在帮助记账。A给B付款0.1BTC的时候,只需要向身边的节点大吼一声,收到信息的节点又迅速向自己的邻居发送这个消息。一传十十传百,只要几秒钟就能传遍整个网络。现在,所有人都知道“A给B付款0.1BTC”。

(2)挖矿验证

这个交易在比特币网络上传播开来,但只有被矿工们“挖矿”验证并加到一个新区块中里,这个交易才会成为总账本的一部分。

11. 挖矿

挖矿的过程是将过去一段时间的交易记录打包成一个区块,这个过程也会创造新比特币。

挖矿其实可以想象成很多人一起来找“数独”游戏的解(9x9的数独就是要求每行每列每个对角线都有1-9),矿工们解题的办法就是笨笨地不断去试,没有更快的方法,只能比谁试得更快运气更好。

数独游戏的难度可以通过改变行列大小来调整。想象一下求解一个几千乘几千的数独,确实有难度。但是,如果给你一个已经填好的数独,你就可以很快验证这个解是否有效(检查每行每列有没有重复的数)。

“解起来困难而验证容易”就是比特币解谜游戏的最大特点。当然,真实的比特币谜题其实是基于哈希加密算法,我们以后还会更详细地谈到。

一笔交易需要通过解题构建区块来证明它有效,矿工们都在齐心协力地为这个区块贡献计算量,计算量越多意味着更多的人信任这笔交易是有效的。

12.矿池

矿池就是矿工们组队解题,赢了就按工作量分配收获的比特币。在这个时代,单打独斗已经很难做成一件事情了,挖矿也一样。

13. 区块链

区块链就是一个一个区块链起来。

区块一个接一个产生,当前区块链的产生基于前一个区块,所以每次解当前的区块都会为之前的交易增加一次证明,也就在网络中得到了更多的信任。

随着链的增长,计算复杂度不断增加,以往的区块也就越来越难以删改(一个区块获得6次以上证明就基本不可能撤销了)。所以验证一个交易有效的简单手段就是确定这个交易在区块链中、后面有几个新的区块。

你可以这么理解,写好的区块就像泼出去的水。

此外,我们可以通过区块链顺藤摸瓜追溯每一笔历史交易,这就保证了比特币的来源都是清晰有记录的。

图片发自简书App

白话区块链中的解释:

什么是区块链?

区块链(Blockchain)是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案

通俗一点说,区块链技术就指一种全民参与记账的方式。所有的系统背后都有一个数据库,你可以把数据库看成是就是一个大账本。那么谁来记这个账本就变得很重要。目前就是谁的系统谁来记账,微信的账本就是腾讯在记,淘宝的账本就是阿里在记。但现在区块链系统中,系统中的每个人都可以有机会参与记账。在一定时间段内如果有任何数据变化,系统中每个人都可以来进行记账,系统会评判这段时间内记账最快最好的人,把他记录的内容写到账本,并将这段时间内账本内容发给系统内所有的其他人进行备份。这样系统中的每个人都了一本完整的账本。这种方式,我们就称它为区块链技术。

14.完整客户端

自己维护一个全节点客户端的成本比较高,但是可以保证你的钱包是安全的。如果你有几千个甚至几万个比特币,可以考虑用这种方式来实现安全存储。

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

15.编译比特币源码

对于开发者,可以从GitHub上的比特币页面 https://github.com/bitcoin/bitcoin 下载代码自行编译,从终端运行bitcoind,也需要下载所有区块。

在书里面一步步教授了比特币核心的JSON_RPC API接口的使用,包括以下技能点:

1.获取比特币核心客户端状态信息
2.钱包设置及加密
3.钱包备份、纯文本导出和恢复
4.钱包地址及接收交易
5.查看区块信息
6.基于UTXO(未花费的交易输出)的建立、签名与提交

16.密钥

比特币交易需要用有效的“数字密钥”产生的签名认证。

密钥是成对出现的,由一个“私钥”和一个“公钥”所组成。公钥就像银行的帐号,而私钥就像控制账户的PIN码或支票的签名。

公钥用来接收比特币,私钥用来对收到的比特币进行签名。公钥可以由私钥唯一产生,但是知道公钥却不能反向推导出私钥,这就保证了比特币的安全性。 如果你知道一点密码学的知识,这就是非对称加密。

17.地址

比特币的地址是通过账户主人的公钥产生的,只需要把比特币地址告诉其他人,别人就可以给你转账。

18.私钥、公钥、比特币地址之间的关系

从私钥可以唯一生成公钥,公钥可以生成比特币地址。但反向都是解不出来。私钥必须始终保持机密,丢了私钥就相当于丢了比特币。


图片发自简书App

这个图可以让你了解非对称加密。

19.钱包与助记词

由于完全无规律的密钥对不便于维护和记忆,现在的钱包多是从一个“种子”出发生成许多关键的钥匙。如图所示,子子孙孙地繁衍出新的密钥。

种子可以是随机生成的数字,也可以用助记词来生成。单词的顺序就是钱包的备份,可以用来恢复或重新创造新的钱包的钥匙。助记词可以让人们更容易抄写和储存。

这里要提醒的是,由于知道了助记词就能重新创建种子恢复钱包,助记词一定要妥善保管。不少人使用imtoken的时候给助记词截了图,导致钱包信息泄露。

切记切记不要截图,最好是抄写下来。


图片发自简书App

家下来的内容会涉及密码学和数学,我们用尽量通俗的方式来解释哈,你不要有压力,即使读不懂,也要读完哈。

20.椭圆曲线加密(从私钥到公钥)

通过椭圆曲线加密算法,可以从私钥计算得到公钥,这是不可逆转的过程:K = k * G 。其中k是私钥,G是被称为生成点的常数点,而K是所得公钥。

我们用一个例子来理解椭圆曲线加密:

小明就读于小学二年级,会计算加法,但是不会计算除法。
你:“小明小明,过来,叔叔问你,1+1等于几?”
明:“等于2。”
你:“那考你个难的,7+7等于几?”
明:“切,等于14呗。”
你:“行,那叔叔再问你,几个7相加等于56?”
明:“……”,默默掏出草稿纸、铅笔、手指头、脚趾头,进行了10分钟的深度计算:2个7等于14,3个7等于21,4个7等于28……。“叔叔,我算出来了,是8个,对不对?”
你:“好小子,叔叔就不信考不倒你。几个7相加等于8***92?” 你心中默念,以小明的计算能力,要算到这个数恐怕得一年半载的。
明:“叔叔好厉害呀,我算不出来。”

对于椭圆曲线代码来说,固定的生成点G就是例子里面的7;私钥k就是例子里面的8,也就是对G进行加法的次数(G+G+...+G = kG);公钥K是得到的结果(56和8-92)

上面的数字 8----92 竟然被打星了,奇怪。

我们继续,和上面的例子不同的是,椭圆曲线密码中的“加法”是建立在“有限域上的二元三次曲线的点”上的。

具体的说,这个加法可以表现为以下两个图。将两个点连线之后求曲线交点关于x轴的对称点。图a是两个不同的点相加,图b是两个相同的点相加。

图片发自简书App
图片发自简书App

这个加法有两个很重要的特点

(1)正向计算(从私钥计算公钥)很简单。

(2)逆向计算(从公钥反推私钥)很困难。从公钥反推私钥只能像例子中的小明一样用傻瓜穷举法,以目前的计算能力,攻破椭圆曲线是不现实的。

看个例子理解一下为什么正推容易,反推难:

椭圆曲线加密公式:K=kG。
正推:已知k,G,求k
G。
反推:已知K,G,求k。
先看反推,反推只能用最傻瓜的穷举法,比如k=10。
G==K?[No]
G+G=2G==K?[No]
2G+G=3G==K?[No]
3G+G=4G==K?[No]
4G+G=5G==K?[No]
5G+G=6G==K?[No]
6G+G=7G==K?[No]
7G+G=8G==K?[No]
8G+G=9G==K?[No]
9G+G=10G==K?[Yes]
花了10步找到答案, k=10。
再看正推。
已经知道k=10。
G+G=2G
2G+2G=4G
4G+4G=8G
8G+2G=10G=K
四步就找到答案。

哈哈,有点晕了吗?不是很复杂,如果没看懂建议你再看一遍。如果实在看不懂,你记住正推容易,反推几乎不可能就好了。

21.哈希函数(从公钥到比特币地址)

比特币地址是由公钥经过单向的哈希函数生成的。

哈希(Hash)是一种数据编码方式,将大尺寸的数据(如一句话,一张图片,一段音乐、一个视频等)浓缩到一个数字中,从而方便地实现数据匹配、查找的功能。

比如这里有一万首歌,给你一首新的歌X,要求你确认X是否在那一万首歌之内。

将一万首歌每一个音符和X比对非常慢。那么,我们可以将每一首的数据浓缩到一个数字指纹上(称为哈希码),得到一万个数字,再将X的数字指纹和这一万个数字比对,就能知道X是否在那一万首歌中。

显然,有可能多首歌的哈希码是同一个。好的哈希算法会尽量减少这种冲突,让不同的歌有不同的哈希码。

就算真有极小概率出现不同的歌有相同的哈希码,那也只有寥寥几首歌,此时再一首首比对即可。

作为例子,如果要你要哈希那一万首歌,一个简单算法就是让歌曲所占硬盘的字节数作为哈希码。这样的话,你可以让一万首歌“按照大小排序”,然后遇到一首新的歌,只要看看新的歌的字节数是否和已有的一万首歌中的某一首的字节数相同,就知道新的歌是否在那一万首歌之内了。

再说一个题外话,我是一名程序员,我几次面试都中算法题都被考到了 Hash 的实现。

所以,如果你也是一名程序员,一定了解了解 Hash。

22.比特币交易的生命周期

图片发自简书App

交易在全网的传播

每个比特币节点都和一些其他节点相连,形成一个巨大的网状结构。每个节点收到交易之后都会进行验证,如果有效就传播到其他节点,如果无效就拒绝并返回。一笔有效的交易在几秒钟能就会传遍全网。

比特币网络有以下特点:

  1. 没有中心,所有节点的地位都是同等的

  2. 传播灵活高效,能够抵御攻击。

  3. 每个节点在传播交易之前都会独立验证,增加可靠性。

23. UTXO

这个概念很重要,对你理解很有帮助,要认真理解它。

比特币交易的基本单位是UTXO“未花费过的一个交易输出”。在比特币的世界里既没有账户,也没有余额,只有分散到区块链里的UTXO。

要理解UTXO,我们假设一个这样的场景:张三挖到12.5 枚比特币。过了几天,他把其中 2.5 枚支付给李四。又过了几天,他和李四各出资 2.5 比特币凑成 5 比特币付给王五。

如果是基于账户的设计,张、李、王三人在数据库中各有一个账户,则他们三人的账户变化如下图所示:


图片发自简书App


我们正常理解,应该是按照上面的图

但在比特币中,这个过程是通过 UTXO 实现的,图示如下:


图片发自简书App

看图你会发现,上一笔交易的输出是下一笔交易的输入,形成一条交易链。在一笔交易中,被交易消耗的UTXO被称为交易输入,由交易创建的UTXO被称为交易输出。

比特币钱包通过扫描区块链并聚合所有属于该用户的UTXO来计算该用户的余额。当用户付款时,他的钱包通过选择可用的UTXO来构造一笔交易。一旦UTXO被选中,钱包会为它生成包含签名的解锁脚本,相当于把钱柜打开取钱出来支付。

24.交易费

大多数交易都需要支付交易费,作为对辛勤工作的比特币矿工们的劳动费。交易费可当做矿工们确认区块的奖励,交易费的多少会影响处理的优先级,有足够费用的交易会更早被包含在下一个挖出的区块中,也就更早得到确认和验证。交易费大多数情况下都是由钱包程序替你自动计算出来的。

顺便提一句,为什么 steem bts eos 不需要交易费?这是课后作业。

25.交易验证:UTXO的锁定与解锁

比特币的交易验证引擎依赖于两类脚本来验证比特币交易:一个锁定脚本和一个解锁脚本。

(1)锁定脚本

A给B的比特币地址付款时,A会输出一个UTXO,用含有B地址的锁定脚本给这个输出的UTXO上锁,相当于告诉大家:花这笔钱的条件是能打开这个锁。

(2)解锁脚本

B要使用UTXO来付款时,需要用解锁脚本证明自己能把之前A上的锁打开,说明自己满足花这笔钱的条件。解锁脚本包含一个用B的私钥生成的有效签名。

(3)交易验证

每一个比特币客户端都会同时执行锁定脚本和解锁脚本来验证这一笔交易。只有一笔有效的交易才会导致UTXO被标记为“已使用”,然后从有效的(未使用)UTXO集中所移除。

图片发自简书App

希望大家关注一下金马老师的小密圈:

图片发自简书App

推荐阅读更多精彩内容

  • 以下为金马老师《精通比特币》解读的文稿整理。 第一章 介绍 1.1 什么是比特币 (1)比特币是一个区块链实现 (...
    梦之郎阅读 12,163评论 6 61
  • 12. 就像一栋房子多少可以居住一样,一本书多少也可以阅读一下。可读性最高的作品是作者达到了建筑学上最完整的整体架...
    苦茶阅读 126评论 0 0
  • 张清的日精进第94天 体验入 今天全公司都在宣讲得锦旗的事。 都是全员生发的学员。 找核心 员工之魂 转身用 有交...
    kiyoi2017阅读 79评论 0 3
  • 今天淘姨发货时候,看见一位买家名字叫“平克”,于是忍不住想问问他贵姓……
    故事大姨淘淘阅读 52评论 0 0
  • 秋冬吃点仙草好 润肤清肺保五脏 提高免疫防未病 排毒养肾人健康
    且惜且爱阅读 395评论 0 2