第一章:區(qū)塊鏈創(chuàng)世紀(jì)
1.1 區(qū)塊鏈技術(shù)是站在巨人的肩膀上產(chǎn)生的。雖然巨人正在走遠(yuǎn)簿废,但依然值得紀(jì)念。
中本聰提出的《比特幣:一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)》中結(jié)合了許多密碼學(xué)創(chuàng)新成果络它,例如非對(duì)稱加密,分布式電子加密貨幣系統(tǒng)歪赢,工作量驗(yàn)證化戳,點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)技術(shù)等。這些先驅(qū)們的知識(shí)土壤最終孕育了比特幣的誕生埋凯。他們包括了蒂莫西.梅点楼,戴偉,尼克.薩博白对,肖恩.范寧掠廓,肖恩.帕克涧至。罗洗。抖仅。则果。炕淮。乖寒。
1.2 貨幣只是一種記賬形式代芜。在沒有貨幣的時(shí)候退子,張三若想吃魚钉蒲,只能找到李四說用自家的蘋果換切端。如果剛好李四也想吃蘋果,則張三李四可以很愉快的達(dá)成交易顷啼。第二年踏枣,張三還想吃魚,但李四卻想換漁網(wǎng)钙蒙。雖然張三手上沒有漁網(wǎng)茵瀑,但張三知道有漁網(wǎng)的村長(zhǎng)想吃蘋果,于是張三找到村長(zhǎng)用自己的蘋果換了漁網(wǎng)背到李四家躬厌,最終成功的獲得了魚瘾婿。大家看到了村長(zhǎng)家的漁網(wǎng)可以起到中介的作用,于是紛紛將自己的物品換成漁網(wǎng)∑悖考慮到村長(zhǎng)家漁網(wǎng)充足且漁網(wǎng)搬運(yùn)困難抢呆,村長(zhǎng)就和大家商定拿出一個(gè)筆記本,記錄下各家漁網(wǎng)的數(shù)量笛谦。第三年抱虐,張三還想吃魚,張三和李四就找到村長(zhǎng)饥脑,村長(zhǎng)在張三的賬戶里面扣除了一張漁網(wǎng)恳邀,再在李四的賬戶中增加了一張漁網(wǎng)。于是張三就獲得了李四的魚灶轰。從這個(gè)例子可以看出谣沸,貨幣本身只是記賬的一種形式。
1.3 信用評(píng)價(jià)是不等式笋颤。例如在支付寶上乳附,張三李四在兩個(gè)賬戶間分別制造多筆資金的轉(zhuǎn)移并刷高各自的信用評(píng)級(jí)。區(qū)塊鏈中的“幣天”可以很好的解決這一問題伴澄。幣天銷毀是指每筆交易金額(幣數(shù)量)乘以這筆交易所花費(fèi)的幣在賬面上停留的時(shí)間赋除。例如張三向李四轉(zhuǎn)了10個(gè)比特,這10個(gè)幣在張三賬面上停留了10天非凌,張三轉(zhuǎn)賬的幣天消耗為100. 雖然李四獲得了的幣等于張三轉(zhuǎn)的幣举农,但李四的信用增加了。若李四再將這10個(gè)幣轉(zhuǎn)給張三敞嗡,則張三的幣仍等于之前的幣颁糟,而其信用也基本不會(huì)增加(因?yàn)閹旁诶钏馁~面上停留的時(shí)間很短,幣天很泻磴病)滚停。幣天銷毀也被用到了權(quán)益證明中。
第二章:區(qū)塊鏈基礎(chǔ)
2.1區(qū)塊鏈誠實(shí)的記錄并存儲(chǔ)了外部數(shù)據(jù)粥惧,并非意味著外部數(shù)據(jù)的輸入本身誠實(shí)键畴。例如認(rèn)證工作往往能夠線下完成,雖然區(qū)塊鏈可以存儲(chǔ)信息圖像突雪,但信息圖像本身是否是偽造的起惕,則不得而知。
2.2 區(qū)塊鏈的分類(公共鏈咏删,聯(lián)盟鏈惹想,私有鏈):依據(jù)參與人員可讀寫的權(quán)限范圍,區(qū)塊鏈分為公共鏈督函,聯(lián)盟鏈嘀粱,私有鏈激挪。
2.3 區(qū)塊鏈工作流程:區(qū)塊鏈分為節(jié)點(diǎn)廣播數(shù)據(jù),接收節(jié)點(diǎn)驗(yàn)證數(shù)據(jù)锋叨,全網(wǎng)取得共識(shí)垄分,以及區(qū)塊加入?yún)^(qū)塊鏈等四步。全網(wǎng)都基于最長(zhǎng)鏈為有效鏈娃磺。若出現(xiàn)兩個(gè)節(jié)點(diǎn)同時(shí)廣播出了新版本的區(qū)塊薄湿,這每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)在自己先收到的區(qū)塊上進(jìn)行工作。同時(shí)保留另外一個(gè)區(qū)塊偷卧,已防其變成最長(zhǎng)鏈豺瘤。
2.4 共識(shí)機(jī)制。分布式系統(tǒng)最主要的一個(gè)問題就是如何在分布的節(jié)點(diǎn)上對(duì)某一問題 達(dá)成一致听诸。這就涉及到了共識(shí)協(xié)議坐求。
2.5 區(qū)塊鏈面臨的問題
第三章:區(qū)塊鏈進(jìn)階
3.1 SPV (簡(jiǎn)單支付驗(yàn)證) :只需保留存儲(chǔ)區(qū)塊鏈頭部信息即可進(jìn)行支付驗(yàn)證的技術(shù)。該技術(shù)可以大大簡(jiǎn)化用戶的存儲(chǔ)空間晌梨。以下是SPV與輕錢包桥嗤,交易驗(yàn)證之間的差別。
3 .1.1 SPV 實(shí)現(xiàn)過程
3.1.2 SPV的問題
(a)SPV節(jié)點(diǎn)與去中心化之間的矛盾派任。運(yùn)用SPV的節(jié)點(diǎn)越多,參與完整驗(yàn)證的節(jié)點(diǎn)必然會(huì)減少璧南。這會(huì)導(dǎo)致一定程度的中心化掌逛。
(b)可鍛性攻擊∷疽校可鍛性攻擊為因?yàn)楹灻惴ú粔蛲晟贫够欤粽咝薷脑灰字械暮灻6捎谒惴▎栴}修改簽名后的信息依然能夠被其他節(jié)點(diǎn)校驗(yàn)成功动知。這時(shí)原交易和修改后的交易就形成了雙重支付皿伺。原交易就有可能不被確認(rèn),帶來不可預(yù)計(jì)的影響盒粮。
3.2?側(cè)鏈協(xié)議
側(cè)鏈協(xié)議是相對(duì)比特幣主鏈而言的鸵鸥。側(cè)鏈協(xié)議可以使比特幣安全的從比特幣主鏈轉(zhuǎn)移到其他區(qū)塊鏈,又可以從其他區(qū)塊鏈轉(zhuǎn)移到主鏈上的一種協(xié)議丹皱。側(cè)鏈協(xié)議的主要目的是實(shí)現(xiàn)比特幣區(qū)塊鏈與側(cè)鏈之間的雙向錨定妒穴。比特幣的鎖定與解鎖與側(cè)鏈的交易相關(guān)。
側(cè)鏈協(xié)議中包含了一些新技術(shù):
(a)秘密交易:交易中的金額僅有少數(shù)參與者知道摊崭,通過在數(shù)據(jù)中引入了盲化因子對(duì)其他人隱藏了交易金額讼油。盲化因子的引入使數(shù)據(jù)本身不容易被猜測(cè)。這點(diǎn)對(duì)于短數(shù)據(jù)尤為重要呢簸。
(b)隔離驗(yàn)證矮台。隔離驗(yàn)證是指將簽名從交易中分離出來乏屯。交易的ID僅由信息本身確定。這可以避免交易的可塑性瘦赫,更適合輕錢包中SPV證明辰晕。
(c)相對(duì)鎖定時(shí)間。使簽名交易被確認(rèn)后耸彪,其輸入在一段時(shí)間內(nèi)保持無效伞芹,目的是支持交易替換功能。
(d)Schnorr簽名蝉娜。更有效的n/n與之簽名唱较,多個(gè)簽名間可以合成一個(gè)簽名,同時(shí)簽名容量更小召川。
(e)啟用了一下被禁用的腳本代碼南缓。
3.3 閃電網(wǎng)絡(luò)
閃電網(wǎng)絡(luò)可以使小額的,高頻的交易以非常少的全網(wǎng)認(rèn)證次數(shù)而實(shí)施荧呐。
3.3.1 合并交易
例如張三想從李四那購買一部電影(每部電影0.1比特幣)汉形,首先張三先支付1個(gè)比特幣到一個(gè)雙重簽名地址,形成交易o(hù)倍阐。之后張三再和李四構(gòu)建了一個(gè)贖回條款A(yù)概疆。A帶有鎖定時(shí)間,只有在N天后才會(huì)生效峰搪。于是張三將O條款簽名并對(duì)外廣播(標(biāo)黃)岔冀。而贖回條款并未對(duì)外廣播。若張三看了一部電影概耻,則張三再次構(gòu)建交易B使套,并簽了自己的名字。這時(shí)鞠柄,李四只要立刻簽上自己的名字并對(duì)外廣播侦高,則張三李四可以各自得到相應(yīng)的錢數(shù)⊙岫牛考慮到張三有可能再次購買電影奉呛,且交易數(shù)量小,李四并未將協(xié)議B簽名廣播夯尽。之后張三看了第二部電影并構(gòu)建了協(xié)議C侧馅。考慮到A的鎖定時(shí)間快到(鎖定時(shí)間到期李四還未簽名則協(xié)議A可以向全網(wǎng)廣播呐萌,李四得不到任何錢)馁痴,李四對(duì)協(xié)議C進(jìn)行了簽名并進(jìn)行了廣播。于是該交易通道自動(dòng)關(guān)閉肺孤。協(xié)議A,B均失效罗晕。這么做只需要向比特幣網(wǎng)絡(luò)廣播兩次即可對(duì)多頻的小額交易進(jìn)行支付济欢,減少了比特幣網(wǎng)絡(luò)的整體負(fù)擔(dān)。
問題:該支付通道解決了合并交易的問題小渊,但是依靠理性的經(jīng)紀(jì)人和單向流通來達(dá)到撤銷交易的目的法褥。并不是實(shí)際的撤銷上個(gè)交易。
3.3.2 序列到期可撤合約(RSMC)
初始合約的構(gòu)建
張三和李四因?yàn)橛薪?jīng)常的業(yè)務(wù)往來酬屉,于是各出0.5BTC放入了一個(gè)雙重簽名合約中半等。張三和李四可以通過簽名構(gòu)建以下初始合約,然后廣播O呐萨∩倍《》代表需要填入的簽名。由下面的結(jié)構(gòu)可知谬擦,若張三對(duì)A先簽名并且廣播切距,則李四可以立刻得到0.5個(gè)BTC,A的另外一個(gè)輸出是張三2的簽名惨远,則張三要再后續(xù)1000個(gè)區(qū)塊后才能拿到自己的0.5 BTC谜悟。反之亦然。
交易更新北秽。
若張三從李四處購買了一件售價(jià)為0.1BTC的商品葡幸。則張三和李四則在這個(gè)合約框架中加入了新的合約內(nèi)容。但如何能讓張三放棄A1呢贺氓?張三和李四在發(fā)生交易的時(shí)候蔚叨,張三就說我一定不會(huì)用A1,我張三2的秘鑰是XXX掠归。若李四知道了張三的秘鑰2就可能會(huì)將A1的下面合約“張三:0.5個(gè)BTC (紅色部分)”變?yōu)椤崩钏?.5個(gè)BTC”.如果張三用張三簽名執(zhí)行了A1缅叠。李四可以迅速拿到原先自己的0.5個(gè)BTC悄泥,同時(shí)還會(huì)在1000個(gè)區(qū)塊后拿到原本屬于張三的0.5個(gè)BTC.
3.3.3 支付中轉(zhuǎn)站
若張三想支付一筆貨款1BTC給李四虏冻,但張三和李四之間沒有渠道進(jìn)行交易。而剛好王五和他們都有渠道弹囚。他們就可以通過王五來進(jìn)行中轉(zhuǎn)厨相。張三先和李四約定了一個(gè)暗語。于是張三跟王五說鸥鹉,你如果能告訴我窗前明月光對(duì)應(yīng)的哈希下一句蛮穿,我就給你1.1個(gè)BTC.而王五詢問到了李四,說你要是能告訴我窗前明月光的哈希下一句毁渗,我就給你一個(gè)1BTC践磅。這時(shí)李四告訴了王五,王五給了李四1BTC灸异。然后王五找張三拿到了1.1BTC府适。
第四章 智能合約
智能合約的本質(zhì)是 如果XXX羔飞,那就YYYY。在計(jì)算機(jī)語言中常為if檐春。逻淌。。then疟暖。卡儒。。俐巴。
它最早由尼克.薩博從自動(dòng)售貨機(jī)的概念上衍生出來的骨望。自動(dòng)售貨機(jī)可以看做是如果你投入了規(guī)定數(shù)量的硬幣,則你可以獲得相應(yīng)的某種物品窜骄。一般會(huì)涉及到參與方锦募,資產(chǎn),自動(dòng)判定狀態(tài)的狀態(tài)機(jī)邻遏,以及下一步行動(dòng)的總和糠亩。
智能合約與傳統(tǒng)的合約存在較大的差別。具體差別如下:
智能合約可以被運(yùn)用到保險(xiǎn)准验,房屋租賃赎线,博彩等各方面。但同時(shí)其也面臨著一些問題糊饱,例如合約的安全性(無欺詐垂寥,陷阱等),私密性另锋,意外情景等滞项。
《區(qū)塊鏈:從數(shù)字貨幣到信用社會(huì)》-- 長(zhǎng)鋏,韓峰等著