比特幣計算需要參數
㈠ 火幣比特幣交易費率
火幣比特幣交易費率0.2%。幣交易手續費是我們交易過程中主要的手續費用,費率為0.2%,買賣都收取。合約手續費吃單要大於掛單,吃單費用大約為0.03%,掛單費用大約為0.02%,合約到期交割費率BTC為0.015%,其他的約為0.05%,合約交易很復雜,不建議隨意操作。
【拓展資料】
一、貨幣特徵。
(一)去中心化。比特幣是第一種分布式的虛擬貨幣,整個網路由用戶構成,沒有中央銀行。去中心化是比特幣安全與自由的保證 。
(二)全世界流通。比特幣可以在任意一台接入互聯網的電腦上管理。不管身處何方,任何人都可以挖掘、購買、出售或收取比特幣。
(三)專屬所有權。操控比特幣需要私鑰,它可以被隔離保存在任何存儲介質。除了用戶自己之外無人可以獲取。
(四)低交易費用。可以免費匯出比特幣,但最終對每筆交易將收取約1比特分的交易費以確保交易更快執行。
(五)無隱藏成本。作為由A到B的支付手段,比特幣沒有繁瑣的額度與手續限制。知道對方比特幣地址就可以進行支付。
(六)跨平台挖掘。用戶可以在眾多平台上發掘不同硬體的計算能力。
二、優點。
(一)完全去處中心化,沒有發行機構,也就不可能操縱發行數量。其發行與流通,是通過開源的P2P演算法實現。
(二)匿名、免稅、免監管。
(三)健壯性。比特幣完全依賴P2P網路,無發行中心,所以外部無法關閉它。比特幣價格可能波動、崩盤,多國政府可能宣布它非法,但比特幣和比特幣龐大的P2P網路不會消失。
(四)無國界、跨境。跨國匯款,會經過層層外匯管制機構,而且交易記錄會被多方記錄在案。但如果用比特幣交易,直接輸入數字地址,點一下滑鼠,等待P2P網路確認交易後,大量資金就過去了。不經過任何管控機構,也不會留下任何跨境交易記錄。
(五)山寨者難於生存。由於比特幣演算法是完全開源的,誰都可以下載到源碼,修改些參數,重新編譯下,就能創造一種新的P2P貨幣。但這些山寨貨幣很脆弱,極易遭到51%攻擊。任何個人或組織,只要控制一種P2P貨幣網路51%的運算能力,就可以隨意操縱交易、幣值,這會對P2P貨幣構成毀滅性打擊。很多山寨幣,就是死在了這一環節上。而比特幣網路已經足夠健壯,想要控制比特幣網路51%的運算力,所需要的CPU/GPU數量將是一個天文數字。
三、缺點。
(一)交易平台的脆弱性。比特幣網路很健壯,但比特幣交易平台很脆弱。交易平台通常是一個網站,而網站會遭到黑客攻擊,或者遭到主管部門的關閉。
(二)交易確認時間長。比特幣錢包初次安裝時,會消耗大量時間下載歷史交易數據塊。而比特幣交易時,為了確認數據准確性,會消耗一些時間,與P2P網路進行交互,得到全網確認後,交易才算完成。
(三)價格波動極大。由於大量炒家介入,導致比特幣兌換現金的價格如過山車一般起伏。使得比特幣更適合投機,而不是匿名交易。
(四)大眾對原理不理解,以及傳統金融從業人員的抵制。活躍網民了解P2P網路的原理,知道比特幣無法人為操縱和控制。但大眾並不理解,很多人甚至無法分清比特幣和Q幣的區別。「沒有發行者」是比特幣的優點,但在傳統金融從業人員看來,「沒有發行者」的貨幣毫無價值。
㈡ 高中生如何理解比特幣加密演算法
加密演算法是數字貨幣的基石,比特幣的公鑰體系採用橢圓曲線演算法來保證交易的安全性。這是因為要攻破橢圓曲線加密就要面對離散對數難題,目前為止還沒有找到在多項式時間內解決的辦法,在演算法所用的空間足夠大的情況下,被認為是安全的。本文不涉及高深的數學理論,希望高中生都能看懂。
密碼學具有久遠的歷史,幾乎人人都可以構造出加解密的方法,比如說簡單地循環移位。古老或簡單的方法需要保密加密演算法和秘鑰。但是從歷史上長期的攻防斗爭來看,基於加密方式的保密並不可靠,同時,長期以來,秘鑰的傳遞也是一個很大的問題,往往面臨秘鑰泄漏或遭遇中間人攻擊的風險。
上世紀70年代,密碼學迎來了突破。Ralph C. Merkle在1974年首先提出非對稱加密的思想,兩年以後,Whitfield Diffie和Whitfield Diffie兩位學者以單向函數和單向暗門函數為基礎提出了具體的思路。隨後,大量的研究和演算法涌現,其中最為著名的就是RSA演算法和一系列的橢圓曲線演算法。
無論哪一種演算法,都是站在前人的肩膀之上,主要以素數為研究對象的數論的發展,群論和有限域理論為基礎。內容加密的秘鑰不再需要傳遞,而是通過運算產生,這樣,即使在不安全的網路中進行通信也是安全的。密文的破解依賴於秘鑰的破解,但秘鑰的破解面臨難題,對於RSA演算法,這個難題是大數因式分解,對於橢圓曲線演算法,這個難題是類離散對數求解。兩者在目前都沒有多項式時間內的解決辦法,也就是說,當位數增多時,難度差不多時指數級上升的。
那麼加解密如何在公私鑰體系中進行的呢?一句話,通過在一個有限域內的運算進行,這是因為加解密都必須是精確的。一個有限域就是一個具有有限個元素的集合。加密就是在把其中一個元素映射到另一個元素,而解密就是再做一次映射。而有限域的構成與素數的性質有關。
前段時間,黎曼猜想(與素數定理關系密切)被熱炒的時候,有一位區塊鏈項目的技術總監說橢圓曲線演算法與素數無關,不受黎曼猜想證明的影響,就完全是瞎說了。可見區塊鏈項目內魚龍混雜,確實需要好好洗洗。
比特幣及多數區塊鏈項目採用的公鑰體系都是橢圓曲線演算法,而非RSA。而介紹橢圓曲線演算法之前,了解一下離散對數問題對其安全性的理解很有幫助。
先來看一下 費馬小定理 :
原根 定義:
設(a, p)=1 (a與p互素),滿足
的最下正整數 l,叫作a模p的階,模p階為(最大值)p-1的整數a叫作模p的原根。
兩個定理:
基於此,我們可以看到,{1, 2, 3, … p-1} 就是一個有限域,而且定義運算 gi (mod p), 落在這個有限域內,同時,當i取0~p-2的不同數時,運算結果不同。這和我們在高中學到的求冪基本上是一樣的,只不過加了一層求模運算而已。
另一點需要說明的是,g的指數可以不限於0~p-2, 其實可以是所有自然數,但是由於
所以,所有的函數值都是在有限域內,而且是連續循環的。
離散對數定義:
設g為模p的原根,(a,p) = 1,
我們稱 i 為a(對於模p的原根g)的指數,表示成:
這里ind 就是 index的前3個字母。
這個定義是不是和log的定義很像?其實這也就是我們高中學到的對數定義的擴展,只不過現在應用到一個有限域上。
但是,這與實數域上的對數計算不同,實數域是一個連續空間,其上的對數計算有公式和規律可循,但往往很難做到精確。我們的加密體系裡需要精確,但是在一個有限域上的運算極為困難,當你知道冪值a和對數底g,求其離散對數值i非常困難。
當選擇的素數P足夠大時,求i在時間上和運算量上變得不可能。因此我們可以說i是不能被計算出來的,也就是說是安全的,不能被破解的。
比特幣的橢圓曲線演算法具體而言採用的是 secp256k1演算法。網上關於橢圓曲線演算法的介紹很多,這里不做詳細闡述,大家只要知道其實它是一個三次曲線(不是一個橢圓函數),定義如下:
那麼這里有參數a, b;取值不同,橢圓曲線也就不同,當然x, y 這里定義在實數域上,在密碼體系裡是行不通的,真正採用的時候,x, y要定義在一個有限域上,都是自然數,而且小於一個素數P。那麼當這個橢圓曲線定義好後,它反應在坐標系中就是一些離散的點,一點也不像曲線。但是,在設定的有限域上,其各種運算是完備的。也就是說,能夠通過加密運算找到對應的點,通過解密運算得到加密前的點。
同時,與前面講到的離散對數問題一樣,我們希望在這個橢圓曲線的離散點陣中找到一個有限的子群,其具有我們前面提到的遍歷和循環性質。而我們的所有計算將使用這個子群。這樣就建立好了我們需要的一個有限域。那麼這里就需要子群的階(一個素數n)和在子群中的基點G(一個坐標,它通過加法運算可以遍歷n階子群)。
根據上面的描述,我們知道橢圓曲線的定義包含一個五元祖(P, a, b, G, n, h);具體的定義和概念如下:
P: 一個大素數,用來定義橢圓曲線的有限域(群)
a, b: 橢圓曲線的參數,定義橢圓曲線函數
G: 循環子群中的基點,運算的基礎
n: 循環子群的階(另一個大素數,< P )
h:子群的相關因子,也即群的階除以子群的階的整數部分。
好了,是時候來看一下比特幣的橢圓曲線演算法是一個怎樣的橢圓曲線了。簡單地說,就是上述參數取以下值的橢圓曲線:
橢圓曲線定義了加法,其定義是兩個點相連,交與圖像的第三點的關於x軸的對稱點為兩個點的和。網上這部分內容已經有很多,這里不就其細節進行闡述。
但細心的同學可能有個疑問,離散對數問題的難題表現在求冪容易,但求其指數非常難,然而,橢圓曲線演算法中,沒有求冪,只有求乘積。這怎麼體現的是離散對數問題呢?
其實,這是一個定義問題,最初橢圓曲線演算法定義的時候把這種運算定義為求和,但是,你只要把這種運算定義為求積,整個體系也是沒有問題的。而且如果定義為求積,你會發現所有的操作形式上和離散對數問題一致,在有限域的選擇的原則上也是一致的。所以,本質上這還是一個離散對數問題。但又不完全是簡單的離散對數問題,實際上比一般的離散對數問題要難,因為這里不是簡單地求數的離散對數,而是在一個自定義的計算上求類似於離散對數的值。這也是為什麼橢圓曲線演算法採用比RSA所需要的(一般2048位)少得多的私鑰位數(256位)就非常安全了。
㈢ 比特幣如何算出來的
要想了解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
㈣ 詳解比特幣挖礦原理
可以將區塊鏈看作一本記錄所有交易的公開總帳簿(列表),比特幣網路中的每個參與者都把它看作一本所有權的權威記錄。
比特幣沒有中心機構,幾乎所有的完整節點都有一份公共總帳的備份,這份總帳可以被視為認證過的記錄。
至今為止,在主幹區塊鏈上,沒有發生一起成功的攻擊,一次都沒有。
通過創造出新區塊,比特幣以一個確定的但不斷減慢的速率被鑄造出來。大約每十分鍾產生一個新區塊,每一個新區塊都伴隨著一定數量從無到有的全新比特幣。每開采210,000個塊,大約耗時4年,貨幣發行速率降低50%。
在2016年的某個時刻,在第420,000個區塊被「挖掘」出來之後降低到12.5比特幣/區塊。在第13,230,000個區塊(大概在2137年被挖出)之前,新幣的發行速度會以指數形式進行64次「二等分」。到那時每區塊發行比特幣數量變為比特幣的最小貨幣單位——1聰。最終,在經過1,344萬個區塊之後,所有的共20,999,999.9769億聰比特幣將全部發行完畢。換句話說, 到2140年左右,會存在接近2,100萬比特幣。在那之後,新的區塊不再包含比特幣獎勵,礦工的收益全部來自交易費。
在收到交易後,每一個節點都會在全網廣播前對這些交易進行校驗,並以接收時的相應順序,為有效的新交易建立一個池(交易池)。
每一個節點在校驗每一筆交易時,都需要對照一個長長的標准列表:
交易的語法和數據結構必須正確。
輸入與輸出列表都不能為空。
交易的位元組大小是小於MAX_BLOCK_SIZE的。
每一個輸出值,以及總量,必須在規定值的范圍內 (小於2,100萬個幣,大於0)。
沒有哈希等於0,N等於-1的輸入(coinbase交易不應當被中繼)。
nLockTime是小於或等於INT_MAX的。
交易的位元組大小是大於或等於100的。
交易中的簽名數量應小於簽名操作數量上限。
解鎖腳本(Sig)只能夠將數字壓入棧中,並且鎖定腳本(Pubkey)必須要符合isStandard的格式 (該格式將會拒絕非標准交易)。
池中或位於主分支區塊中的一個匹配交易必須是存在的。
對於每一個輸入,如果引用的輸出存在於池中任何的交易,該交易將被拒絕。
對於每一個輸入,在主分支和交易池中尋找引用的輸出交易。如果輸出交易缺少任何一個輸入,該交易將成為一個孤立的交易。如果與其匹配的交易還沒有出現在池中,那麼將被加入到孤立交易池中。
對於每一個輸入,如果引用的輸出交易是一個coinbase輸出,該輸入必須至少獲得COINBASE_MATURITY (100)個確認。
對於每一個輸入,引用的輸出是必須存在的,並且沒有被花費。
使用引用的輸出交易獲得輸入值,並檢查每一個輸入值和總值是否在規定值的范圍內 (小於2100萬個幣,大於0)。
如果輸入值的總和小於輸出值的總和,交易將被中止。
如果交易費用太低以至於無法進入一個空的區塊,交易將被拒絕。
每一個輸入的解鎖腳本必須依據相應輸出的鎖定腳本來驗證。
以下挖礦節點取名為 A挖礦節點
挖礦節點時刻監聽著傳播到比特幣網路的新區塊。而這些新加入的區塊對挖礦節點有著特殊的意義。礦工間的競爭以新區塊的傳播而結束,如同宣布誰是最後的贏家。對於礦工們來說,獲得一個新區塊意味著某個參與者贏了,而他們則輸了這場競爭。然而,一輪競爭的結束也代表著下一輪競爭的開始。
驗證交易後,比特幣節點會將這些交易添加到自己的內存池中。內存池也稱作交易池,用來暫存尚未被加入到區塊的交易記錄。
A節點需要為內存池中的每筆交易分配一個優先順序,並選擇較高優先順序的交易記錄來構建候選區塊。
一個交易想要成為「較高優先順序」,需滿足的條件:優先值大於57,600,000,這個值的生成依賴於3個參數:一個比特幣(即1億聰),年齡為一天(144個區塊),交易的大小為250個位元組:
High Priority > 100,000,000 satoshis * 144 blocks / 250 bytes = 57,600,000
區塊中用來存儲交易的前50K位元組是保留給較高優先順序交易的。 節點在填充這50K位元組的時候,會優先考慮這些最高優先順序的交易,不管它們是否包含了礦工費。這種機制使得高優先順序交易即便是零礦工費,也可以優先被處理。
然後,A挖礦節點會選出那些包含最小礦工費的交易,並按照「每千位元組礦工費」進行排序,優先選擇礦工費高的交易來填充剩下的區塊。
如區塊中仍有剩餘空間,A挖礦節點可以選擇那些不含礦工費的交易。有些礦工會竭盡全力將那些不含礦工費的交易整合到區塊中,而其他礦工也許會選擇忽略這些交易。
在區塊被填滿後,內存池中的剩餘交易會成為下一個區塊的候選交易。因為這些交易還留在內存池中,所以隨著新的區塊被加到鏈上,這些交易輸入時所引用UTXO的深度(即交易「塊齡」)也會隨著變大。由於交易的優先值取決於它交易輸入的「塊齡」,所以這個交易的優先值也就隨之增長了。最後,一個零礦工費交易的優先值就有可能會滿足高優先順序的門檻,被免費地打包進區塊。
UTXO(Unspent Transaction Output) : 每筆交易都有若干交易輸入,也就是資金來源,也都有若干筆交易輸出,也就是資金去向。一般來說,每一筆交易都要花費(spend)一筆輸入,產生一筆輸出,而其所產生的輸出,就是「未花費過的交易輸出」,也就是 UTXO。
塊齡:UTXO的「塊齡」是自該UTXO被記錄到區塊鏈為止所經歷過的區塊數,即這個UTXO在區塊鏈中的深度。
區塊中的第一筆交易是筆特殊交易,稱為創幣交易或者coinbase交易。這個交易是由挖礦節點構造並用來獎勵礦工們所做的貢獻的。假設此時一個區塊的獎勵是25比特幣,A挖礦的節點會創建「向A的地址支付25.1個比特幣(包含礦工費0.1個比特幣)」這樣一個交易,把生成交易的獎勵發送到自己的錢包。A挖出區塊獲得的獎勵金額是coinbase獎勵(25個全新的比特幣)和區塊中全部交易礦工費的總和。
A節點已經構建了一個候選區塊,那麼就輪到A的礦機對這個新區塊進行「挖掘」,求解工作量證明演算法以使這個區塊有效。比特幣挖礦過程使用的是SHA256哈希函數。
用最簡單的術語來說, 挖礦節點不斷重復進行嘗試,直到它找到的隨機調整數使得產生的哈希值低於某個特定的目標。 哈希函數的結果無法提前得知,也沒有能得到一個特定哈希值的模式。舉個例子,你一個人在屋裡打檯球,白球從A點到達B點,但是一個人推門進來看到白球在B點,卻無論如何是不知道如何從A到B的。哈希函數的這個特性意味著:得到哈希值的唯一方法是不斷的嘗試,每次隨機修改輸入,直到出現適當的哈希值。
需要以下參數
• block的版本 version
• 上一個block的hash值: prev_hash
• 需要寫入的交易記錄的hash樹的值: merkle_root
• 更新時間: ntime
• 當前難度: nbits
挖礦的過程就是找到x使得
SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET
上式的x的范圍是0~2^32, TARGET可以根據當前難度求出的。
簡單打個比方,想像人們不斷扔一對色子以得到小於一個特定點數的游戲。第一局,目標是12。只要你不扔出兩個6,你就會贏。然後下一局目標為11。玩家只能扔10或更小的點數才能贏,不過也很簡單。假如幾局之後目標降低為了5。現在有一半機率以上扔出來的色子加起來點數會超過5,因此無效。隨著目標越來越小,要想贏的話,扔色子的次數會指數級的上升。最終當目標為2時(最小可能點數),只有一個人平均扔36次或2%扔的次數中,他才能贏。
如前所述,目標決定了難度,進而影響求解工作量證明演算法所需要的時間。那麼問題來了:為什麼這個難度值是可調整的?由誰來調整?如何調整?
比特幣的區塊平均每10分鍾生成一個。這就是比特幣的心跳,是貨幣發行速率和交易達成速度的基礎。不僅是在短期內,而是在幾十年內它都必須要保持恆定。在此期間,計算機性能將飛速提升。此外,參與挖礦的人和計算機也會不斷變化。為了能讓新區塊的保持10分鍾一個的產生速率,挖礦的難度必須根據這些變化進行調整。事實上,難度是一個動態的參數,會定期調整以達到每10分鍾一個新區塊的目標。簡單地說,難度被設定在,無論挖礦能力如何,新區塊產生速率都保持在10分鍾一個。
那麼,在一個完全去中心化的網路中,這樣的調整是如何做到的呢?難度的調整是在每個完整節點中獨立自動發生的。每2,016個區塊(2周產生的區塊)中的所有節點都會調整難度。難度的調整公式是由最新2,016個區塊的花費時長與20,160分鍾(兩周,即這些區塊以10分鍾一個速率所期望花費的時長)比較得出的。難度是根據實際時長與期望時長的比值進行相應調整的(或變難或變易)。簡單來說,如果網路發現區塊產生速率比10分鍾要快時會增加難度。如果發現比10分鍾慢時則降低難度。
為了防止難度的變化過快,每個周期的調整幅度必須小於一個因子(值為4)。如果要調整的幅度大於4倍,則按4倍調整。由於在下一個2,016區塊的周期不平衡的情況會繼續存在,所以進一步的難度調整會在下一周期進行。因此平衡哈希計算能力和難度的巨大差異有可能需要花費幾個2,016區塊周期才會完成。
舉個例子,當前A節點在挖277,316個區塊,A挖礦節點一旦完成計算,立刻將這個區塊發給它的所有相鄰節點。這些節點在接收並驗證這個新區塊後,也會繼續傳播此區塊。當這個新區塊在網路中擴散時,每個節點都會將它作為第277,316個區塊(父區塊為277,315)加到自身節點的區塊鏈副本中。當挖礦節點收到並驗證了這個新區塊後,它們會放棄之前對構建這個相同高度區塊的計算,並立即開始計算區塊鏈中下一個區塊的工作。
比特幣共識機制的第三步是通過網路中的每個節點獨立校驗每個新區塊。當新區塊在網路中傳播時,每一個節點在將它轉發到其節點之前,會進行一系列的測試去驗證它。這確保了只有有效的區塊會在網路中傳播。
每一個節點對每一個新區塊的獨立校驗,確保了礦工無法欺詐。在前面的章節中,我們看到了礦工們如何去記錄一筆交易,以獲得在此區塊中創造的新比特幣和交易費。為什麼礦工不為他們自己記錄一筆交易去獲得數以千計的比特幣?這是因為每一個節點根據相同的規則對區塊進行校驗。一個無效的coinbase交易將使整個區塊無效,這將導致該區塊被拒絕,因此,該交易就不會成為總賬的一部分。
比特幣去中心化的共識機制的最後一步是將區塊集合至有最大工作量證明的鏈中。一旦一個節點驗證了一個新的區塊,它將嘗試將新的區塊連接到到現存的區塊鏈,將它們組裝起來。
節點維護三種區塊:
· 第一種是連接到主鏈上的,
· 第二種是從主鏈上產生分支的(備用鏈),
· 第三種是在已知鏈中沒有找到已知父區塊的。
有時候,新區塊所延長的區塊鏈並不是主鏈,這一點我們將在下面「 區塊鏈分叉」中看到。
如果節點收到了一個有效的區塊,而在現有的區塊鏈中卻未找到它的父區塊,那麼這個區塊被認為是「孤塊」。孤塊會被保存在孤塊池中,直到它們的父區塊被節點收到。一旦收到了父區塊並且將其連接到現有區塊鏈上,節點就會將孤塊從孤塊池中取出,並且連接到它的父區塊,讓它作為區塊鏈的一部分。當兩個區塊在很短的時間間隔內被挖出來,節點有可能會以相反的順序接收到它們,這個時候孤塊現象就會出現。
選擇了最大難度的區塊鏈後,所有的節點最終在全網范圍內達成共識。隨著更多的工作量證明被添加到鏈中,鏈的暫時性差異最終會得到解決。挖礦節點通過「投票」來選擇它們想要延長的區塊鏈,當它們挖出一個新塊並且延長了一個鏈,新塊本身就代表它們的投票。
因為區塊鏈是去中心化的數據結構,所以不同副本之間不能總是保持一致。區塊有可能在不同時間到達不同節點,導致節點有不同的區塊鏈視角。解決的辦法是, 每一個節點總是選擇並嘗試延長代表累計了最大工作量證明的區塊鏈,也就是最長的或最大累計難度的鏈。
當有兩個候選區塊同時想要延長最長區塊鏈時,分叉事件就會發生。正常情況下,分叉發生在兩名礦工在較短的時間內,各自都算得了工作量證明解的時候。兩個礦工在各自的候選區塊一發現解,便立即傳播自己的「獲勝」區塊到網路中,先是傳播給鄰近的節點而後傳播到整個網路。每個收到有效區塊的節點都會將其並入並延長區塊鏈。如果該節點在隨後又收到了另一個候選區塊,而這個區塊又擁有同樣父區塊,那麼節點會將這個區塊連接到候選鏈上。其結果是,一些節點收到了一個候選區塊,而另一些節點收到了另一個候選區塊,這時兩個不同版本的區塊鏈就出現了。
分叉之前
分叉開始
我們看到兩個礦工幾乎同時挖到了兩個不同的區塊。為了便於跟蹤這個分叉事件,我們設定有一個被標記為紅色的、來自加拿大的區塊,還有一個被標記為綠色的、來自澳大利亞的區塊。
假設有這樣一種情況,一個在加拿大的礦工發現了「紅色」區塊的工作量證明解,在「藍色」的父區塊上延長了塊鏈。幾乎同一時刻,一個澳大利亞的礦工找到了「綠色」區塊的解,也延長了「藍色」區塊。那麼現在我們就有了兩個區塊:一個是源於加拿大的「紅色」區塊;另一個是源於澳大利亞的「綠色」。這兩個區塊都是有效的,均包含有效的工作量證明解並延長同一個父區塊。這個兩個區塊可能包含了幾乎相同的交易,只是在交易的排序上有些許不同。
比特幣網路中鄰近(網路拓撲上的鄰近,而非地理上的)加拿大的節點會首先收到「紅色」區塊,並建立一個最大累計難度的區塊,「紅色」區塊為這個鏈的最後一個區塊(藍色-紅色),同時忽略晚一些到達的「綠色」區塊。相比之下,離澳大利亞更近的節點會判定「綠色」區塊勝出,並以它為最後一個區塊來延長區塊鏈(藍色-綠色),忽略晚幾秒到達的「紅色」區塊。那些首先收到「紅色」區塊的節點,會即刻以這個區塊為父區塊來產生新的候選區塊,並嘗試尋找這個候選區塊的工作量證明解。同樣地,接受「綠色」區塊的節點會以這個區塊為鏈的頂點開始生成新塊,延長這個鏈。
分叉問題幾乎總是在一個區塊內就被解決了。網路中的一部分算力專注於「紅色」區塊為父區塊,在其之上建立新的區塊;另一部分算力則專注在「綠色」區塊上。即便算力在這兩個陣營中平均分配,也總有一個陣營搶在另一個陣營前發現工作量證明解並將其傳播出去。在這個例子中我們可以打個比方,假如工作在「綠色」區塊上的礦工找到了一個「粉色」區塊延長了區塊鏈(藍色-綠色-粉色),他們會立刻傳播這個新區塊,整個網路會都會認為這個區塊是有效的,如上圖所示。
所有在上一輪選擇「綠色」區塊為勝出者的節點會直接將這條鏈延長一個區塊。然而,那些選擇「紅色」區塊為勝出者的節點現在會看到兩個鏈: 「藍色-綠色-粉色」和「藍色-紅色」。 如上圖所示,這些節點會根據結果將 「藍色-綠色-粉色」 這條鏈設置為主鏈,將 「藍色-紅色」 這條鏈設置為備用鏈。 這些節點接納了新的更長的鏈,被迫改變了原有對區塊鏈的觀點,這就叫做鏈的重新共識 。因為「紅」區塊做為父區塊已經不在最長鏈上,導致了他們的候選區塊已經成為了「孤塊」,所以現在任何原本想要在「藍色-紅色」鏈上延長區塊鏈的礦工都會停下來。全網將 「藍色-綠色-粉色」 這條鏈識別為主鏈,「粉色」區塊為這條鏈的最後一個區塊。全部礦工立刻將他們產生的候選區塊的父區塊切換為「粉色」,來延長「藍色-綠色-粉色」這條鏈。
從理論上來說,兩個區塊的分叉是有可能的,這種情況發生在因先前分叉而相互對立起來的礦工,又幾乎同時發現了兩個不同區塊的解。然而,這種情況發生的幾率是很低的。單區塊分叉每周都會發生,而雙塊分叉則非常罕見。
比特幣將區塊間隔設計為10分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。
㈤ 比特幣多少算力是一個比
比特幣150000TH算力是一個比。
比特幣大陸專用礦機算力只有100TH,它一天只能挖1/1500個比特幣,那麼挖一個比需要100÷1/1500=150000TH算力。
算力是比特幣網路處理能力的度量單位,也稱為哈希率。當網路達到1Th/s的哈希率時,意味著它可以每秒進行1萬億次計算。
㈥ 挖比特幣的算力不應該是CPU么為何漲價的是顯卡
cpu就是幾個指揮官,gpu就是很多士兵,你挖礦是用指揮官還是用士兵?
首先,一開始比特幣是用cpu挖的,但是cpu核心數少,挖礦的演算法是簡單但是繁雜的演算法,就不需要很強的核心,需要大量的小核心同時計算,於是開發出了顯卡挖礦的方法。現在再後來,又開發出了專業礦機,只有計算功能,沒有顯示功能,算力超大,效率高。目前已經沒有人用顯卡挖比特幣了,都是專業的礦機。
顯卡基本上都在挖以太坊。不過目前也有以太坊礦機陸續上市,全網算力暴漲,以太坊2.0也提上日程,相信未來的顯卡將會降價。
CPU和GPU的內部結構的差異比較大,CPU採用了數量很少、但性能更強大的ALU(算術運算單元),而GPU則採用了數量龐大、結構卻更簡單的ALU,因此,CPU和GPU的性能特點也截然不同了:CPU側重於復雜的邏輯控制和通用串列運算,而GPU則偏向於處理大規模並發計算(圖形和圖像處理,也屬於這種運算),所以CPU和GPU屬於各司其職。
挖比特幣不需要很高的單核算力,需要的核心數,正好GPU核心數量多所以需要顯卡
小盆友,GPU可曾聽說?
這種問題不是應該去網路么?
㈦ 比特幣礦機日收益是多少 比特幣礦機收益怎麼計算
首先挖比特幣需要的成本基本可以分為三大塊:
1、 機器成本:購買礦機的成本。
2、 電力成本:機器挖礦所消耗的電力成本。
3、 輔助成本:人員維護、網路、線纜耗材、散熱等
簡單舉個例子,就拿市面上功耗較小的螞蟻s9的礦機來說算力是13.5t,功耗是1400w
礦機在二十四小時運行的情況下:1.4千瓦*24=33.6度
市面上功耗較大的機器神馬m3:算力是11.5t,功耗是2150w
二十四小時運行情況下單台耗電量:2.15千瓦*24=51.6度
大概就相當於比較節能的空調的用電量,但是比特幣礦機是需要二十四小時不間斷運行的,一年算下來就單台機器耗電量就是非常大的,家用電的階梯電價成本太高,在行情不好的時候甚至可能收益不夠電費支出的,所以目前挖礦都會選擇在礦場託管,可以拿到便宜電,降低挖礦成本價,三毛以下的價格是比較理想的價格,可以保持比特幣價格跌到低谷時期還有一定的收益。
就目前比特幣的挖礦難度來看:
btc每t收益:1TH/S*24H=0.00007087btc
按綜合12t的機器算力來算每天產量為:
0.00007087*12t=0.00085044btc
那麼單台挖到一個btc的時間需要:
1/0.00085044=1175天
十台礦機挖到一個btc的時間需要:
1/0.0085044=117天
一百台礦機挖到一個btc的時間需要:
1/0.085044=11.7天
也就是說按照目前的難度來算,大概單台礦機需要三年的時間可以產出一枚比特幣,十台礦機需要3.9個月可挖一個比特幣,一百台礦機只需要11.7天可挖出一個比特幣,投入單台機器成本價8500左右,十台在85000左右,一百台投入850000,不到一百萬,一個月收入超過兩枚比特幣,按目前的幣價來算大概價格十二萬,如此看來,目前比特幣挖礦的收益雖然不及之前,但相較於其他投資項目還是很可觀的。
然而這些收益不包括扣除電費成本,和後期的機器維護,所以挖礦的前提也是要找好便宜電費的礦場。量大的話更需要找到一個安全靠譜、穩定的礦場,更主要的是需要便宜的電費來拉低成本價。
㈧ btcusd用ea交易怎麼設置參數
ea的參數設置會直接決定交易成績。同一策略編寫的ea,不同的參數搭配交易出來的結果是完全不同的。比如最簡單的兩條均線ea,如果採用金叉做多死叉做空,那麼兩條均線的參數設為5、10跟20、60兩種則開倉信號就存在很大區別。在比如同樣用5、10兩條均線交易,而止損止盈分別用150、200和300、600兩種,則訂單被止損或被止盈的結果也完全不同。由此可見參數設置在使用ea中的重要性。不管在測試還是在交易,我們都可以把不同的參數搭配保存為文件供後期直接調用或修改研究,這種保存的文件即為ea參數設置文件,在mt4中設置文件以.set為後綴。在MT4上方菜單「文件-打開數據文件夾-打開MQL4文件夾-接著打開Presets文件夾」即為set後綴的設置文件存放文件夾。set設置文件的保存和載入,EA文件在調用到圖表時,大部分都有一個屬性框,屬性框中有一欄為「輸入參數」就是指可以修改的設置參數(個別ea如果沒有「輸入參數」選項,那就談不上參數設置及保存文件了)。在這一欄的右下角可以看到「載入」「保存」兩個按鈕,設置好參數後點擊保存,即可保存為set後綴的設置文件,其中文件名可以自由設置。需要調用已經保存的設置文件,點擊「載入」然後選擇文件「打開」即可。設置文件的修改,設置文件的修改很簡單,就是先將設置文件載入到「輸入參數」框中修改,修改好了再次保存就可以。ea在測試的時候即可按照上面步驟不斷修改參數搭配進行優化。將優化後的參數搭配保存好,在進行實盤交易時直接調用就可以了。這方面可以根據個人經驗進行多種延伸拓展,比如大周期震盪可以用一套參數,大周期走趨勢時可以用另外一套參數,最終的目的都是為了延長ea的盈利能力和盈利周期。
㈨ 比特幣到底是什麼
比特幣(Bitcoin)是一種基於去中心化,採用點對點網路與共識主動性,開放源代碼,以區塊鏈作為底層技術的虛擬加密貨幣,由中本聰在2008年提出,2009年誕生。 比特幣沒有一個集中的發行方,由網路節點的計算生成,可以在任意一台接入互聯網的電腦上買賣,並且具有極強的稀缺性。
從比特幣的本質說起,比特幣的本質其實就是一堆復雜演算法所生成的特解。特解是指方程組所能得到有限個解中的一組。而每一個特解都能解開方程並且是唯一的。以鈔票來比喻的話,比特幣就是鈔票的冠字型大小碼,你知道了某張鈔票上的冠字型大小碼,你就擁有了這張鈔票。而挖礦的過程就是通過龐大的計算量不斷的去尋求這個方程組的特解,這個方程組被設計成了只有 2100 萬個特解,所以比特幣的上限就是 2100 萬個。
要挖掘比特幣可以下載專用的比特幣運算工具,然後注冊各種合作網站,把注冊來的用戶名和密碼填入計算程序中,再點擊運算就正式開始。完成Bitcoin客戶端安裝後,可以直接獲得一個Bitcoin地址,當別人付錢的時候,只需要自己把地址貼給別人,就能通過同樣的客戶端進行付款。在安裝好比特幣客戶端後,它將會分配一個私鑰和一個公鑰。需要備份你包含私鑰的錢包數據,才能保證財產不丟失。如果不幸完全格式化硬碟,個人的比特幣將會完全丟失。
貨幣特徵
去中心化:比特幣是第一種分布式的虛擬貨幣,整個網路由用戶構成,沒有中央銀行。去中心化是比特幣安全與自由的保證 。
全世界流通:比特幣可以在任意一台接入互聯網的電腦上管理。不管身處何方,任何人都可以挖掘、購買、出售或收取比特幣。
專屬所有權:操控比特幣需要私鑰,它可以被隔離保存在任何存儲介質。除了用戶自己之外無人可以獲取。
低交易費用:可以免費匯出比特幣,但最終對每筆交易將收取約1比特分的交易費以確保交易更快執行。
無隱藏成本:作為由A到B的支付手段,比特幣沒有繁瑣的額度與手續限制。知道對方比特幣地址就可以進行支付。
跨平台挖掘:用戶可以在眾多平台上發掘不同硬體的計算能力。
優點
完全去處中心化,沒有發行機構,也就不可能操縱發行數量。其發行與流通,是通過開源的p2p演算法實現。
匿名、免稅、免監管。
健壯性。比特幣完全依賴p2p網路,無發行中心,所以外部無法關閉它。比特幣價格可能波動、崩盤,多國政府可能宣布它非法,但比特幣和比特幣龐大的p2p網路不會消失。
無國界、跨境。跨國匯款,會經過層層外匯管制機構,而且交易記錄會被多方記錄在案。但如果用比特幣交易,直接輸入數字地址,點一下滑鼠,等待p2p網路確認交易後,大量資金就過去了。不經過任何管控機構,也不會留下任何跨境交易記錄。
山寨者難於生存。由於比特幣演算法是完全開源的,誰都可以下載到源碼,修改些參數,重新編譯下,就能創造一種新的p2p貨幣。但這些山寨貨幣很脆弱,極易遭到51%攻擊。任何個人或組織,只要控制一種p2p貨幣網路51%的運算能力,就可以隨意操縱交易、幣值,這會對p2p貨幣構成毀滅性打擊。很多山寨幣,就是死在了這一環節上。而比特幣網路已經足夠健壯,想要控制比特幣網路51%的運算力,所需要的CPU/GPU數量將是一個天文數字。
缺點
交易平台的脆弱性。比特幣網路很健壯,但比特幣交易平台很脆弱。交易平台通常是一個網站,而網站會遭到黑客攻擊,或者遭到主管部門的關閉。
交易確認時間長。比特幣錢包初次安裝時,會消耗大量時間下載歷史交易數據塊。而比特幣交易時,為了確認數據准確性,會消耗一些時間,與p2p網路進行交互,得到全網確認後,交易才算完成。
價格波動極大。由於大量炒家介入,導致比特幣兌換現金的價格如過山車一般起伏。使得比特幣更適合投機,而不是匿名交易。
大眾對原理不理解,以及傳統金融從業人員的抵制。活躍網民了解p2p網路的原理,知道比特幣無法人為操縱和控制。但大眾並不理解,很多人甚至無法分清比特幣和Q幣的區別。「沒有發行者」是比特幣的優點,但在傳統金融從業人員看來,「沒有發行者」的貨幣毫無價值。