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





