比特币系统

比特币(BitCoin)的概念最初由中本聪在2009年提出,是基于区块链的P2P网络。比特币是一种P2P形式的数字货币。点对点的传输意味着一个去中心化的支付系统。

        比特币无中央服务器,所有数据存储在每一个终端用户设备上,产生的每一笔交易都经过全世界挖矿设备的算力竞赛胜利者记录到一个区块上,而这些区块以自然顺序链接起来组成了一个庞大的区块链链条,分布于世界各地,不可反悔,不可更改。

Coinbase

        刚挖出来的比特币

UTXO (Unspent Transaction Output)

        在比特币社区里 Transaction被简称为TX,因此上面的被简写为UTXO。

        比特币的区块链账本里记录的是一笔又一笔的交易,每笔交易都有若干交易输入,也就是资金来源,也都有若干笔交易输出,也就是资金去向。一般来说,每一笔交易都要花费(spend)一笔输入,产生一笔输出,而其所产生的输出,就是“未花费过的交易输出”,也就是 UTXO。

        UTXO就是一个数字加一个锁定的脚本,其中锁定的脚本唯一的变量就是接收方公钥的hash 值,并没有真正的加密,

        比特币系统里没有账户,只有UTXO和拥有者的公钥的hash值,如果有人通过一笔转账给你转了一个币,在与你公钥hash所匹配的数据库里会有增加一个utxo,其数值是1,如果别人分两次给你转一个比特币,每次0.5,这个时候数据库里会有两个utxo,其每一个的数值是0.5。

        比特币钱包是有账户的,里面用户余额是由钱包算出来的,通过你公钥的hash遍历整个utxo数据库得到你的值,

        比特币的花费就是把你公钥hash下的utxo消耗掉,新的utxo的输出就是接收方公钥的hash值,交易完后你的公钥hash下的utxo会被删除掉,数据库再生成一个utxo,而这个utxo属于那个接收者。而接收者想花掉这笔utxo时候必须拿他的私钥解锁这个utxo,

比特币交易遵守几个规则

第一,除了coinbase交易之外,所有的资金来源都必须来自前面某一个或者几个交易的 UTXO,就像接水管一样,一个接一个,此出彼入,此入彼出,生生不息,钱就在交易之间流动起来了。

        第二,任何一笔交易的交易输入总量必须等于交易输出总量,等式两边必须配平。

        上图第一个交易 #1001 号交易是 coinbase 交易。比特币是矿工挖出来的。当一个矿机费尽九牛二虎之力找到一个合格的区块之后,它就获得一个特权,能够创造一个 coinbase 交易,在其中放入一笔新钱,并且在交易输出的收款人地址一栏,堂堂正正的写上自己的地址。在我写文章的这一天(2016年8月9日),这笔比特币的数额规定为 12.5 枚,市价 48,576元人民币。这个 coinbase 交易随着张三挖出来的区块被各个节点接受,经过六个确认以后永远的烙印在历史中。

        过了几天,张三打算付 2.5 个比特币给李四,张三就发起一#2001号交易,这个交易的资金来源项写着“#1001(1)”,也就是 #1001 号交易——张三挖出矿的那个 coinbase 交易——的第一项 UTXO。然后在本交易的交易输出 UTXO 项中,把2.5个比特币的收款人地址设为李四的地址。

        请注意,这一笔交易必须将前面产生那一项 12.5 个比特币的输出项全部消耗,而由于张三只打算付给李四 2.5 个比特币,为了要消耗剩下的10比特币,他只好把剩余的那 10 个比特币支付给自己,这样才能符合输入与输出配平的规则。

        再过几天,张三和李四打算AA制合起来给王五付 5 枚比特币。那么张三或李四发起 #3001 号交易,在交易输入部分,有两个资金来源,分别是#2001(1) 和 #2001(2),代表第 #2001 号交易的第 (1) 和第 (2) 项 UTXO。然后在这个交易的输出部分里如法炮制,给王五5比特币,把张三剩下的 7.5 比特币发还给自己。以后王五若要再花他这5比特币,就必须在他的交易里注明资金的来源是 #3001(1)。

交易验证

        发生交易时需验证交易的真伪,运用勒基于栈的脚本语言,如果验证通过再对utxo进行锁定到自己地址下(公钥hash),并全网广播出去。

挖矿

        比特币建立一 个去中心化的货币系统, 需要把状态转移系统和一致性系统结合起来,以确保每个人都 同意这交易的顺序。比特币的去中心化的一致性处理进程要求网络中的节点连续不断的去尝试对交易进行打包,这些被打成的包就称为“区块”。这个网络会故意的每隔 10 分钟左右就创建一个区 块, 每一个区块里都包含一个时间戳,一个随机数,一个对上一个区块的引用 ,和从上一个区块开始的所有交易的列表。随着时间的推移,这会创建一个持久的,不断增长的区块链,这个区块链不断的被更新,使其始终代表着最新的比特币总账的状态。

验证一个区块是否有效的算法如下:

        1. 检查其引用的上一个区块是否存在并且有效. 

        2. 检查这个区块的时间戳是否大于上一个区块的时间戳 并且小于 2 小时之内

         3. 检查这区块上的工作证明是否有效. 

        4. 让 S[0] 成为上一个区块的最末端的状态. 

        5. 假设 TX 是这个区块的交易列表,且有 n 个交易。 做 for 循环,把 i 从 0 加到到 n-1, 设 置 S[i+1] = APPLY(S[i],TX[i]) 如果任何一个应用(APPLY)返回错误,则退出并且返回。 6. 返回 true,并且把 S[n] 设置成这个区块最末端的状态。

        在上述列出的验证条件中,“工作证明” 这一明确的条件就是每一个区块的 2 次 SHA256 哈希值, 它作为一个 256 位的数字,必须小于一个动态调整的目标值, 截止到本文写作的时间,该动态调整的 值的大小大约是 2 的 187 次方。这样做的目的是为了让创建区块的算法变难, 从而,阻止幽灵攻击 者从对它们有利的角度出来,来对区块链进行整个的改造。因为 SHA256 被设计成一个完全不可预 测的伪随机函数, 这创建一个有效区块的唯一的方法只有是不断的尝试和出错, 不断对随机数进行 递增,然后查看新的哈希值是否匹配。按照当前的目标值 2 的 187 次方,这个网络在找到一个有效的区块前,必须进行 2 的 69 次方次的尝 试; 一般来说,每隔 2016 个区块,这个目标值就会被网络调整一次 ,因此网络中平均每隔 10 分钟 就会有一些节点产生出一个新的区块。为了补偿这些矿工的计算工作, 每一个区块的矿工有权要求 包含一笔发给他们自己的 12.5BTC(不知道从哪来的)的交易。另外,如果任何交易,它的总的输入 的面值比总的输出要高,这一差额会作为“交易费用”转给矿工。顺便提一下,对矿工的奖励是比 特币发行的唯一途径,创世状态中并没有比特币。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容