比特币系统是如何运作的?

比特币最火的时候,我没弄明白比特币到底是什么,就稀里糊涂的买了3个币,结果比特币就从6000多元一直跌倒1000多元。期间因为换了电脑,那3个币也不知道到底被自己藏到那个犄角旮旯去了,想着本来想留给子孙后代的,就这么不见了,多少还是有些不甘心。
最近终于下决心把它们找回来,从旧电脑把比特币钱包备份给找出了,花了一个星期的时间把钱包恢复出来(主要是下载所有的交易记录花了很多时间)。

做对事的前提,就是先把自己要做的事情自己研究透了,这样才不会做不该做事或者把该做的事做错。
我这次就算把以前的功课给补了,希望自己以后不要在做自己不明白的事了。

当然必要的计算机知识还是要有的:
参考比特币 (Bitcoin) 系统是如何运行的?King Matrix的回答

  1. 首先你要知道公钥和私钥的概念(已经懂的不用看这部分了)公钥私钥是现代密码学分支非对称性加密里面的名词,通常都是用公钥加密信息,用私钥解密信息,为什么要这样? 因为你看电视剧的时候,发电报那种都是对称性加密,这种加密方式缺点是显而易见的,如果被人知道了密钥和加密方法,于是按照加密方法反着来就能解密。 一直到非对称性加密这种情况才有所改观,公钥就是可以对全世界公开的密钥,比如你和google通讯,用google给的1024位的公钥加密,送到google那里只有他有对应的私钥,只有他能解密,于是就保证了通讯安全

  2. 比特币主要用了ECDSA,也就是椭圆曲线签名算法,这个算法有两个特性,注意这两点对下面至关重要a.只要知道私钥,可以算出相应的公钥;b.你用私钥签名过的东西,可以用公钥算一下是不是你签的;

下面这张图是我见过的把比特币解释的通俗生动且不失准确的一张图。
how-bitcoin-works.jpg

背景

Bob是一个微商,他决定开始接受比特币支付。
Alice是一个买家,她有些比特币,刚好她想从Bob那里买些东西。

钱包和地址

Bob和Alice都有比特币钱包在他们的电脑里。钱包软件下载

钱包

钱包是一个特殊文件,通过它可以访问比特币地址。

地址

地址是一串由字母和数字组成的字符串,例如”1DwunA9otZZQyhkVvkLJ8DV1tuSwMF7r3v”。
每一个地址都拥有属于该地址比特币数额。

创建一个地址 (Bob)

Bob创建了一个新的比特币地址用于接收Alice的比特币付款。

当Bob创建一个地址时,实际上他是创建了一对密钥对(由公钥和私钥组成)。
如果你用私钥(只有你自己知道)签名一个消息,这个消息可以用公钥(所有人都可以知道)验证是不是你发送的消息。
Bob的新比特币地址就是一个公钥,对应的私钥存储在他的钱包里,公钥允许任何人利用它去验证一条消息是不是用有效私钥签名的。

提交一个支付 (Alice)

Alice通过他的比特币客户端向Bob发送比特币到Bob的地址。

私钥签名

Alice的钱包保存着她的所有地址的私钥。比特币客户端用她准备用来支付的地址对应的私钥对她的支付交易请求进行签名。

公钥验证

比特币网络中的任意一个人都能用她的公钥(地址)验证这个交易请求是否来之一个合法账户的拥有者。

验证交易 (矿工)

矿工的电脑将过去10分钟的交易记录打包到一个新的“交易区块”。
矿工的电脑被用来计算用于加密的哈希函数。

加密哈希

加密哈希函数将数据变成固定长度字符串,称之为哈希值。即使源数据有很小的改变都会在结果哈希值上发生巨大的变化。所以根本不可能预测到什么样的初始数据会得到什么样的哈希值。

随机数

为了从相同的数据得到不同的哈希值,比特币用了随机数,在计算哈希值之前,随机数被加入数据。改变随机数将得到不同的哈希值

矿机基于之前的哈希值、新的交易区块和随机数计算新的哈希值。

哈希值+新交易区块+随机数= 新哈希值。
新哈希值+新新的交易区块+随机数 = 新新的哈希值
新新哈希值+新新新的交易区块+随机数 = 新新新的哈希值

如此重复

哈希值的计算是非常简单,但是比特币系统要求新的哈希值必须满足特定格式—必须以特定数量的0开始。

矿工们没办法预测什么随机数会生成以特定个0开头的哈希值,所以他们不得不用不同的随机数生成许多的哈希值直到得到正确的哈希值。

每一个区块包含了一个叫“coinbase”的交易,这笔交易将付给这个胜出的矿工Gary 50个比特币,一个拥有50个比特币新的地址将被创建在这个矿工的钱包里。

##交易验证
一段时间过去后,Alice的给Bob的交易记录在被其他最近的交易所埋蔽。任何人修改交易细节,他将不得不做Gary所做的事,因为任何改变都要求一个完全不同的且符合要求的随机数,然后所有的在这之后的矿工所做的工作都要重做,这样伪造交易基本不可能。

找了张翻译过的,哈哈哈。
bitcoin_cn.jpg