比特幣交易是如何運(yùn)作的
如果我想把我的一些比特幣發(fā)送給你,我發(fā)布了我的意圖,而節(jié)點(diǎn)掃描整個(gè)比特幣網(wǎng)絡(luò)來(lái)驗(yàn)證我是否有我想要發(fā)送的比特幣,而2)還沒(méi)有發(fā)送給其他人。一旦該信息被確認(rèn),我的事務(wù)就會(huì)被包含在一個(gè)“塊”中,這個(gè)“塊”被附加到上一個(gè)塊中,因此“區(qū)塊鏈”這個(gè)術(shù)語(yǔ)就會(huì)被包含進(jìn)來(lái)。事務(wù)不能被撤消或篡改,因?yàn)樗馕吨匦聢?zhí)行后面的所有塊。
變得有點(diǎn)復(fù)雜:
我的比特幣錢包實(shí)際上并沒(méi)有持有我的比特幣。它所做的是保存我的比特幣地址,它記錄了我所有的交易,因此我的余額。這個(gè)地址——一個(gè)長(zhǎng)串的34個(gè)字母和數(shù)字——也被稱為我的“公鑰”。我不介意整個(gè)世界都能看到這個(gè)序列。每個(gè)地址/公鑰都有對(duì)應(yīng)的64個(gè)字母和數(shù)字的“私鑰”。這是私人的,我保密和安全是至關(guān)重要的。這兩個(gè)鍵是相關(guān)的,但是你不可能從我的公鑰中找到我的私鑰。
這很重要,因?yàn)槲覐谋忍貛诺刂钒l(fā)出的任何交易都需要用我的私鑰“簽名”。為了做到這一點(diǎn),我將我的私鑰和交易細(xì)節(jié)(我想要發(fā)送多少比特幣,以及誰(shuí))放入我的電腦或智能手機(jī)上的比特幣軟件中。
有了這些信息,程序就會(huì)吐出一個(gè)數(shù)字簽名,然后發(fā)送到網(wǎng)絡(luò)進(jìn)行驗(yàn)證。
這個(gè)交易是可以驗(yàn)證的——也就是說(shuō),我可以確認(rèn)我擁有的比特幣是我轉(zhuǎn)賬給你的,而且我還沒(méi)有把它發(fā)送給其他人——通過(guò)將簽名和我的公鑰(每個(gè)人都知道)插入比特幣程序。這是比特幣的一個(gè)天才部分:如果簽名是用與那個(gè)公鑰相對(duì)應(yīng)的私鑰進(jìn)行的,程序?qū)Ⅱ?yàn)證該事務(wù),而不知道私鑰是什么。非常聰明。
該網(wǎng)絡(luò)隨后證實(shí),我以前從未在我的地址歷史上運(yùn)行過(guò)比特幣,因?yàn)樗牢业牡刂罚?我的公鑰),而且因?yàn)樗薪灰锥际窃诒忍貛欧诸愘~上公開(kāi)的。
更加復(fù)雜:一旦我的事務(wù)被驗(yàn)證了,它就會(huì)被包含到一個(gè)“塊”中,還有一些其他的事務(wù)。
一個(gè)簡(jiǎn)短的detour來(lái)討論什么是“散列”,因?yàn)樗鼘?duì)下一段很重要:哈希是由一個(gè)“哈希函數(shù)”產(chǎn)生的,它是一個(gè)復(fù)雜的數(shù)學(xué)方程,可以減少任何數(shù)量的文本或數(shù)據(jù)到64字符的字符串。它不是隨機(jī)的-每次你放入特定的數(shù)據(jù)集通過(guò)哈希函數(shù),你會(huì)得到相同的64字串。但是如果你改變了一個(gè)逗號(hào),你就會(huì)得到一個(gè)完全不同的64字字符串。這整篇文章可以被簡(jiǎn)化成一個(gè)散列,除非我更改、刪除或添加任何內(nèi)容到文本中,同樣的散列可以一次又一次地生成。這是一種非常有效的方法來(lái)判斷是否發(fā)生了更改,以及區(qū)塊鏈如何確認(rèn)事務(wù)沒(méi)有被篡改。
返回到我們的塊:每個(gè)塊包含了前面塊的散列,作為其數(shù)據(jù)的一部分。這就是為什么它是鏈的一部分,也就是“區(qū)塊鏈”因此,如果前一個(gè)塊的一小部分被篡改,當(dāng)前塊的散列就必須改變(記住,哈希函數(shù)輸入中的一個(gè)微小的變化會(huì)改變輸出)。因此,如果您想要在前面的塊中更改某些內(nèi)容,那么您還必須在當(dāng)前塊中更改某個(gè)東西(=散列),因?yàn)楫?dāng)前包含的內(nèi)容不再正確。這是很難做到的,特別是當(dāng)你已經(jīng)走到一半的時(shí)候,可能會(huì)有另一個(gè)塊在當(dāng)前的頂部。你也必須改變這個(gè)。等等。
這就是為什么比特幣實(shí)際上是防篡改的。我說(shuō)實(shí)際上,因?yàn)檫@不是不可能的,只是非常非常非常非常困難,因此不太可能。