版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
區(qū)塊鏈網(wǎng)絡(luò)構(gòu)建目錄/CONTENTS5.1網(wǎng)絡(luò)架構(gòu)5.2去中心化5.3基于開源區(qū)塊鏈項目5.4編程案例本章小結(jié)思考題5.1.網(wǎng)絡(luò)架構(gòu)5.1.1網(wǎng)絡(luò)中的節(jié)點(diǎn)通常來說,計算機(jī)網(wǎng)絡(luò)中的節(jié)點(diǎn)指的是一臺有獨(dú)立地址并具有傳送或接收數(shù)據(jù)功能的設(shè)備。而在區(qū)塊鏈中,節(jié)點(diǎn)必須具有以下幾個特點(diǎn)。(1)具有一定的存儲空間:任何節(jié)點(diǎn)都必須存儲整條區(qū)塊鏈或區(qū)塊鏈的一部分。(2)連接網(wǎng)絡(luò):通常來說,區(qū)塊鏈網(wǎng)絡(luò)由多個節(jié)點(diǎn)組成,因此這些節(jié)點(diǎn)必須通過網(wǎng)絡(luò)相連。(3)參與區(qū)塊鏈:任何一個區(qū)塊鏈節(jié)點(diǎn)必須運(yùn)行與區(qū)塊鏈相關(guān)的程序。區(qū)塊鏈節(jié)點(diǎn)的特點(diǎn)具有一定的存儲空間連接網(wǎng)絡(luò)參與區(qū)塊鏈5.1.1網(wǎng)絡(luò)中的節(jié)點(diǎn)在現(xiàn)在的區(qū)塊鏈應(yīng)用中,區(qū)塊鏈中的節(jié)點(diǎn)可分為礦工節(jié)點(diǎn)、全節(jié)點(diǎn)和輕節(jié)點(diǎn)。1.礦工節(jié)點(diǎn)現(xiàn)有的礦工節(jié)點(diǎn)運(yùn)行于強(qiáng)大或?qū)S玫挠布ㄈ鏏SIC)上,它們唯一的目標(biāo)是盡可能快地挖出新區(qū)塊。2.全節(jié)點(diǎn)全節(jié)點(diǎn)驗證礦工挖出來的塊的有效性,并對交易進(jìn)行確認(rèn)。為此,它們必須擁有區(qū)塊鏈的完整副本。同時,全節(jié)點(diǎn)執(zhí)行路由操作,幫助其他節(jié)點(diǎn)發(fā)現(xiàn)彼此。區(qū)塊鏈中的節(jié)點(diǎn)輕節(jié)點(diǎn)全節(jié)點(diǎn)礦工節(jié)點(diǎn)3.輕節(jié)點(diǎn)輕節(jié)點(diǎn)并不存儲整個區(qū)塊鏈副本,但是仍然能夠?qū)灰走M(jìn)行驗證(不過不是驗證全部交易,而是一個交易子集,如發(fā)送到某個指定地址的交易)。5.1.2區(qū)塊鏈的運(yùn)行機(jī)制通常來說,一個系統(tǒng)可以根據(jù)中心機(jī)構(gòu)的數(shù)量分為3類:中心化系統(tǒng)、多中心化系統(tǒng)和去中心化系統(tǒng)。(1)中心化系統(tǒng):只存在一個中心機(jī)構(gòu)。(2)多中心化系統(tǒng):同時存在多個中心機(jī)構(gòu)。(3)去中心化系統(tǒng):不存在任何中心機(jī)構(gòu)。中心化系統(tǒng)(左)、多中心化系統(tǒng)(中)和去中心化系統(tǒng)(右)5.1.2區(qū)塊鏈的運(yùn)行機(jī)制區(qū)塊鏈網(wǎng)絡(luò)通常來說是去中心化的,這意味著沒有服務(wù)器,客戶端也不需要依賴服務(wù)器來獲取或處理數(shù)據(jù)。在區(qū)塊鏈網(wǎng)絡(luò)中,每個節(jié)點(diǎn)是網(wǎng)絡(luò)的一個完全(Full-Fledged)成員。節(jié)點(diǎn)就是一切,它既是一個客戶端,也是一個服務(wù)器。區(qū)塊鏈網(wǎng)絡(luò)是一個P2P的網(wǎng)絡(luò),即節(jié)點(diǎn)直接連接到其他節(jié)點(diǎn)。它的拓?fù)涫潜馄降?,因為在?jié)點(diǎn)的世界中沒有層級之分。5.2去中心化5.2.1去中心化的定義中心化的意思是中心決定節(jié)點(diǎn),節(jié)點(diǎn)必須依賴中心,節(jié)點(diǎn)離開了中心就無法生存。去中心化恰恰相反,在一個分布有眾多節(jié)點(diǎn)的系統(tǒng)中,每個節(jié)點(diǎn)都具有高度自治的特征,每個節(jié)點(diǎn)都是一個“小中心”。由于中心化設(shè)計里存在著強(qiáng)大的中心機(jī)構(gòu),因此可以解決許多技術(shù)上難以解決的問題,如對整個系統(tǒng)的監(jiān)督和管理。去中心化系統(tǒng)通常存在著效率低下的問題,但去中心化的系統(tǒng)具有能夠降低系統(tǒng)運(yùn)營成本、防止系統(tǒng)被中心機(jī)構(gòu)掌控的優(yōu)點(diǎn)。流通標(biāo)準(zhǔn)中心中心化去中心化5.2.2
工作量證明機(jī)制區(qū)塊鏈技術(shù)最重要的創(chuàng)新之一,便是通過工作量證明機(jī)制來實現(xiàn)分布式共識,同時通過提高攻擊成本來防御惡意攻擊。工作量證明的關(guān)鍵特點(diǎn)就是,分布式系統(tǒng)中請求服務(wù)的節(jié)點(diǎn)必須解決一個有難度但是可行的問題,但是驗證問題答案的過程對服務(wù)提供者來說非常容易,也就是一個不容易解答但是容易被驗證的問題。這種問題通常需要消耗一定的CPU時間來計算某個問題的答案,目前絕大部分的區(qū)塊鏈都選擇使用工作量證明的分布式共識機(jī)制,網(wǎng)絡(luò)中的所有節(jié)點(diǎn)通過執(zhí)行解密來獲得創(chuàng)建新區(qū)塊的權(quán)利。1.compute2.solve3.send4.vertifySenderReceiver5.2.3區(qū)塊鏈共識當(dāng)一個節(jié)點(diǎn)挖出一個新區(qū)塊后,默認(rèn)會立即將新區(qū)塊鏈接到本地存儲的區(qū)塊鏈的末尾,并且廣播到整個網(wǎng)絡(luò)中。其他節(jié)點(diǎn)在收到這一新區(qū)塊后,會驗證這一區(qū)塊的有效性并決定是否接收這一區(qū)塊。當(dāng)同時收到多個新區(qū)塊時,節(jié)點(diǎn)默認(rèn)只承認(rèn)那些連接到共識鏈(最長鏈)上最后一個被確認(rèn)的新區(qū)塊,并以第一個滿足條件的區(qū)塊所在的鏈為共識鏈。對于收到的其他區(qū)塊,節(jié)點(diǎn)可以自己選擇處理方式,推薦的方式為將較新的區(qū)塊以支鏈的形式保存起來。如果一個節(jié)點(diǎn)收到的區(qū)塊的索引遠(yuǎn)遠(yuǎn)大于該節(jié)點(diǎn)當(dāng)前共識鏈的最后一個區(qū)塊的索引,那么說明該節(jié)點(diǎn)很有可能已經(jīng)失去與其他節(jié)點(diǎn)的同步,需要立即重新進(jìn)行同步(從其他節(jié)點(diǎn)下載區(qū)塊鏈)。按照上述共識機(jī)制,經(jīng)過一段時間的區(qū)塊競爭后,一定會有一條最長的共識鏈形成。5.2.3區(qū)塊鏈共識3個節(jié)點(diǎn),區(qū)塊數(shù)量完全一樣,同一時刻只有一個節(jié)點(diǎn)挖出一個新區(qū)塊3個節(jié)點(diǎn),區(qū)塊數(shù)量完全一樣,同一時刻不止一個節(jié)點(diǎn)挖出一個新區(qū)塊在上一張圖的人基礎(chǔ)上。礦工a又挖出一個新區(qū)塊一個節(jié)點(diǎn)長時間掉線收到一個比較舊的區(qū)塊緩存舊區(qū)塊,產(chǎn)生支鏈下圖為區(qū)塊鏈就最長鏈達(dá)成共識的詳細(xì)過程:5.3基于開源區(qū)塊鏈項目5.3.1Hyperledger超級賬本項目為透明、開放和去中心化的企業(yè)級分布式賬本技術(shù)提供了開源參考實現(xiàn),并促進(jìn)了區(qū)塊鏈和分布式賬本相關(guān)協(xié)議、規(guī)范和標(biāo)準(zhǔn)的發(fā)展。作為一個聯(lián)合項目,超級賬本由用于不同目的和場景的子項目組成。所有項目都遵守ApacheV2許可,并約定共同遵守以下基本原則。(1)重視模塊化設(shè)計:包括交易、合同、一致性、身份、存儲等技術(shù)場景。(2)重視代碼可讀性:保障新功能和模塊都可以很容易添加和擴(kuò)展。(3)可持續(xù)的演化路線:隨著需求的深入和應(yīng)用場景的增加,不斷增加和演化新的項目。Hyperledger重視模塊設(shè)計重視代碼可讀性可持續(xù)的演化路線5.3.2
InterLedgerInterLedger是Ripple公司推出的一個跨賬本協(xié)議,旨在幫助銀行間進(jìn)行快速結(jié)算。Ripple公司的跨賬本協(xié)議允許參與者查看相同的賬本,通過該公司網(wǎng)絡(luò),銀行客戶可以實現(xiàn)實時點(diǎn)對點(diǎn)跨境轉(zhuǎn)賬,無須中央組織管理,支持各國使用不同的貨幣。在InterLedger系統(tǒng)中,兩個不同的賬本系統(tǒng)可以通過第三方來進(jìn)行貨幣之間的兌換,如下圖所示。賬本系統(tǒng)不需要信任第三方,因為協(xié)議使用密碼算法為這兩個賬本系統(tǒng)和第三方創(chuàng)建資金托管,并且當(dāng)各方在資金上達(dá)成共識時,它們可以互相進(jìn)行交易。這意味著此類交易不需要受到法律合同的保護(hù)和過多的審查,大大降低了交易的門檻。5.3.2
InterLedger1.InterLedger協(xié)議功能InterLedger協(xié)議(InterLedgerProtocol,ILP)有3個關(guān)鍵功能,即具有ILP數(shù)據(jù)包、可進(jìn)行無信任發(fā)送和具有打包價值。InterLedger協(xié)議功能具有打包價值可無信任發(fā)送具有ILP數(shù)據(jù)包(1)具有ILP數(shù)據(jù)包:InterLedger協(xié)議的核心是ILP數(shù)據(jù)包,這是發(fā)送方、第三方、接收方之間使用的消息傳遞標(biāo)準(zhǔn)。(2)可進(jìn)行無信任發(fā)送:InterLedger的第二個關(guān)鍵功能是其能夠讓用戶通過第三方網(wǎng)絡(luò)進(jìn)行匯款,而不需要信任它們。(3)具有打包價值:或?qū)⑤^大的轉(zhuǎn)賬分成許多低價值的數(shù)據(jù)包。5.3.3
steemSteem項目使用加密貨幣獎勵用戶,解決了現(xiàn)有社交平臺利潤分配不合理的問題。簡而言之,Steem是一個通過加密貨幣獎勵來支持社區(qū)建設(shè)和社交互動的區(qū)塊鏈數(shù)據(jù)庫。Steem的兩個重要特色:1.共識機(jī)制:Steem系統(tǒng)采用石墨烯技術(shù),所以區(qū)塊鏈記賬采用的是DPoS算法。2.首創(chuàng)零手續(xù)費(fèi):因為Steem使用新發(fā)行的代幣給見證人(記賬員)發(fā)工資,加上Steem使用的是DPoS共識機(jī)制,記賬員記賬不會有太大的工作量,所以大部分的價值可以保存下來并分發(fā)給平臺中的其他貢獻(xiàn)者。所有記賬員的工資占Steem系統(tǒng)每年產(chǎn)生新代幣總數(shù)的10%。DPoS共識機(jī)制5.4
編程案例5.4.1實現(xiàn)私有鏈1.準(zhǔn)備工作本小節(jié)的目標(biāo)是開發(fā)一個能夠在本地運(yùn)行的私有鏈,這一區(qū)塊鏈接收和存儲本地用戶上傳的數(shù)據(jù),且每個用戶在上傳數(shù)據(jù)時需要提供自己的數(shù)字簽名以驗證自己的身份。簡易區(qū)塊鏈架構(gòu)如下圖:2.區(qū)塊結(jié)構(gòu)構(gòu)建在本小節(jié)中為簡便起見,我們只是簡單地將其以列表的形式進(jìn)行組織。一般來說,區(qū)塊鏈中的區(qū)塊必須包含下列元數(shù)據(jù):區(qū)塊產(chǎn)生的時間,誰生成了這個區(qū)塊,上一個區(qū)塊的哈希值,工作量證明的結(jié)果等。每個區(qū)塊都必須包含以下屬性:前一個區(qū)塊的哈希值(hash)、工作量證明(proof)、索引(index)、時間戳(timestamp)以及交易列表(trans)5.4.1
實現(xiàn)私有鏈3.Blockchain類回憶一下前文對這個私有鏈的要求,它需要完成3個功能。(1)能夠接收區(qū)塊鏈擁有者上傳的數(shù)據(jù),并把接收到的數(shù)據(jù)存儲到區(qū)塊鏈中。(2)能夠執(zhí)行工作量證明算法,產(chǎn)生存儲數(shù)據(jù)的新區(qū)塊,并將未確認(rèn)的數(shù)據(jù)寫入新區(qū)塊。(3)能夠?qū)?shù)據(jù)提交者的身份進(jìn)行驗證,只有通過了驗證,系統(tǒng)才會接收提交的數(shù)據(jù)。Blockchain類的功能是管理區(qū)塊鏈,它能執(zhí)行存儲交易、加入新區(qū)塊、驗證簽名等操作。在它的構(gòu)造方法中還創(chuàng)建了兩個列表:chain列表用于存儲區(qū)塊鏈,trans列表用于存儲尚未確認(rèn)的交易(數(shù)據(jù))。newTrans()方法newBlock()方法hash()方法工作量證明機(jī)制signProof()方法lastBlock()方法經(jīng)過上圖的流程,Blockchain類的開發(fā)已經(jīng)基本完成了,它能夠驗證上傳數(shù)據(jù)者的身份,將未確認(rèn)的新交易緩存起來,創(chuàng)建新的區(qū)塊并將緩存的交易寫入其中。5.4.1實現(xiàn)私有鏈4.區(qū)塊鏈API開發(fā)首先,需要為Flask框架編寫HTML模板。目前我們需要兩個模板,一個是控制區(qū)塊鏈執(zhí)行各種操作的頁面的模板,另一個是提交交易的頁面的模板。編寫完模板之后,就需要為Flask框架定制接口了。/index區(qū)塊鏈應(yīng)用的首頁/chain查看區(qū)塊鏈上存儲的所有數(shù)據(jù)/newtrans接收和驗證用戶提交的數(shù)據(jù)/newblock執(zhí)行工作量證明算法并生成新的區(qū)塊編寫向外界提供4類接口5.測試與運(yùn)行編寫完成Blockchain類和接口.py文件之后,就可以開始運(yùn)行區(qū)塊鏈了。運(yùn)行結(jié)果如圖所示。sever.py腳本運(yùn)行結(jié)果5.4.1實現(xiàn)私有鏈Web服務(wù)器啟動之后,會顯示服務(wù)器綁定的IP地址和端口。復(fù)制命令行中的“:5000”,將其粘貼到瀏覽器地址欄中,在末尾加上前文編寫的某個接口的名稱。即可訪問我們編寫的頁面,其結(jié)果如下圖所示。
單擊“查看區(qū)塊鏈”按鈕,就可以看到目前區(qū)塊鏈中存儲的所有數(shù)據(jù),其結(jié)果如圖所示。5.4.1實現(xiàn)私有鏈可以看到,目前區(qū)塊鏈中只存在初始化Blockchain類時建立的創(chuàng)世區(qū)塊?;氐降谝粋€頁面,單擊“新交易”按鈕就會進(jìn)入交易提交界面,如圖右所示。前3項可以任意填寫,因為目前的區(qū)塊鏈只負(fù)責(zé)存儲我們提交的數(shù)據(jù)而不會在意具體數(shù)據(jù)是否有意義。第4項和第5項需要輸入配套的公鑰和私鑰,公鑰和私鑰的生成如右圖所示。5.4.1實現(xiàn)私有鏈分別復(fù)制命令行中的公鑰和私鑰到交易提交頁面的兩個輸入框中,單擊“提交”按鈕即可查看交易提交是否成功。交易提交成功的結(jié)果如圖所示。另外一種產(chǎn)生配套的公鑰和私鑰的方法是在網(wǎng)上搜索“RSA密鑰在線生成”,可以找到一些提供配套RSA密鑰生成的網(wǎng)站,如圖所示。5.4.1實現(xiàn)私有鏈交易順利提交之后,再次訪問/chain接口,可以看到剛剛提交的交易還沒有加入?yún)^(qū)塊鏈。這是因為剛剛提交的交易還沒有通過工作量證明算法加入新區(qū)塊,目前仍處于未確認(rèn)狀態(tài)。回到第一個頁面,單擊“新區(qū)塊”按鈕就會開始執(zhí)行工作量證明算法,這個過程可能會需要一些時間,特別是如果hard被設(shè)置得太大,時間會更久。當(dāng)工作量證明算法完成之后,包含未確認(rèn)交易的新區(qū)塊產(chǎn)生并加入?yún)^(qū)塊鏈,數(shù)據(jù)正式被區(qū)塊鏈存儲,其結(jié)果如圖。5.4.1實現(xiàn)私有鏈再次訪問/chain接口,可以看到剛才提交的交易已經(jīng)被存儲到區(qū)塊鏈中了,其結(jié)果如圖。5.4.2
實現(xiàn)公有鏈在接下來的開發(fā)中,我們首先會在前文開發(fā)的私有鏈的基礎(chǔ)上,繼續(xù)擴(kuò)展區(qū)塊鏈的功能,將其變?yōu)橐粋€完全開放的、無許可必要的、任何人都可以參與其中的公有鏈。常見的公有鏈系統(tǒng)架構(gòu)如圖所示。1.準(zhǔn)備工作目標(biāo):開發(fā)一個公有鏈節(jié)點(diǎn),每個節(jié)點(diǎn)可以接收和存儲任意用戶上傳的數(shù)據(jù),并且這些公有鏈節(jié)點(diǎn)可以通過網(wǎng)絡(luò)自動組成一個公有鏈網(wǎng)絡(luò)。5.4.2實現(xiàn)公有鏈2.改造Blockchain類改造的主要內(nèi)容如下。(1)能夠獲取其他節(jié)點(diǎn)的信息。(2)能夠驗證其他節(jié)點(diǎn)存儲的區(qū)塊鏈?zhǔn)欠窈戏?。?)能夠獲取區(qū)塊鏈網(wǎng)絡(luò)中具有最長長度的區(qū)塊鏈。前文建立的區(qū)塊鏈的創(chuàng)世區(qū)塊并不是固定的,它還記錄了區(qū)塊鏈開始運(yùn)行的時間,這對私有鏈來說不存在任何問題,但對公有鏈或聯(lián)盟鏈來說,會造成很大的困擾。這是因為在公有鏈網(wǎng)絡(luò)中,為了保證不同節(jié)點(diǎn)存儲的區(qū)塊鏈都是安全、可信的,我們需要確保這些區(qū)塊鏈都具有共同的、不可被更改的祖先。這樣我們只需要從創(chuàng)世區(qū)塊開始,檢查之后的每一個區(qū)塊是否是根據(jù)事先設(shè)定的規(guī)則生成的,就可以驗證區(qū)塊鏈的合法性。init()方法validChain()方法registerNode()方法longChain()方法5.4.2實現(xiàn)公有鏈3.改造區(qū)塊鏈API由于公有鏈需要在能夠執(zhí)行私有鏈的各種操作的基礎(chǔ)上再增加節(jié)點(diǎn)注冊、數(shù)據(jù)驗證與同步等操作,因此我們勢必要對區(qū)塊鏈的API進(jìn)行改造,改造的主要內(nèi)容如下。(1)增加了/newnode接口,功能是調(diào)用Blockchain類中的registerNode()方法完成新節(jié)點(diǎn)的注冊。(2)增加了/synchronize接口,功能是驗證其他已知節(jié)點(diǎn)上存儲的區(qū)塊鏈的合法性,并完成區(qū)塊鏈的同步。4.多任務(wù)技術(shù)所謂的多任務(wù)技術(shù)是指操作系統(tǒng)可以同時運(yùn)行多個任務(wù)。多任務(wù)的實現(xiàn)有以下3種方式。(1)多進(jìn)程模式。(2)多線程模式。(3)多進(jìn)程+多線程模式。5.4.2實現(xiàn)公有鏈5.測試與運(yùn)行為了方便測試,本小節(jié)沒有使用自動化運(yùn)行,而是借助/newnode接口和/synchronize接口完成對公有鏈的測試工作。首先同時在兩個控制臺中運(yùn)行接口.py文件,并且為兩個接口進(jìn)程設(shè)置不同的端口(本例中為5000和5001)。運(yùn)行結(jié)果如圖。然后通過瀏覽器訪問兩個接口進(jìn)程對應(yīng)的首頁,即:5000/index和:5001/index。首頁的訪問結(jié)果如圖所示。5.4.2實現(xiàn)公有鏈接下來單擊“注冊新
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目申請報告范文實例
- 業(yè)務(wù)員述職報告范文
- 2025廣告位長期租賃合同書
- 2025的員工食堂托管合同
- 課題申報書:工作場景游戲化賦能員工自我領(lǐng)導(dǎo)的機(jī)制與路徑研究
- 課題申報書:高中生心理健康教育體系建設(shè)與質(zhì)量提升研究
- 課題申報書:兒童早期動作發(fā)展遲緩風(fēng)險評估與應(yīng)對策略研究
- 上海商學(xué)院《材料成型》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海歐華職業(yè)技術(shù)學(xué)院《高等數(shù)學(xué)理論》2023-2024學(xué)年第一學(xué)期期末試卷
- 6一封信 公開課一等獎創(chuàng)新教學(xué)設(shè)計
- 外研社英語教材(一年級起點(diǎn))二年級上冊句型總結(jié)
- 國內(nèi)外建筑節(jié)能現(xiàn)狀及發(fā)展
- CNAS授權(quán)簽字人考核資料講課文檔
- 新能源電動汽車參考文獻(xiàn)有哪些
- 煤礦全員安全教育培訓(xùn)考試試卷+答案
- 國土資源調(diào)查與管理
- 液壓氣動技術(shù)專題報告2000字
- GB 19517-2023國家電氣設(shè)備安全技術(shù)規(guī)范
- 促進(jìn)學(xué)習(xí)的課堂評價
- DB14∕T 1722-2018 橋梁加固用碳纖維復(fù)合材料板材的耐久性應(yīng)用技術(shù)要求
- 2023-2024學(xué)年遼寧省大連市小學(xué)語文五年級期末評估試卷附參考答案和詳細(xì)解析
評論
0/150
提交評論