空手一方客

收獲了一種恬靜的生活, 像一條波瀾不驚的小河, 流過春夏 流過秋冬
個人資料
  • 博客訪問:
正文

電子貨幣(10):傳統的散列,一切都剛開始....

(2013-12-26 08:40:19) 下一個


貨幣本來就隻是個商品交換的符號/媒介。隻要大家認可、並且能夠流通的話,什麽都可以當貨幣:繩子打個結,牽頭牛和羊,敲塊銅和鐵,打個金銀首飾,再就是一片花哩胡俏的紙,或一片小塑料卡裏的一個條碼。現在發展到把那條碼放到你的手機裏,早和那些紙片沒了絲毫關係。認也好,不認也罷,不僅早成了既成的事實,並且會隨著你的年齡的老去而更加普及 ---這是人類的不歸路,是發展的必然。
 

貨幣的發行

過去說貨幣都是由有信譽的銀行發行的,說“信譽”是:可兌換,保值,不濫發。全是人們臆造的。因為到了現在,大家都明白了,貨幣唯一具有的有價值的“信譽”,就隻是那個最原始的“可兌換”而已。其他兩個什麽臆造的“保值”、“不濫發”,早被風吹到全世界臭大街。既然貨幣就是一個流通的可兌換功能,就是說隻要有人“交易”就好。以B
itcoin為首的電子貨幣早有了這功能,並且功能太好,流通太強,讓各國政府怕了。由於最近幾個月B的流通激發,價格爆長,越來越多的政府為了保護自己的印幣權,開始“專製性”圍堵,老用風險、洗錢等等本來每種貨幣都有的共性問題嚇唬人。然而,對辦理比特幣交易業務的公司,美國則要求在開業前,需要得到貨幣服務局MSBs的官方許可,也就是說,MSBs默認了B是一種幣,至少有幣的地位。至於你個人用不用,那是你的事。你還不用盧布呢,人家俄國不照樣發展?!

Bitcoin幣存在於一個龐大的p2p網絡中,使用Bitcoin的群體公認了一種算法,這種算法在當今的條件下,每小時最多隻能新印6組新B ,過去一組是50個B,現在可以調到25個。就是說,在這個世界上每小時隻會最多產生300個B 。這個產量還會由網絡自動調整難度來限製產量。你沒辦法通過修改所有人的Client算法及參數(client 是開源的)來加快貨幣產量。偽造的B幣會被網絡自動丟棄,除非你可以控製絕大部分網絡的節點。---- 現實中的美國人就是壟斷了全球的大部分經濟節點,所以美國人就可以亂印幣,並且印得光天化日,印得理直氣壯,印得讓你連羨慕的份都沒有。B群體的算法,一開始就想到了要避免這種最無賴最強盜的情形的再發生。

B的價值

貨幣的價值就是可交易可流通,B的價值就是流通渠道本身。一組新造出來的B提供了你隨時可以把這個B從一個帳戶轉到另一個帳戶的算法通路保證。這是一個偉大的創造。不論從思想,到算法,到程序。絕對超越哥達巴赫。

建築這個安全通路保證的背後代價,就是需要大量的計算能力。就是說,計算能力要很給力。給力的代價就要消耗大量的能源。所以,整個B群體的開了個獎勵辦法,就是你一旦挖到的話,就不隻是一個B,而是一組B,裏麵是50個B/25個B ---- 隨著開出的礦越來越多,獎勵可以減少,甚至於可以取消,全局鏈越來越長,以為越來越多,挖到的難度就越來越大。
 
目前世界上所有挖出來的B,大約14萬。怎麽算他的市場價值,其實至少該按他的能源消耗和人力消耗乘上一個大於1的係數,再加上一尾數權,就比較合理。目前他們的總價值應該是少於消耗掉的能源的總市場價值。所以有潛力。不過,用於生產B的能源,本來也是不用也被大部分浪費掉的。

沒有中心節點的“銀行

B幣沒有中央銀行這個“中心”節點,大家如何信任他,並運作起來?
答案是這個p2p網絡上每個節點都記錄了每個B誕生以來的每筆交易的詳單,並從中可以算出每個B唯一地屬於誰。這樣你每接受一筆交易,你都能知道別人給你的B是不是合法的。

這要從最基本的說起:每個帳戶其實就是一對公鑰和私匙,有私匙的人就是帳戶的主人。如果a要給b轉一筆錢,a就把錢的數量加上b的公鑰,並用自己的公鑰簽名。b看到這個簽名後,就知道的確是a給自已轉了如數的B。

這筆交易還需要一個見證人來擔保這個交易發生過。這樣,以後b用這筆錢的時候才顯得合法。誰是擔保人呢?算法把它設計成整個被使用的Bitcoin網絡 ------ 每筆交易都告示天下。很透明,很民主化吧?就是說,a在發這筆交易的時候,必須把簽過名的交易單,盡量地告示到整個p2p網上,最終會讓每個節點都知道發生了這件事。b呢就從p2p網上不斷地收到別人的確認信息。當它收到足夠多的確認信息後,就認為a的確發出了這單交易。從此以後,b就可以自由地使用這筆錢了。

當b使用a轉給他的錢給c時,也一樣得廣告給足夠多的網點(最終所有人都會收到)讓他們擔保。每個擔保人隻有確信b有足夠多的錢可以支付給c的時候才被確認。

為什麽越來越難

本質上,B網並沒有記錄每一塊錢到底屬於誰。它記錄的是從誕生起到當前的每筆交易的軌跡,並算出每個帳戶裏有多少錢。任何人試圖確認一個交易單時,它需要確認的是轉出帳號上有沒有那麽多錢。因為
B網必須避免一筆錢被兩次花。所以整個帳單序列是一環套一環的。這個序列會越來越長:每個人在完整的全局帳單上簽上新的一筆的時候,都需要利用前麵信息生成後麵的。這個帳單序列被稱為chain of blocks 。每個block裏都包含有若幹條經過確認並hash過的簽名的難以偽造的交易記錄。每個block都和全局表上的上一個block有關聯。每條帳單都會通過p2p網絡最終被轉發給製造新block的節點上--- 就成為目前的本幣持有者。

這個製造新block的過程被叫做mining,製造新block就是把最近收到的帳單打包在剛製造的block裏。這個打包的過程即挖幣的過程,隻有極其稀少的幾率被製造成功。你也可以理解成把新收到的帳單合在一起,一次成型不可修改,如果製造失敗就要再來一次。一旦製造/打包成功,你就把新的block(被認為是對老的block鏈的延續)廣播出去 --- 你就擁有了這個B。

因為是p2p網絡,可能有許多人都在同時製造新的block,但有一個排序機製保證隻有最優最難、花費了最大計算時間的那個新block被網絡群體接受,掛在全局的block鏈上。整個B網隻有一個全局帳單表,每個節點都完整的保存有一份。

這個全局帳單表會越來越大,block鏈越來越長,在最新的部分,必然有許多分茬。這是因為p2p網絡的mining過程是大夥並行進行的,每條新帳單也不能立刻廣播給所有的節點。每個mining的節點都有責任把他新收到的,在他認可的老的全局帳單上不存在的帳單,合在他準備製造的新block中。一旦新 block 被製造出來,就立刻廣播出去,爭取得到更多人的認可。主要是得到那些想mining的人的認可,這些人會在這個block的基礎上製造新的block。

如果p2p網絡過大,交易帳單不能盡量迅速地廣播到全網絡。就會出來p2p的網絡的局部保持有個小群體共同認可的一份全局帳單。多個全局帳單的分支同時發生也是有可能的。因為每個小群體都可能認為他們看見的那部分更長更有效。但是,隻有有人發現另一條分支更長,它就會轉換陣營。所以,有這種可能性,你的帳單被一個小群體接受,但在一段時間後,被更大的陣營拋棄。

不過,B算法的參數決定了,新的block產生速度很慢,如果你的帳單被多達6個別的局部的人確認,基本上就保證了它能合並到的那份全局帳單,就是p2p網絡全體可認可的。隨著鏈的增長,可能延續這個認可的過程。

那麽難,為何還有那麽多人去挖

既然生成新block費時費力,製造出新block的幾率好象買彩票中大獎,為何還有那麽多人去運行程序去計算新的block?答案是,每個製造出新block的人,都有權構造一條帳單向天下聲明,我擁有50B 。

被所有B用戶共同承認的B規則,還有一條讓他們不能停步,必須樂此不彼。那就是,你每做個新block,必須包含全局表上的上一個block的hash值。B網絡自我調節難度,大約每10分鍾產生一個新block。如果你不幸,你不是這10分鍾內製造出新block的那個幸運者,就是說,你這10分鍾內幹過的活就全白幹了。你必須從這個最新版的block開始,再繼續演算才有望在下10分鍾內成就一個Block。如同賣彩票,B網絡就是每10分鍾開一次彩票。現在買的都是對本10分鍾的,開獎你不中,所買的彩票全作廢;你要想中下10分鍾的,你就得從新買新的彩票。

如何在算法上保證挖掘過程費時,而且讓你成功的幾率極小?

這是電腦保安程序裏的基本思想:就是要讓你的電腦中毒SPAM的幾率為零。這就是有名的Hashcash算法係統。

最早,電腦專家為了抵禦email spam問題發明了Hashcash算法。其思想被保安係統和電子貨幣係統廣泛使用。原理
就是給一段特定信息(比如,一封email)加一個特定的hash頭。這個hash頭需要一段時間才能計算出來。發spam的人一般沒有這計算時間為群發的每一封email去計算出一個符合你個人要求的hash頭。所以一般認為,你收到的有這個合法hash頭的email,就不太可能是spam --- 你收到的那個email是花了時間在上麵的;相反,你收到的沒有花時間計算Hash頭的email,就被你電腦內的保安程序認為是SPAM,因此被過濾掉。

算法是,為你想保護的信息,找到一串數字,附加上去。一般使用的都是某種公認的hash算法,比如SHA-2。用Hash算出一個散列值。如果散列值由一長串0打頭,那麽就算成功了,收email的人根據公認的那個Hash算法,認出這個一串0開頭的email是可接受的。具體前麵冠多少個0,就決定了係統的難度。

能為一段信息(例如,一封email)找到這串幾個0開頭的數碼,目前來說,除了暴力嚐試,別無他法。那就是隨機更換數字,換一次就hash一次比對。在一個能接受的幾次嚐試之後,一般來說都可以找到一串你想找的數碼。

每個想挖幣賺B的人,要不停地從B網上監聽/打聽信息。如果有人發布了新的合法block,你就得馬上合並到你的全局表裏。並得馬上從這個新Block開始,從新設置你自己的計算過程。如果B網上一有新發布的交易單,你也得馬上記錄下來。你得不斷地把最新的block的散列值、新收到的交易單、以及自己獲得的50B的那條獎勵單合並在一起,馬上計算SHA-256,看看散列的結果是否滿足B的條件。一旦滿足,就馬上把這個新的block廣播出去,告知天下。在足夠多的人認可它之後(你得到了足夠多的回執,但不能有任何一個是否定的回執),然後再以它為基礎計算後麵的一個block,此時,你就獲得了這個B組。

B幣的規模

為了匹配B的經濟規模,所有的B client都被劃分在一個區域內,就是設置成你前麵會麵對著210000個block。每個生產了新block的人都被認為還有望獲得新B數量會比之前少一半。如果這個時候,你還在自己的包內寫上自己獲得了50B,別的人就不會確認你的這個block。這就會讓B的總量增速變緩。新的block產生的速度是由難度來調節的。這個難度會由p2p網絡根據最近生產block的速度自動調節。所以即使日後域內的所有計算能力增加,也隻能保證仍然隻是大約10分鍾一個B。

而且,隨著挖出新block的收益減少,願意貢獻自己的計算來挖的節點也會變少。此時大家沒了熱情,怎麽辦?係統就會算出流量減少得太多,就會自動減低挖到的難度。

最終,p2p網絡不再能憑空製造出任何新的B,這個時候製造新block的動力是什麽?那就是:交易稅。

B幣世界的交易稅設置

到了沒人再願意挖掘新的block,發起交易就會變得很困難 -- 沒有block可以容納新的交易單。此時,希望交易並且被確認的人a可以聲明,如果有人b製造出了新的block,並願意接納a的交易單,a就得支付一小筆交易稅給b。

當B網上許多人都這麽做的時候,製造block又變得有利可圖。隻不過,原則上不再有新的B誕生,隻是在這些B用戶之間流通。

在B世界,總有一些B無故消失,主要是那些帳號的私匙丟失了,沒有任何人可以轉出那個帳上的錢。不能流通的貨幣就再不是貨幣。B網不能多印,也不能補印。這就是B幣的最高價值。

最終B總會達到一個比較大的規模,準確說就是兩千一百萬個。你可能認為這個規模不夠大。從理論上講, 兩千一百萬的上限隻是個設定。設定就是可以改變的。如果廣告B網天下,例如,改成2x 兩千一百萬,4x 兩千一百萬,類似於一股分為兩股,或分為四股,...... 當然不是那種隨意印錢的什麽GP量化寬鬆

而且,B本身可以切割,比如你可以支付給別人 0.01個B 。所以,B本身不僅會升值,總數也一直夠用。
 
散列是傳統的,B網是人類實踐的一個大模型(把它當作一個群體參與的試驗看,大家更易接受)。規模可以更大,難度也可以更大,如果將來的世界需要它變得更大。隻是一個參數問題。

人類在電子貨幣的實踐上,一切都剛剛開始 ....

[ 打印 ]
閱讀 ()評論 (0)
評論
目前還沒有任何評論
登錄後才可評論.