AQF資訊|區(qū)塊鏈四大核心技術(shù)是什么?
無(wú)論是公鏈還是聯(lián)盟鏈,至少需要四個(gè)模塊組成:P2P網(wǎng)絡(luò)協(xié)議、分布式一致性算法(共識(shí)機(jī)制)、加密簽名算法、賬戶與存儲(chǔ)模型。
1.P2P網(wǎng)絡(luò)協(xié)議
P2P網(wǎng)絡(luò)協(xié)議是一切區(qū)塊鏈的底層模塊,擔(dān)任買賣數(shù)據(jù)的網(wǎng)絡(luò)傳輸和播送、節(jié)點(diǎn)發(fā)現(xiàn)和保護(hù)。
一般咱們所用的都是比特幣P2P網(wǎng)絡(luò)協(xié)議模塊,它遵從必定的交互準(zhǔn)則。比方:初次連接到其他節(jié)點(diǎn)會(huì)被要求按照握手協(xié)議來承認(rèn)狀況,在握手之后開端懇求Peer節(jié)點(diǎn)的地址數(shù)據(jù)以及區(qū)塊數(shù)據(jù)。
這套P2P交互協(xié)議也具有自己的指令調(diào)集,指令表現(xiàn)在在消息頭(MessageHeader)的指令(command)域中,這些指令為上層供給了節(jié)點(diǎn)發(fā)現(xiàn)、節(jié)點(diǎn)獲取、區(qū)塊頭獲取、區(qū)塊獲取等功用,這些功用都是十分底層、十分根底的功用。假如你想要深化了解,能夠參閱比特幣開發(fā)者指南中的PeerDiscovery的章節(jié)。
2.分布式一致性算法
在經(jīng)典分布式核算范疇,咱們有Raft和Paxos算法家族代表的非拜占庭容錯(cuò)算法,以及具有拜占庭容錯(cuò)特性的PBFT一致算法。
假如從技能演化的視點(diǎn)來看,咱們能夠得出一個(gè)圖,其中,區(qū)塊鏈技能把原來的分布式算法進(jìn)行了經(jīng)濟(jì)學(xué)上的拓展。
我們可以看到,計(jì)算機(jī)使用在開端多為單點(diǎn)使用,高可用便利選用的是冷災(zāi)備,后來發(fā)展到異地多活,這些異地多活可能選用的是負(fù)載均衡和路由技能,跟著分布式體系技能的發(fā)展,我們過渡到了Paxos和Raft為主的分布式體系。
而在區(qū)塊鏈領(lǐng)域,多選用PoW工作量證明算法、PoS權(quán)益證明算法,以及DPoS代理權(quán)益證明算法,以上三種是業(yè)界主流的一致算法,這些算法與經(jīng)典分布式一致性算法不同的是,它們?nèi)谌肓私?jīng)濟(jì)學(xué)博弈的概念,下面我分別簡(jiǎn)略介紹這三種一致算法。
PoW:通常是指在給定的束縛下,求解一個(gè)特定難度的數(shù)學(xué)問題,誰(shuí)解的速度快,誰(shuí)就能取得記賬權(quán)(出塊)權(quán)力。這個(gè)求解進(jìn)程往往會(huì)轉(zhuǎn)換成核算問題,所以在比拼速度的情況下,也就變成了誰(shuí)的核算方法更優(yōu),以及誰(shuí)的設(shè)備功能更好。
PoS:這是一種股權(quán)證明機(jī)制,它的基本概念是你產(chǎn)生區(qū)塊的難度應(yīng)該與你在網(wǎng)絡(luò)里所占的股權(quán)(所有權(quán)占比)成份額,它完成的核心思路是:運(yùn)用你所確定代幣的幣齡(CoinAge)以及一個(gè)小的工作量證明,去計(jì)算一個(gè)目標(biāo)值,當(dāng)滿足目標(biāo)值時(shí),你將可能獲取記賬權(quán)。
DPoS:簡(jiǎn)略來了解就是將PoS一致算法中的記賬者轉(zhuǎn)換為指定節(jié)點(diǎn)數(shù)組成的小圈子,而不是所有人都可以參加記賬。這個(gè)圈子可能是21個(gè)節(jié)點(diǎn),也有可能是101個(gè)節(jié)點(diǎn),這一點(diǎn)取決于規(guī)劃,只要這個(gè)圈子中的節(jié)點(diǎn)才能取得記賬權(quán)。這將會(huì)極大地進(jìn)步體系的吞吐量,因?yàn)楦俚墓?jié)點(diǎn)也就意味著網(wǎng)絡(luò)和節(jié)點(diǎn)的可控。
>>>點(diǎn)擊學(xué)習(xí)CFA+AQF量化金融雙證班課程
3.加密簽名算法
由于我不是暗碼學(xué)專業(yè)身世,所以這個(gè)部分我會(huì)以介紹為主。
在區(qū)塊鏈范疇,應(yīng)用得較多的是哈希算法。哈希算法具有抗磕碰性、原像不可逆、難題友好性等特征。
其中,難題友好性正是很多PoW幣種賴以存在的基礎(chǔ),在比特幣中,SHA256算法被用作工作量證明的計(jì)算方法,也就是咱們所說的挖礦算法。
而在萊特幣身上,咱們也會(huì)看到Scrypt算法,該算法與SHA256不同的是,需求大內(nèi)存支撐。而在其他一些幣種身上,咱們也能看到根據(jù)SHA3算法的挖礦算法。以太坊運(yùn)用了Dagger-Hashimoto算法的改進(jìn)版別,并命名為Ethash,這是一個(gè)IO難解性的算法。
當(dāng)然,除了挖礦算法,咱們還會(huì)運(yùn)用到RIPEMD160算法,首要用于生成地址,很多的比特幣衍生代碼中,絕大部分都采用了比特幣的地址規(guī)劃。
除了地址,咱們還會(huì)運(yùn)用到中心的,也是區(qū)塊鏈Token體系的柱石:公私鑰暗碼算法。
在比特幣大類的代碼中,基本上運(yùn)用的都是ECDSA。ECDSA是ECC與DSA的結(jié)合,整個(gè)簽名過程與DSA相似,所不一樣的是簽名中采納的算法為ECC(橢圓曲線函數(shù))。
從技術(shù)上看,咱們先從生成私鑰開端,其次從私鑰生成公鑰,最終從公鑰生成地址,以上每一步都是不可逆過程,也就是說無(wú)法從地址推導(dǎo)出公鑰,從公鑰推導(dǎo)到私鑰。
4.賬戶與存儲(chǔ)模型
從一開端的界說我們知道,僅從技能角度能夠以為區(qū)塊鏈?zhǔn)且环N分布式數(shù)據(jù)庫(kù),那么,大都區(qū)塊鏈究竟運(yùn)用了什么類型的數(shù)據(jù)庫(kù)呢?
我在規(guī)劃元界區(qū)塊鏈時(shí),參閱了多種數(shù)據(jù)庫(kù),有NoSQL的BerkelyDB、LevelDB,也有一些幣種選用根據(jù)SQL的SQLite。這些作為底層的存儲(chǔ)設(shè)備,多以輕量級(jí)嵌入式數(shù)據(jù)庫(kù)為主,由于并不涉及區(qū)塊鏈的賬本特性,這些存儲(chǔ)技能與其他場(chǎng)合下的運(yùn)用并沒有什么不同。
區(qū)塊鏈的賬本特性,一般分為UTXO結(jié)構(gòu)以及根據(jù)Accout-Balance結(jié)構(gòu)的賬本結(jié)構(gòu),我們也稱為賬本模型。UTXO是“unspenttransactioninput/output”的縮寫,翻譯過來就是指“未花費(fèi)的買賣輸入輸出”。
這個(gè)區(qū)塊鏈中Token搬運(yùn)的一種記賬方式,每次搬運(yùn)均以輸入輸出的方式呈現(xiàn);而在Balance結(jié)構(gòu)中,是沒有這個(gè)方式的。


.png)
.png)


