1. 程式人生 > >【區塊鏈入門】十分鐘讀懂比特幣錢包與轉賬過程

【區塊鏈入門】十分鐘讀懂比特幣錢包與轉賬過程

如何 pla ddr 速度 tar 不用 新建 一分鐘 sim

比特幣錢包到底是什麽?

大家可能知道比特幣就是區塊鏈上的一個賬本。那我們先來看一個,它到底長什麽樣?

因為比特幣的賬本是完全公開的,所以我們隨便找一個錢包地址,看一下:

1DrtPCLLBbeBwHKPKfgq94LT7AGWRK8zzL

經典比特幣的錢包地址都是1開頭的,而如果最近大家看到3開頭的地址,就是隔離見證(SegWit)的地址。

有很多網站(比如blockchain.info)提供區塊查看,我們來看看這個錢包裏都有些啥

https://blockchain.info/address/1DrtPCLLBbeBwHKPKfgq94LT7AGWRK8zzL

技術分享圖片

能看到這個地址上,共有135筆交易,總共收到過139.2枚比特幣,然後下面列出了地址上所有的交易。這個地址上當前的余額是0.560741,這個余額是計算出來的,它沒有記錄在任何地方!也就是說,你的錢包裏有多少錢,是沒有存在任何地方的。當你轉賬的時候,礦工檢查你有沒有足夠多的『余額』支持這筆交易,其實看的是你這個地址之前所有的『交易』,一筆一筆的增減,這其實是比特幣設計的一個很聰明的地方。因為如果交易沒有被打包(記賬),或者打包之後整個區塊被丟棄,你不用擔心,轉賬失敗之後錢丟了。沒有了交易,你的『錢』自然就回來了。

只要有地址,任何人都能看到這個錢包裏有多少錢。所以,我們可以簡單的認為:

錢包 = 地址(能查看) + 私鑰(能轉賬)

如果大家只是想用錢包APP來方便查看自己的多個地址上的比特幣,其實完全不用導入私鑰,這樣能減少資產被盜的風險。

那私鑰又是什麽?

你可以把錢包看成是一個玻璃做的透明保險櫃,任何人都能看到裏面有多少錢,每筆錢從哪裏來的,以前的錢到哪裏去了。那麽私鑰就是這個保險櫃的密碼,任何人有了密碼就能打開它,轉走裏面的錢。你可以眼睜睜的看著錢轉到另外一個玻璃櫃子裏,但毫無辦法。

記住:任何時候,不要把私鑰給任何人!

比如,你用一個錢包APP,導入了自己的私鑰,你怎麽知道這個APP不會背著你把私鑰發送到其他地方?很難放心啊。

所以小碼哥只敢信任3種錢包:

正規渠道下載的知名錢包,比如在google play下載的blockchain.info的錢包

千萬別在各種小軟件市場下載,哪怕是中國某些大廠的軟件市場。很多黑客會把正常的錢包裏面種上木馬,你看上去是blockchain.info,但是裏面有木馬可能把你的私鑰盜走。

冷錢包

就是錢包所在的機器是永遠不聯網的,我才敢把私鑰放心的存裏面。那冷錢包不聯網,裏面的錢怎麽轉賬呢?其實很簡單,比如你用一臺舊手機做冷錢包,下載一個錢包APP,然後刪掉手機裏所有記住的WIFI,拔掉SIM卡,讓手機不能上網(不要只是飛行模式,那都不安全)。這個錢包APP,能用手機的攝像頭掃碼二維碼,就能把一筆交易在經過私鑰加密後,再生成交易信息的二維碼,用聯網的手機掃了,就能完成轉賬。

開源錢包,且必須運行在自己放心的環境中。

比如我自己會用 https://coinb.in/ 提供的錢包。它是一個網站,但不是在線錢包。它的代碼是開源的,你可以在github上下載。它完全是純前端(javascript)錢包,可以運行在瀏覽器裏。所以能看到它的代碼裏面有沒有惡意的邏輯,也能運行在一臺離線電腦/手機的瀏覽器裏。

比特幣的轉賬是怎麽進行的?

那我們接下來用coinb.in來演示一下,比特幣的轉賬到底是如何發送的。

打開 https://coinb.in/ 左起第一個菜單是New(新建),選Transaction(轉賬)

技術分享圖片

一筆比特幣的轉賬,需要由兩個部分組成:Input(輸入),Output(輸出)

也就是說,一筆轉賬由A轉給B,那麽A就是輸入,B就是輸出。

技術分享圖片

先看Input(輸入),我們需要填上的是一些Transaction ID,而不是錢包地址,也就是我們之前說的,比特幣錢包裏面有多少錢,是沒有存在任何地方的,所以你想轉給別人的錢,一定是先來自某個之前的交易(另外的人轉給你了,你才有錢給別人)。所以比特幣的錢不會無根而生,一定有來龍去脈。

那麽,我們先隨便填一個交易ID,然後填上這個交易的數量(Amount),假設是1.1個BTC,接下去再填輸出(Output)。

技術分享圖片

輸出就容易理解一些,往哪個地址(Address)上轉多少錢。一筆交易可以有多個輸入,多個輸出。比如我們這次隨便再找個地址,填上1個BTC。下面它就自動幫你算出了,剛才輸入是1.1BTC,現在輸出是1BTC,那你的交易手續費(礦工費)等於是付了0.1BTC。

點擊Submit(提交),就能看到綠色框裏面就是生成的這筆交易的數據了。註意,這只是生成了交易的信息,這個時候交易並沒有發生!我剛剛也沒有用到私鑰,而且地址和交易ID都是隨便亂寫的。綠色框右上角有個二維碼按鈕,點了就會出來二維碼,也就是說,我們可以用冷錢包的手機來掃碼,獲得這個交易的數據,以便用私鑰加密簽名。

然後,我們可以到冷錢包裏保證的這個網頁上(假設通過掃二維碼,把這段交易信息copy過去了)。點菜單裏面的Sign(簽名),就可以用你的私鑰,對剛剛這段交易信息進行加密。等於就是你認可了這個交易的發生。

技術分享圖片

而這個菜單按鈕旁邊的Broadcast(廣播),就是可以把你簽名之後的交易信息從冷錢包裏再生成二維碼,通過掃碼轉移到聯網的電腦上,最後廣播到比特幣網絡中。全世界的礦工都能接收到這筆交易,大家會先驗證這個交易是否合法(比如輸入是否存在『雙花』,說白了就是錢之前已經花了,轉賬余額不足),如果一切正常,然後就打包。

你這筆交易被打包,且有多次確認後,就可以認為轉賬交易已經成功。因為全世界都見證了這個交易的發生,再也不能被撤銷。

這是最原始也是最安全的錢包使用方式,但是也是最『麻煩』的方式。如果你對當前使用環境的安全有保證,這都是可以在線完成。而且coinb.in也提供了更簡單的『錢包』管理方式。只需要用你自己的郵箱和密碼(密碼不是私鑰),它能幫你自動用算法生成地址與私鑰,完成錢包管理。

技術分享圖片 比如我隨便輸一個郵箱和密碼(2次確認),點提交就好。這並不是在『註冊帳號』,因為你可以拔掉網線、關掉WIFI也能完成這個操作。沒有任何地方會幫你存密碼,你也永遠無法找回密碼。如果忘記了密碼,也沒有備份私鑰,裏面的錢就丟了。(說『丟』了有點不合適,應該是你能眼睜睜看到錢就在那裏,但是永遠無法花出去——轉給別人)
技術分享圖片

這個錢包裏,就是大家熟悉的,填上給哪個地址轉多少錢,給多少礦工費。這裏點發送就是真的發送了哦!因為它會自動幫你完成簽名、廣播的操作。

比特幣轉賬多久能到?

這是很多人用比特幣轉賬不習慣的地方。它不像你用支付寶轉賬,咻!一下對方就收到了。因為支付寶是中心化的服務,阿裏說你轉了就是轉了,阿裏服務器掛了就沒了。

你能在網上看到當前比特幣網絡裏有多少未被確認的交易。目前是4萬多筆,半個月前擁堵的時候,這個數字是16萬筆。也就是說,當前有很多交易,都是還沒有被確認和打包的。

訪問這裏,你能看到下面biu~biu~biu的不停有交易被廣播出來。

https://blockchain.info/unconfirmed-transactions

技術分享圖片

所以你的交易廣告給全世界人聽,但是需要礦工把它們都打包進區塊(等於記在賬本裏),才算是有效。一般要等這個區塊之後,又在它的『鏈』上打包了3個以上的區塊(通常大家說的是6次確認),對方才承認到賬了。

這個時間就不一定了。它跟幾個因素有關:

比特幣網絡預期是10分鐘一個塊,但不是絕對的,但有可能當前礦工們運氣都不好,一個小時都不出塊(也可能運氣好,一分鐘就挖出塊了)。

你給的礦工費也會決定速度。因為這麽多未打包的交易,礦工肯定是按照給錢的多少來排,給錢越多,排在越前面,先打包的可能性越大。如果給的太少。。。呵呵,永遠輪不到你也是有可能的。那你的這筆交易就一直處於未確認的狀態,不過放心,錢丟不了。

以上就是比特幣錢包和轉賬的一些基礎認識!

技術分享圖片

【區塊鏈入門】十分鐘讀懂比特幣錢包與轉賬過程