最近越来越多人问我这个,我自己又不挖矿,对这些也不感兴趣,虽然各种论证说比特币多么安全多么靠谱,与其说比特币安全,比如说SHA256目前本身就比较安全(是比较安全).因为SHA256破解需要Log60(t * 10,000) 秒时间,t是长度,假设密文是1KB.10K的速度,也就很普通的奔腾,也没多久.何况密文其实很短,国内还有很多各种币,连手机浏览器都要挖矿,我是不是该说说什么.
总结一句,就是简单问题复杂化,繁琐细节秀智商.实际用途为零,不用再问我,区块链虽然现在说突然火起来,但是真的没什么用.区块链是个技术,技术是中性的,但是不要拿区块链说比特币怎样,不切实际的东西.
从经济角度分析,区块链是去中心化,也就是没央行,央行是宏观调控的工具,如果你坚持认为,银行的钱是政府的,国家可以随便印钱引发通胀,那么久大错特错了.因为根据法律来说,《中华人民共和国中国人民银行法》规定,在国务院的领导下依法独立执行货币政策,履行职责,开展业务,不受地方政府,社会团体和个人的干涉.那是什么意思,其实就只有两个方法可以搞的定,一个是有外汇进来了,比如有很多外汇流到了银行,银行定期跟央行汇报,央行把这些外汇编程RMB给银行,这一步涉及印钱,也就是有多少钱进来,才有多少钱可以印.那么第二种是什么,比如央行什么逆回购啊什么乱七八糟,让银行抵押东西给央行,并且承诺好还款时间,然后央行借钱给银行,嗯,这看起来只要有足够的抵押物,就可以让央行印足够的钱,但是这些足够的抵押物哪里来.其实,总结起来都是央行的对外债券,要不就是银行欠钱,要不就是外汇流入.还是不懂?总的来说,国家货币总量的价值应当相当于其社会资产总量.所以,央行也不想我们货币贬值,但是问题就是存在,自己穷只能多努力,还怪人家有什么用.去中心化的话,矿池不正是中心化的表现吗?
从技术价值来说,就拿比特币来说,但是也用质数币来举例,他们就是要算出一个HASH(Q + A)=12345,然后其中一个人给Q,另一个算A,算出来,把A存起来,就是验证完毕,这是他的安全性,而质数币,是寻找一个质数,连续的6个质数,这样可以否认以前一些猜想,还有人投钱进去,这些投进去的钱,还是有限的,按照他这么分析,指数币原始资金发放完毕,那么就没有人能再努力,但是比特币他是无线创造的,他没有一个最后的末端.而算HASH(Q + A) = XXX的意义,跟生成一个带slat的彩虹表没什么差,也许是好玩吧.比特币绝对是骗局,但是很奇怪,它专门骗这个世界上最聪明的人,傻子目前还进不来.算这个HASH,浪费的是CPU,而安全性,SHA256早就很安全,没什么疑问.
从商业实践来看,如果比特币可以赚钱,开网吧的,做IDC的,他们都挖矿不要干活了,还有云挖矿,为什么要帮你挖,我自己挖不行?因为他们不懂挖矿?不,他们也懂.也许,比你还懂.最明显,卖矿机的人先赚钱了,(对,卖矿机的赚钱了.),你会跟我说,有人还专门去跟供电长谈,最后就是为了去做这个.有些人说,我就谨慎点,个人电脑随便挖,这件事最容易迷惑人,因为你最容易只看到挖到的比特币,然后忽略了你自己电脑高速运行时候要用更多的电,反正电费是合到家里总电费里每月去缴的,感受不到.像网吧这么多电脑,每台都全负荷运行,可想而知多花了多少电费.IDC也是算过,一个服务器一般高负荷运行什么的大概是多久啊之类的.还有云挖矿的,总是觉得,自己给他也是比特币,他也很承认啊,他手里一大堆比特币呢,你还没回本,他已经一大堆钱了(假设比特币是有用的),然后他一下子卖出,那比特币价格不久大跌了.
从公平性角度来说,如果这个挖矿是公平的,也就是大家说央行使劲印钱,不公平,那么矿场主不使劲挖比特币吗,他们持有非常多的比特币,他们就可以控制比特币的相对价值,哦,你说产出速度是基本恒定的,但是,人家设备多,对于他个人来说,他的产出速度是绝对比单枪匹马的快,如果要绝对公平,那么简单了,每个人拿着自己的身份证,去公安一个月领一个比特币,多公平,这就以前中国不计划经济,大锅饭的时代吗?
从升值角度看,很多人说,你现在不花了10元挖了1元吗,但是他以后肯定会升值啊,如果真是这样,为什么不花1元去买,然后等升值,花10元电费升值到100元,我赚了90元的话,但是花1元去买,我赚了99元啊.杠杆不同啊.如果这样能升值,还不如股票,至少是国际承认,至少我国也有证券啊,国内承认的啊,相对还是比较公平交易的,因为如果有大单要搞事情,是要被查的,而且东西都是公开的.这样来说,其实个赌博,赌博不怕你赢,就看你赢了然后继续进去,然后就赔了.
比特币属性,投机+洗钱,哪个国家愿意用自己无法掌控的虚拟数字管控自己国家的金融,只要能交易,就能洗钱,就能投机,就算是有价值,如果有一天各国都像中国一样不能交易了,那么他就是空的.
单片机演示挖矿算法:
uint8_t InputMessage[12 + 4] = {0x00}; /* 假设Q是全0x00,前12位是Q,后4位是A. */ uint8_t MessageDigest[CRL_SHA256_SIZE]; int32_t MessageDigestLength = 0; /** * @brief SHA256 HASH 计算函数 * @param InputMessage: 输入原文 * @param InputMessageLength: 输入原文长度 * @param MessageDigest: 输出密文 * @param MessageDigestLength: 输出密文长度 * @retval error status: HASH_SUCCESS = 成功 */ uint16_t SHA256_HASH_DigestCompute(uint8_t *InputMessage, uint32_t InputMessageLength, uint8_t *MessageDigest, int32_t *MessageDigestLength) { SHA256ctx_stt P_pSHA256ctx; uint16_t error_status = HASH_SUCCESS; /* 设置加密输出大小 */ P_pSHA256ctx.mTagSize = CRL_SHA256_SIZE; /* 普通加密方式 */ P_pSHA256ctx.mFlags = E_HASH_DEFAULT; error_status = SHA256_Init(&P_pSHA256ctx); /* 初始化没问题就继续 */ if (error_status == HASH_SUCCESS) { /* 添加数据然后去HASH */ error_status = SHA256_Append(&P_pSHA256ctx, InputMessage, InputMessageLength); if (error_status == HASH_SUCCESS) { /* 输出数据 */ error_status = SHA256_Finish(&P_pSHA256ctx, MessageDigest, MessageDigestLength); } } return error_status; } uint32_t i = 0; /* 放在外面,就很容易观察变量了. */ int main(void) { uint16_t status = HASH_SUCCESS; SystemClock_Config(); LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_CRC); for(i = 0x00000000; i < 0xFFFFFFFF; i++) { *(uint32_t *)(InputMessage + 12) = i; status = SHA256_HASH_DigestCompute((uint8_t *)InputMessage, 16, (uint8_t *)MessageDigest, &MessageDigestLength); if(HASH_SUCCESS != status) { for(;;) __BKPT(0); /* 出错 */ } else if( *(uint32_t *)(MessageDigest) == 0x00000000 ) { for(;;) __BKPT(1); /* 挖矿成功,Q已经得出.数组的后四位是Q.测试结果是0x8F10516A */ } /* 7442 时钟周期计算一次.22575 Hash/s,要29小时32分18秒才能挖出结果,这真是慢的可怜啊,而且这还只是创世块. */ } while (1) { for(;;) __BKPT(2); /* 挖不到. */ } }