Q2:为什么比特币要根据算力大小来决定收益分配,而且算力还是被白白浪费?
A2:比特币诞生的目的就一个:去中心化(从另一个角度说就是人人都可以成为中心),所以所有的设计都要为去中心化服务。如果比特币的设计是中心化的,那么可以和任何网游一样以中心颁布的政策来决定怎么分配。
玩过网游的都知道,一个游戏火了以后外挂就会满天飞,有相当数量的人都想着怎样用作弊手段获得更多益处,网游尚且如此,更不要说一个涉及金钱的支付系统了。在反作弊方面,网游采取的手段是侦测异常数据并用封号来警示后人,但这一条路在去中心化的系统里是行不通的,因为每一个人既是运动员又是裁判。点对点系统防作弊的难点就在于如何解决每个节点既是运动员又是裁判的问题。
现行的解决方案是“工作量证明”,那么工作量证明的原理是什么呢?在“比特币实验室”网站里可以找到这样一段话:
这是用php语言描述的挖矿算法关键部分。挖矿的时候先接收全网的交易请求,再将交易请求组合成一棵merkle树,并拿到merkle root(树的根节点)的hash值。再将版本号、上一区块的hash值、merkle root的hash值、当前时间、难度系数、和一串随机数Nonce组成当前的区块(代码2-12行)。对当前区块进行两次hash运算得到当前区块的hash值。(代码14行)
运动员要做的事就是找到一个Nonce值,使得当前区块的hash值符合难度要求(根据难度系数),而裁判要做的事是判定当前区块的hash值是否符合难度要求。很显然,找到特定Nonce值的难度远远大于判定Nonce值是否符合条件的难度,后者所需的运算步数几乎是一个常量,而前者所需的运算步数是由难度系数决定的(而且即使难度系数为1也要花很多时间)。
基于这种设计,每个人都有了当裁判的资格,其他人无需担心裁判会作弊,因为这是由数学来保证的。那么如果用其他的方式来证明工作量呢?
比如说根据谁贡献的带宽多好了,如果我开机的时间多,贡献的带宽多,那么必须要有人来为我做证明,说流量是从我这里走的,毕竟大家的数据并无区别,迟早都会一致,不能靠数学了,只能靠人证。那么如果靠人证,就又变成中心化了,中心可以作弊,侵害你的利益,或者做假证明,侵害别人的利益。
但是,还有一个问题:为什么不利用算力做科学运算或工程运算?
其实这还是裁判和运动员的问题,每个运动员计算的题目必须不一样,如果计算的题目是一样的话,则我在做裁判的时候就可以“偷”到你的答案,然后我再向其他人说Nonce值是我发现的。那么比特币是如何实现让每个人的题目不一样的呢?
区块中第三个字段是merkle root的hash值,这个是当前区块所包含的交易请求内容决定的,每个区块必须至少包含1个交易,内容是“我的地址得到了50个比特币”(数量每4年减半),就是这个“我的地址”让每个人做的题目变得不一样了,即使其他人偷了答案,结果币还是会给我,如果他修改了交易内容,merkle root的hash就会变化,这个Nonce值对他来说又没用了。
比特币“浪费”的算力其实是不会白白的浪费的,截止到目前为止,花费在挖矿上的成本已经在数量级的级别上体现在比特币的市值上了,这个是为了维护比特币的系统安全所付出的代价。那么对比中心化的支付系统,比特币在安全维护方面所付出的代价是否过大了呢?这是个见仁见智的问题,最好让市场来回答。但至少,对于使用者来说,比特币在国际汇款方面是最便宜的。
A2:比特币诞生的目的就一个:去中心化(从另一个角度说就是人人都可以成为中心),所以所有的设计都要为去中心化服务。如果比特币的设计是中心化的,那么可以和任何网游一样以中心颁布的政策来决定怎么分配。
玩过网游的都知道,一个游戏火了以后外挂就会满天飞,有相当数量的人都想着怎样用作弊手段获得更多益处,网游尚且如此,更不要说一个涉及金钱的支付系统了。在反作弊方面,网游采取的手段是侦测异常数据并用封号来警示后人,但这一条路在去中心化的系统里是行不通的,因为每一个人既是运动员又是裁判。点对点系统防作弊的难点就在于如何解决每个节点既是运动员又是裁判的问题。
现行的解决方案是“工作量证明”,那么工作量证明的原理是什么呢?在“比特币实验室”网站里可以找到这样一段话:
这是用php语言描述的挖矿算法关键部分。挖矿的时候先接收全网的交易请求,再将交易请求组合成一棵merkle树,并拿到merkle root(树的根节点)的hash值。再将版本号、上一区块的hash值、merkle root的hash值、当前时间、难度系数、和一串随机数Nonce组成当前的区块(代码2-12行)。对当前区块进行两次hash运算得到当前区块的hash值。(代码14行)
运动员要做的事就是找到一个Nonce值,使得当前区块的hash值符合难度要求(根据难度系数),而裁判要做的事是判定当前区块的hash值是否符合难度要求。很显然,找到特定Nonce值的难度远远大于判定Nonce值是否符合条件的难度,后者所需的运算步数几乎是一个常量,而前者所需的运算步数是由难度系数决定的(而且即使难度系数为1也要花很多时间)。
基于这种设计,每个人都有了当裁判的资格,其他人无需担心裁判会作弊,因为这是由数学来保证的。那么如果用其他的方式来证明工作量呢?
比如说根据谁贡献的带宽多好了,如果我开机的时间多,贡献的带宽多,那么必须要有人来为我做证明,说流量是从我这里走的,毕竟大家的数据并无区别,迟早都会一致,不能靠数学了,只能靠人证。那么如果靠人证,就又变成中心化了,中心可以作弊,侵害你的利益,或者做假证明,侵害别人的利益。
但是,还有一个问题:为什么不利用算力做科学运算或工程运算?
其实这还是裁判和运动员的问题,每个运动员计算的题目必须不一样,如果计算的题目是一样的话,则我在做裁判的时候就可以“偷”到你的答案,然后我再向其他人说Nonce值是我发现的。那么比特币是如何实现让每个人的题目不一样的呢?
区块中第三个字段是merkle root的hash值,这个是当前区块所包含的交易请求内容决定的,每个区块必须至少包含1个交易,内容是“我的地址得到了50个比特币”(数量每4年减半),就是这个“我的地址”让每个人做的题目变得不一样了,即使其他人偷了答案,结果币还是会给我,如果他修改了交易内容,merkle root的hash就会变化,这个Nonce值对他来说又没用了。
比特币“浪费”的算力其实是不会白白的浪费的,截止到目前为止,花费在挖矿上的成本已经在数量级的级别上体现在比特币的市值上了,这个是为了维护比特币的系统安全所付出的代价。那么对比中心化的支付系统,比特币在安全维护方面所付出的代价是否过大了呢?这是个见仁见智的问题,最好让市场来回答。但至少,对于使用者来说,比特币在国际汇款方面是最便宜的。