国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

區(qū)塊鏈的技術(shù)

這篇具有很好參考價(jià)值的文章主要介紹了區(qū)塊鏈的技術(shù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

區(qū)塊鏈的技術(shù)定義

  1. 區(qū)塊鏈的存儲(chǔ)基于分布式數(shù)據(jù)庫(kù);
  2. 數(shù)據(jù)庫(kù)是區(qū)塊鏈的數(shù)據(jù)載體,區(qū)塊鏈?zhǔn)墙灰椎臉I(yè)務(wù)邏輯載體;
  3. 區(qū)塊鏈按時(shí)間序列化區(qū)塊數(shù)據(jù),整個(gè)網(wǎng)絡(luò)有一個(gè)最終確定狀態(tài);
  4. 區(qū)塊鏈只對(duì)添加有效,對(duì)其他操作無(wú)效;
  5. 交易基于非對(duì)稱加密的公私鑰驗(yàn)證;
  6. 區(qū)塊鏈網(wǎng)絡(luò)要求拜占庭將軍容錯(cuò);
  7. 共識(shí)算法能夠“解決”雙花問(wèn)題。

區(qū)塊鏈的核心技術(shù)組成

P2P 網(wǎng)絡(luò)協(xié)議

一般 P2P 網(wǎng)絡(luò)技術(shù)要解決兩個(gè)主要問(wèn)題,第一是資源定位,第二是資源獲取,其中節(jié)點(diǎn)發(fā)現(xiàn)和局域網(wǎng)穿透是屬于資源定位問(wèn)題,節(jié)點(diǎn)交互協(xié)議是屬于資源獲取問(wèn)題。

網(wǎng)絡(luò)連接

區(qū)塊鏈其實(shí)是基于 TCP/IP 網(wǎng)絡(luò)協(xié)議的,這與 HTTP 協(xié)議、SMTP 協(xié)議是處在同一層,也就是應(yīng)用層。

以 HTTP 協(xié)議為代表的、與服務(wù)端的交互模式在區(qū)塊鏈上被徹底打破了,變更為完全的點(diǎn)對(duì)點(diǎn)拓?fù)浣Y(jié)構(gòu),這也是以太坊提出的 Web3.0 的由來(lái)。

比特幣的 P2P 網(wǎng)絡(luò)是一個(gè)非常復(fù)雜的結(jié)構(gòu),考慮到礦池內(nèi)部的挖礦交互協(xié)議與輕節(jié)點(diǎn)。僅僅討論全節(jié)點(diǎn)這種場(chǎng)景下的 P2P 網(wǎng)絡(luò)發(fā)現(xiàn)與路由。比特幣的 P2P 網(wǎng)絡(luò)基于 TCP 構(gòu)建,主網(wǎng)默認(rèn)通信端口為 8333。

以太坊的 P2P 網(wǎng)絡(luò)則與比特幣不太相同,以太坊 P2P 網(wǎng)絡(luò)是一個(gè)完全加密的網(wǎng)絡(luò),提供 UDP 和 TCP 兩種連接方式,主網(wǎng)默認(rèn) TCP 通信端口是 30303,推薦的 UDP 發(fā)現(xiàn)端口為 30301。

拓?fù)浣Y(jié)構(gòu)

P2P 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)有很多種,有些是中心化拓?fù)?,有些是半中心化拓?fù)?,有些是全分布式拓?fù)浣Y(jié)構(gòu)。

比特幣全節(jié)點(diǎn)組成的網(wǎng)絡(luò)是一種全分布式的拓?fù)浣Y(jié)構(gòu),節(jié)點(diǎn)與節(jié)點(diǎn)之間的傳輸過(guò)程更接近“泛洪算法”,即:交易從某個(gè)節(jié)點(diǎn)產(chǎn)生,接著廣播到臨近節(jié)點(diǎn),臨近節(jié)點(diǎn)一傳十十傳百,直至傳播到全網(wǎng)。

全節(jié)點(diǎn)與 SPV 簡(jiǎn)化支付驗(yàn)證客戶端之間的交互模式,更接近半中心化的拓?fù)浣Y(jié)構(gòu),也就是 SPV 節(jié)點(diǎn)可以隨機(jī)選擇一個(gè)全節(jié)點(diǎn)進(jìn)行連接,這個(gè)全節(jié)點(diǎn)會(huì)成為 SPV 節(jié)點(diǎn)的代理,幫助 SPV 節(jié)點(diǎn)廣播交易。

節(jié)點(diǎn)發(fā)現(xiàn)

節(jié)點(diǎn)發(fā)現(xiàn)是任何區(qū)塊鏈節(jié)點(diǎn)接入?yún)^(qū)塊鏈 P2P 網(wǎng)絡(luò)的第一步。

初始節(jié)點(diǎn)發(fā)現(xiàn)

在比特幣網(wǎng)絡(luò)中,初始節(jié)點(diǎn)發(fā)現(xiàn)一共有兩種方式。

第一種叫做 DNS-seed,又稱 DNS 種子節(jié)點(diǎn),DNS 就是中心化域名查詢服務(wù),比特幣的社區(qū)維護(hù)者會(huì)維護(hù)一些域名。

第二種方式就是,代碼中硬編碼( hard-code )了一些地址,這些地址我們稱之為種子節(jié)點(diǎn)(seed-node),當(dāng)基于DNS的種子節(jié)點(diǎn)全部失效時(shí),會(huì)嘗試連接hard-code的種子節(jié)點(diǎn)。

啟動(dòng)后節(jié)點(diǎn)發(fā)現(xiàn)

在 Bitcoin 的網(wǎng)絡(luò)中,一個(gè)節(jié)點(diǎn)可以將自己維護(hù)的對(duì)等節(jié)點(diǎn)列表 (peer list) 發(fā)送給臨近節(jié)點(diǎn),所以在初始節(jié)點(diǎn)發(fā)現(xiàn)之后,你的節(jié)點(diǎn)要做的第一件事情就是向?qū)Ψ揭斜?/p>

所以在每次需要發(fā)送協(xié)議消息的時(shí)候,它會(huì)花費(fèi)固定的時(shí)間嘗試和已存的節(jié)點(diǎn)列表中的節(jié)點(diǎn)建立鏈接,如果有任何一個(gè)節(jié)點(diǎn)在超時(shí)之前可以連接上,就不用去 DNS seed 獲取地址,一般來(lái)說(shuō),這種可能性很小,尤其是全節(jié)點(diǎn)數(shù)目非常多的情況下。

在以太坊網(wǎng)絡(luò)中,也會(huì)維護(hù)類似的一個(gè)節(jié)點(diǎn)列表 (NodeTable),但是這個(gè)節(jié)點(diǎn)列表與比特幣的簡(jiǎn)單維護(hù)不同,它采用了 P2P 網(wǎng)絡(luò)協(xié)議中一個(gè)成熟的算法,叫做 Kademlia 網(wǎng)絡(luò),簡(jiǎn)稱 KAD 網(wǎng)絡(luò)。

它使用了 DHT 來(lái)定位資源,全稱 Distributed Hash Table,中文名為分布式哈希表。KAD 網(wǎng)絡(luò)會(huì)維護(hù)一個(gè)路由表,用于快速定位目標(biāo)節(jié)點(diǎn)。由于 KAD 網(wǎng)絡(luò)基于 UDP 通信協(xié)議,所以以太坊節(jié)點(diǎn)的節(jié)點(diǎn)發(fā)現(xiàn)是基于 UDP 的,如果找到節(jié)點(diǎn)以后,數(shù)據(jù)交互又會(huì)切換到 TCP 協(xié)議上。

黑名單與長(zhǎng)連接

公有區(qū)塊鏈面臨的網(wǎng)絡(luò)環(huán)境是非常開放的,任何人只要下載好錢包,打開運(yùn)行就進(jìn)入了這個(gè) P2P 網(wǎng)絡(luò),這也會(huì)帶來(lái)被攻擊的可能。

所以在比特幣的代碼中,會(huì)有一段去控制邏輯,你可以手動(dòng)將你認(rèn)為可疑的節(jié)點(diǎn)移除并加入禁止列表,同時(shí)去配置可信的節(jié)點(diǎn)。當(dāng)然,以上并不屬于客戶端的標(biāo)準(zhǔn)協(xié)議的一部分,任何人都可以實(shí)現(xiàn)屬于自己的 P2P 網(wǎng)絡(luò)層。

以太坊上有針對(duì)賬戶進(jìn)行的黑名單處理,但是這屬于業(yè)務(wù)層。

局域網(wǎng)穿透

當(dāng)你在局域網(wǎng)運(yùn)行一個(gè)區(qū)塊鏈節(jié)點(diǎn),在公網(wǎng)是發(fā)現(xiàn)不了的,公網(wǎng)上的節(jié)點(diǎn)只能被動(dòng)接受連接,并不能主動(dòng)發(fā)起連接

NAT 技術(shù)非常常見,這里使用的是源 NAT,簡(jiǎn)而言之就是替換 TCP 報(bào)文中的源地址并映射到內(nèi)網(wǎng)地址。

UPnP 是通用即插即用(Universal Plug and Play)的縮寫,它主要用于設(shè)備的智能互聯(lián)互通,所有在網(wǎng)絡(luò)上的設(shè)備馬上就能知道有新設(shè)備加入。

這些設(shè)備彼此之間能互相通信,更能直接使用或者控制它,一切都不需要人工設(shè)置。

比特幣和以太坊均使用了 UPnP 協(xié)議作為局域網(wǎng)穿透工具,只要局域網(wǎng)中的路由設(shè)備支持 NAT 網(wǎng)關(guān)功能、支持 UPnP 協(xié)議,即可將你的區(qū)塊鏈節(jié)點(diǎn)自動(dòng)映射到公網(wǎng)上。

節(jié)點(diǎn)交互協(xié)議

一旦節(jié)點(diǎn)建立連接以后,節(jié)點(diǎn)之間的交互是遵循一些特定的命令,這些命令寫在消息的頭部,消息體寫的則是消息內(nèi)容。

命令分為兩種,一種是請(qǐng)求命令,一種是數(shù)據(jù)交互命令。

節(jié)點(diǎn)連接完成要做的第一件事情叫做握手操作。這一點(diǎn)在比特幣和以太坊上的流程是差不多的,就是相互問(wèn)候一下,提供一些簡(jiǎn)要信息。

比如先交換一下版本號(hào),看看是否兼容。只是以太坊為握手過(guò)程提供了對(duì)稱加密,而比特幣沒有。

握手完畢之后,無(wú)論交互什么信息,都是需要保持長(zhǎng)連接的,在比特幣上有 PING/PONG 這兩種類型的消息,這很明顯就是用于保持節(jié)點(diǎn)之間長(zhǎng)連接的心跳而設(shè)計(jì)的;而在以太坊的設(shè)計(jì)中,將 PING/PONG 協(xié)議移到了節(jié)點(diǎn)發(fā)現(xiàn)的過(guò)程中。

請(qǐng)求命令一般分為發(fā)起者請(qǐng)求,比如比特幣中的 getaddr 命令是為了獲取對(duì)方的可用節(jié)點(diǎn)列表,inv 命令則提供了數(shù)據(jù)傳輸,消息體中會(huì)包含一個(gè)數(shù)據(jù)向量。

區(qū)塊鏈最重要的功能就是同步區(qū)塊鏈,而同步區(qū)塊恰巧是最考驗(yàn) P2P 網(wǎng)絡(luò)能力的。區(qū)塊同步方式分為兩種,第一種叫做 HeaderFirst,它提供了區(qū)塊頭先同步,同步完成以后再?gòu)钠渌?jié)點(diǎn)獲得區(qū)塊體。

第二種叫做 BlockFirst,這種區(qū)塊同步的方式比較簡(jiǎn)單粗暴,就是從其他節(jié)點(diǎn)獲取區(qū)塊必須是完整的。第一種方案提供了較好的交互過(guò)程,減輕了網(wǎng)絡(luò)負(fù)擔(dān)。這兩種同步方式會(huì)直接體現(xiàn)在節(jié)點(diǎn)交互協(xié)議上,他們使用的命令邏輯完全不同。

共識(shí)算法與分布式一致性算法

經(jīng)典的分布式一致性算法

經(jīng)典分布式一致性算法有 Raft 協(xié)議,Raft 協(xié)議是一種強(qiáng) Leader 的一致性算法,它的吞吐量基本就是 Leader 的吞吐量,它無(wú)法抵御節(jié)點(diǎn)惡意篡改數(shù)據(jù)的攻擊。

稍微復(fù)雜一點(diǎn)的就是 Paxos 協(xié)議,Paxos 能提供不同場(chǎng)合不同種類的一致性算法,所以 Paxos 有很多變種,經(jīng)典 Paxos 是 Leaderless 的,有變種是強(qiáng) Leader 型的,叫做 Fast Paxos

以上兩種都是不提供拜占庭容錯(cuò)的系統(tǒng)

PBFT 全稱實(shí)用性拜占庭容錯(cuò)系統(tǒng)(Practical Byzantine Fault Tolerance, PBFT),PBFT 是一種狀態(tài)機(jī),要求所有節(jié)點(diǎn)共同維護(hù)一個(gè)狀態(tài),所有節(jié)點(diǎn)采取的行動(dòng)一致,PBFT 非常適合聯(lián)盟鏈等對(duì)性能具有較高要求的場(chǎng)合,超級(jí)賬本項(xiàng)目中的 Fabric 框架默認(rèn)采用的就是 PBFT 的修改版本。

區(qū)塊鏈共識(shí)算法

區(qū)塊鏈的共識(shí)算法,在某些場(chǎng)合直接稱作基于經(jīng)濟(jì)學(xué)的博弈算法,以區(qū)別于經(jīng)典分布式一致性算法思路,它的整體思路就是讓攻擊者的攻擊成本遠(yuǎn)遠(yuǎn)大于收益

區(qū)塊鏈中的共識(shí)算法目前具有工業(yè)成熟度的是 PoW,另外兩種比較成熟的是 PoS 和 DPoS,其次還有一些變種和單一幣種使用的共識(shí)算法,例如 Ripple 共識(shí)、PoC 共識(shí)(概念性證明)、PoE 共識(shí)(存在性證明)。

在使用 PoW 共識(shí)算法的情況下,容錯(cuò)閾值是 50%,而 PBFT 及其變種的容錯(cuò)閾值是 33% 左右,這里的百分比是指作弊節(jié)點(diǎn)占全網(wǎng)節(jié)點(diǎn)的比例。

PoX 類的算法其實(shí)都延續(xù)了 PoW 的設(shè)計(jì)理念,相比較經(jīng)典分布式一致性算法,PoX 類算法通過(guò)概率選擇記賬者降低了潛在的提案者,另外是延長(zhǎng)了達(dá)成最終一致性的時(shí)間。

第一條降低了系統(tǒng)通信復(fù)雜度,每次記賬系統(tǒng)的確定性其實(shí)是概率確定的,又由于被選中需要付出成本,此處才提高了記賬成本閾值,結(jié)合區(qū)塊鏈的基礎(chǔ)代幣設(shè)計(jì),是一個(gè)非常天才的想法。

PoW共識(shí)

PoW 全稱 Proof of Work,中文名是工作量證明,PoW 共識(shí)機(jī)制其實(shí)是一種設(shè)計(jì)思路,而不是一種具體的實(shí)現(xiàn)。

PoW 的核心設(shè)計(jì)思路是提出一個(gè)計(jì)算難題,但是這個(gè)難題答案的驗(yàn)證過(guò)程是非常容易的,這種特性我們稱之為計(jì)算不對(duì)稱特性

PoW 挖礦算法大致分為兩個(gè)大類,第一類叫做計(jì)算困難,第二類叫內(nèi)存困難。

從理論上來(lái)看,PoW 會(huì)一直有 51% 算力攻擊的問(wèn)題,即攻擊者只需要購(gòu)買超過(guò)全網(wǎng) 51% 算力設(shè)備,即可發(fā)起“雙花攻擊”,甚至“重放攻擊”等多種高收益攻擊,這個(gè)問(wèn)題目前沒有解決方案。

除了 51% 攻擊,PoW 共識(shí)還有自私挖礦的問(wèn)題,自私挖礦是一種特殊的攻擊類型,不會(huì)影響區(qū)塊鏈正常運(yùn)轉(zhuǎn),但是會(huì)形成礦霸,間接造成 51% 攻擊

PoW 挖礦的基本邏輯和步驟Hash (block_header) < Target所有礦工的目標(biāo)值是一樣的,只要計(jì)算結(jié)果哈希小于目標(biāo)值即可

PoS共識(shí)機(jī)制

PoS 全稱是 Proof of Stake,中文翻譯為權(quán)益證明

CoinAge,字面意思就是幣數(shù)量乘以天數(shù)

PoS 則將計(jì)算能力更換為財(cái)產(chǎn)證明,就是節(jié)點(diǎn)所擁有的幣齡越多,獲得的記賬的概率就越大。這有點(diǎn)像公司的股權(quán)結(jié)構(gòu),股權(quán)占比大的合伙人話語(yǔ)權(quán)越重。

PoS 系統(tǒng)中,這個(gè)公式變更為Hash (block_header) < Target * CoinAge多引入了一個(gè)變量叫做 CoinAge,也就是幣齡,這個(gè)變量為會(huì)造成每個(gè)礦工看到的目標(biāo)值不一樣,如果你的幣齡越大,也就意味著你的獲得答案越容易。這里的 Target 與 PoW 一致,與全網(wǎng)難度成反比,用來(lái)控制出塊速度的。

PoS 似乎完美地解決了 PoW 挖礦資源浪費(fèi)的問(wèn)題,甚至還順帶解決了 51% 攻擊的問(wèn)題(如果挖礦者發(fā)起 51% 攻擊,就需要擁有全網(wǎng) 51% 的幣或幣齡,這幾乎不可能辦到,即使你成功地實(shí)施了 51% 攻擊,那么也意味著作為全網(wǎng)最大的持幣大戶的你,損失也會(huì)最大)

PoS 遇到的第一個(gè)問(wèn)題就是幣發(fā)行的問(wèn)題。一開始的時(shí)候,只有創(chuàng)始區(qū)塊上有幣,意味著只有這一個(gè)節(jié)點(diǎn)可以挖礦,所以讓幣分散出去才能讓整個(gè)網(wǎng)絡(luò)壯大,那么如何分散出去又是另外一個(gè)難題了。早期 PoS 幣種基本都采用了分階段挖礦,即第一階段是 PoW 挖礦,到第二階段才是 PoS 挖礦。隨著 ERC20 類型的標(biāo)準(zhǔn)合約代幣的出現(xiàn),這個(gè)問(wèn)題被解決了,不再需要第一階段改成 PoW,也可以將代幣分散出去。

第二個(gè)問(wèn)題是由于幣齡是與時(shí)間掛鉤的,這也意味著用戶可以無(wú)限囤積一定的幣,等過(guò)了很久再一次性挖礦發(fā)起攻擊;所以解決方案是:PoS 機(jī)制需要引入一個(gè)時(shí)間上限來(lái)控制時(shí)間因素的自然增長(zhǎng)。

第三個(gè)問(wèn)題是雖然引入了時(shí)間上下限,用戶還是傾向于囤積代幣,這會(huì)造成幣流通的不充分;基于此,所以瑞迪幣引入了幣齡按時(shí)間衰減,構(gòu)造了權(quán)益速度證明,鼓勵(lì)用戶流動(dòng)代幣,而不是傾向于囤積代幣。

第四個(gè)問(wèn)題是離線攻擊,即使引入了時(shí)間上下限,時(shí)間仍然是自然流動(dòng)的,也就是可以不需要求挖礦節(jié)點(diǎn)長(zhǎng)時(shí)間在線。挖礦是可以離線的,這簡(jiǎn)直是災(zāi)難,所以任意一個(gè) PoS 機(jī)制的實(shí)踐形式都必須避免這個(gè)問(wèn)題,因?yàn)榫W(wǎng)絡(luò)節(jié)點(diǎn)數(shù)量的多少直接關(guān)系到區(qū)塊鏈網(wǎng)絡(luò)的健壯性。

無(wú)成本利益問(wèn)題無(wú)論以幣齡還是幣數(shù)量作為 PoS 的參數(shù),都無(wú)法避免,這也就意味著分叉非常方便。

由于以太坊部分采用了 PoS 共識(shí),它的名字叫做 Casper,它必須解決上述無(wú)成本利益問(wèn)題攻擊。所以 Casper 協(xié)議要求PoS 礦工需通過(guò)抵押保證金的方法對(duì)共識(shí)結(jié)果進(jìn)行下注

DPoS共識(shí)機(jī)制

DPoS 全稱是 Delegated Proof of Stake,中文翻譯過(guò)來(lái)是代理權(quán)益證明。

DPoS 與其他共識(shí)機(jī)制的第一個(gè)區(qū)別,就是交易確認(rèn)時(shí)間短

DPoS 共識(shí)算法就是將 PoS 共識(shí)算法中的記賬者轉(zhuǎn)換為指定節(jié)點(diǎn)數(shù)組成的小圈子,而不是所有人都可以參與記賬,這個(gè)圈子可能是 21 個(gè)節(jié)點(diǎn),也有可能是 101 個(gè)節(jié)點(diǎn),這一點(diǎn)取決于設(shè)計(jì),只有這個(gè)圈子中的節(jié)點(diǎn)才能獲得記賬權(quán)。這將極大地提高系統(tǒng)的吞吐量,因?yàn)楦俚墓?jié)點(diǎn)也就意味著網(wǎng)絡(luò)和節(jié)點(diǎn)的可控。

TPS = transactions / block_time

TPS 表示區(qū)塊鏈每秒能確認(rèn)的交易數(shù), transactions 是由區(qū)塊大小 block_size 和平均每筆交易大小決定的,而區(qū)塊大小受全網(wǎng)網(wǎng)絡(luò)狀態(tài) network_bandwidth 限制,也是由記賬節(jié)點(diǎn)之間物理帶寬 witness_performance 決定的。

記賬節(jié)點(diǎn)的個(gè)數(shù) witness_count 直接決定了物理帶寬的上限,因?yàn)橛涃~節(jié)點(diǎn)數(shù)量越多,則對(duì)物理帶寬要求越高,對(duì)網(wǎng)絡(luò)的穩(wěn)定性要求也越高。

公式變成了下面的樣子

TPS = (block_size *network_bandwidth* witness_performance) /
(block_time * witness_count)

要提高 TPS,可以提升分子項(xiàng),降低分母項(xiàng),也就是增大區(qū)塊大小 block_size、提升記賬節(jié)點(diǎn)網(wǎng)絡(luò)帶寬 network_bandwidth、提升記賬節(jié)點(diǎn)處理性能 witness_performance,減小區(qū)塊時(shí)間 block_time、減小記賬節(jié)點(diǎn)數(shù)量 witness_count。

分子項(xiàng)基本受限于物理資源的上限,目前工業(yè)水平制造的物理資源的使用上限基本就是整個(gè)項(xiàng)的上限了,所以可操作性不大。

而分母項(xiàng)是由共識(shí)算法決定的,所以從區(qū)塊時(shí)間,以及記賬節(jié)點(diǎn)數(shù)入手,DPoS 算法便正是從這兩項(xiàng)著手的。

首先改動(dòng)的便是限制記賬節(jié)點(diǎn)的數(shù)量,也就是見證人的數(shù)量。

在 PoW 和 PoS 中可以看到,成為記賬節(jié)點(diǎn)是無(wú)需門檻的,你可以隨時(shí)參與挖礦,隨時(shí)退出。

那這會(huì)帶來(lái)什么問(wèn)題呢,首先無(wú)法確定記賬節(jié)點(diǎn)的數(shù)量,其次無(wú)法確定記賬節(jié)點(diǎn)之間的網(wǎng)絡(luò)環(huán)境,記賬節(jié)點(diǎn)數(shù)越多網(wǎng)絡(luò)環(huán)境越復(fù)雜,這些不確定性會(huì)增大網(wǎng)絡(luò)分區(qū)的概率,從而導(dǎo)致區(qū)塊鏈分叉。

如果我們事先規(guī)定好記賬節(jié)點(diǎn)的數(shù)量,接著讓全網(wǎng)所有節(jié)點(diǎn)可以投票決定哪些節(jié)點(diǎn)可以成為記賬節(jié)點(diǎn),這樣就限制并減小了分母項(xiàng) witness_count,這個(gè)過(guò)程稱作投票選舉。

因?yàn)橛涃~節(jié)點(diǎn)數(shù)量不多,那么可以在共識(shí)算法中可以規(guī)定出塊時(shí)間為一個(gè)固定值,這個(gè)值可以很小,通過(guò)輪流出塊的方式來(lái)進(jìn)行記賬。

DPoS 算法確立兩個(gè)原則:

  • 投票選舉過(guò)程一定要保證最大權(quán)益所有者最終能控制全網(wǎng),因?yàn)橐坏┏隽藛?wèn)題,他們的損失最大
  • 與 PoW、PoS 一樣,所有節(jié)點(diǎn)僅承認(rèn)“最長(zhǎng)”鏈

DPoS 是社區(qū)治理加上共識(shí)算法,不再是單純的技術(shù)共識(shí),這是與 PoW、PoS 算法最大的不同。

DPoS 的基本假設(shè)是相信節(jié)點(diǎn)是好的,所以盡可能快速選擇記賬節(jié)點(diǎn),而把問(wèn)題發(fā)生后的修復(fù)過(guò)程推遲到投票中,可以說(shuō) DPoS 并不考慮拜占庭容錯(cuò)問(wèn)題,把拜占庭容錯(cuò)推給了社區(qū)治理,而在社區(qū)治理上可歸納為一切皆投票。

加密簽名算法

哈希算法

哈希算法具有下面的 4 種特性。

  1. **原像不可逆。**原像不可逆是指對(duì)于任意給定的 h,都無(wú)法依據(jù) h 自身的信息推導(dǎo)出 z。
  2. **難題友好性。**難題友好性通俗的理解就是如果要得到難題答案,你只能暴力枚舉,沒有比這更好的方法。在 h = HASH( X | z ) 中,從 h 無(wú)法推導(dǎo)出 z,只能不斷地計(jì)算嘗試,那么 z 所在的數(shù)值集合構(gòu)成了 X,X 的大小是哈希算法的安全因子之一。
  3. **發(fā)散性。**發(fā)散性是指對(duì)于任意的 z,即使我們只改動(dòng)非常少的信息量,例如改動(dòng) 1 個(gè)比特位生成 z’,那么 HASH(z) 與 HASH(z’) 就是兩個(gè)大相徑庭的結(jié)果,完全不相似。
  4. **抗碰撞性。**抗碰撞性是指對(duì)于任意兩個(gè)不相同的 z,那么他們對(duì)應(yīng)的 h 值也不同。如果對(duì)于任意的 y 不等于 z,則 HASH(y) 不等于 HASH(z);滿足上述定義哈希特性的算法,我們也稱作具有嚴(yán)格抗碰撞性。如果我們?nèi)我饨o定一個(gè) z,你都無(wú)法找到另外一個(gè) z’,使得其值也等于 h,滿足這樣的哈希特性的算法就有弱抗碰撞性。

目前流行的 Hash 算法包括了 MD5、SHA-1 和 SHA-2,其中 MD5 被證明不具有強(qiáng)抗碰撞性。SHA (Secure Hash Algorithm)是一個(gè) Hash 函數(shù)族,分為 SHA-1、SHA-2、SHA-3,代表了三代哈希標(biāo)準(zhǔn),目前使用比較多的是 SHA-2 系列。

第一代的 SHA-1 基于 MD4 設(shè)計(jì),并且模仿了該算法,SHA-1 已被證明了不具備“強(qiáng)抗碰撞性”,所以安全性不夠高。

為了提高安全性,第二代 SHA-2 一共包含了 SHA-224、SHA-256、SHA-384,和 SHA-512 算法(統(tǒng)稱為 SHA-2),它們跟 SHA-1 算法原理類似。SHA-3 相關(guān)算法也已被提出,它的出現(xiàn)并不是要取代 SHA-2,因?yàn)?SHA-2 目前并沒有出現(xiàn)明顯的弱點(diǎn)。

由于對(duì) MD5、和 SHA-1 出現(xiàn)成功的破解,我們需要一個(gè)不同與之前算法,可替換的加密散列算法,也就是現(xiàn)在的 SHA-3。

哈希算法的一個(gè)重要應(yīng)用是默克爾樹(Merkle tree),默克爾樹是一種數(shù)據(jù)結(jié)構(gòu),通常是一個(gè)二叉樹,也有可能是多叉樹,它以特定的方式逐層向上計(jì)算,直到頂部,最頂層叫做默克爾根,默克爾樹最為常見和最簡(jiǎn)單的是二叉默克爾樹。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-OMoBMpZs-1680955391619)(null)]

非對(duì)稱加密算法

對(duì)稱密鑰要求加解密過(guò)程均使用相同的密鑰,而非對(duì)稱加密可以提供一對(duì)鑰匙,私鑰自己保管,公鑰可以公開。

常見的對(duì)稱加密算法有 DES、3DES、AES、IDEA, 常見的非對(duì)稱加密算法有 RSA、ECC 等。

在非對(duì)稱算法中,私鑰一般是通過(guò)一個(gè)隨機(jī)數(shù)產(chǎn)生的,這個(gè)隨機(jī)數(shù)我們也叫做種子,從這個(gè)角度來(lái)說(shuō),知道了這個(gè)隨機(jī)數(shù)也就等于知道了私鑰,不過(guò)私鑰的產(chǎn)生范圍非常大,在比特幣中是 2 的 256 次方,差不多在 10 的 70 方數(shù)量級(jí)上。

如果你產(chǎn)生隨機(jī)數(shù)的算法足夠均勻分布,私鑰碰撞的可能性比中了 1 億大獎(jiǎng)同時(shí)被雷劈中的概率還要小數(shù)億倍。所以區(qū)塊鏈對(duì)產(chǎn)生隨機(jī)數(shù)的算法要求比較高,它要求真實(shí)的均勻隨機(jī)分布,而不是計(jì)算機(jī)偽隨機(jī)數(shù)。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-YFkDnszM-1680955391649)(null)]

從私鑰到公鑰,是由非對(duì)稱加密算法保證的,這種算法在比特幣中選擇的是 ECDSA 算法,ECDSA 算法中選擇的橢圓曲線名為 secp256k1。

而從公鑰到地址,是由哈希算法保證的,在這一步使用了 SHA256 和 RIPEMD160。橢圓曲線加密算法 ECC 利用了“尋找離散對(duì)數(shù)”的難解性提供了單向不可逆性

在區(qū)塊鏈上,一個(gè)比特幣交易的產(chǎn)生由兩部分組成,第一部分是簽名加鎖,對(duì)應(yīng)到的是交易的輸出、第二部分是解鎖花費(fèi),對(duì)應(yīng)到的是交易的輸入,當(dāng)我們構(gòu)造一筆交易的時(shí)候必然會(huì)用到私鑰,這是所有數(shù)字貨幣資產(chǎn)控制權(quán)由私鑰保證的根本原因。

賬戶與交易模型

普通賬戶模型

當(dāng)前余額是記錄在某個(gè)地方的,只需要讀出來(lái)即可,這種設(shè)計(jì)我們叫做賬戶余額模型

普通賬戶模型具有自定義數(shù)據(jù)類型的優(yōu)點(diǎn),但是卻需要自己設(shè)計(jì)事務(wù)機(jī)制

UTXO 模型

UTXO 全稱是:“Unspent Transaction Output”,這指的是:未花費(fèi)的交易輸出。這里面三個(gè)單詞分別表示 “未花費(fèi)的”“交易”“輸出”

UTXO 的核心設(shè)計(jì)思路是無(wú)狀態(tài),它記錄的是交易事件,而不記錄最終狀態(tài),也就是說(shuō)只記錄變更事件,用戶需要根據(jù)歷史記錄自行計(jì)算余額。

輸入和輸出組成了交易,輸入和輸入需要滿足一些約束條件:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-638237.html

  1. 任意一個(gè)交易必須至少一個(gè)輸入、一個(gè)輸出;
  2. 輸入必須全部移動(dòng),不能只使用部分,所以才產(chǎn)生了第二個(gè)輸出指向村長(zhǎng)自己;
    要自己設(shè)計(jì)事務(wù)機(jī)制
UTXO 模型

UTXO 全稱是:“Unspent Transaction Output”,這指的是:未花費(fèi)的交易輸出。這里面三個(gè)單詞分別表示 “未花費(fèi)的”“交易”“輸出”

UTXO 的核心設(shè)計(jì)思路是無(wú)狀態(tài),它記錄的是交易事件,而不記錄最終狀態(tài),也就是說(shuō)只記錄變更事件,用戶需要根據(jù)歷史記錄自行計(jì)算余額。

輸入和輸出組成了交易,輸入和輸入需要滿足一些約束條件:

  1. 任意一個(gè)交易必須至少一個(gè)輸入、一個(gè)輸出;
  2. 輸入必須全部移動(dòng),不能只使用部分,所以才產(chǎn)生了第二個(gè)輸出指向村長(zhǎng)自己;
  3. 輸入金額 = 輸出金額之和 + 交易手續(xù)費(fèi),這里必須是等式。

到了這里,關(guān)于區(qū)塊鏈的技術(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 用Rust實(shí)現(xiàn)區(qū)塊鏈 - 6 點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)(P2P)

    用Rust實(shí)現(xiàn)區(qū)塊鏈 - 6 點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)(P2P)

    截止到目前,我們?cè)趩螜C(jī)上實(shí)現(xiàn)了區(qū)塊鏈的幾乎所有關(guān)鍵特性:隨機(jī)生成的地址、安全、持久化、工作量證明、UTXO交易。接下來(lái)我們將使用rust-libp2p庫(kù)來(lái)實(shí)現(xiàn)區(qū)塊鏈的p2p網(wǎng)絡(luò)。 P2P 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)有很多種,有些是中心化拓?fù)洌行┦前胫行幕負(fù)?,有些是全分布式拓?fù)浣Y(jié)構(gòu)。

    2024年01月17日
    瀏覽(18)
  • P2P 網(wǎng)絡(luò),PING程序。

    沒有廢話,直接上版本號(hào)和代碼,以及講解。 crate 版本號(hào) libp2p 0.52.1 tokio 1.30.0 Peer-to-Peer是一種網(wǎng)絡(luò)技術(shù)。一種點(diǎn)對(duì)點(diǎn)的通訊技術(shù)。沒有client-service概念。 在P2P網(wǎng)絡(luò)中,節(jié)點(diǎn)標(biāo)識(shí)被成為PeerId。

    2024年02月12日
    瀏覽(22)
  • CDN、P2P、PCDN的區(qū)別是什么

    本篇文章為大家介紹一下與網(wǎng)絡(luò)加速有關(guān)的幾個(gè)重要概念,一起了解一下CDN,P2P和PCDN究竟是什么吧! 1. CDN CDN即Content Delivery Network,中文全稱為內(nèi)容分發(fā)網(wǎng)絡(luò)。 如果內(nèi)容離用戶遠(yuǎn),用戶可能無(wú)法獲得及時(shí)的響應(yīng),那么這個(gè)時(shí)候,如果我們想辦法把內(nèi)容緩存在離用戶近的地方,

    2024年02月15日
    瀏覽(19)
  • 區(qū)塊鏈(8):p2p去中心化之websoket服務(wù)端實(shí)現(xiàn)業(yè)務(wù)邏輯

    區(qū)塊鏈(8):p2p去中心化之websoket服務(wù)端實(shí)現(xiàn)業(yè)務(wù)邏輯

    1 業(yè)務(wù)邏輯 例如 peer1和peer2之間相互通信 peer1通過(guò)onopen{ write(Mesage(QUERY_LATEST))} 向peer2發(fā)送消息“我要最新的區(qū)塊”。 peer2通過(guò)onMessage收到消息,通過(guò)handleMessage方法對(duì)消息進(jìn)行處理。 handleMessage根據(jù)消息類型進(jìn)行處理 RESPONSE_BLOCKCHAIN:返回區(qū)塊鏈,RESPONSE_BLOCKCHAIN處理進(jìn)入handleB

    2024年02月08日
    瀏覽(23)
  • 【計(jì)算機(jī)網(wǎng)絡(luò)】P2P文件分發(fā)介紹

    【計(jì)算機(jī)網(wǎng)絡(luò)】P2P文件分發(fā)介紹

    考慮一個(gè)場(chǎng)景:從單一服務(wù)器向大量主機(jī)(稱為對(duì)等方)分發(fā)一個(gè)大文件。 兩種處理方式 客戶-服務(wù)器文件分發(fā):服務(wù)器需要向每個(gè)對(duì)等方發(fā)送該文件的一個(gè)副本 P2P文件分發(fā):當(dāng)服務(wù)器上傳了文件的一個(gè)副本后,各個(gè)對(duì)等點(diǎn)下載該文件的一部分,然后協(xié)助服務(wù)器上傳自己擁有

    2024年02月07日
    瀏覽(24)
  • P2P網(wǎng)絡(luò)NAT穿透原理(打洞方案)

    P2P網(wǎng)絡(luò)NAT穿透原理(打洞方案)

    NAT技術(shù)(Network Address?Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)是一種把內(nèi)部網(wǎng)絡(luò)(簡(jiǎn)稱為內(nèi)網(wǎng))私有IP地址轉(zhuǎn)換為外部網(wǎng)絡(luò)(簡(jiǎn)稱為外網(wǎng))公共IP地址的技術(shù),它使得一定范圍內(nèi)的多臺(tái)主機(jī)只利用一個(gè)公共IP地址連接到外網(wǎng),可以在很大程度上緩解了公網(wǎng)IP地址緊缺的問(wèn)題,同時(shí)也能防止外

    2024年02月15日
    瀏覽(31)
  • 基于 P2P 技術(shù)的 Android 局域網(wǎng)內(nèi)設(shè)備通信實(shí)踐

    Android 局域網(wǎng)內(nèi)的多設(shè)備通信方式有多種,其中常見的方式有: 基于 TCP/UDP 的 Socket 通信 基于 Bluetooth 的近場(chǎng)通信 基于 Wifi 的 Wi-Fi Direct 連接 基于第三方框架的通信,如 MQTT、Websocket 等 每種方式都有其適用范圍,下面分別介紹一下它們的示例代碼、優(yōu)劣勢(shì)。 Socket 是 TCP/UDP 套

    2024年02月08日
    瀏覽(20)
  • 轉(zhuǎn)載: 又拍云【PrismCDN 】低延時(shí)的P2P HLS直播技術(shù)實(shí)踐

    轉(zhuǎn)載: 又拍云【PrismCDN 】低延時(shí)的P2P HLS直播技術(shù)實(shí)踐

    低延時(shí)的P2P HLS直播技術(shù)實(shí)踐 本文是第二部分《PrismCDN 網(wǎng)絡(luò)的架構(gòu)解析,以及低延遲、低成本的奧秘》 [首頁(yè) Open Talk NO.41 | 2018 音視頻技術(shù)沙龍·深圳站 低延時(shí) WebP2P 直播技術(shù)實(shí)踐 https://opentalk-blog.b0.upaiyun.com/prod/2018-06-12/aa2e26500fc0b2eba14939746aed4d15]() 講師簡(jiǎn)介 又拍云 PrismCDN 項(xiàng)目

    2024年02月09日
    瀏覽(28)
  • 如何用P2P技術(shù)為SRS媒體服務(wù)器節(jié)省帶寬成本

    如何用P2P技術(shù)為SRS媒體服務(wù)器節(jié)省帶寬成本

    ????直播流的重要性在當(dāng)今社會(huì)已無(wú)需多言,動(dòng)輒上百萬(wàn)人同時(shí)在線的直播場(chǎng)景也已屢見不鮮。隨著越來(lái)越多的觀眾收看直播,如何有效降低帶寬成本,提升播放體驗(yàn)已成為各大視頻廠商和創(chuàng)業(yè)者共同面對(duì)的技術(shù)難題。假設(shè)有 10,000 名觀眾觀看相同 1Mbps 比特率流的直播場(chǎng)景

    2024年02月22日
    瀏覽(30)
  • 網(wǎng)絡(luò)穿透 P2P 穿透 UDP打洞、TCP打洞 原理

    經(jīng)常聽到 網(wǎng)絡(luò)穿透 P2P 穿透 UDP打洞、TCP打洞 以前只是 知道網(wǎng)絡(luò)底層的底層的一些知識(shí) 接觸過(guò) 網(wǎng)絡(luò)穿透 P2P 穿透 UDP打洞、TCP打洞 現(xiàn)在做個(gè)筆記: P2P穿透是一種技術(shù),用于在兩個(gè)或多個(gè)設(shè)備之間建立直接的點(diǎn)對(duì)點(diǎn)連接,而無(wú)需依賴中間服務(wù)器進(jìn)行轉(zhuǎn)發(fā)。它可以幫助設(shè)備在NA

    2024年02月15日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包