关于区块链、比特币,你所需要知道的最最基本知识

bitcoin

读完这篇文章你将了解:
1. 什么是区块链?
2. 区块链里面有什么?
3. 如何创建一条区块链?
4. 什么是区块链技术?
5. 比特币与区块链

提醒:该文章仅为一篇最简单的帮助大家了解区块链和比特币的文章,并不是一篇严谨的技术型文章。如有解释不全,在所难免。

前言

2010年5月,一个名叫Hanyecz的人用1万个比特币买了2个披萨。比特币历史上称这一天为the pizza day(因为这是有记录的,第一笔用比特币买到实物的交易)。单个比特币在2018年的价值约1万美元,所以1万个比特币在2018年差不多能值1亿美元。也就是说如果你在2010年花50美元买了1万个比特币,那么在8年后的今天你便可以实现你的小目标->赚它一个亿,还是美元。

好了,我们不谈钱,谈钱伤感情(感觉错过了几个亿😢),我们来谈一谈比特币。比特币是基于区块链技术的一种产品。所以在谈比特币之前,我们先来了解一些区块链。

什么是区块链

从它的英文名字来讲, blockchain, 把这个单词拆开就是Block Chain,也就是说 它是一条由一个block一个block组成的一条链。我们可以把blockchain想象成一条一字形的铁链, 链子上的每一个小节,就是一个block。

每个block里面有什么?

block content

一个block最基本的情况下会有3个元素。
1. 存储的数据

2. 这个block的hash值(可以理解为一个独一无二的编码), 一般是使用sha256生成。当然这个你可以忽略,毕竟这不是一篇技术文章。 你所要知道的就是 这一个block有一个几乎独一无二的编码。

3. 前一个block的hash值 (前一个block的独一无二的编码)

把block串成一条链子

chain

现在我们知道了一个block里面的元素了, 那我们怎样把这些block串成一条链子?
理论上最开始的时候,程序员会创建第一个block,这个block被称为”创世block”,因为有了这第一个block,我们才能把接下来的block加进去。为什么?我们回顾一下一个block里面有什么。

1.存储的数据

2.这个block的hash值(第一无二的编码)

3.前一个block的hash值。

想要把一个block加到链子里,这个block必须有前一个block的hash值。也就是说如果没有第一个创世block, 第二个block是不可能有前一个block的hash值。 那么有人会问了,你不是说一个block必须有3个元素么,那第一个创世block的“前一个block的hash值”是哪里来的?这个问题的答案就是,程序员自己编的。。。这并不是开玩笑。

blockchain构造原理

blockchain

现在我们知道了每个block里面有什么,并且创造了第一个创世block,也理解了想要加到这条链子里, 新的block必须有“前一个block”的hash值(独一无二的编码)。那么问题来了,新的block是如何得到前一个block的hash值的呢?

我们再来回顾一下, 每个block至少要有3个元素。
1.当前block存储的数据, 这个很好理解, 比如说 我想在这个block里面存我们网站的网址:SydneyChineseBooks.com.au, 那么这个网址就是当前block存储的数据。

2.当前block的hash值, 这个也很好操作, 只用把SydneyChineseBooks.com.au这段文字用sha256加密后得到的hash值,差不多是这样的一段文字:10009saib28osa90o091kla8szm8as90191190lsa。注:这段乱码就代表着网址。如果网址中稍微有一个字母变动,将会生成一段不一样的hash。

3.前一个block的hash值, 这个也很好操作,就是每当新的block要加到链里的时候,在加这个新的block之前,都会查看一下前一个block的内容, 比如SydneyChineseBooks.com.au, 然后把内容进行sha256加密,生成一个hash值,这个值就是前一个block的hash值。
然后比较一下这个hash值是不是真的跟前一个block的hash值是一样的, 如果是一样的,说明前一个hash的内容没有被篡改,那么新的block就可以加到这个链中。

目前为止,我们有了第一个block,接下来的block验证完以后也可以顺利增加到链子中了, 这样一条blockchain就诞生了。

p2p网络?

上面我们已经构造了一条blockchain,但是仅仅还只是一条chain,作为blockchain技术,还需要一个p2p网络。
什么是p2p network?

使用bt或者迅雷下载过东西的人应该都了解什么是p2p,就是各个用户之间相互传输数据。简单来说,正常情况下,我们去某个网站下载文件,都是直接从那个网站的服务器上下载你想要的这个文件。 这时候链接是从 服务器到你的电脑(server to client)。 使用p2p技术后,比如有10个人一起下载这个文件,这些人之间自己会形成一个network,相互传输数据(peer to peer)。也就是说下载该文件的人越多,你的下载速度就越快。

p2p也是blockchain技术的一部分,那么blockchain需要在用户之间相互传输什么呢?就是我们刚刚建的那条chain。当一个新的用户来使用我们的这条chain的时候,他会需要下载这条chain上的所有内容到自己的电脑里,比如说我们chain上目前有10个block,那么他就需要下载这10个block,当有新的block增加到这条chain里面时,所有使用这条chain的用户需要同步/下载这一个新block,并增加到chain里面。当这条chain的程序员建造了第一个“创世”block后,那么这条chain就脱离了创始人的控制,接下来所有的block的增加都将由使用这个p2p网络/这条chain的用户所决定。

为什么使用blockchain技术?

1. 数据的完整性/不可篡改性
由上可见,由于每一个新的block在加入之前,都会检查一下前一个block的内容是否被篡改,只有在确保数据没有被篡改的情况下,新的block才会加入到这个链中。如果在一条chain里面,一个人篡改了其中某一个block,那么所有的接下来的block都讲无效(因为那个被篡改的block的hash值发生了改变)。这样就保证了数据了正确信,及完整性。

2. 公开的/透明的记录
上面提到,blockchain技术使用的是p2p网络,所以我们有了一个公开的记录(任何人使用这条chain的人都可以下载并查看这条chain上所有的信息)。

3. 去中心化 / High availability
使用p2p网络的第二个好处就是去中心化。根据上面的下载文件的例子,一般情况下,我们都是从某个网站的服务器上下载这个文件,如果这个网站关闭了或者被攻击了, 那么这个文件就丢失了。 使用p2p网络后,我们可以同步blockchain上的所有数据到所有使用这个chain的人的电脑里。假设有100万人使用我们的这条blockchain,那么我们就有100万份最新的备份。也就相当于有100万台服务器在线。

当然还有一些其他的好处,比如安全性,费用低,匿名性等,这里我们就不详细来说了。

比特币与区块链?

好了,我们了解完什么是区块链,现在我们终于可以开始说比特币了。
文章开始的时候提到过,比特币是基于区块链技术的一个产品。
也就是说,比特币也是由一个block,一个block组成的一条链。

比特币每个block里面有什么?

我们再来复习一下,一个block的最基本3个元素为
1. 当前block存储的数据
2. 当前block的hash值(独一无二的编码)
3. 前一个blockhash值
2和3我们在上面已经解释过,我们来说一下1.当前block存储的数据。
一个比特币block里面存储着:交易详情:交易双方的信息比如钱包收款地址,交易金额,交易时间,版本号等等信息。
上面提到过blockchain是公开的/透明的记录。所以所有比特币的block都是公开的。访问https://blockchain.info/就可以看到所有的block信息。
好的,那我们来看一些比特币的第一个(编号为0开始)的创世block:请看下图。
Block #0 - 点击图片放大

地址为:https://blockchain.info/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

上面说过,由于是第一个block的,它的“前一个block”的hash值是程序员自己编,所以大家可以到这个block里面的Previous Block hash 为 0000000000。

什么是挖矿?

为了决定哪一个新的block(新的交易)能增加到chain里面,比特币会出一道数学题目,如果哪个用户能以最快的速度解决这道题目,就可以获得几个比特币作为奖励,而解决这道题目的时间长短是基于电脑的运算能力来决定的。如果你的电脑运算能力越强,你的速度就越快,越有机会以最快的速度算出这道题目。由于电脑显卡的运算能力在这方面比较强,还一度造成了高端显卡缺货涨价的情况。后来专门有人造出了“挖矿机(由很多块显卡组成的一台专门用来挖矿的机子)”。这个解决问题并得到比特币作为奖励的过程就叫做挖矿。

比特币的block是怎样产生的?

当一个用户,解决了那道问题后,系统就会增加某个block(里面包含比特币交易的详情)到这条chain里面。而那个block就成为了有效的block。

什么是比特币钱包?
任何人都能申请一个比特币钱包。点击这里申请。钱包里的金额:
1.你是否挖到矿。如上所述,如果你的电脑够强,解决了问题,系统就会奖励你几个比特币作为奖励,这个几个比特币会存到你的特币钱包。

2.你可以让别人从他们的比特币钱包想你的钱包里转几个比特币:比如我们文章开头的披萨交易,那个人向披萨店买了2个披萨,然后从他自己的比特币钱包里转了10000个比特币到披萨店一个员工的比特币钱包里。如果大家有兴趣,可以在#57044这个block里查看到详情:https://blockchain.info/block-index/71894。这也是历史人用比特币买到实物的第一个记录。

3.不像银行账号是唯一的,你的钱包的收款地址可以每次都不一样。但是钱都会进到你的钱包里。保证了难以追踪性。

比特币最重要的“优势”?

因为比特币是基于blockchain技术的,所以上面说过blockchain技术的的好处,同样也是比特币的好处。下面我们来说一说比特币的最重要的特性“去中心化”。 基本上目前世界上的所有货币/交易系统都是有一个权威的机构来管理,比如我们存钱在银行,银行就是这个权威机构;比如我们使用支付宝来支付,支付宝就是一个管理机构。我们选择存钱在银行,或者选择使用支付宝这些第三方的机构来支付是因为我们选择相信这些机构。当然,选择相信这些机构,偶尔也是有风险的。比如账号被支付宝冻结了,信用卡被盗刷啦,银行不赔钱;一不小心被电力公司多扣了钱之类的。使用比特币之后,由于去掉了这个权威机构,所有的交易都是p2p进行,所有的交易都是不可逆转的,理论上没有任何机构能封掉你的比特币钱包,或者从你的比特币钱包里面扣钱(上面所提到过,当这条chain的程序员建造了第一个“创世”block后,那么这条chain就脱离了创始人的控制,所有就没有这个权威机构。)。当然除非你泄漏了你的钱包的密码。

其他的一些“优势”比如:交易速度快,匿名性,难以追踪性,安全性,手续费低等个人觉得也都有自己的争议。举例来说,因为比特币的交易是完全匿名的而且几乎不可能追踪的,只要知道对方的比特币钱包收款地址就好(上面提到过,这个收款地址不像银行账号,是可以每次都变来变去的),但是这样的话可能会被有些人用来进行非法交易。所以近期,一些国家要求虚拟货币也需要实名制了。再比如,比特币交易一旦发出便不能取消/chargeback,这样虽然也有好处,但是也免不了一些诈骗。如果使用银行的话,银行或许可以在几个小时内制止这个交易。前几个月苹果公司的共同创始人之一Steve Wozniak就被人骗了7个比特币,由于比特币的匿名性和难以追踪,就算被骗了,他也什么都做不了。另外,由于去除了权威机构,假设你一不小心忘记了你的钱包密码,同时也丢了找回钱包密码的key和phase,这种情况下,你就不能再登入你的钱包使用你的钱了。据新闻报道,一个人不小心“丢”了他的硬盘,导致失去了价值1亿多的比特币。如果使用银行系统的话,你至少可以给银行看一下id,银行会给你重置一下。其他的一些特性,这里就不再一一说明了。

比特币/虚拟货币就是未来?

因为上面提到过,比特币有优势也有争议。由于p2p的特性,假设将来没有人使用比特币这个系统,那么它的价值就是0。但是由于比特币的挖矿奖励机制,理论上还是会有人一直使用比特币下去的。目前部分国家已经要求虚拟货币实名制了,所以将来的走向会怎样谁也不知道。 比特币去年最高的时候有2万多美元1个,今年最低的时候降到8千美元,今天(2018年5月10号)为9300多美元一个左右。未来会升还是跌?这个就像股市一样,谁也不知道。有部分人觉得比特币一文不值,也有人觉得比特币就是未来。比尔盖茨和沃伦巴菲特均表示不看好比特币。巴菲特表示,在他看来,目前一片繁荣的比特币毫无价值。他表示:“我不能对比特币估值,因为它不是一种能产生价值的资产。” 我个人觉得,作为一种货币来讲,这样大幅度的升值和贬值本身就是不被人信任的。想象一些如果澳币今天贬值个50%,过几天又升了2倍,我们还能把它当作一个通用流通的货币么?商家们要怎样定价?每天一个价格?menu cost?那么为什么那么多人还在投资比特币?目前在投资/持有比特币的人大多是看好它的未来。期待有一天比特币可以成为一种通用货币。当然,也有部分是期待它升值后卖掉。由于比特币的设计机制,它的数量并不是无限的,总共只有21 million个比特币,预计在2140年可以挖完。也许将来等比特币的数量趋于稳定,价格也会变得稳定?

其他区块链加密货币

除了比特币外,还有其他一些基于区块链的虚拟货币,比较有名的有Litecoin、Ethereum,大家有兴趣可以自行研究下。每个加密货币可能有自己的设计机制。但是我猜最底层应该都是基于区块链的。所以上面所说的区块链的特性都是通用的。

区块链宠物?区块链饮料公司?

除了加密货币外,区块链也能做其他的产品,比如游戏。最近有一个游戏叫做区块链猫CryptoKitties,最高的一只区块链猫标价77万元人民币(有没有人买我就不知道了)。这是一款用了区块链技术的电子宠物养成游戏,具体怎么样我没玩过,我猜可能是每一个block里面放着一只宠物猫的数据。那为什么会这么贵的?这个除了炒作外,我不能找到任何解释。另外还有一些是完全蹭区块链热度的新闻,让人哭笑不得,一家饮料公司,在它的公司名字里加了blockchain这个单词后,股价飙升了4倍

区块链的未来?

由于比特币的火热,大家往往可能认为比特币=区块链技术。实际上区块链技术可以用到很多方面。它是保证数据完整防止数据篡改等的一个有效的方法。比如可以用在会计方便,医疗记录、合同签订等方面。


发行自己的区块链虚拟货币?

由于区块链技术只是一种程序设计的方式,理论上任何一个人都可以发行基于区块链的虚拟货币。举个例子来说,学会计的同学都知道会计使用double entry这种方式来记账的。所以任何一个人都可以用这种方式来记账,只是使用的软件不一样,有myob, sap等会计软件。当然你也可以自己设计一个会计软件。就像会计软件有不同的功能一样(虽然理论上都是基于doule entry的),各种虚拟货币有自己的准则,比如如何增加新的block的到chain里面之类的,几分钟可以增加一个block等等。如果你也想发行自己的虚拟货币(有没有人用就不知道啦😄),可以去github上搜索一下开源的代码。

我随手在github上为大家找了一个(不保证质量):Build a Blockchain and Cryptocurrency from Scratch


提醒

以上仅为一个程序员的个人想法,大家随便看看就好,切勿当真😄😂。
我目前没有任何比特币😢。

注:部分图片来源:www.youtube.com/watch?v=SSo_EIwHSd4


有兴趣写文章?想要分享给大家?

Leave a Reply

Your email address will not be published.