比特币 (Bitcoin) 系统是如何运行的?

洋葱菇凉英语小芽

百家号18-04-1619:00

私信回复:币圈 ,获取更多区块链比特币知识,前言资讯

该文适合完全不懂比特币、不懂计算机技术的知友阅读,如果希望很深入了解比特币的知友,可以在其他回答中寻找答案。

第一次写知乎,很多地方可能弄不好,希望大家谅解。

比特币作为一种新的金融产品(尽管我国不承认),以一种新奇的存在形式慢慢地渗透到我们生活中。或许未来10年、20年,你会像离不开支付宝一样离不开它。但是很多人至今无法理解比特币是怎么一回事。所以我将用最简单易懂的方式告诉大家。如果大家发现有错,也请及时为我纠错。废话太多,别急,接下来就听我娓娓道来。

一、区块链原理的概述

比特币是一种存在于网络世界的虚拟货币。实则为一串计算机数据。比特币产生是以区块链技术作为基础。那么,什么是区块链技术?简单来说,区块链技术可以看做是一种新型的数据库的储存、应用的技术。如何理解呢?传统的数据库储存模式是中心化的,也就是说数据保存在固有的一个或者几个服务器中。比如你这个月的消费账单保存在你自己的电脑中,那么你电脑就是唯一拥有你账单的服务器。这就使得只有服务器的拥有者才对这该数据拥有查阅和修改的权利。而区块链技术是一种分布式存储,它使数据存在所有的用户手中,没有中心服务器,所有人人手一份数据,都可以看到数据信息。这就使数据变得公开、公正,解决了信息不对称的问题。而比特币正是应用了这种公开、公正的技术特征,建立了一套没人可以作假、增发的货币体系。

二、比特币基本原理

如果你原先对比特币一知半解,那么现在大家可以抛开对比特币的了解,从空白开始。假设自己是一个制度的创造者,来和我一起构建一套制度。

我们可以这样先做这样一个背景假设:在一个资源匮乏的村子里有10个人,他们想建立一套货币体系,那么用什么当货币呢?笔?书?鞋子?

于是有个很聪明的人(中本聪)告诉他们,何必这么浪费,人手一份账本(区块链数据库),找个记账的人把大家的资产和交易记录下来就好了。

那么这种"记录账本"的货币体系是如何进行的?现在假设给十个人每人随机分配一个两位数编号(地址),像这样:

甲:12

乙:23

丙:34

丁:45

……

我们假设每个人都有5元的资产充值到自己的编号地址下,那么账本应该这样记:

12:5

23:5

34:5

45:5

……

当某天甲(12号)需要支付2元给乙时(23号),甲就对着记账人大喊:喂,记账的,把12号地址转2元到23号地址里去。于是记账的就尽心地把所有人的账本都更新一遍(全网广播)。于是账本变成这样:

12:5-2

23:5+2

34:5

45:5

……

当然,有几点需要注意的是:第一,账本必须是同步的,也就是每笔交易需要全网广播。所有人都能看到相同账本和交易记录,才能确保信息的真实,正确,一致。如果有人的账本与他人不一致,可能存在两种情况:本地数据被篡改;数据更新不及时。此时,系统会以“少数”服从“多数”的方式,纠正少数的错误数据。因此如果想要篡改区块链数据,需要同时将大部分人手中的“账本”数据做统一修改(50%以上)。这很难做到,因为比特币网络已经十分庞大。第二,账本建立起来后,尽管交易一直在变动,但货币总额是确定不变的(在我们这个假设中,总货币是5×10元,不会增加或者减少。比特币的总数是2100万个,也是个确定数。因此不会出现滥印货币导致贬值的情况)。第三,事实上,比特币地址长达26到34位数(十六进制),而不是上面短短两位数;第四,我们所说的"记账者"就是矿工。

又有一天,丙(34号)需要支付乙(23号)3元。但是丙动小心思了。因为每人的地址是随机生成,并非实名对应(比特币的匿名性)。所以丙就可以对着记账者大喊:嘿,12号转3元到23号。因为记账者并不知道12号地址是甲的,而不是丙的。What?这样甲可就懵逼了!悄无声息自己的账户就被别人动了,财产不翼而飞。不行不行,这套制度体系有问题,重来。

于是,我们再来一招,给地址加个密码,一个地址对应一个密码,这样不就可以防止别人任意使用自己地址吗?

这是个好方法,于是大家设置了自己的密码。但是马上问题又来,既然密码是个人掌握拥有的,那么谁能证明该密码是属于所对应的地址呢?记账者如何确定你的密码是正确的呢?有人认为,可以在密码记在一个本子上。当发生交易时,记账者使用密码本核对。但是密码本本身就具有了安全风险,甚至是记账者将其泄露。因此这种方式仍然存在问题。

聪明的中本聪说,要不这样吧:给大家随机生成一个编号,这次编号不作为地址,而是直接作为密码(我们称作私钥),然后将这个私钥经过一个函数变换生成一个确定的数字作为地址(我们称作公钥)。就好像y=f(x)。

需要注意的是:上述的"函数变换"其实是一种非对称加密。公钥、私钥是现代密码学分支非对称性加密里面的名词。私钥可以轻易加密生成公钥,而公钥却极难反推出私钥(据说量子计算机是有可能做到的)。回答点赞第一的那位知友对此也有作解释,大家可以看看。

现在这个新的体系又开始成型了:大家在用自己的地址(公钥)交易时,需要提供自己的私钥,记账者通过函数变换计算生成公钥,来确定生成的公钥与你的地址一致。那么这笔交易即可完成。(事实上,在比特币交易活动中,大家并不是直接拿出自己的私钥,而是拿出由私钥签名过的"交易合同",因为直接拿出私钥,仍然会使私钥变的不安全,容易泄露。有兴趣的同学可以自己去研究琢磨,这里不多说。)

好了,现在这样一个体系大致成型。大家就开始担心起另一个安全性问题了:如果将来科技进步巨大,计算机计算水平大大提高,有能力用公钥反推出私钥怎么办?事实上这种可能性仍是存在的。因此,我们可以给私钥双重加密,即把私钥加密生成的公钥,再次加密后的值作为地址。

需要注意:第一,给公钥加密的方式是哈希加密(Hash),也是种非对称加密,加密后的值我们叫做公钥的哈希值。第二,我们在比特币交易中所说的钱包地址事实上就是公钥的哈希值。第三,从公钥的哈希值解密出私钥是不可能做到的。

讲到这里,我们的整个货币体系已经完全成型了。没错,这就是我们的比特币交易原理。我给大家梳理一遍。

首先,我们在比特币交易过程中,需要一串数字作为我们地址。因此我们可以利用计算机随机生成一串数字作为私钥,经过二重加密生成公钥哈希值作为钱包地址。

需要注意:第一,私钥要求是二进制的256位数。第二,这个过程完全不需要网络,甚至连私钥都是可以自己写出一个二进制256位数,进行加密生成固定地址。

然后,我们可以将生成的地址通知他人,用于转账交易。因为每“账本”是公开的,每一笔交易都在比特币网络上被广播。因此每个地址下的交易都是可被追踪查看的。

需要注意:第一,他人如果将自己的比特币转账到你的地址下,是不需要你任何操作的。第二,如果你需要将自己地址下的比特币转出时,需要提供私钥的签名文件和你的公钥。因此,从未发生转出交易的钱包地址十分安全(公钥哈希不能推出私钥)。但是一旦发生过交易,安全性便降低了,因为你提供出了你的公钥(破解者只需从公钥破解出私钥)。

所以,追求安全性第一的人,建议每交易一次就换个钱包,每个地址就使用一次,避免私钥被盗和被破(尽管极难)。每次转出交易时,都将剩余的比特币转到一个新的地址下。

正如上所说由于大家出于各种安全性考虑,因此不会有人一直用同一个地址交易。所以,现在大家口中所说的比特币钱包,事实上是一个很多私钥的集合文件(wallet.dat)。存在电脑里,就叫电子钱包;写在纸上就做纸钱包,还有一些在在线钱包等等。你可以将私钥记在任何地方,甚至记在脑海里。而所谓的钱包密码,就是给存私钥的文件加个密,给电脑上个锁罢了。

现在各种比特币的交易平台软件,很多事实上仅提供给用户钱包地址,私钥由交易平台替用户保存。用户的每次交易都是平台替用户签名、广播的。好处是不懂比特币的人可以轻易上手。最大问题就是,你的私钥不在你手上,如果平台跑路。。。。你懂的。所以建议大家在正规平台交易,或者自己制作钱包。

三、ICO融资

关于ICO的详细说明,如果点赞数量有所提高,有人看。我愿意仍用这种最简单易懂的方法来介绍。后续,还有一些内容可以补充拓展,不知道有没有人看,先写到这吧,如果有人看,我就接着补充完善。谢谢。

推荐几个网站给大家:

比特币最权威的网站

Open source P2P money

比特币在线钱包

Bitcoin Block Explorer - Blockchain

该网站可以申请在线钱包,虽然没有给私钥,但是还是比较可靠安全。

比特币论坛

巴比特 | 服务于区块链创新者

比太客户端钱包

http://www.bither.net

私信回复:币圈 ,获取更多区块链比特币知识,前言资讯

本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。

返回顶部