比特币怎么防止双花
A. 比特币有什么用为什么人们愿意炒
我一直不明白为什么要把比特币之类的金融产品往货币上靠,毕竟金本位已经破产好多年了,如今的各国“法币”都是信用本位的,比特币压根就不在这个体系里。本身比特币的交易就是依靠其他法币比如美元计价的,其交易行为模式也不是汇市而更像是贵金属指数。
说白了,比特币就是人为创造的数字黄金,但是就想布林顿森林体系瓦解后就不再有贵金属这一概念,只有黄金和其他金属、白银,铜已经完全去金融化变成了大宗商品,只有黄金因为整个人类发展 历史 的原因被赋予了国家信用之外的另一种 历史 信用,承担独特的金融功能。
而比特币其实就是和黄金一样的生态位,只不过比特币所谓的技术特性所带来的信用完全不能和黄金比较,所以就表现在了币圈不断的大幅波动上。而这种大幅波动又极大的削弱了作为“黄金”应该有的保值对冲市场风险的金融功能。自此,比特币已经彻底沦为一种金融 游戏 ,本质上没人在乎他的技术特性,没人在乎他到底是什么东西,也就是大多数人听完比特币的解释也一头雾水,因为全是同义反复。大家在乎的只是在波动中挣钱。
所以,中国对于比特币为代表的“数字货币”态度从一开始就很明确,而且随着事情的发展国家越来越确信当初的判断是对的。这东西就是纯粹的金融泡沫,而且是为了吹泡泡而吹泡泡。至于什么担心对于数字人民币产生威胁纯属币圈给自己脸上贴金。这次马斯克赤裸裸的操纵市场行为已经把币圈的底裤扒了个干净。国家也说的很明白了,有人非要找死我们拦不住,但是要防止他贱邻居一身血,破坏小区环境。
比特币自诞生以来,至少到目前为止对一个国家或者个人来说并没有什么用,并没有在现实生活中看到比特币的价值。
比特币的实用性不足,但是投机性极强,这一切都是资本在作怪,资本看好比特币的未来,比特币的未来确实可期。
比特币有什么用?
比特币的架构和技术特点在这里就不用多说,网上一查,再看看白皮书就一目了然,大家都知道比特币的去中心化,不可篡改的账本,pow挖矿等等,账本公开,全球矿工的大量集中参与,这就基本阻断了比特币被双花的可能性,因为想要垄断全球51%的矿池算力来做假基本是不可能的事。
比特币从技术角度来看,目前就一个功能,那就是匿名性好,共识性最强,主要是用于XQ,至少到目前为止是这样。
大家为什么愿意炒比特币?
对于炒币的人来说,他们是不关心比特币的用处和价值,只是关心比特币的价格,博取差价是炒币人的唯一目的。
为了让大家都来炒币,比特币幕后的推手做了十年的辛苦付出,从比特币买披萨开始,再到各种勒索事件以比特币结算,再到马斯克站台,这当中从媒体推广开始,再到全球投资者,投机者达成共识,这一过程相当漫长,相当辛苦。
当比特币成为财富的象征后,全球投资者,投机者自然而然的将资金投入到比特币的炒作之中来,这当中有几点值得注意。
一、由于比特币在全球达成的共识度最高,所以比特币最能被人接受,比特币就成了数字货币的风向标,炒作比特币就能影响到其他币的价格走向。
二、在全球主权货币滥发的背景下,比特币的去中心化更加受到投资者的偏爱,比特币2100万发行量对于全球80亿人口来说确实是物以稀为贵。
三、比特币背后一长串的食物链需要比特币价格要大幅波动,矿机生产商,显卡生产商等硬件食物链,还有交易平台,大的投资基金需要比特币的暴涨暴跌来获利,合约就是最好的例子。
四、通过炒币获利和亏损,能更快的让全球加强对比特币的认可,也就是达成更广泛的共识,这对整个数字货币的推广起到很好的正面影响。
总之,比特币直到如今对 社会 的发展并没有起到正面作用,但是以比特币为代表的区块链技术得到了飞速发展,这可能也是比特币到目前为止做出的贡献之一。
炒作比特币的行为完全是投机性质,是通过达成了广泛共识后的投机行为,人们对于财富的向往是永恒的,比特币恰恰就迎合了这种暴富的心理,这是大多数炒币人的心态。
作为新生“币种”,比特币究竟是真金还是泡沫,它真的能在未来的商业交易中发挥流通作用么? 比特币的概念诞生于2008年,是在网络上经过特定算法产生的电子货币。这种虚似货币有总量限制,一共只有2100万个,它的所有权和流通交易都是匿名的,用密码学的设计来保证其安全。由于比特币总量有固定上限且无法突破,因此不存在货币超发的可能。
正是这样的保值和投资需求,使得人们对比特币开始追捧。在这个全球股市普遍不振,楼市泡沫隐现,黄金白银价格下跌的情况之下,一度高涨不止的比特币吸引了足够的目光。 获得比特币的方法只有两种,一种是依赖大型计算机“计算”出来,网友俗称“挖矿”。目前全球有500台超级电脑投入到比特币“挖矿”,剩余的比特币越少,“挖矿”难度越大,另一种则是从“矿工”手中购买而来。
比特币和纸币一样,本身没有任何价值,其购买力来自于人们对比特币这一全新货币概念的信心。但是,比特币没有发行国,没有一个国家用自己的权威和信誉为其担保,没有一个国家强制使用比特币进行流通和支付,承认其货币地位的国家也寥寥无几,比特币的购买力缺乏支撑。 也就是说,比特币不受控于任何一个国家和政府,而这既是虚拟货币与众不同之处,也是它的隐患来源。
在现阶段,对于比特币这种通过网络在全球流通的虚拟货币,世界各国均无相应的监管法律,亦为比特币的未来埋下了安全性隐忧。目前,全球已经发生多起比特币安全性案件,而基于网络产生的比特币,一旦出现系统上的漏洞,投资者的后果不堪设想。加之比特币的顶峰总量不过2100万个,“盘子”容量有限,其币值和流通很容易被大庄家所控制,且这种操控会因为无法可依而难以察觉和监管。
事实上,比特币面世之后,各种虚拟电子货币层出不穷,现在全球已经有80多种各类名目的虚拟货币在流通,不过,没有一个国家以自身信誉为其中任何一款虚拟货币担保。当这类虚拟货币越来越多时,比特币的“鼻祖光环”也将褪色,届时比特币能价值几何,不言而喻。
不过,比特币还是有许多值得现有货币制度的借鉴之处,人们之所以相信比特币,是因为比特币总量有限,不存在通货膨胀的可能。人们去疯炒比特币和追捧黄金的原因是一样的,因为它们不会被“超发”。在全球主要经济体通过开动印钞机以刺激经济的当下,却没有一个国家和政府能自己创造出黄金,也没有一家银行能自己制造比特币。
比特币可以用来直接购买一些商品,比如说特斯拉 汽车 就可以直接用比特币购买[抠鼻]
因为是革新技术的代表,也因为有共识度啊,还因为有利可图啊,就像股票、黄金、纪念币、房子一样,有共识的东西就有价值啊。
为了钱,还能为了什么,杀猪盘,看谁运气好,谁倒霉!
有很多冠冕堂皇的理由说比特币有什么用。其实说白了,比特币就是人们为了突破外汇封锁而使用的,简单来说就是转移资金。
因为比特币不受监管,只要钱进了比特币,那么钱就能在全世界变现!这里面也就产生了很多合法或不合法的需求,尤其现在各国大量印钞票,钱过于泛滥,导致比特币这“转移资金”的功能被放大利用。
所以比特币全世界都在炒(买卖)。
咱也不知道是啥,咱也不敢问,反正卖的挺贵。
比特币只是一个得到共识的数字货币,因为它的价值造就一批富人,所以人们愿意去炒
纯纯滴资本大坑[抠鼻]
B. 比特币出现双花,怎么解决
不太清楚,
C. 双花理论是什么概念
在学习区块链的过程中,大家一定对会听到“双花”这个词,意思就是双重支付,或者更直白点就是一笔资金被花费了两次。这篇文章我们来简单的分析一下为什么会有双花,比特币是如何避免双花的。
在传统的交易中,因为有银行这样的中心化机构,所以是不会存在双花问题的:每一笔支付都将从你的银行账户中扣除相应的资金,所有的明细在银行都有记录。但是在比特币中,因为没有账户的概念,而是引入了UTXO即未花费交易输出。因为没有银行这样的中心化机构的保证,当发生一笔交易时就可能存在着双花的危险:比方说A有一个比特币,然后他同时构造两笔交易T1和T2来花费这1个比特币,其中一个给了B,从B那里买件衣服,一个给了C,从C那里买双鞋。如果不引入某种机制来避免这种情况,那作为数字货币的比特币将没有任何存在的意义。接下来就来分析一下比特币是如何做到防止这种“双花”攻击的。
(1) 正常情况
首先我们来看看正常情况,说白了就是绝大多数时候,区块链的共识机制就能将双花消灭在萌芽状态。我们还是以上面提到的例子来做说明:
假设A构造了两笔交易T1和T2,将自己价值1btc的UTXO分别转给了B和C,妄图同时从B和C那里获得好处。然后A几乎在同一时间将构造好的这两笔交易广播至网络。
假设网络中的矿工节点先收到了交易T1,发现这笔交易的资金来源确实没有被花费过,于是将T1加入到自己的内存交易池中等待打包进区块。
大部分情况下,这个矿工节点会在不久后又收到交易T2,此时因为T2所指向的交易输入与已经加入交易池的T1相同,于是矿工节点会拒绝处理该交易。网络中其他的矿工节点都类似,因此A试图双花的尝试胎死腹中。
(2) 分叉情况
上面说的是正常的情况,但是也有非正常的情况要考虑:假设矿工节点M1和M2几乎在同一时间挖出了区块,并且很不幸M1挖到区块时只收到了交易T1,而M2挖到的区块时只收到了交易T2,这样交易T1和T2被分别打包进两个区块。因为这两个区块是差不多同一时间被挖出,于是造成了区块链的分叉:
网络中某些节点(可能是离M1近的)先收到了M1打包的区块BLK1,于是用该区块延长自己的区块链,而另外一些节点(邻近M2的)则先收到M2打包的区块BLK2,用该区块延长自己的区块链,于是整个区块链网络
D. 2021-12-01比特币大笔交易需要6个区块确认
很多刚刚接触区块链不久的小伙伴,可能看到“比特币交易需要6个区块确认”会很疑惑。为什么需要6个区块链确认呢?
为了避免双花造成的损失,一般认为,等 6 个区块确认后的比特币交易基本上就不可篡改了。也就是说,如果小黑发给大白的 666BTC 这笔交易被打包在了第 N 个区块(第1个区块确认),大白等到第 N+5 个区块出现的时候(第6个区块确认),这笔交易基本上就不可篡改了。
一般来说,确认的区块数越多,越安全,被 51% 攻击后篡改、重组的可能性越低。至于我们经常看到的比特币交易 6 个区块确认后就安全了,这个数字 6 并不是硬性规定的,只是说有了 6 个区块确认,被篡改的可能性非常低,因为黑客或者攻击者目前很难掌握大量的比特币算力来做恶。
比特币平均每 10 分钟打包一个区块,6 个区块确认平均下来需要 60 分钟。那我们是不是每一笔比特币交易,都要等上 60 多分钟呢?
其实不是。对于小额交易,不需要等待 6 个区块确认,因为比特币发生 51% 算力攻击的可能性很小。一般来说,小于 1000 美元的比特币交易,1 个区块确认即可;介于 1000~10000 美元的比特币交易,一般的交易平台充值、提现会要求至少 3 个区块确认;介于 10000~100000 美元的比特币交易,基本需要 6 个区块确认;大于 100000 美元的交易,确认的区块数量越多越好。
E. 小白如何了解比特币
多去比特币新闻网看比特币新闻,以及行情,技术
比特币的诞生
比特币的诞生应该算在2008年的11月1号的那一天,一个化名为“中本聪”的人在网上发表了一篇论文。 在这篇论文里,他详细的描述了一种崭新的货币体系,他将之命名为“比特币”。
随后,次年的1月3日,首个比特币程序在中本聪的手里诞生,与之一起诞生的是最早挖矿所得的50个比特币。在那之后他开始逐渐淡出,直到彻底的消失。
人们至今也没找出这个叫中本聪的人的真实身份,即使如今的运营商、互联网巨头与政府已将人们在网络上的行迹牢牢掌握在了手里。
他在发言时会经常切换美式和英式英语,他随机在全天不同的时间上线,以隐瞒自己的国籍和时区;他隐藏自己的ip地址,加密自己的邮件,故意伪造一些写作和发言风格来混淆视听;此外他还是一名造诣颇深的密码学专家,对了,他发表论文的地方就叫做 "密码学邮件列表"。
所以比特币从诞生时起就带上了一种黑客精神:对抗任何势力所强加的审查。
当然我们也可以这么看: 如果一个发明了匿名货币系统的黑客,却连自我身份都不能匿名的话,那整件事会变成一个笑话。
但是所幸,中本聪没让我们失望。
1. 什么是货币
我发现要讲清楚什么是比特币,这一节是无论如何也跑不了的了。我不是什么经济领域的专家,我只能很粗浅且只能在很直观的意义上讲述这个问题。(不过就标题所表达出来的本文主旨而言,似乎也足够了)
高中的课本里有讲过(还记得吗?) , 货币是储存价值的媒介,一种东西要成为货币,最重要的,他必须满足:
1) 稀缺性。
这就是为什么黄金可以而沙子不能被当作货币的原因。稀缺性可以理解为获得它的难度,越是稀缺要获得它就越难。 一个直观的认识是这样的:假设你一个月的薪水是5000元,它意味着人民币的稀缺程度恰好到了这样一个度,即你要付出一个月的劳动才能获得5000个一元。 你不会同意以5000粒沙子来支付你的薪水,是因为与其通过劳动一个月来获得它,你大可以去沙滩走一圈就轻轻松松地得到了。
那么现在的金融系统是如何保证货币的稀缺性的呢?控制发行。货币的发行是被牢牢掌握在中央银行手中的,这样货币的发行量才能做到可控(所以你现在知道了,私自印钞是违法的)。回到刚刚那个例子, 你同意以5000元来支付你一个月的薪水,是因为人民币发行量刚好到了这个度。如果此时的人民币发行量翻倍了,稀缺度相应降低, 这时候你就应该要求以1万元来支付你的薪水了(但市场的响应往往不会这么快,在这期间你的财富其实是被剥夺了--你的劳动本该获得一万元却只得到5000元的回报)。
2)交易性
货币存在的目的当然是为了交易。就像很多人告诉你的那样,钱是用来花的,不是用来带进棺材的。所以除了满足稀缺性以外,一种东西它越是方便交易,那么他就越符合理想货币的标准。所以在货币史上,银元代替了贝壳,纸币代替了银元,数字货币正逐渐取代纸币。
这里所说的“交易”,是指财产从一方转移到另一方,即一方的财产减少相应的另一方增多。对实物货币来说,它发生得非常自然,甲要给100元乙,当100元钞票从甲的手里转移到乙的手里的那一瞬间,交易完成了,甲的财产减去了100元而乙的财产增加了100元,这个过程中没有第三方的参与,完全是甲和乙之间的私密行为;然而当交易发生在数字货币层面上时,就没这么简单了,甲要给100元给乙,如何确保交易完成了呢?假设甲和乙在各自的电脑上记录了自己的财富数额的话,那么如何确保乙在给自己增加了100元的时候甲如实地给自己减去了100元呢?这个时候我们不得不要引入第三方了--我们称之为“银行”的那个家伙。 当甲要转移100元给乙时,他不是直接给乙而是给银行, “请把我的100元转给乙” ,于是银行在甲的帐目上扣掉100元,再在乙的帐目上加上这100元。(我们假设它慷慨地不收取任何交易费)
以上所说的就是现代货币系统的一个粗廓模型,这个模型最大的弊端在于:人们不得不去信任一个中心系统。
数字货币的交易必须依赖银行,而一个人的银行账号可能会被审查、限制甚至是剥夺。当一方想要给另一方转移自己的财富时,银行可以收取高昂的费用或者直接拒绝(比如你试试汇一笔钱给美国的亲戚)。
货币的发行必须依赖中央银行。好吧,这已经是一个广为人知的秘密了:货币一直在贬值,或者说货币一直在超额发行(想想20年前的100块跟现在的100块)。 我引用两段话, 一段是凯恩斯说的, “通过连续的通货膨胀过程,政府可以秘密地、不为人知地没收公民财富的一部分。用这种办法可以任意剥夺人民的财富,在使多数人贫穷的过程中,却使少数人暴富。”, 另一段,出自哈耶克, “政府无法克制滥发货币的冲动”。
那么有没有可能设计出一套货币系统,在这个系统里我们不需要一个中心机构,不用被迫去信任任何的第三方, 使货币的发行透明可控,货币的交易私密而安全呢?
你猜?
2. 什么是比特币
所以我们现在可以回答到了,比特币是一个发行去中心化和交易去中心化的电子货币系统。在这个系统里,货币的发行量是透明且可预期的,货币的交易利用整个网络的协同合作来保证交易的安全。
下面我将逐步拆解比特币的原理。需要注意的是,比特币作为一个已经实际在使用的产品,它本身有着非常丰富的细节。本篇目的是向没有技术背景的读者讲述比特币的基本原理,因此并不会涉及到这些细节。比如说钱包的地址其实并不是公钥,而是公钥的二次哈希值; 区块链的难度要求并不是简单的把所有区块链的内容做一次哈希运算;等等。但是为了叙述的简洁性,在不影响对基本原理的讲解下这些都做了简化处理,希望大家能够理解。
2.0. 比特币网络 -- 由众多运行着比特币程序的节点组成
比特币是一个由众多平等的节点组成的网络。
一个节点就是一个比特币程序,任何能够连上网和具有一定计算能力的机器都能运行这个程序 -- 所以你家里的电脑也可以作为比特币网络里的节点:)
节点之间是可以互相通讯的,同时比特币有一套机制可以让一个节点向其他所有节点发出消息,这个行为被称为“广播”。
2.1. 区块链 -- 一个公共的账簿
我们先回到银行的例子。银行最基本的功能,无非是维护一个账簿,而这个账簿只需如实记录每一笔交易而已。比如X年X月X日,王小明转了30块钱给张大毛;Y年Y月Y日,张大毛转了12块钱给李小豆,诸如此类。 根据这个账簿我们可以查到一个人的所有交易记录,因而也就能推算出这个人此刻的账户余额为多少。比如李小豆从建银行帐号开始,转进的交易合计500元,转出的交易合计300元,那么可以算出此时李小豆账户余额一定是200元。
维护好这个账簿,并且作为唯一的维护者(只有银行才有权力查看和修改), 银行作为一个交易中心的职责就完成了。
比特币也有账簿,但是与银行不同的是,这个账簿是公开的,任何人可以去查看和审核它。
这个账簿被称为"区块链"。你可以把区块链想象成一个小册子,册子的每一页写满了交易信息,并且不断有新的页加入进来。
2.2 钱包 ---由一对公钥和私钥构成的的账户
上面一小节,解释了什么是比特币的账簿。这一小节将解释这个账簿里资金的归属权问题,亦即比特币的帐户系统。
比特币里的帐户跟银行的帐户有本质的区别。
在银行账户下,银行记录下了该账户所有者的身份信息(回想一下你去银行开户时提交的资料:照片、身份证、电话号码、家庭住址....),因而只要你能向银行证明你的身份,你也就获得了你名下财产的所有权。在这种模型下,银行扮演了一个全知全能的上帝角色:他知晓现实人们的财富信息。我们除了祈祷上帝不要把我们的信息泄露出去或者利用它干坏事以外,别无他法。
在比特币的世界里,并没有银行这样一个机构,它不会强制人们暴露自己的身份以换取资金的安全。比特币的帐户只是简单的由两串数字构成,分别被称为“公钥”和“私钥”,除此之外再无其他。
这个两个数字所具有的数学特性 -一个被私钥加密过的数据只能通过公钥来解开,所谓的非对称加密-使它们能够完美的实现一个帐户(比特币世界里被称为钱包)需要的功能。
我们把公钥作为帐户地址 --在比特币世界里也称钱包地址 --它类似于银行系统里的帐号,就是当你告诉别人“请给我的帐号打300块钱”时,需要告诉别人的那一串数字。对银行来说,它是“招商银行6214850200251100”,对比特币而言,它是“ ”。
私钥,是证明钱包所有权的*唯一*凭证,你通过证明你是该钱包的私钥持有者来获得该钱包的所有权。注意,和银行账号的密码不同的是,你丢失了密码还可以通过证实自己的身份来找回,但你一旦丢失了密钥那这个钱包里的资金就再也找不回了。
因为公钥和私钥所具备的非对称加密的美妙特性,钱包的所有者并不需要通过出示私钥来证明自己持有它。他只需要出示一段用私钥加密过的文字,验证者能用公钥(即钱包地址)解开这段文字即能证明。
那么怎么生成一对这样的数字呢?
相比于银行开户的繁琐手续,你唯一需要的只是一个实现了该功能的数学软件。
感谢数学。
2.3 区块 --- 有难度要求的账簿页
前面提到,区块链就是一个账簿,一个区块就是这个账簿里固定大小的一页。(比特币规定区块大小不超过1M,而一笔交易大约250字节大小,因此一个区块平均能写下4000笔左右交易。)
区块链是公共的,每个人都可以下载,验算和查看区块链里的交易信息。同时每个人也都可以向区块链增加区块,只是我们需要一种机制来防止坏人们通过提交大量的区块来拖垮整个网络。这个机制的核心在于我们要使区块的构造变得有代价,代价大到不可能在短时间内构造出大量的区块。
比特币要求,新的区块必须使区块链具有某种特征的哈希值才能被允许加入。 哈希值是一种数学运算(感谢数学!),你可以简单理解为对数据的摘要,不同的数据有不同的哈希值,即使两个数据只相差一个字节,他们对应的哈希值也会截然不同。
比特币通过“要求区块链的哈希值具有某种特征”来控制构造区块的难度,这个特征其实就是要求哈希值开头的几位数字为0. 比方说当前比特币要求哈希值前4位必须位0,我们用P表示当前的区块链,用B表示当前构造的区块,那么P+B的哈希值前4位必须为0该区块B才能被允许加入区块链中。 这里要注意三点, 1. 要构造出这样一个区块没有捷径,必须通过大量的计算,一遍一遍的往B里放随机数直到P+B的哈希值满足要求为止。2. 哈希值前面为0的位数越多,要构造出这个区块的难度就越大。
好了,我们现在有了控制区块构造难度的工具了,那么比特币通过什么样的规则来控制难度呢?
比特币规定区块链应保持在平均每两周时间增加2016个区块(也就是平均10分钟一个)的速度上。 也就是说,每增加2016个区块,系统就会算出产生这2016个区块的时间,如果它小于两周那么就提高接下来2016个区块的难度(比如从要求哈希值前3个必须为0提高到前4个为0), 如果它大于两周就降低难度(比如从要求4个0降低到3个0), 这样从长远来看,就使区块链平均以每10分钟一个的速度增加了。
也因此可以推论,区块链的难度要求与全网构造区块的算力成正相关关系。也就是说,参与构造区块的算力增加那么难度要求就会提高,相反则会降低,这样才能使区块链以固定的速度增加。
上面提到,让构造区块变得有难度,是为了防止被坏人攻击。同时,它还有一个作用是防止坏人们将一笔钱花两次(所谓双花问题)。 我们看如下一个比特币的应用场景:
小张要用比特币在小李那里网购一个商品,
1) 小李用数学软件生成好一个比特币钱包,并将该钱包地址(公钥)告诉小张。
2) 小张选取了自己一个有足够余额的钱包,并用这个钱包的私钥签发了一笔交易(该交易把一部分比特币发到小李的钱包地址上),然后把交易广播给全网络。
3)网络中的一些节点把该交易收纳到当前正在构造的区块中。 第一个成功构造出合法区块的节点把该区块广播给全网络,得到全网络的认可被加到区块链上。
4) 小李发现区块链上已经有一个区块包含了指向自己钱包地址的交易,并且交易金额正确。 小李随即给小张发货。
5)小张发现小李已经发货,这时他开始重新构造一笔交易,试图把刚刚发给小李的钱发到自己另外的一个钱包里。这个时候他不能再把这笔交易广播出去了,因为网络中的其它节点会发现该交易是不合法(花掉一笔已经花掉的钱)而直接拒绝掉, 小李只能自己构造一个包含了该交易的区块,并且试图说服网络中的其它节点他的这个节点才是合法而刚刚那个(包含发给小李交易的区块)是不合法的, 这样就能实现他一笔钱花两次的目的。
比特币规定当区块链发生分叉时(即出现了两个或以上互斥的合法区块)时,应该追随最长的那条。 那意味着小张要实现自己双花目的,他必须在产生了小李那个区块后,马上构造出两个区块来,才能说服其他节点跟随自己的这条链。 要达到这个目的,当前时间内他必须拥有(或者接近拥有了)全网51%的算力, 才能抢在其他所有节点之前构造出两个区块出来。
2.4 矿工 --- 通过挖矿来争夺记账权的区块链维护者们
前一节我们讲到,区块链的难度实际上是对区块链的保护,这个难度要求越高区块链就越免于被坏人攻击。换个方式表述就是,全网构造区块的算力保障了区块链的安全,全网的算力越高,那么坏人们获得全网51%算力的难度就越大,因此越不容易被攻击。
那么我们如何激励节点们贡献出自己的cpu跟电力来提高全网的算力呢? 答案是区块奖励。
比特币规定,成功构造出合法区块的节点会获得一部分比特币作为奖励,这部分比特币是系统生成的,他类似于淘金业里的挖矿,通过辛勤的劳动增加了黄金(比特币)的流通总量,因此构造区块的过程被称为“挖矿”,企图通过挖矿来获得区块奖励的节点被称为“矿工”。
挖矿的意义:
1) 它激励节点们贡献出算力来保护网络
2) 它实现了一种公平的方式发行比特币,因为不存在一个中央发行机构。
除了区块奖励外,交易者还可以通过额外支付一笔交易费给矿工们来鼓励他们将自己的交易收纳到它的区块里。这样当区块奖励趋于0时(比特币总量2100万枚,意味着越到后面区块奖励会越少), 因为有交易费的存在,矿工们也会继续维护整个网络。值得注意的是这里的交易费跟银行转账费有所不同,银行的转账费是由银行自上而下规定的,比特币的交易费是由使用者自由设置自下而上竞争的结果(如果当前交易数量很多而你给的交易费太低的话,可能不会被矿工们收取。)
亦即,矿工成功挖到区块时,他将获得 1)区块奖励 2)该区块内所有交易的交易费。
2.5 总结
比特币的核心是一个公共的账簿--区块链,每个人都可以核算查看这个账簿里的交易信息。这个账簿里不会记录任何真实世界里的个人信息,比特币保护了使用者的隐私。
通过非对称加密,用户可以不用出示密钥就可以证实自己是该密钥的持有者。因此提供了一个安全的不用信赖任何第三方(对比银行,你必须信赖它不把你的账号密码泄漏出去)的方式发起一笔交易。
因为比特币是开放的,意味着任何人都可以攻击比特币网络。通过控制区块的难度,使比特币网络免疫于大部分的攻击除非攻击者获取了接近全网51%的算力。而矿工们是比特币网络的保护者,比特币通过区块奖励和交易费的方式激励他们贡献出自己的cpu,组成巨大的算力屏障,使得任何组织或个人想要发起51%算力攻击都成为不可能。
F. 比特币币的技术特点有哪些|乌托市场
无法被篡改
这里所说的“篡改”是网络中为了弄虚作假而对账本进行恶意修改。
这一点由比特币采用“工作量证明机制“和”最长链机制“来保障的。工作量证明是指一种对在差不多时间内发生的事务的先后顺序达成共识的一种算法。监测的是结果。它的特点对于执行方难度是适中的,对于验证方是容易的。
矿工们通过“哈希计算”,最先计算出结果,获得记账权,其他节点通过非常简单的验证之后,就可以同意其记账,并同步账本。打上时间戳后,紧接着进行下一轮计算。
为什么不可能恶意篡改?
恶意篡改需要从这个区块开始之后,把所有的区块都重新计算一遍,再把账本同步给其他人。而在他进行计算的同时,其他矿工们已经在原来的链上继续往前记账了。因为在比特币的网络里,大家认为最长的链才是正确的链。这个恶意篡改的人,需要在很短的时间内赶上现有区块的高度,这基本上是一件不可能的事。
不可伪造
“UTXO”结构是比特币不可伪造的技术来源,意思是未花费的交易输出。
1.在比特币世界里的每一笔转账,都能够追溯到上一笔交易。每一笔付款,都可以追溯到上一笔收款。一直往上追溯到它诞生时矿工挖出来的那个区块。
2.双花—在比特币世界重复支付被叫做“双花”,就是花了两次。
jeicS��Z�
G. 潜藏在货币流转特性中的秘密,DCEP如何优雅地解决“双花问题”
上一篇文章我们已经谈过,账户体系可以完美地解决数据作为货币会产生的双花问题,但由于这种账户机制,会使得货币的流转丧失并行的特征,很难在一个独立的系统当中容纳大量的交易同时进行。
那么,我们如何才能让这些账户可以实现数据的并行化处理呢?
换一个思路来思考账户结构。
我们之前的账户体系当中,不同的用户账户所记录的是一个数字,我们利用一个数字来表示一个用户手中所持有的货币的数量。但现在我们不再使用一个数字来表示账户的货币数额了,而是将每个货币都变为一个独立的数据段记录在账本当中。
当用户要进行交易的时候,只需要选择一部分货币,并将这这些货币复制给新的用户,同时将原本用户手里的货币标记为作废即可。
假设张三的账户中存在着100张代表着一元的货币,每一个一元货币都有着独一无二的编号,那么当张三向李四转移50块钱的时候,张三只需要在自己的账户当中选择出这50张货币,告诉账户的管理者,我要把这50张货币转移给李四。而账户的管理者在收到这样的一个信息请求之后,他就会把这50张货币在账户当中标记为作废。与此同时,在李四的账户当中产生50张新的一元货币。
这种处理方法也就是现在所谓比特币UTXO结构所采用的一种方式。它的优点在于可以允许货币同时由多个账户转向多个账户。交易过程中系统会自动加上时间戳,如果用户用同一笔UTXO付给两个人,系统中的节点只确认先接收到的那一笔。
然而,实际上比特币的交易实现,并没有采用 50 张一元这种做法,而是让每一个货币都有自己的面额。
这也很好理解,因为既然货币是可以被生成和销毁的,那么为什么不直接生成一张50元呢,更加简单便捷。
在比特币账户账本中,货币是以一个字符串的形式来进行记录的。每一个货币都有自己的独立ID。这个ID是由UTXO交易哈希值与UTXO中的位置索引决定。
这种记账方式的优势在于交易逻辑清晰。它可以通过算法分析出交易之间的依赖关系,并将可以实现一定程度上的交易并行化处理。
尽管并行化的问题得以解决,系统中也存在了真实货币的概念,然而用户并没有真实拥有这些货币,它们被存储在区块链上。
既然如此,为什么我们不让用户 “拿着” 这些货币呢?
听起来这似乎只是一个简单的操作,只要将这个货币的数据记录从我们的账本上拿到用户手中即可。
但这一个小小的变化,却能使我们整个系统实现了质的飞跃。
实际上,这就是 DCEP 的设计逻辑。
让用户手中真实持有代表货币的字符串。这些字符串数据通过数字签名技术进行签名,保证货币确实由央行发行。
如此,整个DCEP体系摆脱了原有的账本。体系中流转的不仅仅是价值,而是现金。用户的所有交易行为都会被表达为加密字符串的交换过程。通过这样的方式,真正的实现了货币的流转流程与现金的等价关系。
这种方式可以真正让数字货币的流转方式模拟了真实货币的流转方式,与现有的任何一种账本记录的方式有着本质的区别。
在原本的账本形式中,用户所拥有的只是一个证明你身份的字符串,并不是现金。现金是被放在账本管理机构手中的。换言之,用户拥有的仅仅是货币的价值,而不是货币的物理属性。用户永远不知道管理机构利用自己的现金做了什么。
另外,生活中用户也并不关注储存在银行中的货币的编号。他们只需要在使用时,考虑货币的面额即可。而这样的设计会使得货币展现出与真实现金的不同特征。
例如,账户中记录的货币是可以被分割的,理论上这种划分是可以无限进行下去的。账户系统中两个相同的一元并无区别,他们都只是一个在系统中记录的数字。
说到这里,不得不提及一个来自于区块链行业的概念——NFT。
这个概念与银行账户的价值记录方式有所不同。它的全称是非同质化代币。
简单来说,就是每一张货币都不一样。如同现金,虽然两张一百元货币的价值都是一百元,但是他们在物理上却是不相同的。
现实中,每张真实的货币都是可以被任何人真实拿在手中的。钱的物理属性与价值被统一管理。每张货币也都拥有一个唯一的编号,这个编号可以用于追踪货币,同时也保证了货币本身的独立性。每一张货币都是不可分的。我们不能把一样百元大钞撕成两半,把其中的一半当作五十元来用。那么,如果我们需要调整货币的面额,就要把手中的货币进行兑换。
以上这两种系统的区别,本质上是现金与账户的区别。
从这个角度来讲,DCEP的设计模式,说明了它就是一种真实的现金。
它的任何属性,包括流通特性都与真实的现金是一模一样的。
而在此基础上,由于数据可以被远程传输和管理,DCEP又比现金有了更大的优势。
DCEP作为现金的一种表现形式,它的技术设计当然不可能是账户机制完成的。
尽管数字货币在到达用户的手中后,可以实现货币流通的并行化,但是考虑到由于数据本身是可以被复制的,而用于保证DCEP真实性的数字签名即使是在被复制之后,也能被正确的验证,我们仍然需要解决数字货币“双花问题”。
解决这种问题的方法就潜藏在现金货币的流转特性中。
之前已经说过,每一张现金上都是存在一个唯一的编号。
事实上,这个编号就是解决DCEP双花问题的关键。通过编号,我们就能很优雅地解决“双花问题”。
“双花问题”问题简单来说就是,支付方已经将一笔钱付给接收方,但却依旧拥有被转移货币的支配权。换言之,这笔钱同时被两个人所拥有了。
从这个角度上来讲,避免货币“双花”的核心点,就是保证同一时间,一个货币只能被一个人拥有。
在DCEP场景下,通过DCEP本身所具有的编号,我们就可以成功实现追踪每一张货币的所有者。
因此,在 DCEP 体系下,解决问题的方式就是构造一个登记中心,记录 DCEP 字符串编号与所有者身份编号的映射关系。
正如图中所述的流程,当Alice向Bob发送一笔数字货币时,Alice先向Bob发送自己所拥有的数字货币字符串。同时 Alice 也会向数字货币登记中心通知,告知数字货币登记中心自己的这张货币0x001的所有权已经发生了转移。数字货币登记中心会根据Alice所发送的数字签名信息验证Alice的身份,确保Alice真实确实是货币0x001的所有者的情况下,把这张货币的所有权记录修改为Bob。
虽然我们使用了一个登记中心用于记录所有货币转移过程的身份变化,但是这个中心并不会限制整个数字货币的性能。因为数字货币的登记中心所管理的每一张货币都是相互独立的,天然满足成为 Stateless 的特性。在这个基础上,整个系统是可以无限并行化扩展的,这也就意味着DCEP的核心系统理论上是可以对外提供无限扩展的高性能支持的。
至于Stateless,这是一个计算机术语。
Stateless的设计可以保证整个系统中不存在性能瓶颈。任何一个系统的设计只要满足Stateless的特性,那么这个系统的性能便可以被无限的扩展。
在整个数字货币登记中心系统中,每一张货币的所有权记录都是独立的,正如同真实的现金在社会中流转的过程。
某种意义上,DCEP的设计目标是为了全国乃至全世界的货币流转过程提供支持。这对整个系统的性能有很高的要求。
而DCEP所采用模拟真实现金流转过程的技术方案,既能巧妙地解决数字货币可能产生的双花问题,同时又借助于货币流转的并行化特征,保证货币的流转结算过程可以被完美地并行化处理。
无论从区块链上加密货币的形态上来看,还是从实现的技术特性上来看,DCEP 的设计模式可以说是与区块链完全不相同的设计模式。
本质上,区块链无论采取什么样的形式,它都是一种账本的形态,而 DCEP 的实现则是一种真实的现金。
显然,DCEP 的设计更加符合数字货币这个场景的需求。
H. 比特币机制研究
现今世界的电子支付系统已经十分发达,我们平时的各种消费基本上在支付宝和微信上都可以轻松解决。但是无论是支付宝、微信,其实本质上都依赖于一个中心化的金融系统,即使在大多数情况这个系统运行得很好,但是由于信任模型的存在,还是会存在着仲裁纠纷,有仲裁纠纷就意味着不存在 不可撤销的交易 ,这样对于 不可撤销的服务 来说,一定比例的欺诈是不可避免的。在比特币出来之前,不存在一个 不引入中心化的可信任方 就能解决在通信通道上支付的方案。
比特币的强大之处就在于:它是一个基于密码学原理而不是依赖于中心化机构的电子支付系统,它能够允许任何有交易意愿的双方能直接交易而不需要一个可信任的第三方。交易在数学计算上的不可撤销将保护 提供不可撤销服务 的商家不被欺诈,而用来保护买家的 程序化合约机制 也比较容易实现。
假设网络中有A, B ,C三个人。
A付给B 1比特币 ,B付给C 2比特币 ,C付给A 3比特币 。
如下图所示:
为了刺激比特币系统中的用户进行记账,记账是有奖励的。奖励来源主要有两方面:
比特币中每一笔交易都会有手续费,手续费会给记账者
记账会有打包区块的奖励,中本聪在08年设计的方案是: 每10分钟打一个包,每打一个包奖励50个比特币,每4年单次打包的奖励数减半,即4年后每打一个包奖励25个比特币,再过四年后就奖励12.5个比特币... 这样我们其实可以算出比特币的总量:
要说明打包的记录以谁为准的问题,我们需要引入一个知名的 拜占庭将军问题 (Byzantine failures)。拜占庭将军问题是由莱斯利·兰伯特提出的点对点通信中的基本问题。含义是在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。
假设有9个互相远离的将军包围了拜占庭帝国,除非有5个及以上的将军一起攻打,拜占庭帝国才能被打下来。而这9个将军之间是互不信任的,他们并不知道这其中是否有叛徒,那么如何通过远距离协商来让他们赢取战斗呢?
口头协议有3个默认规则:
1.每个信息都能够被准确接收
2.接收者知道是谁发送给他的
3.谁没有发送消息大家都知道
4.接受者不知道转发信息的转发者是谁
将军们遵循口头规则的话,那就是下面的场景:将军1对其他8个将军发送了信息,然后将军2~9将消息进行转达(广播),每个将军都是消息的接受者和转发者,这样一轮下来,总共就会有9×8=72次发送。这样将军就可以根据自己手中的信息,选择多数人的投票结果行动即可,这个时候即便有间谍,因为少数服从多数的原则,只要大部分将军同意攻打拜占庭,自己就去行动。
这个方案有很多缺点:
1.首先是发送量大,9个将军之间要发送72次,随着节点数的增加,工作量呈现几何增长。
2.再者是无法找出谁是叛徒,因为是口头协议,接受者不知道转发信息的转发者是谁,每个将军手里的数据仅仅只是一个数量的对比:
这里我们假设有3个叛徒,在一种最极端的情况下即叛徒转发信息时总是篡改为“不进攻”,那么我们最坏的结果就如上图所示。将军1根据手里的信息可以推出要进攻的结论,却无法获知将军里面谁是叛徒。
这样我们就有了方案二:书面协议。
书面协议即将军在接受到信息后可以进行签字,并且大家都能够识别出这个签字是否是本人,换种说法就是如果有人篡改签字大家可以知道。书面协议相对比口头协议就是增加了一个认证机制,所有的消息都有记录。一旦发现有人所给出的信息不一致,就是追查间谍。
有了书面协议,那么将军1手里的信息就是这样的:
可以很明显得看出,在最坏的一种情况——叛徒总是转发“不进攻”的消息之下,将军7、8、9是团队里的叛徒。
这个方案解决了口头协议里历史信息不可追溯的问题,但是在发送量方面并没有做到任何改进。
在我们的示例中,比特币系统里的每个用户发起了一笔交易,都会通过自己的私钥进行签名,用数学公式表示就是:
所以之前的区块就变成了这样:
这样每一笔交易都由交易发起者通过私钥进行数字签名,由于私钥是不公开的,所以交易信息也就无法被伪造了。
如书面协议末尾所说的那样,书面协议未能解决信息交流过多的问题。当比特币系统中存在上千万节点的时候,如果要互相广播验证,请求响应的次数那将是一个非常庞大的数字,显然势必会造成网络拥堵、节点处理变慢。为了解决这个问题,中本聪干脆让整个10分钟出一个区块,这个区块由谁来打包发出呢?这里就采用了工作量证明机制(PoW)。工作量证明,说白了就是解一个数学题,谁先解出来数学题,谁就能有打包区块的权力。换在拜占庭将军的例子中就是,谁先做出数学题,谁就成为将军们里面的总司令,其他将军听从他发号的命令。
首先,矿工会将区块头所占用的128字节的字符串进行两次sha256求值,即:
这样求得一个值Hash,将其与目标值相比对,如果符合条件,则视为工作量证明成功。
工作量证明成功的条件写在了区块链头部的 难度数 字段,它要求了最后进行两次sha256运算的Hash值必须小于定下的目标值;如果不是的话,那就改变区块头的 随机数 (nonce),通过一次次地重复计算检验,直到符合条件为止。
此外, 比特币有自己的一套难度控制系统,使得比特币系统要在全网不同的算力条件下,都保持10分钟生成一个区块的速率。这也就意味着:难度值必须根据全网算力的变化进行调整。难度调整的策略是由最新2016个区块的花费时长与期望时长(期望时长为20160分钟即两周,是按每10分钟一个区块的产生速率计算出的总时长)比较得出的,根据实际时长与期望时长的比值,进行相应调整(或变难或变易)。也就是说,如果区块产生的速率比10分钟快则增加难度,比10分钟慢则降低难度。
PoW其实在比特币中是做了以下的三件事情。
这样可以防止一台高性能机器同时跑上万个节点,因为每完成一个工作都要有足够的算力。
有经济奖励就会加速整个系统的去中心化,也鼓励大家不要去作恶,要积极地按照协议本来的执行方式去执行。(所以说,无币区块链其实是不可行的,无币区块链一定导致中心化。)
也就是说,每个节点都不能以自身硬件条件去控制出快速度。现在的比特币上平均10分钟出一个块,性能再好的机器也无法打破这个规则,这就能够保证 区块链是可以收敛到共同的主链上的 ,也就是我们所说的共识。
综上,共识只是PoW三个作用中的一点,事实上PoW设计的作用有点至少有这么三种。
默克尔树的概念其实很简单,如图所示
这样,我们区块的结构就大致完整了,这里分成了区块头和区块体两部分。
区块链的每个节点,都保存着区块链从创世到现在的每一区块,即每一笔交易都被保存在节点上,现在已经有几百个GB了。
每当比特币系统中有一笔新的交易生成,就会将新交易广播到所有的节点。每个节点都把新交易收集起来,并生成对应的默克尔根,拼接完区块头后,就开始调整区块头里的随机数值,然后就开始算数学题
将算出的result和网络中的目标值进行比对,如果是结果是小于的话,就全网广播答案。其他矿工收到了这个信息后,就会立马放下手里的运算,开始下一个区块的计算。
举个例子,当前A节点在挖38936个区块,A挖矿节点一旦完成计算,立刻将这个区块发给它的所有相邻节点。这些节点在接收并验证这个新区块后,也会继续传播此区块。当这个新区块在网络中扩散时,每个节点都会将它作为第38936个区块(前一个区块为38935)加到自身节点的区块链副本中。当挖矿节点收到并验证了这个新区块后,它们会放弃之前对构建这个相同高度区块的计算,并立即开始计算区块链中下一个区块的工作。
整个流程就像下一张图所展示的这样:
简单来说,双花问题是一笔钱重复花了两次。具体来讲,双花问题可分为两种情况:
1.同一笔钱被多次使用;
2.一笔钱只被使用过一次,但是通过黑客攻击或造假等方式,将这笔钱复制了一份,再次使用。
在我们生活的数字系统中,由于数据的可复制性,使得系统可能存在同一笔数字资产因不当操作被重复使用的情况,为了解决双花问题,日常生活中是依赖于第三方的信任机构的。这类机构对数据进行中心化管理,并通过实时修改账户余额的方法来防止双重支付的出现。而作为去中心化的点对点价值传输系统,比特币通过UTXO、时间戳等技术的整合来解决双花问题。
UTXO的英文全称是 unspent transaction outputs ,意为 未使用的交易输出 。UTXO是一种有别于传统记账方式的新的记账模型。
银行里传统的记账方式是基于账户的,主要是记录某个用户的账户余额。而UTXO的交易方式,是基于交易本身的,甚至没有账户的概念。在UTXO的记账机制里,除了货币发行外,所有的资金来源都必须来自于前面某一个或几个交易。任何一笔的交易总量必须等于交易输出总量。UTXO的记账机制使得比特币网络中的每一笔转账,都能够追溯到它前面一笔交易。
比特币的挖矿节点获得新区块的挖矿奖励,比如 12.5 个比特币,这时,它的钱包地址得到的就是一个 UTXO,即这个新区块的币基交易(也称创币交易)的输出。币基交易是一个特殊的交易,它没有输入,只有输出。
当甲要把一笔比特币转给乙时,这个过程是把甲的钱包地址中之前的一个 UTXO,用私钥进行签名,发送到乙的地址。这个过程是一个新的交易,而乙得到的是一个新的 UTXO。
这就是为什么有人说在这个世界上根本没有比特币,只有 UTXO,你的地址中的比特币是指没花掉的交易输出。
以Alice向Bob进行转账的过程举例的话:
UTXO 与我们熟悉的账户概念的差别很大。我们日常接触最多的是账户,比如,我在银行开设一个账户,账户里的余额就是我的钱。
但在比特币网络中没有账户的概念,你可以有多个钱包地址,每个钱包地址中都有着多个 UTXO,你的钱是所有这些地址中的 UTXO 加起来的总和。
中本聪发明比特币的目标是创建一个点对点的电子现金,UTXO 的设计正可以看成是借鉴了现金的思路:我们可能在这个口袋里装点现金,在那个柜子角落里放点现金,在这种情况下不存在一个账户,你放在各处的现金加起来就是你所有的钱。
采用 UTXO 设计还有一个技术上的理由,这种特别的数据结构可以让双重花费更容易验证。对比一下:
I. 比特币交易为什么确认6个区块以上就可以证明
为了避免双花造成的损失,一般认为,等 6 个区块确认后的比特币交易基本上就不可篡改了。举个例子来解释双花过程:假设小黑给大白发了 666BTC,并被打包到第 N 个区块。没过几分钟,小黑反悔了,通过自己控制的超过 50% 的算力,发起了 51% 算力攻击,通过剔除发给大白的 666BTC 那笔交易,重组第 N 个区块,并在重组的第 N 个区块后面继续延展区块,使之成为最长合法链。
一般来说,确认的区块数越多,越安全,被 51% 攻击后篡改、重组的可能性越低,所以6个区块并不是硬性的,只是说有了6个区块,被篡改的可能性较低。对于大额交易,当然是区块越多越好,但是对于小额效益,一个区块就够了
J. 在区块链中,双花问题是什么问题呢
什么是双花问题呢?
双花问题,简单讲就是一笔钱能被花两次三次很多次。为什么双花问题会成为比特币系统里面一个这么重要的问题呢?
原因就在于:比特币,是虚拟货币,它是虚拟的,通过代码形式呈现出来的,是可以被复制下来的。一旦被攻破了代码漏洞,那么就可以循环使用同一笔比特币,这样一来,比特币这种“钱”就会变得很鸡肋。
我们想一下,要是一笔钱可以花很多次,你有500块钱,你去买一件500块钱的衣服,还能循环使用,再去买一双500块钱的鞋,这样一来,钱还能叫钱吗?
所以,中本聪在设定比特币系统的时候,他所有的技术手段基本上都是围绕着解决
“双花问题”的,来保护比特币作为一种货币,它自身的一个支付手段职能。
其实,这个双花问题在我们现在的中心化世界里面根本不是问题,因为有银行,钱的交易结算都是通过银行,很安全,有问题直接找银行。
但是,在去中心化世界里面呢,没有银行这样一个中心机构,还必须保证一笔钱只能花一次,怎么样实现在去中心化的前提下,杜绝“双花问题”呢,这是一个难题。
这里插一句,中本聪为什么如此执着的追求“去中心化”呢,自找烦恼吗?不是,他希望能够通过去中心化,来解决一些社会问题,其中最主要的问题就是:因为权力机构过量发行货币造成的通货膨胀。
所以,我们总结一下他的逻辑:中心化的货币增发导致通货膨胀——所以我们要实现去中心化——去中心化要面临很多问题,最大的问题是双花问题——所以我们要解决双花问题——怎么解决双花问题?
这里,中本聪就引入了UTXO和“时间戳”概念,依靠这两种手段来解决双花问题。