比特幣節點怎麼驗證
❶ 比特幣交易是如何確認的
比特幣的交易方式
比特幣是類似電子郵件的電子現金,交易雙方需要類似電子郵箱的「比特幣錢包」和類似電郵地址的「比特幣地址」。和收發電子郵件一樣,匯款方通過電腦或智能手機,按收款方地址將比特幣直接付給對方。下列表格,列出了免費下載比特幣錢包和地址的部分網站。
比特幣地址是大約33位長的、由字母和數字構成的一串字元,總是由1或者3開頭,例如""。比特幣軟體可以自動生成地址,生成地址時也不需要聯網交換信息,可以離線進行。可用的比特幣地址超過2個。形象地說,全世界約有2粒沙, 如果每一粒沙中有一個地球,那麼比特幣地址總數遠遠超過所有這些「地球」上的所有的沙子的數量。
比特幣地址和私鑰是成對出現的,他們的關系就像銀行卡號和密碼。比特幣地址就像銀行卡號一樣用來記錄你在該地址上存有多少比特幣。你可以隨意的生成比特幣地址來存放比特幣。每個比特幣地址在生成時,都會有一個相對應的該地址的私鑰被生成出來。這個私鑰可以證明你對該地址上的比特幣具有所有權。我們可以簡單的把比特幣地址理解成為銀行卡號,該地址的私鑰理解成為所對應銀行卡號的密碼。只有你在知道銀行密碼的情況下才能使用銀行卡號上的錢。所以,在使用比特幣錢包時請保存好你的地址和私鑰。
比特幣的交易數據被打包到一個「數據塊」或「區塊」(block)中後,交易就算初步確認了。當區塊鏈接到前一個區塊之後,交易會得到進一步的確認。在連續得到6個區塊確認之後,這筆交易基本上就不可逆轉地得到確認了。比特幣對等網路將所有的交易歷史都儲存在「區塊鏈」(blockchain)中。區塊鏈在持續延長,而且新區塊一旦加入到區塊鏈中,就不會再被移走。區塊鏈實際上是一群分散的用戶端節點,並由所有參與者組成的分布式資料庫,是對所有比特幣交易歷史的記錄 。 中本聰預計,當數據量增大之後,用戶端希望這些數據並不全部儲存自己的節點中。為了實現這一目標,他採用引入散列函數機制。這樣用戶端將能夠自動剔除掉那些自己永遠用不到的部分,比方說極為早期的一些比特幣交易記錄。
❷ 比特幣全節點佔用內存越來越大會不會出現什麼安全問題
現在已經有推出潛在解決方案了,更多的節點有助於讓比特幣網路更快、更健康、更抗審查,而去中心化是基於區塊鏈的加密貨幣的核心原則之一。幸運的是,現在有更多潛在的解決方案正在努力解決這一問題中,它們可以方便用戶更輕松的運行一個全節點。
首先硬碟的成本從2017年最低0.025美元/GB下降到0.15美元/GB,在3年內下降了40%。如果這種下降速度繼續下去,那麼到2022年,硬碟的家阿哥下降速度將比比特幣的規模增長速度還要快,因為隨著時間的推移,託管一個全節點會更加經濟。
但是也有一些技術解決方案可以解決這個問題,這些解決方案可以減少整個節點的存儲負擔。最常見的解決方案之一就是輕節點。這些節點使用簡化支付驗證方法來驗證交易。用戶只需要下載區塊鏈的一小部分,但是需要依賴託管整個區塊鏈的第三方全節點。
❸ 你了解比特幣節點和交易所的關系嗎
比特幣的節點是在運行在千千萬萬比特幣用戶的電腦上的軟體,千千萬萬的比特幣節點相互連接構成了比特幣網路。比特幣節點軟體通常包含了以下功能:
1) 錢包。用來存放你的比特幣余額。從原理上講,你只要有自己比特幣地址的私鑰,就有辦法使用自己的幣。
2) 驗證交易或支付。比特幣節點收到交易後會通過一定的演算法用來驗證一筆交易的有效性,只把自己電腦裡面比特幣余額改掉別人是不會認的,同樣你的錢包也不會承認別人亂改的交易。
3) 挖礦。Core 錢包可以通過一個命令啟動挖礦功能加入挖礦大軍,而SPV錢包通常則無法挖礦(SPV只是個路過的)。不過阻礙家用電腦挖礦的主要還不是節點類型,而是專業礦機發展太猛,普通電腦的那點計算力相比來說實在少的可憐,靠一般電腦挖礦就像直接拿鋤頭開挖自家後院,然後期待挖出黃金一樣的不切實際。
因為有比特幣用戶有交易的需求,誕生了比特幣交易所。交易所提供了一個集中買賣的場所,大家把幣放在交易所,由交易所集中撮合交易,類似股票,證券。因此取締交易所並不等於取締比特幣,比特幣網路是無法被取締的。 比特幣被發送到了交易所的錢包里,而你看到的只是交易所給你的一個余額,實際上你已經不擁有自己的幣了。比特幣網路是世界的,有網的地方就有比特幣,交易所關閉後比特幣並不會消失,而是回到了它應該在的地方。
❹ 何為比特幣節點,意義何在
記錄交易記錄
❺ 比特幣錢包
比特幣(bitcoin)誕生於2008年的一篇論文。
一個署名為中本聰的人,提出了革命性的構想:讓我們創造一種不受政府或其他任何人控制的貨幣!這個想法堪稱瘋狂:一串數字,背後沒有任何資產支持,也沒有任何人負責,你把它當作錢付給對方,怎麼會有人願意接受?
Merkle tree
跟二叉樹長得很像,只是這個是下面兩個節點取哈希值得到上面節點。只需要記住根節點,就可以檢測整棵樹有沒有被篡改。
根哈希值存在block header里,交易過程存在block body里。全節點包括block header和block body,但是輕節點(比如手機上比特幣錢包)只包括block header。這棵樹可以證明包含某個交易已經被寫進了區塊鏈。
3.共識協議
去中心化的貨幣要注意的兩個問題:
1.誰能發行數字貨幣:挖礦。
2.怎麼驗證交易的合法性:區塊鏈。
雙花攻擊(double spending attack)
雙花攻擊是數字貨幣的一個主要挑戰。
比特幣中的交易都要有輸入和輸出,幣從哪來,花到哪去。
正常情況也可能有兩個分叉,因為兩個節點同時獲得記賬權,兩個節點打包的區塊,同時計算出了那個隨機數。此時會暫時兩個分叉共存,直到其中某一個區塊搶先找到了下一個區塊,這條就成了最長合法鏈,另一個分叉就被丟棄。
女巫攻擊(sybil attack)
某惡意節點不停產生賬戶,賬戶總數超過總賬戶的一半,則取得了區塊鏈的控制權。
比特幣中的共識協議(Consensus)
一些節點是有惡意的,大部分節點是好的。
想法1:把一些交易打包到區塊里作為候選區塊,讓每個區塊投票,如果通過就寫入區塊鏈。
不行,因為有的惡意節點一直發布一些含有惡意交易的區塊,則一直投票,佔用資源。而且有的節點不投票。
想法2:不按賬戶個數投票,而是按照計算力投票。每個節點都可以產生合法交易放入區塊,這些節點就開始試隨機數,直到找到H(block header)≤ target,則這個節點有記賬權。
唯一產生比特幣的途徑
coinbase transaction。這個不用指出幣的來源,有了記賬權的節點(找到了隨機數)會有出塊獎勵。
50BTC->25BTC->12.5BTC,每21萬個比特幣,獎勵就減半。
比特幣爭奪記賬權的過程叫挖礦。爭奪記賬權的節點叫礦工。
❻ 比特幣如何算出來的
要想了解bitcoin的技術原理,首先需要了解兩個重要的密碼技術: HASH碼:將一個長字元串轉換成固定長度的字元串,並且其轉換不可逆,即不太可能從HASH碼猜出原字元串。bitcoin協議里使用的主要是SHA256。
公鑰體系:對應一個公鑰和私鑰,在應用中自己保留私鑰,並公開公鑰。當甲向乙傳遞信息時,可使用甲的私鑰加密信息,乙可用甲的公鑰進行解密,這樣可確保第三方無法冒充甲發送信息;同時,甲向乙傳遞信息時,用乙的公鑰加密後發給乙,乙再用自己的私鑰進行解密,這樣可確保第三者無法偷聽兩人之間的通信。最常見的公鑰體系為RSA,但bitcoin協議里使用的是lliptic Curve Digital Signature Algorithm。 和現金、銀行賬戶的區別? bitcoin為電子貨幣,單位為BTC。在這篇文章里也用來指代整個bitcoin系統。 和在銀行開立賬戶一樣,bitcoin里的對應概念為地址。每個人都可以有1個或若干個bitcoin地址,該地址用來付賬和收錢。每個地址都是一串以1開頭的字元串,比如我有兩個bitcoin賬戶,和。一個bitcoin賬戶由一對公鑰和私鑰唯一確定,要保存賬戶,只需要保存好私鑰文件即可。 和銀行賬戶不一樣的地方在於,銀行會保存所有的交易記錄和維護各個賬戶的賬面余額,而bitcoin的交易記錄則由整個P2P網路通過事先約定的協議共同維護。 我的賬戶地址里到底有多少錢? 雖然使用bitcoin的軟體可以看到當前賬戶的余額,但和銀行不一樣,並沒有一個地方維護每個地址的賬面余額。它只能通過所有歷史交易記錄去實時推算賬戶余額。 我如何付賬? 當我從地址A向對方的地址B付賬時,付賬額為e,此時雙方將向各個網路節點公告交易信息,告訴地址A向地址B付賬,付賬額為e。為了防止有第三方偽造該交易信息,該交易信息將使用地址A的私鑰進行加密,此時接受到該交易信息的網路節點可以使用地址A的公鑰進行驗證該交易信息的確由A發出。當然交易軟體會幫我們做這些事情,我們只需要在軟體中輸入相關參數即可。 網路節點後收到交易信息後會做什麼? 這個是整個bitcoin系統里最重要的部分,需要詳細闡述。為了簡單起見,這里只使用目前已經實現的bitcoin協議,在當前版本中,每個網路節點都會通過同步保存所有的交易信息。 歷史上發生過的所有交易信息分為兩類,一類為"驗證過"的交易信息,即已經被驗證過的交易信息,它保存在一連串的「blocks」裡面。每個"block"的信息為前一個"bock"的ID(每個block的ID為該block的HASH碼的HASH碼)和新增的交易信息(參見一個實際的block)。另外一類指那些還"未驗證"的交易信息,上面剛剛付賬的交易信息就屬於此類。 當一個網路節點接收到新的未驗證的交易信息之後(可能不止一條),由於該節點保存了歷史上所有的交易信息,它可以推算中在當時每個地址的賬面余額,從而可以推算出該交易信息是否有效,即付款的賬戶里是否有足夠余額。在剔除掉無效的交易信息後,它首先取出最後一個"block"的ID,然後將這些未驗證的交易信息和該ID組合在一起,再加上一個驗證碼,形成一個新的「block」。 上面構建一個新的block需要大量的計算工作,因為它需要計算驗證碼,使得上面的組合成為一個block,即該block的HASH碼的HASH碼的前若干位為1。目前需要前13位為1(大致如此,不確定具體方式),此意味著如果通過枚舉法生成block的話,平均枚舉次數為16^13次。使用CPU資源生成block被稱為「挖金礦」,因為生產該block將得到一定的獎勵,該獎勵信息已經被包含在這個block裡面。 當一個網路節點生成一個新的block時,它將廣播給其它的網路節點。但這個網路block並不一定會被網路接受,因為有可能有別的網路節點更早生產出了block,只有最早產生的那個block或者後續block最多的那個block有效,其餘block不再作為下一個block的初始block。 對方如何確認支付成功? 當該筆支付信息分發到網路節點後,網路節點開始計算該交易是否有效(即賬戶余額是否足夠支付),並試圖生成包含該筆交易信息的blocks。當累計有6個blocks(1個直接blocks和5個後續blocks)包含該筆交易信息時,該交易信息被認為「驗證過」,從而該交易被正式確認,對方可確認支付成功。 一個可能的問題為,我將地址A裡面的余額都支付給地址B,同時又支付給地址C,如果只驗證單比交易都是有效的。此時,我的作弊的方式為在真相大白之前產生6個僅包括B的block發給B,以及產生6個僅包含C的block發給C。由於我產生block所需要的CPU時間非常長,與全網路相比,我這樣作弊成功的概率微乎其微。 網路節點生產block的動機是什麼? 從上面描述可以看出,為了讓交易信息有效,需要網路節點生成1個和5個後續block包含該交易信息,並且這樣的block生成非常耗費CPU。那怎麼樣讓其它網路節點盡快幫忙生產block呢?答案很簡單,協議規定對生產出block的地址獎勵BTC,以及交易雙方承諾的手續費。目前生產出一個block的獎勵為50BTC,未來每隔四年減半,比如2013年到2016年之間獎勵為25BTC。 交易是匿名的嗎? 是,也不是。所有BITCOIN的交易都是可見的,我們可以查到每個賬戶的所有交易記錄,比如我的。但與銀行貨幣體系不一樣的地方在於,每個人的賬戶本身是匿名的,並且每個人可以開很多個賬戶。總的說來,所謂的匿名性沒有宣稱的那麼好。 但bitcoin用來做黑市交易的還有一個好處,它無法凍結。即便警方追蹤到了某個bitcoin地址,除非根據網路地址追蹤到交易所使用的電腦,否則還是毫無辦法。 如何保證bitcoin不貶值? 一般來說,在交易活動相當的情況下,貨幣的價值反比於貨幣的發行量。不像傳統貨幣市場,央行可以決定貨幣發行量,bitcoin里沒有一個中央的發行機構。只有通過生產block,才能獲得一定數量的BTC貨幣。所以bitcoin貨幣新增量決定於: 1、生產block的速度:bitcoin的協議里規定了生產block的難度固定在平均2016個每兩個星期,大約10分鍾生產一個。CPU速度每18個月速度加倍的摩爾定律,並不會加快生產block的速度。 2、生產block的獎勵數量:目前每生產一個block獎勵50BTC,每四年減半,2013年開始獎勵25BTC,2017年開始獎勵額為12.5BTC。 綜合上面兩個因素,bitcoin貨幣發行速度並不由網路節點中任何單個節點所控制,其協議使得貨幣的存量是事先已知的,並且最高存量只有2100萬BTC
❼ 比特幣節點是什麼
區塊鏈賬本可以實現去中心化,是因為全網節點互相同步賬本,保持一致~所以區塊鏈不需要中心化記賬機構,那麼節點是什麼呢?
比特幣是一種點對點的電子現金系統,更直接地說,是節點對節點。每筆交易由發起方向周圍的節點進行廣播,節點收到之後再廣播給自己周圍的節點,最終擴散至全網。
每一個比特幣錢包都是一個節點,其中擁有完整區塊鏈賬本的節點叫做全節點。2017年10月,比特幣全網約有9300個全節點,負責比特幣轉賬交易的廣播和驗證。轉賬交易發生後,由所有節點共同廣播至全網,挖礦的節點驗證該交易正確後會記錄至區塊鏈賬本。美國、德國、法國擁有的比特幣全節點數最多,中國的全節點數量約佔全球5%。(數據來源於: bitnodes.21.co)運行比特幣節點不提供任何獎勵,且不需要全節點也可以進行比特幣轉賬,所以比特幣的全節點數只佔節點數的一小部分。
❽ 比特幣中怎麼證明是自己挖礦成功,而不是其他人呢
我們知道了信息計算Hash打包的過程:交易記錄、時間、賬本序號、上一個Hash值。也知道所有的計算和存貯是需要消耗計算機資源。在中本聰的設計里,完成記賬可以獲得系統給與比特幣獎勵,這個過程也就是比特幣發行過程,因此把記賬成為挖礦。
記賬工作
因為記賬是有獎勵,每次記賬都可以為自己增加一定個數的比特幣,因此大家爭相記賬,當然能也就引發了問題:出現記賬不一致的是後,系統引入工作量證明來解決這個問題,規則如下:
1.在一段時間內,只有一個人能記賬成功。
2.通過解決密碼學難題競爭獲得唯一記賬權
3.其他節點復制記賬結果
不過在進行工作量證明之前,記賬節點會做進行如下准備工作:
1.收集廣播中還沒有被記錄賬本的原始交易信息
2.檢查每個交易信息中付款地址有沒有足夠的余額
3.驗證交易是否有正確的簽名
4.把驗證通過的交易信息進行打包記錄
5.添加一個獎勵交易:給自己的地址增加12.5比特幣
如果爭奪記賬權成功的話,就可以得到12.5比特幣的獎勵。
工作量證明
每次記賬的時候會把上一個塊的Hash值和當前的賬頁信息一起作為原始信息進行Hash。為了確保10分鍾前後只有一個人可以記賬,就只有提高記賬的難度,用Hash的結果必須以若干個0開頭。為了滿足條件,進行Hash是引入一個隨機數變數。
用偽代碼表示一下:
1.Hash(上一個Hash值,交易記錄集) = 456635BCD
2.Hash(上一個Hash值,交易記錄集,隨機數) = 0000aFD635BCD
改變Hash的原始信息的一部分,Hash值也會不斷變化,因此在運行Hash的時候,不斷改變隨機數的值,總可以找到一個隨機數使得Hash的結果以若干個0開頭,率先找到隨機數的節點從此獲得記賬的唯一記賬權。
驗證
在節點成功找到Hash值之後,會馬上對全網進行廣播打包區塊,網路的節點收到廣播後會對其進行驗證。如果驗證通過,表明已經有節點成功解密,就不會在競爭當前區塊,而是選擇接受區塊,記錄到自己的賬本中,進行下一輪競爭猜謎。網路中只有最快解密的區塊才會添加到賬本中,其他的節點進行復制,確保整個賬本的唯一性。
如果節點有作弊行為,會導致網路的節點驗證不通過,直接放棄其打包的區塊,也無法記錄到總賬本中,那麼作弊節點的消耗成本就白費了。因此礦工自覺的遵守比特幣系統的共識協議,也確保整個系統的安全。
這個問題就好像你去工地搬磚,搬完一天磚,包工頭問你你怎麼證明自己一天在工地搬磚呢?
❾ 比特幣只認地址和私鑰並且多節點認證,為什麼還有被盜一說
因為很多保管在交易平台沒有提取出來,如果交易平台有內鬼,容易被盜。如果提取到自己的電腦,那不會有這種事情。