比特幣錢包是如何把交易信息告訴礦工的
比特幣錢包是如何幫助用戶完成一筆交易的?
回答此問(wèn)題,我們需要解答下面兩個(gè)問(wèn)題,便自然了解了。
1.礦工在交易過(guò)程中做了什么事?
現(xiàn)實(shí)生活中,銀行是一個(gè)大的記錄賬本的中心機(jī)構(gòu)(對(duì)銀行是個(gè)大賬本的比喻如果有不懂的用戶,請(qǐng)瀏覽第一課課后輔導(dǎo)①:區(qū)塊鏈到底是什么?存儲(chǔ)在哪里了?)。如果我們用現(xiàn)金進(jìn)行交易,其實(shí)是沒(méi)有經(jīng)過(guò)銀行的,也就是說(shuō),銀行并沒(méi)有把你和別人的現(xiàn)金交易記錄在案。但是一旦涉及到銀行卡轉(zhuǎn)賬,或者網(wǎng)上銀行轉(zhuǎn)賬,每一筆交易都會(huì)被銀行這個(gè)中心大賬本所記錄。
在比特幣的世界里,由于每筆交易都是在網(wǎng)上操作的,并且中本聰在設(shè)計(jì)整個(gè)機(jī)制時(shí)規(guī)定了,如果有交易,就必須要被記錄、被驗(yàn)證,否則這筆交易無(wú)效。所以,每筆交易都需要記錄在案。于是中本聰在設(shè)計(jì)整個(gè)機(jī)制時(shí),設(shè)立了“接收交易、驗(yàn)證交易并打包收錄交易”這一角色,我們把這個(gè)角色叫做“礦工”。每筆交易都需要礦工來(lái)負(fù)責(zé)記錄,不僅要收錄,還要對(duì)這筆交易做驗(yàn)證。所以,如果不告訴礦工,礦工是不能確認(rèn)這筆交易的合法性的:
2.錢包是如何把交易信息告訴全球礦工的?
首先,我們需要知道的是,用戶的比特幣并不是一個(gè)整體,而是多個(gè)地址所保存的比特幣的總額。我們可以把多個(gè)地址想象成多個(gè)銀行賬號(hào)。也就是說(shuō),假設(shè)張三有13個(gè)比特幣,他有8個(gè)比特幣存在銀行賬號(hào)A中,有3個(gè)比特幣存在賬號(hào)B中,有2個(gè)比特幣存在賬號(hào)C中。
接下來(lái),張三在錢包軟件中輸入了10,并輸入了李四的收款地址(收款的銀行賬號(hào)),點(diǎn)擊發(fā)送時(shí),錢包就知道了張三要發(fā)送10個(gè)比特幣。然后錢包找到了屬于張三的地址A、地址B、地址C,從地址A中取了5個(gè)幣,從地址B中取了3個(gè)幣,從地址C中取了2個(gè)幣。但是張三只想發(fā)10個(gè)幣,地址A中最后還剩3個(gè)幣,仍然存放在地址A中嗎?
錢包的開(kāi)發(fā)團(tuán)隊(duì)在設(shè)計(jì)錢包的交易機(jī)制時(shí),為避免安全風(fēng)險(xiǎn),每次交易找零的比特幣,都將找零存放到新地址中。我們可以理解為,錢包為張三新創(chuàng)造了一個(gè)銀行賬號(hào)D,銀行賬號(hào)A中在交易時(shí)如果有剩余,則將剩余的比特幣全部存放在銀行賬號(hào)D中。
于是有了如下的交易信息:
交易流水單號(hào)由錢包自動(dòng)生成。
接著,錢包將這個(gè)交易信息通過(guò)互聯(lián)網(wǎng)網(wǎng)絡(luò),發(fā)給與此錢包鄰近的幾個(gè)礦工,礦工驗(yàn)證交易沒(méi)問(wèn)題后,再發(fā)送給與這幾個(gè)礦工鄰近的其他礦工,使這筆交易迅速擴(kuò)散。一會(huì)兒的功夫,這筆交易信息便傳播到了全球的各個(gè)礦工那里。
后面的流程,在通俗易懂第一課 | 簡(jiǎn)單了解比特幣交易過(guò)程簡(jiǎn)單講解過(guò),某個(gè)礦工爭(zhēng)得了將新區(qū)塊加入主鏈的權(quán)力,順便將此交易打包到新區(qū)塊中,廣播給了全球所有礦工,每個(gè)礦工將此新區(qū)塊記錄在自己的硬盤中,到此,此交易便可以被認(rèn)為是已被確認(rèn)的交易了。