簡單的說,現(xiàn)在說比特幣的價值,就像在上世紀70年代說互聯(lián)網(wǎng)的價值一樣,假設有一天你把“123456”這串數(shù)字發(fā)給了對方買了一斤豬肉(這個舉例有點。.),對方收到了這串數(shù)字,從而完成了你們的這次交易,那么這也許就是比特幣的價值了。你也許感覺有點扯淡,但是從發(fā)展的眼光來看,這是必然的,就像20年前誰會相信出門買東西帶著手機就可以完成交付一樣。錢是虛擬的也是必然的,其實錢也是一直是虛擬的,只是由于技術(shù)的限制,所以現(xiàn)在我們使用紙幣這個東西來替代。
2.什么是非對稱加密
簡單的說,非對稱加密就是加密和解密需要兩把鑰匙,一把為公鑰,一把為私鑰,公鑰每個人都有,私鑰只有你自己擁有,別人用你的公鑰加密信息后發(fā)送給你,你用私鑰來獲取里面的東西,可以這樣理解,你的支付寶賬號(公鑰)每個人都可以獲取,對方通過你的支付寶賬號轉(zhuǎn)賬,不再是直接到賬,而是你輸入密碼(私鑰)后才能獲取,這樣確保這筆錢是屬于你自己的。別人也無法盜取你的錢,因為私鑰只有你自己擁有。
3.比特幣交易首先要有一個比特幣錢包(目前國內(nèi)不支持購買服務),錢包中存放的不是錢,而是你的公鑰和私鑰,擁有了公鑰和私鑰之后就可以去交易了。
根據(jù)協(xié)議,公鑰的長度是512位。這個長度不太方便傳播,因此協(xié)議又規(guī)定,要為公鑰生成一個160位的指紋。所謂指紋,就是一個比較短的、易于傳播的哈希值。160位是二進制,寫成十六進制,大約是26到35個字符,比如 1BvBOSEYstWetqTFn5Au4m4GFg7xJaNVN2。這個字符串就叫做錢包的地址,它是唯一的,即每個錢包的地址肯定都是不一樣的。
向別人收錢的時候,只要把你的錢包地址告訴對方就可以了,因此你可以用私鑰獲取錢包的錢。所以比特幣的交易就是比特幣地址的轉(zhuǎn)移,比特幣的交易完全公開,所以我們可以通過交易地址查詢改地址擁有的比特幣數(shù)量,能否完成這筆交易,為了確保交易的屬實性,需要提供:
1.上一筆的交易Hash值
2.交易雙方地址
3.對方公鑰
4.對方私鑰生成的簽名文件
交易記錄必須寫入數(shù)據(jù)庫才真實有效,寫入的是一種名為區(qū)塊鏈的特殊數(shù)據(jù)庫。(參考)根據(jù)比特幣協(xié)議,一個區(qū)塊的大小最大是 1MB,而一筆交易大概是500字節(jié)左右,因此一個區(qū)塊最多可以包含2000多筆交易。礦工負責把這2000多筆交易打包在一起,組成一個區(qū)塊,然后計算這個區(qū)塊的 Hash。計算 Hash 的過程叫做采礦,這需要大量的計算。礦工之間也在競爭,誰先算出 Hash,誰就能第一個添加新區(qū)塊進入?yún)^(qū)塊鏈,從而享受這個區(qū)塊的全部收益,而其他礦工將一無所獲。一筆交易一旦寫入了區(qū)塊鏈,就無法反悔了。
二、區(qū)塊鏈 1.區(qū)塊鏈是什么簡單的說,區(qū)塊鏈就是一種特殊的分布式數(shù)據(jù)庫,我們常見的Mysql是非分布式數(shù)據(jù)庫,常見的分布式數(shù)據(jù)庫如:Redis、Mongodb,而區(qū)塊鏈只是一種特殊的分布式數(shù)據(jù)庫。
任何人都可以架構(gòu)服務器加入?yún)^(qū)塊鏈網(wǎng)絡成為一個節(jié)點,所有節(jié)點都存儲整個數(shù)據(jù)庫,可以往節(jié)點中寫入或讀取數(shù)據(jù)庫。區(qū)塊鏈沒有管理員的概念,任何人都可以使用。
2.區(qū)塊鏈的組成區(qū)塊鏈由每一個區(qū)塊組成,每個區(qū)塊就是每一條數(shù)據(jù)庫記錄,每個區(qū)塊包含區(qū)塊頭(當前區(qū)塊的特征值)和區(qū)塊體(實際數(shù)據(jù))可以簡單想象為數(shù)據(jù)結(jié)構(gòu)。區(qū)塊頭中包含多項特征值,如生成時間、區(qū)塊體的Hash值、上一個區(qū)塊的Hash,Hash可以理解為一種加密,任何字符串通過Hash計算都生成256為的Hash字符串,不同字符串計算的結(jié)果不相同。所以每個區(qū)塊的Hash值都是唯一的,如果區(qū)塊改變了,他的Hash值肯定會改變,又因為每個區(qū)塊中記錄上一個區(qū)塊的Hash,而Hash= Hash(區(qū)塊頭),所以如果某個節(jié)點的Hash值發(fā)生了改變,那么,在他之后的區(qū)塊肯定會改變。