精华内容
下载资源
问答
  • 比特币原理详解

    万次阅读 多人点赞 2019-10-29 11:12:13
    一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用...

    一、什么是比特币

    比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。

    二、问题引入

     假设现有4个人分别称之为ABCD,他们之间发起了3个交易,A转给B10个比特币,B转给C5个比特币,C转给D2个比特币。如果是传统的记账方式,这些交易会记录在银行的系统中,这些信息由银行来记录,我们相信银行不会随意添加、删除或修改一条交易记录,我们也不会关注到底有哪些交易,我们只关注自己的账户余额。而比特币的记账方式为ABCD每个人保存了这样一份账本,账本上记录了上述交易内容,如果每个人账本实时的一致,ABCD就不再需要银行。
            比特币是这样做的,每当有人发起一笔交易,他就要将一笔交易广播至全网,由全网中的某一个人,把一段时间内的交易打包好记录到一个区块上,再按照顺序把这些区块,一个一个的链接在一起,进而形成了一个链条,这就是所谓的区块链。

     

    那么问题来了

    1、我凭什么要参与这个系统,我为什么要动用自己的计算机资源来存储这些信息呢?

    2、以谁的记录为准呢?比如上面的账单顺序,A用户可能是这个顺序,但是B可能顺序不一样,甚至可能B根本就没有接收到C给D转账的这个消息。

    3、比特币如果做到支付功能,保证该是谁的钱就是谁的钱,而且只有其所有者才能花。

    4、如何防伪、防篡改以及双重支付,防伪是验证每条交易的真的是某人发出的,比如B可能杜撰一条消息,说某某给我转了一笔钱,这就是一个假消息,或者B说我给某人转了多少钱,但是实际上他并没有这么多钱,又怎么办。防篡改指的是B可能想从区块链上把自己曾经转给某人钱的记录删掉,这样他的余额就会增加。双重支付是指,B只有10比特币,他同时向C和D转10个比特币,造成双重花费。

    三、为什么要记账?

    因为记账有奖励,记账有手续费的收益,而且打包区块的人有系统奖励,奖励方案是,每十分钟生成一个区块,每生成一个区块会奖励一定数量的比特币,最开始是50个BTC,过4年会奖励25个BTC,再过4年再减少一半,以此类推。这样比特币的产生会越来越少,越来越趋近于一个最大值,计算公式是:50×6×24×365×4×(1+1/2+1/4+1/8+…)≈2100万,其中最初奖励50个比特币,每小时有6个区块,每天24小时,每年365天,前四年是如此,之后每四年减半。

    此外,记账奖励还有每笔交易的小额手续费,每个交易发起都会附带一定的手续费,这些手续费是给记账的矿工的。

    四、以谁为准?

    各个节点通过工作量证明机制来争夺记账权,他们计算一个很复杂的数学题,第一个计算出来的节点就是下一个区块的产生者。这个数学题很难,难到没有一个人能同过脑子算出来,它是基于概率的方法,矿工必须通过遍历、猜测和尝试的办法才能解开这个未知数。那么这个数学难题到底是什么呢?下面详细介绍。

    4.1哈希函数

    哈希函数又称为数字摘要或散列函数,它的特点是输入一个字符串,可以生成另外一个字符串,但是如果输入不同,输出的字符串就一定不同,而且通过输出的字符串,不能反推出输入。举个简单的例子,对1-100内的数模10,可以认为是一种哈希方法,比如98%10=8,66%10=6,98和66是输入,模10是哈希函数,8和6是输出,在这个模型中,通过6和8无法推断输入是66和98,因为还可能是56和88等,当然因为这个例子比较简单,所以会出现哈希碰撞,即66和56的结果都是6,输出的结果相同。一个优秀的哈希函数,可以做到输出一定不同,哈希碰撞的概率几乎为0。常见的哈希函数有很多,比如MD系列和SHA系列等,比特币采用的SHA256算法,即输入一个字符串,输出一个256位的二进制数。下面是程序运行的结果。

    通过程序结果可以看出,输入的源信息不同,得到的结果也不同(为了方便,结果用64位16进制表示),即使是orange多了一个句号,也会产生截然不同的结果。同时,通过输出的十六进制字符串,也无法倒推出输入。对于比特币,只要了解SHA256的功能即可,如果感兴趣可以深入了解SHA256的具体算法。需要SHA256的C++源码留言邮箱或私信。

    4.2挖矿原理

    首先介绍一下比特币每个区块的数据结构,每个区块由区块头和区块体两部分组成。

    区块体中包含了矿工搜集的若干交易信息,图中假设有8个交易被收录在区块中,所有的交易生成一颗默克尔树,默克尔树是一种数据结构,它将叶子节点两两哈希,生成上一层节点,上层节点再哈希,生成上一层,直到最后生成一个树根,称之为默克尔树根,只有树根保留在区块头中,这样可以节省区块头的空间,也便于交易的验证。

    区块头中包含父区块的哈希,版本号,当前时间戳,难度值,随机数和上面提到的默克尔树根。

     

     

    假设区块链已经链接到了某个块,有ABCD四个节点已经搜集了前十分钟内全网中的一些交易信息,他们选出其中约4k条交易,打包好,生成默克尔树根,将区块头中的信息,即发区块哈希+版本号+时间戳+难度值+随机数+默克尔树根组成一个字符串str,通过两次哈希函数得出一个256的二进制数,即SHA256(SHA256(str)) = 10010011……共256位,比特币要求,生成的结果,前n位必须是0,n就是难度值,如果现在生成的二进制数不符合要求,就必须改变随机数的值,重新计算,只到算出满足条件的结果为止。假设现在n是5,则生成的二进制数必须是00000……(共256位)。一旦挖矿成功,矿工就可以广播这个消息到全网,其他的矿工就会基于该区块继续挖矿。下一个区块头中的父区块哈希值就是上一个区块生成的00000……这个数。

    解决这个数学难题要靠运气,理论上,运气最好的矿工可能1次哈希就能算出结果,运气差的可能永远都算不出来。但是总体来看,如果一个矿工的算力越大,单位时间内进行的哈希次数就越多,就越可能在短时间内挖矿成功。

    那么n是如何确定的呢?比特币设计者希望,总体上平均每十分钟产生一个区块,总体上来看,挖矿成功的概率为1/2^n。现假设世界上有1W台矿机,每台矿机的算力是14T次/s = 1.4×10^13次/s,单位次/s称之为哈希率,10分钟是600s,所以10分钟可以做8×10^19次哈希运算,从概率角度看,想要挖矿成功需要做2^n次运算,可以列出等式2^n = 8×10^19,可以解出n约为66。所以对于这种方法,我们没有办法使得自己的运气变的更好,只能提高自己的算力,尽快的算出结果。

    另外,需要模拟挖矿过程的C++代码可以回复邮箱,代码可以通过调整难度值,模拟比特币的挖矿算法,控制区块产生的速度。

    五、如何防伪、防篡改、防双重支付等问题

    这部分是理解比特币很重要的部分。

    5.1电子签名技术

    身份认证技术在生活中很常见,可以是人脸识别、签字、指纹等,但是这些方法在数字货币领域并不安全,因为它们一旦数字化,都可以通过复制的方法伪造。所以比特币采用了电子签名的方法。

    注册成为比特币用户时,系统会根据随机数生成一个私钥,私钥会生成一个公钥,公钥又会生成一个地址,其中私钥必须保密,可以保存到硬盘里或者记到脑子里,因为这个私钥是使用相应地址上的比特币的唯一标识,一旦丢失,所有的比特币将无法使用。下面介绍具体的转换过程,不感兴趣可以不看,只要知道随机数->私钥->公钥->钱包地址这个过程,其中私钥可以对一串字符进行加密,而公钥可以对其进行解密,这就是非对称加密,这类算法总体上的功能都是一样的,只是具体算法有区别,由于这些算法比较复杂,与SHA265算法一样不多做介绍,感兴趣可以深入了解具体算法,但是对于比特币系统,只要了解其功能即可。典型的算法是RSA,比特币采用椭圆曲线加密算法。

    转换过程(选读,不影响理解)

        1、首先使用随机数发生器生成一个私钥,它是一个256位的二进制数。私钥是不能公开的,相当于银行卡的密码。

        2、私钥经过SECP256K1算法生成公钥,SECP256K1是一种椭圆曲线加密算法,功能和RSA算法类似,通过一个已知的私钥,生成一个公钥,但是通过公钥不能反推出私钥。

        3、同SHA256算法一样,RIPEMD160也是一种HASH算法,由公钥可以得到公钥的哈希值,而通过哈希值无法推出公钥。

        4、将一个字节的版本号连接到公钥哈希头部,然后对其进行两次SHA256运算,将结果的前4字节作为公钥哈希的校验值,连接在其尾部。

        5、将上一步的结果使用BASE58进行编码,就得到了钱包地址(相当于银行账户)。比如A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

    所以,通过以上的过程我们可以总结出私钥、公钥、钱包之间的关系如下图。可以看到通过私钥可以推出所有的值,公钥哈希和钱包地址之间可以通过BASE58和BASE58解码算法相互转化。

    了解了公钥、私钥、地址的概念后,防伪验证的过程就很容易理解,当A发起一笔交易后,对消息进行哈希,生成数字摘要,对数字摘要,通过私钥加密,生成一个密码。之后A会广播这个条交易消息、公钥以及密码。收到消息的人首先对交易信息进行哈希生成摘要1,再通过公钥对密码进行解密,生成摘要2,这样,如果两个摘要相同,说明这个消息确实是A发出的。所谓的签名,就是密文。

     

    5.2余额检查

    余额的概念应该说根深蒂固,余额是伴随着称之为借贷记账法而产生的,也是目前银行普遍采用的方法,将一个人的交易记录统计好后算出一个余额,但是在比特币中没有余额这个概念,因为其采用的是UXTO模型的记账方法。比如A->B10个比特币,B->C5个比特币,对于第二笔交易来说,B在发起这笔交易时要注明第一笔交易的信息,这样就可以知道B曾经从A那里收到过10个比特币,说明满足第二笔交易发起的条件。所以比特币中余额的检查是通过追溯的方法。

    上图描述了两笔交易,交易10001中,B向C转了10个比特币,验证这笔交易的过程是:首先将B的签名通过B的公钥解密,然后再和交易的具体内容(B签名左侧)对比,如果相同,说明消息是B发出的,然后再检查10000这个交易是否真的存在以及它的内容的真实性。这两点都满足了,就说明交易10001是可以被接受的,否则拒绝接受。

    实际上,真实的交易比这个复杂的多,因为有可能是多笔交易构成了输入,比如B->C20个比特币,是由多笔交易A->B10,D->B10构成的,则前一笔交易ID就是两个ID,甚至可能更多。这里为了简单描述,只列举一笔交易。

    5.3双重支付

    A同时发了两条消息,同时给B和C转了10个比特币,实际上他只有10个会怎么样?假设D节点先收到了转给B10个BTC,然后收到了转给C10个比特币,通过上面的验证方法,自然会拒绝后面的一个,与此同时,E节点可能先收到了转给C10个BTC,然后收到了转给B10个比特币,他自然会拒绝后者。至于哪一笔交易最终会上链,就要看D和E哪个先解决难题,成功挖矿。

    5.4防止篡改

    假设A转给B10个比特币,但是他想把这个信息从区块链上删除,这样大家就都不知道这个事情存在,就可以赖账。
            首先说一下最长链原则,假设某一个区块后面有两个矿工同时挖到了矿,或者由于网络延迟等原因产生了分歧,这时,各个节点先随意根据自己认为对的区块挖矿,只到下一个区块产生,这时会有两条链,但是有一条是长的,比特币规定,以最长的链为准。如果某个节点仍然的固执的以较短的链为准,他就是在和大多数算力作对,这样做的结果是,他挖的块不被大家认可,会浪费时间和算力。

    回到上面的场景,A想赖账,就只能从记录了A->B10个比特币这个消息的区块的前一个区块开始重新挖矿,造出一个支链来,但是实际上的区块已经前进了很多,他只能不停的追赶,而且在追赶的同时,主链也在前进,他必须以比主链快的速度前进,如果他的算力足够大,理论上通过较长的时间确实可以追赶成功,就实现了对交易信息的篡改。然而其实这几乎是不可能的,因为就算算力再大,平均出块速度也是10分钟,从非技术的角度讲,一个人如果掌握了全网一半以上的算力,他为什么不在主链上继续挖矿呢?一个富可敌国的人应该不会甘愿去做一个小偷吧。 

    六、总结

    区块链并不等同于比特币,比特币也不是区块链,区块链只是比特币应用的一种技术,这个技术能给我们带来启发,比特币的伟大之处在于应用了前所未有的区块链技术。区块链技术还能在哪些方面应用还需继续探索。

    比特币是区块链技术最成功的应用,但是比特币本身也有很多问题,它想通过发行货币来挑战主权货币,这个动机有待商榷。此外,由于比特币的匿名性,只需要一个公钥或地址就能进行交易,为黑色产业提供了很好的平台。另外,比特币并不是一个成熟的支付系统,它具有吞吐率低,可拓展性差等缺点。

    可能文字还是比较苍白,可以看看李永乐老师讲解的视频,虽然没有这个详细,但是通俗易懂。

    七、代码实现

    点击这里!

    展开全文
  • 比特币原理

    2018-10-24 19:47:04
    比特币作者-中本聪-比特币原理英文版,详解比特币的核心,区块链的算法由来
  • 比特币原理通俗读本(比特币百喻经),比较适合初学者了解比特币
  • 比特币原理-什么是比特币 比特币原理-什么是比特币 1 比特币是数字货币 就是一连串的数字 2 去中心化的记账系统 posted on 20...

    比特币原理-什么是比特币

     

    1 比特币是数字货币   就是一连串的数字

     

    2 去中心化的记账系统

    posted on 2018-10-16 14:47 baker95935 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/baker95935/p/9797945.html

    展开全文
  • 比特币突破5万刀,重温比特币原理

    千次阅读 多人点赞 2021-02-17 07:30:00
    (图片来源于网络)2019年初,在比特币诞生十周年之际,我将部分比特币研究成果进行了初步的系统整理,形成了一套10章30小节的「比特币原理」音频课程(可通过“刘教链”公众号菜单“音频课”查...

    (图片来源于网络)

    2019年初,在比特币诞生十周年之际,我将部分比特币研究成果进行了初步的系统整理,形成了一套10章30小节的「比特币原理」音频课程(可通过“刘教链”公众号菜单“音频课”查看课程目录并获得收听二维码)。该套课程是我独家制作,具有独特而完备的叙述逻辑(为了打磨这套逻辑前后花费了1年时间迭代了十几次),以及穿插多种跨学科知识和中本聪真实言论进行解读,是市面上绝对与众不同的比特币科普课程。

    一晃2年过去,比特币也已经从当初制作课程时的几千美元一枚上涨到现在突破5万美元一枚,涨幅已超过10倍,宣告2021新一轮牛市之路的开启。值此新牛市起点之际,且让我们沿着课程的结构脉络,再次重温比特币原理,静静地体会和赞叹比特币这项划时代伟大发明的美妙。下面就是温习过程中随手记下的学习笔记,供一起温习的各位同学、朋友参考。

    我们首先温习的是第一章“中本聪发明比特币 互联网开启新纪元”的第一小节“五分钟告诉你什么是比特币和区块链”。本篇就是比特币原理温习笔记01-1

    什么是比特币?比特币是一种数字货币(digital currency),一种密码货币,或者叫加密货币(crypto-currency)。

    注意这三个词汇和概念,电子(electronic),数字(digital),密码(crypto)。在比特币白皮书的标题里,中本聪用的是“电子现金”(electronic cash),使用“电子”一词,侧重其工作方式。比如“电子商务”,侧重于指出通过互联网进行商务活动。那么“电子现金”,侧重指出的应当就是中本聪说过的比特币唯一独特之处就是“可以通过通信信道发送”。在比特币白皮书正文中,中本聪使用“数字签名”(digital signature)进行所有权确认和转移。数字签名也有人称为电子签名,但是“数字”则突出其构成是精确的数字信息,而不是模拟信号。“比特币”的“比特”(bit)则是二进制数字,也就是0和1。而“密码”一词则强调了比特币系统中的数字是密码学技术处理过的,受密码学保护的。

    区块链又是什么呢?形象的比喻是一摞账本,账本里记录着比特币转账交易的全部历史记录。每一本账本在计算机里以区块方式存储,区块首尾相连串联起来就形成了一个区块组成的链条(a chain of blocks),就叫做“区块链”(block chain)。

    难点来了,为什么从一个比特币分裂成了两个概念,比特币和区块链?它们是什么关系?它们是相互分离的,还是密不可分的?不过在探究这一深奥问题之前,先要问一个特别常见的问题:既然我们已经有了网银、支付宝、微信支付、Paypal,等等便利的电子支付手段,现在我们还有了央行数字货币(CBDC或者DCEP),为什么还需要比特币呢?

    答案是,所有这些比特币出现之前或者之后的数字货币或者支付工具,都必须借助于第三方金融机构或者支付平台才能工作。这就出现了单点故障问题,如果平台被黑客攻击,或者出现监守自盗,或者出现不可抗力,一个人可能瞬间就失去了财产和自由行动的能力(设想在一个无实体现金的社会里)。是不是就要花费高昂费用进行反黑客防御?怎么杜绝内部腐败?以及如何防止好人被误伤,如何防止冤错?一个绝对刚性、滴水不漏的系统看似完美,其实恰恰有着最为致命的社会学问题。

    中本聪发明的这个比特币,恰恰就是要解决这个对第三方金融平台的依赖性问题。比特币最大的独特之处,也正在与它可以不借助于任何第三方金融平台,点到点地进行发送,就像我把一张纸质钞票直接递到你的手上一样简单、快捷。这叫做“去中心化”(decentralization)。中本聪曾经表示,他认为去中心化是比特币能够成功的唯一重要的原因。时至今日,市场上已经出现了上千种加密货币或者数字货币,但是在去中心化这个初心和原点上,比特币仍然是做的最好的。

    点到点发送这个问题乍一听起来好像特别简单,不是什么问题。但是,在中本聪2008年真正解决这个问题之前,无数世界顶级专家,密码学家,分布式系统专家,都没有攻克这一问题。原因就在于,原子世界的原子是转移的,不能复制,而数字世界的数字是复制的,不能转移(“转移”的意思是给了你,我就没有了)。

    中本聪是如何解决这一难题的呢?这正是我们深度了解比特币的一条主线索。

    (未完待续)

    (公众号:刘教链)

    (免责声明:本文内容均不构成任何投资建议。加密货币为极高风险品种,有随时归零的风险,请谨慎参与,自我负责。)

    展开全文
  • 比特币原理解析

    2021-02-25 07:25:24
    本文来自于csdn,本文通过介绍比特币的三大基础概念,包括区块链、挖矿与P2P网络,简要的介绍了比特币原理,希望对您的学习有帮助对于当下流行的电子货币-比特币系统,朋友圈里有很多介绍性的文章,也有人试图通过...
  • 比特币原理简介

    2018-10-28 23:48:37
    在接触比特币,了解比特币原理以后,对我这个开发者来说,对我思维方式影响最大的是其以博弈的方式来激励大家按照规则来参与这个游戏,确保遵守规则时利益最大化、违反规则时会遭受损失或承担风险。这我之前十年接触...


    在接触比特币,了解比特币原理以后,对我这个开发者来说,对我思维方式影响最大的是其以博弈的方式来激励大家按照规则来参与这个游戏,确保遵守规则时利益最大化、违反规则时会遭受损失或承担风险。这我之前十年接触的开发理念完全不同,却又非常有意思。本文将初步介绍比特币的原理,后续会基于区块链技术详细介绍。

     

     什么是比特币

    比特币(BTC)是基于区块链技术一种数字货币实现。

    比特币网络是去中心化的网络,即一个分布式的点对点网络,网络中的矿工通过挖矿来完成对交易记录。区块链网络提供了一个公共可见的记账本,任何人任何时候都可以查看此账本的信息。注意,该记账本并非记录每个账户的余额,而是用来记录发生过的交易的历史信息。

    比特币是一种虚拟货币,既然是货币,那么就必须要聊一下,比特币是如何产生、流程的,安全性怎么保障的。简单来说,比特币产生于挖矿,流通于每一笔交易中,主要通过通过技术和博弈两个方面保证安全性。

     

     虚拟货币

    比特币是一种虚拟货币,那么比特币是如何做到和现实社会中的钱一样流通呢?

    1  比特币钱包

    1)   钱包

    比特币采用了非对称加密算法,用户自己保存私钥并公开公钥。公钥就是这个人对外的唯一身份标识,私钥则是使用者开启钱包使用比特币的钥匙。

    公钥是对外公开的,在比特币的规则里公钥即代表了网络里钱包使用者的地址。比特币钱包的地址其实就是用户公钥经过一系列Hash及编码运算后生成的160位(20字节)的字符串。

    可以简单的认为:比特币钱包就是一把锁,这把锁的编号就是公钥,私钥就是打开这把锁的钥匙;如果钥匙(私钥)遗失了,那么钱包就无法打开了;当别人需要给你转账时,你只需要将公钥给对方,收到钱以后你用自己保存的私钥就可以打开钱包,使用其中的钱了。

    2)   非对称加密技术

    非对称加密的典型特性:

    ²  私钥签名,公钥验签证明谁是发起人)。

    ²  公钥加密,私钥解密(证明交易发给谁,其他人无法窃取)

    签名、验签示例:A用私钥签名,然后用签名结果和A的公钥就可以验证信息肯定是A发送的,而不是其他人发送的。

    加密、解密示例:A、B之间相互传东西,A拥有A的私钥、B的公钥;B拥有B的私钥、A的公钥;这样当A给B传信息的时候,用B的公钥加密,这样只有B才能解密,保证了信息的安全。同理,B给A传信息是一样的。

    在比特币的一次转账交易中,需要通过转账人的私钥确保这笔钱属于当前转账人,然后指定收款方账户(即收款方公钥);收款方收到钱后,就可以通过自己的私钥要解密出来。

     

    2  比特币从何而来

    比特币钱包中的钱有两个来源:挖矿(系统奖励+服务费)和他人转给自己的。

     

    3  比特币的使用

    1)   花钱时要解锁输入(私钥解密)

    能花的钱来自于之前别人或者自己(找零的情况)针对自己的一个输入,该输入针对自己上了锁,自己必须解锁才能证明自己可以拥有这笔比特币。

    2)    花钱时要锁定输出(指定的收款方账户)

    输出输入是衔接的,锁定输出是为了确保只有收款人才能解锁,如果锁定时使用的锁不正确,这笔钱要么转入陌生人账户,要么转入黑洞被销毁。

    3)   输入/输出组成的交易单不能被篡改

    在现实世界中,我们将交易单交给银行,有银行确保不恶意篡改。比特币世界是去中心化的,所有几点都是对等的,他的实现方式是:工作量证明。具体见《区块链》。

    在比特币世界中,能确保两点:既有的交易不能被修改(不是完全不能修改,而是修改的成本非常之高);自己钱包里的钱未来确实可以花出去。

     

     挖矿

    我们先聊一下比特币是如何产生的,如何流转的。

    1  挖矿

    在比特币网络中,每10分钟左右生成一个不超过1MB大小的区块,串联到最长链的尾部,每个区块的成功提交者可以获得系统的比特币奖励,同时可以获得用户附加到交易上的服务费。注意:即便是网络中不存在交易,矿工也可以自行产生合法的区块并获得奖励。这整个过程就是所谓的挖矿。

     

    2  比特币发放

    挖矿过程中,系统奖励给每个区块的成功提交者一定数量的比特币,这就是整个比特币网络中新增的比特币。最初每生成一个有效新区块的奖励是50比特币,奖励每4年减半,预计2140年全部奖励完,最终总量稳定在2100万个。

    3  服务费

    从比特币的发放规则上我们看到,随着时间推进,奖励的比特币越来越少,系统总有一天不再奖励比特币,即没有矿可以挖了,为了激励矿工继续挖矿,中本聪还建立了另外一种奖励措施:服务费(也称手续费)。

    区块中记录的主要信息就是交易记录,每个交易被记录都是要付费的,这就可以让矿机有无限动力挖矿。每个区块都会根据手续费的高低排列交易,没给手续费的或者手续费很低的交易往往很难写入到区块,也就是最终很难写入到区块链。基于此,如果想让自己的交易写入区块链中,达到全网共识,可以多给一些服务费(是不是很像现实社会中的小费)。

    4  挖矿过程

    挖矿的过程简单来说,大概是这样的:矿机对区块头的数据(包括:上一个区块的hash、当前区块的hash、区块生成时间、难度系数、随机数nonce、等等)进行hash计算。如果hash结果小于target(target=固定的常量值/difficulty),那么会认为该区块是有效区块,这样的区块才能被同步到区块链中;如果hash结果不小于target,那么需要重新计算。生成区块以后需要将此区块加入到区块链的尾部。

    区块链是去中心化的,新区块加入到区块链的过程是一个集体协商的过程,简单来说过程如下:矿机成功产生一个有效区块(例如Block1)后,会将该有效区块在全网广播,有完整区块链数据备份的服务器会接收到该区块信息,验证通过后将该有效区块加入到区块链的末尾。注意此时此区块还不是全网共识的区块。比特币系统里是每10分钟左右才有一次机会把新区块加入到区块链里,当后续有6个新区块加入时,此区块才成为共识区块。这里的6个区块其实是基于计算量的,伪造6个区块的成本非常之高。

     

     交易

    比特币交易的过程即为比特币在网络中的流通过程。

    1  交易基础

    区块链中每个区块中记录的主要内容是一笔笔的交易信息。具体内容见《区块链-区块结构》。

    一笔合法的交易是引用某些已经存在交易的UTXO作为交易输入,并生成新的输出的过程。

    UTXO(Unspent Transaction Outputs)指未经使用过的交易输出。只有UTXO才能作为新交易的输入,这个比较好理解,即只有我收到且未花出去的钱,才能用;如果在之前的交易中已经花出去了,那以后就再也不能用了(除非伪造假钱)。与之对应的是STO,STO(Spent Transaction Outputs)指被使用过的交易输出。

    交易过程中,转账方需要使用签名脚本来证明自己是UTXO的合法使用者,并指定收款方。每一笔交易的总输入应该大于总输出,差额的部分作为每笔交易的交易费用,即服务费。

     

    2  交易

    交易是比特币的一个核心概念。一条完整的交易可能包括以下内容:

     - 付款人地址

     - 付款人对交易的签字确认:确保交易内容不被篡改。

     - 付款人资金的来源交易id:那个交易的输出作为本次交易的输入。

     - 交易的金额:多少钱,与输入的差额作为服务费。

     - 收款人地址

     - 收款人的公钥

     - 时间戳

    网络节点收到交易信息后,进行一下检查:

     - 交易是否已经处理过

     - 交易是否合法,包括地址是否合法、发起者是否是输入地址的合法拥有这、是否是UTXO。

     - 交易的输入和是否大于输出和。

    如果检查通过,则将交易标记为合法的未确认交易,并在网络内广播。在经过挖矿过程中的打包区块、生成有效区块、全网广播、达成共识等阶段后,这笔交易就成为全网全网共识的交易,此后此笔交易再不能被修改。

    因为交易的过程其实就是区块链生成新区块的过程,这里描述的比较简略,可以参考《区块链》。

     

    展开全文
  • 在大搜车实习过程中做的关于区块链的技术分享。包含,比特币原理,区块链技术原理,加密分析,主流区块链技术分析等
  • 比特币原理 1. 比特币交易的数据结构 1.1比特币区块的结构 每个区块包含5个结构:none,区块大小,区块头信息,交易数据,交易详情 魔法数 什么意思???? 占4个字节 正式网络中魔法数:0xD9B48EF9...
  • 用通俗易懂的人话解释比特币原理 BTC LTC DOGE
  • 比特币原理-共识机制

    2018-10-16 14:28:00
    比特币原理-共识机制 比特币原理-共识机制 1 累积工作量最大的区块 延长最大链 2 分叉 工作量多的为主链 工作量少的为备用链 总之:工作量证明+最长链的组合 作为共识 ...
  • 区块链学习笔记——2.比特币原理

    千次阅读 2018-07-31 16:37:21
    比特币原理 参考资料: 其实并没有什么比特币,只有UTXO 【基础知识】:比特币原理分析   目录 比特币原理 比特币来源 比特币技术原理 发币总量 比特币的基本结构 特点 如何存储 挖矿 比特币来源 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,758
精华内容 703
关键字:

比特币原理