精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當(dāng)前位置:區(qū)塊鏈技術(shù)專區(qū) → 正文

區(qū)塊鏈實(shí)用型技能樹

責(zé)任編輯:cres |來源:企業(yè)網(wǎng)D1Net  2019-12-19 13:00:05 本文摘自:今日頭條

隨著新一波的區(qū)塊鏈熱潮,許多同學(xué)懷著巨大的熱情進(jìn)入了這個(gè)領(lǐng)域,同時(shí)也會(huì)遇到不少疑惑,區(qū)塊鏈開發(fā)需要哪些知識(shí)?怎么學(xué)習(xí)?從哪里學(xué)習(xí)?遇到問題怎么辦?本文將試圖給區(qū)塊鏈領(lǐng)域新人一個(gè)快速實(shí)用的指引。

隨著新一波的區(qū)塊鏈熱潮,許多同學(xué)懷著巨大的熱情進(jìn)入了這個(gè)領(lǐng)域,同時(shí)也會(huì)遇到不少疑惑,區(qū)塊鏈開發(fā)需要哪些知識(shí)?怎么學(xué)習(xí)?從哪里學(xué)習(xí)?遇到問題怎么辦?本文將試圖給區(qū)塊鏈領(lǐng)域新人一個(gè)快速實(shí)用的指引。

一、基本 IT 技能

區(qū)塊鏈堪稱“黑科技”,本身具有大量的技術(shù)元素,有志于從技術(shù)角度切入?yún)^(qū)塊鏈的人,應(yīng)該具備或掌握基本的 IT 技能,達(dá)到至少是常規(guī)級(jí)別“程序員”或“系統(tǒng)管理員”的技能水平。

新人必讀:區(qū)塊鏈實(shí)用型技能樹

首先需要熟練的 Linux 操作系統(tǒng)知識(shí)

大多數(shù)區(qū)塊鏈系統(tǒng)是可以跑在 Linux 上的,包括 CentOS 和 Ubuntu 等,你至少要會(huì)一些基本的 Linux 操作指令,比如 ls 查看目錄、ps 或 top 查看進(jìn)程、find 查找文件、netstat 查看網(wǎng)絡(luò)、ulimit 檢查系統(tǒng)參數(shù)限制、df/du 查看磁盤空間、用 apt/yum 安裝軟件等等,如果這些基本命令都不掌握,在 Linux 上操作肯定是舉步維艱的。

這方面的書和資料都很多,相信一星期就能上手。另外,善于 Linux 的 man 指令,可以獲得每個(gè)命令的詳細(xì)幫助。如果學(xué)會(huì)寫 shell 腳本,那更如虎添翼,可以把大量的繁瑣操作給自動(dòng)化了。

要有清晰的網(wǎng)絡(luò)概念

區(qū)塊鏈本來是分布式系統(tǒng),節(jié)點(diǎn)之間一定是通過網(wǎng)絡(luò)相連的,只是跑起來的話,不需要多高深的網(wǎng)絡(luò)知識(shí),只需要了解什么是 TCP/IP;公網(wǎng)、內(nèi)網(wǎng)、本地地址的區(qū)別;端口如何配置;節(jié)點(diǎn)和節(jié)點(diǎn)、SDK 和節(jié)點(diǎn)之間的互聯(lián)是否會(huì)被防火墻和網(wǎng)絡(luò)策略擋住;采用 ifconfig、telnet、ping、netstat 等命令檢查網(wǎng)絡(luò)信息和進(jìn)行探測(cè)、定位網(wǎng)絡(luò)問題。一般來說,Linux 書籍也都會(huì)介紹這部分內(nèi)容。

區(qū)塊鏈周邊的支持,如瀏覽器、中間件、業(yè)務(wù)應(yīng)用,會(huì)依賴一些第三方基礎(chǔ)軟件,如 MySQL/MariaDB 數(shù)據(jù)庫(kù)、Nginx 服務(wù)、Tomcat 服務(wù)等,至少懂得怎么去安裝指定版本的軟件,掌握修改這些軟件的配置文件并使之生效的基本操作,了解各款軟件的密碼、權(quán)限配置和網(wǎng)絡(luò)安全策略,以保護(hù)自身安全。

如果是基于云、Docker 或者 k8s 等容器環(huán)境構(gòu)建,需要了解使用的服務(wù)商或容器的功能、性能、配置方式,包括對(duì)資源的分配:CPU、內(nèi)存、帶寬、存儲(chǔ)等,以及安全和權(quán)限的配置、網(wǎng)絡(luò)策略配置、運(yùn)維方式,達(dá)到輕松分發(fā)構(gòu)建的同時(shí),還能保持其穩(wěn)定性和可用性。

各種云服務(wù)商和容器解決方案都有周全的文檔和客服服務(wù)渠道,可以幫助用戶順暢地使用。

到編程語言階段,可以根據(jù)自己的學(xué)習(xí)路徑,選擇不同的語言

如果是使用 Java 語言,那就應(yīng)該熟練掌握 Eclipse、IntelliJ IDEA 等集成 IDE,熟悉 Gradle 為主的工程管理軟件,熟悉 Spring、Springboot 等 Java 的基礎(chǔ)開發(fā)組件,熟悉在 IDE 或命令行下對(duì)資源路徑如 ApplicationContext 等路徑的定義,或許還有 myBatis 等流行的組件,這些都可以在 Java 相關(guān)的社區(qū)和網(wǎng)站找到資料和書籍。

在熟練使用 Java 語言的情況下,采用 Java SDK 接入到區(qū)塊鏈,跑起一個(gè)演示示例,將是非常輕松寫意的事情。

如果是采用其他語言,我們也提供了 Python、Node.js、Golang 等語言的區(qū)塊鏈 SDK。

不同的語言,其安裝包有不同的穩(wěn)定版本,會(huì)采用不同的環(huán)境和依賴安裝配置方法,會(huì)有不同的 IDE 和調(diào)試方法,就不在本文一一羅列,相信學(xué)習(xí)和使用語言這件事本身,于程序員已經(jīng)是最基本的技能了。

最后,作為在開源世界里沖浪的玩家,“全球最大同性交友網(wǎng)站”——GitHub 一定是要上的了

注冊(cè) GitHub 賬號(hào),掌握 Git 版本管理工具的基本操作,克隆和拉取開源軟件代碼,提交議題,提交自己的修改,給開源項(xiàng)目提交拉取請(qǐng)求,再順手點(diǎn)個(gè)星標(biāo),激情而有范兒,在開源世界里留下你的姓名。

二、區(qū)塊鏈領(lǐng)域的基礎(chǔ)知識(shí)棧

以下部分的知識(shí)和區(qū)塊鏈或區(qū)塊鏈某一個(gè)平臺(tái)更加相關(guān),從底到上依次是:

新人必讀:區(qū)塊鏈實(shí)用型技能樹

HASH(哈希算法)、簽名、證書

嚴(yán)格來說,這并不是區(qū)塊鏈領(lǐng)域的專有知識(shí),只是必須具備的基礎(chǔ)知識(shí),包括 SHA3/SHA256/RIPEMD160 等摘要算法,以及這些算法和“區(qū)塊鏈地址”的關(guān)系,基于公私鑰的數(shù)字簽名和驗(yàn)證方法,數(shù)字證書的概念和格式,比如 X.509 證書,以及保存證書/公私鑰的文件格式,如 PEM 文件、keystore文件等。

基礎(chǔ)應(yīng)用密碼學(xué)

基礎(chǔ)應(yīng)用密碼學(xué)其實(shí)范圍很廣,作為入門者,至少要了解對(duì)稱和非對(duì)稱加密的常見算法,如 AES 對(duì)稱加密,RSA、ECDSA 橢圓曲線等非對(duì)稱加密算法,以及這些算法在簽名驗(yàn)簽、數(shù)據(jù)加密、通信協(xié)商和保護(hù)方面的作用。如果要使用國(guó)密,那么需要了解 SM2~SM9 一系列算法的概念和使用。

分布式網(wǎng)絡(luò)結(jié)構(gòu)

區(qū)塊鏈?zhǔn)窍忍斓?ldquo;分布式網(wǎng)絡(luò)系統(tǒng)”,節(jié)點(diǎn)和節(jié)點(diǎn)通過網(wǎng)絡(luò)的 P2P 端口互連,客戶端、SDK 通過 RPC/通道端口互連,首先要保證網(wǎng)絡(luò)之間是互通的,監(jiān)聽的地址和端口是對(duì)的,端口是開放的,防火墻和網(wǎng)絡(luò)策略是正確的,用于安全連接的證書已經(jīng)到位,才能保證區(qū)塊鏈的“通則不痛”。

這也要求使用者具備基本的網(wǎng)絡(luò)知識(shí)、網(wǎng)絡(luò)工具,同時(shí)了解區(qū)塊鏈特有的節(jié)點(diǎn)類型(共識(shí)節(jié)點(diǎn)、觀察節(jié)點(diǎn)、輕節(jié)點(diǎn)等)、互連方式(點(diǎn)對(duì)點(diǎn)雙向連接、JSON RPC 的 HTTP 短連接、通道長(zhǎng)連接等)。詳情點(diǎn)擊參考 《FISCO BCOS 網(wǎng)絡(luò)端口講解》 。

智能合約

智能合約可說是應(yīng)用開發(fā)者直面區(qū)塊鏈的一道大門,入得此門,精彩無窮。流行的智能合約語言是 Solidity 語言,這門源自以太坊,從誕生開始就是為區(qū)塊鏈而來的。

Solidity 語言更新活躍、文檔完備,具有良好的一致性和事務(wù)性,功能足夠?qū)崿F(xiàn)中型的商業(yè)應(yīng)用。

當(dāng)然,它在實(shí)時(shí)調(diào)試、第三庫(kù)支持、運(yùn)行速度等方面還比不上成熟的語言,如果開發(fā)者想要用 C++ 等語言編寫智能合約,那就要對(duì)區(qū)塊鏈上的計(jì)算范式進(jìn)行深入了解,避免寫出無法共識(shí)的智能合約來,一般是建議有深入的了解后再采用 Solidity 之外的其他語言編寫合約。

要掌握 Solidity 合約,當(dāng)然是通讀文檔,并動(dòng)手嘗試。具體參考 該文檔 。

ABI 接口原理

在采用 EVM 作為虛擬機(jī)的區(qū)塊鏈上,EVM 執(zhí)行的是 Solidity 語言的合約。合約編譯會(huì)生成后綴名為 ABI 的文件,其實(shí)里面就是該合約接口定義的 JSON 文本,可以用文本查看器查閱,了解你寫的合約如何翻譯成 ABI 里的接口,接口返回類型,參數(shù)列表,參數(shù)類型等,只要有合約的 ABI 文件,就可以調(diào)用區(qū)塊鏈 SDK 的接口,解析這個(gè)合約相關(guān)的交易、返回值、回執(zhí)等。

區(qū)塊數(shù)據(jù)結(jié)構(gòu)

區(qū)塊(Block)有區(qū)塊頭和區(qū)塊體。區(qū)塊體有交易列表,交易列表里的每個(gè) 交易(Transaction)(Tx)有發(fā)起方、目標(biāo)地址、調(diào)用方法和參數(shù),以及發(fā)送者簽名。交易的結(jié)果會(huì)生成一個(gè)“ 回執(zhí)(Receipt)”,回執(zhí)里包含被調(diào)用方法的返回值、運(yùn)行過程生成的 EventLog 等……

了解這些,基本上就掌握了區(qū)塊鏈數(shù)據(jù)的脈絡(luò),還可以繼續(xù)深究數(shù)據(jù)結(jié)構(gòu)里的梅克爾根以及對(duì)應(yīng)的梅克爾樹是如何生成的,有什么作用(如用于 SPV:Simplified PaymentVerification)。具體參考 該文檔 。

RPC 接口

這里把區(qū)塊鏈節(jié)點(diǎn)暴露的功能接口統(tǒng)稱為“RPC 接口”。查看鏈上數(shù)據(jù),包括區(qū)塊、交易、回執(zhí)、系統(tǒng)信息、配置信息,向鏈上發(fā)起交易,以調(diào)用智能合約、修改系統(tǒng)配置等,或者通過 AMOP 協(xié)議發(fā)送消息、監(jiān)聽事件,都是通過 RPC 接口。

幾十個(gè) RPC 接口建議一一走讀,或善用搜索,以發(fā)現(xiàn)自己想要的接口。

接口通信采用的協(xié)議可能是 JSON RPC,或者是 FISCO BCOS 獨(dú)創(chuàng)的通道協(xié)議,SDK 基本上已經(jīng)對(duì)接口和協(xié)議進(jìn)行了良好的包裝,也可以在深入理解 ABI 和 RLP 等編碼模式前提下自行開發(fā)接口客戶端。具體參考 該文檔 。

準(zhǔn)入和權(quán)限模型

聯(lián)盟鏈強(qiáng)調(diào)安全可控,節(jié)點(diǎn)準(zhǔn)入是第一步,在鏈初始化后,其他節(jié)點(diǎn)或者 SDK 配置了相應(yīng)的證書,才能接入到既有的聯(lián)盟鏈上。

鏈上的角色用權(quán)限模型控制,包括管理員權(quán)限、發(fā)布合約的權(quán)限、創(chuàng)建表的權(quán)限、參數(shù)配置權(quán)限等,以避免角色之間操作混淆,某些角色既當(dāng)運(yùn)動(dòng)員又當(dāng)裁判員。

初學(xué)者需要仔細(xì)閱讀區(qū)塊鏈平臺(tái)提供的技術(shù)文檔了解原理,遵循操作手冊(cè)的步驟進(jìn)行操作。具體參考 該文檔 。

數(shù)據(jù)存儲(chǔ)模型

區(qū)塊鏈節(jié)點(diǎn)會(huì)采用文件數(shù)據(jù)庫(kù)(LevelDB 或 RocksDB),或者關(guān)系型數(shù)據(jù)庫(kù)如 MySQL 保存數(shù)據(jù),所以,鏈上是真的有“數(shù)據(jù)庫(kù)”的。

寫入數(shù)據(jù)庫(kù)的數(shù)據(jù)包括區(qū)塊、交易、回執(zhí)、合約產(chǎn)生的狀態(tài)數(shù)據(jù)等,是否寫入“調(diào)用合約產(chǎn)生的歷史數(shù)據(jù)”根據(jù)不同的平臺(tái)而定, FISCO BCOS 默認(rèn)只保存最新的狀態(tài)值,可以選擇性地將修改記錄寫入“回執(zhí)”或“歷史表”里進(jìn)行追蹤。

FISCO BCOS 還提供方案,將歷史數(shù)據(jù)導(dǎo)出到鏈下數(shù)據(jù)庫(kù)進(jìn)行關(guān)聯(lián)分析。具體參考 該文檔 。

共識(shí)機(jī)制原理

聯(lián)盟鏈通常采用插件化共識(shí)機(jī)制實(shí)現(xiàn),F(xiàn)ISCO BCOS 提供 PBFT 和 RAFT 兩種高效共識(shí)算法,而不會(huì)采用“挖礦”這些高耗能低效率的共識(shí)。

共識(shí)機(jī)制是區(qū)塊鏈的靈魂,對(duì)共識(shí)機(jī)制進(jìn)行深入學(xué)習(xí),才可以深入理解區(qū)塊鏈通過多方協(xié)作、達(dá)成高度一致性、支持交易事務(wù)性、防篡改防作惡的功效。具體參考 該文檔 。

區(qū)塊鏈的知識(shí)包羅萬象,更深層次的知識(shí)還有分布式系統(tǒng)理論、博弈論、前沿密碼學(xué)、經(jīng)濟(jì)學(xué)、社會(huì)學(xué)等,掌握以上的基礎(chǔ)知識(shí),再深入學(xué)習(xí),舉一反三,用場(chǎng)景去驗(yàn)證和探索創(chuàng)新式應(yīng)用,方可發(fā)揮技術(shù)的潛力,感受分布式商業(yè)的魅力。

三、做一個(gè)怎樣的學(xué)習(xí)者

在這個(gè)過程中,希望學(xué)習(xí)者做到:

讀文檔的耐心

我們的開源項(xiàng)目文檔足有 20 萬字以上的篇幅,公眾號(hào)里還有大量的技術(shù)解析和科普文章,這都是程序員們?cè)诰幋a之外,用盡自己僅有的語文儲(chǔ)備,碼出的海量文字,是一筆巨大的技術(shù)財(cái)富,涵蓋了相關(guān)開源項(xiàng)目的方方面面。如果能通讀,或者記住文檔結(jié)構(gòu)和標(biāo)題,需要時(shí)快速打開,足以解惑且深入。

搜資料的能力

文檔、公眾號(hào)都有搜索功能,當(dāng)想起和開源社區(qū)有關(guān)的問題時(shí),可以隨手用關(guān)鍵字搜索,一般都能找到答案。如果有語言不詳之處,可以向開源項(xiàng)目團(tuán)隊(duì)提出,或者根據(jù)自己的理解進(jìn)行補(bǔ)充。通用的知識(shí)點(diǎn),如操作系統(tǒng)、網(wǎng)絡(luò)等,通過公網(wǎng)搜索引擎,一般都能找到答案。

排查環(huán)境和依賴問題的能力

開源軟件牽涉的系統(tǒng)環(huán)境、第三方軟件、軟件的版本等常常有錯(cuò)綜復(fù)雜的依賴關(guān)系,太高或太低的版本都可能會(huì)有一些問題,請(qǐng)注意閱讀項(xiàng)目文檔對(duì)軟硬件環(huán)境和依賴的描述,保證自己的環(huán)境符合要求,并善用配置管理工具、軟件安裝工具獲取和設(shè)置合適的版本。

調(diào)試能力

如上所述,Solidity 語言的調(diào)試工具完善程度尚未達(dá)到完美,但可以善用合約的返回值、EventLog 等方式,通過 WeBASE、控制臺(tái)等趁手的工具進(jìn)行調(diào)試,并查閱 Solidity 文檔,了解問題可能出在哪里。

區(qū)塊鏈節(jié)點(diǎn)的日志開啟 debug 級(jí)別后,也會(huì)打印詳細(xì)的信息,可以查閱運(yùn)行日志,獲取運(yùn)行信息和可能的錯(cuò)誤信息,將這些信息與自己所做的操作比如發(fā)交易的流程結(jié)合起來進(jìn)行分析,提高調(diào)試效率。

同時(shí),目前的開源軟件通常會(huì)在屏幕上打印錯(cuò)誤原因和解決問題的提示,仔細(xì)查看操作反饋,大概率能了解錯(cuò)誤原因和解決方案。

代碼閱讀能力

開源軟件的最大效能是把代碼毫無遺漏的攤到了開發(fā)者和學(xué)習(xí)者面前,了解代碼結(jié)構(gòu),查閱代碼里的關(guān)鍵流程,用關(guān)鍵字去搜索代碼里的對(duì)應(yīng)實(shí)現(xiàn),都可以深入系統(tǒng)細(xì)節(jié),挖掘設(shè)計(jì)思想,定位問題,尋找優(yōu)化方法。一個(gè)好學(xué)且硬核的程序員,足可通過代碼,和世界對(duì)話。

問問題的方式方法

“一個(gè)好問題,比答案還重要”。我們的社區(qū)非?;钴S,大家都很熱情地答復(fù)和解決問題。我們鼓勵(lì)在社區(qū)里公開提出問題,一方面使大家都可以分享問題,找到解決方案,另一方面提問者也可以得到更多人的幫助。同時(shí),希望提問者提出問題時(shí),一次性描述詳盡,把相關(guān)的操作步驟、系統(tǒng)環(huán)境、軟件版本、出錯(cuò)提示以及希望得到的解決方案都提出來。

如果是通用性的問題,可以先搜索再提問,有利于培養(yǎng)獨(dú)立解決問題的能力。希望提問者能向社區(qū)反饋更深層次的問題,以幫助社區(qū)快速優(yōu)化。對(duì)很多典型問題,社區(qū)也積累了一些行之有效的解決方案,我們會(huì)整理和公布出來,以便查閱。

從新人到老鳥的路也許漫漫,如果能參考這篇小文的一些方法,可以少踩許多坑,多寫一些應(yīng)用。Enjoy blockchain,社區(qū)與你共同進(jìn)步。

關(guān)鍵字:區(qū)塊鏈

本文摘自:今日頭條

x 區(qū)塊鏈實(shí)用型技能樹 掃一掃
分享本文到朋友圈
當(dāng)前位置:區(qū)塊鏈技術(shù)專區(qū) → 正文

區(qū)塊鏈實(shí)用型技能樹

責(zé)任編輯:cres |來源:企業(yè)網(wǎng)D1Net  2019-12-19 13:00:05 本文摘自:今日頭條

隨著新一波的區(qū)塊鏈熱潮,許多同學(xué)懷著巨大的熱情進(jìn)入了這個(gè)領(lǐng)域,同時(shí)也會(huì)遇到不少疑惑,區(qū)塊鏈開發(fā)需要哪些知識(shí)?怎么學(xué)習(xí)?從哪里學(xué)習(xí)?遇到問題怎么辦?本文將試圖給區(qū)塊鏈領(lǐng)域新人一個(gè)快速實(shí)用的指引。

隨著新一波的區(qū)塊鏈熱潮,許多同學(xué)懷著巨大的熱情進(jìn)入了這個(gè)領(lǐng)域,同時(shí)也會(huì)遇到不少疑惑,區(qū)塊鏈開發(fā)需要哪些知識(shí)?怎么學(xué)習(xí)?從哪里學(xué)習(xí)?遇到問題怎么辦?本文將試圖給區(qū)塊鏈領(lǐng)域新人一個(gè)快速實(shí)用的指引。

一、基本 IT 技能

區(qū)塊鏈堪稱“黑科技”,本身具有大量的技術(shù)元素,有志于從技術(shù)角度切入?yún)^(qū)塊鏈的人,應(yīng)該具備或掌握基本的 IT 技能,達(dá)到至少是常規(guī)級(jí)別“程序員”或“系統(tǒng)管理員”的技能水平。

新人必讀:區(qū)塊鏈實(shí)用型技能樹

首先需要熟練的 Linux 操作系統(tǒng)知識(shí)

大多數(shù)區(qū)塊鏈系統(tǒng)是可以跑在 Linux 上的,包括 CentOS 和 Ubuntu 等,你至少要會(huì)一些基本的 Linux 操作指令,比如 ls 查看目錄、ps 或 top 查看進(jìn)程、find 查找文件、netstat 查看網(wǎng)絡(luò)、ulimit 檢查系統(tǒng)參數(shù)限制、df/du 查看磁盤空間、用 apt/yum 安裝軟件等等,如果這些基本命令都不掌握,在 Linux 上操作肯定是舉步維艱的。

這方面的書和資料都很多,相信一星期就能上手。另外,善于 Linux 的 man 指令,可以獲得每個(gè)命令的詳細(xì)幫助。如果學(xué)會(huì)寫 shell 腳本,那更如虎添翼,可以把大量的繁瑣操作給自動(dòng)化了。

要有清晰的網(wǎng)絡(luò)概念

區(qū)塊鏈本來是分布式系統(tǒng),節(jié)點(diǎn)之間一定是通過網(wǎng)絡(luò)相連的,只是跑起來的話,不需要多高深的網(wǎng)絡(luò)知識(shí),只需要了解什么是 TCP/IP;公網(wǎng)、內(nèi)網(wǎng)、本地地址的區(qū)別;端口如何配置;節(jié)點(diǎn)和節(jié)點(diǎn)、SDK 和節(jié)點(diǎn)之間的互聯(lián)是否會(huì)被防火墻和網(wǎng)絡(luò)策略擋住;采用 ifconfig、telnet、ping、netstat 等命令檢查網(wǎng)絡(luò)信息和進(jìn)行探測(cè)、定位網(wǎng)絡(luò)問題。一般來說,Linux 書籍也都會(huì)介紹這部分內(nèi)容。

區(qū)塊鏈周邊的支持,如瀏覽器、中間件、業(yè)務(wù)應(yīng)用,會(huì)依賴一些第三方基礎(chǔ)軟件,如 MySQL/MariaDB 數(shù)據(jù)庫(kù)、Nginx 服務(wù)、Tomcat 服務(wù)等,至少懂得怎么去安裝指定版本的軟件,掌握修改這些軟件的配置文件并使之生效的基本操作,了解各款軟件的密碼、權(quán)限配置和網(wǎng)絡(luò)安全策略,以保護(hù)自身安全。

如果是基于云、Docker 或者 k8s 等容器環(huán)境構(gòu)建,需要了解使用的服務(wù)商或容器的功能、性能、配置方式,包括對(duì)資源的分配:CPU、內(nèi)存、帶寬、存儲(chǔ)等,以及安全和權(quán)限的配置、網(wǎng)絡(luò)策略配置、運(yùn)維方式,達(dá)到輕松分發(fā)構(gòu)建的同時(shí),還能保持其穩(wěn)定性和可用性。

各種云服務(wù)商和容器解決方案都有周全的文檔和客服服務(wù)渠道,可以幫助用戶順暢地使用。

到編程語言階段,可以根據(jù)自己的學(xué)習(xí)路徑,選擇不同的語言

如果是使用 Java 語言,那就應(yīng)該熟練掌握 Eclipse、IntelliJ IDEA 等集成 IDE,熟悉 Gradle 為主的工程管理軟件,熟悉 Spring、Springboot 等 Java 的基礎(chǔ)開發(fā)組件,熟悉在 IDE 或命令行下對(duì)資源路徑如 ApplicationContext 等路徑的定義,或許還有 myBatis 等流行的組件,這些都可以在 Java 相關(guān)的社區(qū)和網(wǎng)站找到資料和書籍。

在熟練使用 Java 語言的情況下,采用 Java SDK 接入到區(qū)塊鏈,跑起一個(gè)演示示例,將是非常輕松寫意的事情。

如果是采用其他語言,我們也提供了 Python、Node.js、Golang 等語言的區(qū)塊鏈 SDK。

不同的語言,其安裝包有不同的穩(wěn)定版本,會(huì)采用不同的環(huán)境和依賴安裝配置方法,會(huì)有不同的 IDE 和調(diào)試方法,就不在本文一一羅列,相信學(xué)習(xí)和使用語言這件事本身,于程序員已經(jīng)是最基本的技能了。

最后,作為在開源世界里沖浪的玩家,“全球最大同性交友網(wǎng)站”——GitHub 一定是要上的了

注冊(cè) GitHub 賬號(hào),掌握 Git 版本管理工具的基本操作,克隆和拉取開源軟件代碼,提交議題,提交自己的修改,給開源項(xiàng)目提交拉取請(qǐng)求,再順手點(diǎn)個(gè)星標(biāo),激情而有范兒,在開源世界里留下你的姓名。

二、區(qū)塊鏈領(lǐng)域的基礎(chǔ)知識(shí)棧

以下部分的知識(shí)和區(qū)塊鏈或區(qū)塊鏈某一個(gè)平臺(tái)更加相關(guān),從底到上依次是:

新人必讀:區(qū)塊鏈實(shí)用型技能樹

HASH(哈希算法)、簽名、證書

嚴(yán)格來說,這并不是區(qū)塊鏈領(lǐng)域的專有知識(shí),只是必須具備的基礎(chǔ)知識(shí),包括 SHA3/SHA256/RIPEMD160 等摘要算法,以及這些算法和“區(qū)塊鏈地址”的關(guān)系,基于公私鑰的數(shù)字簽名和驗(yàn)證方法,數(shù)字證書的概念和格式,比如 X.509 證書,以及保存證書/公私鑰的文件格式,如 PEM 文件、keystore文件等。

基礎(chǔ)應(yīng)用密碼學(xué)

基礎(chǔ)應(yīng)用密碼學(xué)其實(shí)范圍很廣,作為入門者,至少要了解對(duì)稱和非對(duì)稱加密的常見算法,如 AES 對(duì)稱加密,RSA、ECDSA 橢圓曲線等非對(duì)稱加密算法,以及這些算法在簽名驗(yàn)簽、數(shù)據(jù)加密、通信協(xié)商和保護(hù)方面的作用。如果要使用國(guó)密,那么需要了解 SM2~SM9 一系列算法的概念和使用。

分布式網(wǎng)絡(luò)結(jié)構(gòu)

區(qū)塊鏈?zhǔn)窍忍斓?ldquo;分布式網(wǎng)絡(luò)系統(tǒng)”,節(jié)點(diǎn)和節(jié)點(diǎn)通過網(wǎng)絡(luò)的 P2P 端口互連,客戶端、SDK 通過 RPC/通道端口互連,首先要保證網(wǎng)絡(luò)之間是互通的,監(jiān)聽的地址和端口是對(duì)的,端口是開放的,防火墻和網(wǎng)絡(luò)策略是正確的,用于安全連接的證書已經(jīng)到位,才能保證區(qū)塊鏈的“通則不痛”。

這也要求使用者具備基本的網(wǎng)絡(luò)知識(shí)、網(wǎng)絡(luò)工具,同時(shí)了解區(qū)塊鏈特有的節(jié)點(diǎn)類型(共識(shí)節(jié)點(diǎn)、觀察節(jié)點(diǎn)、輕節(jié)點(diǎn)等)、互連方式(點(diǎn)對(duì)點(diǎn)雙向連接、JSON RPC 的 HTTP 短連接、通道長(zhǎng)連接等)。詳情點(diǎn)擊參考 《FISCO BCOS 網(wǎng)絡(luò)端口講解》 。

智能合約

智能合約可說是應(yīng)用開發(fā)者直面區(qū)塊鏈的一道大門,入得此門,精彩無窮。流行的智能合約語言是 Solidity 語言,這門源自以太坊,從誕生開始就是為區(qū)塊鏈而來的。

Solidity 語言更新活躍、文檔完備,具有良好的一致性和事務(wù)性,功能足夠?qū)崿F(xiàn)中型的商業(yè)應(yīng)用。

當(dāng)然,它在實(shí)時(shí)調(diào)試、第三庫(kù)支持、運(yùn)行速度等方面還比不上成熟的語言,如果開發(fā)者想要用 C++ 等語言編寫智能合約,那就要對(duì)區(qū)塊鏈上的計(jì)算范式進(jìn)行深入了解,避免寫出無法共識(shí)的智能合約來,一般是建議有深入的了解后再采用 Solidity 之外的其他語言編寫合約。

要掌握 Solidity 合約,當(dāng)然是通讀文檔,并動(dòng)手嘗試。具體參考 該文檔 。

ABI 接口原理

在采用 EVM 作為虛擬機(jī)的區(qū)塊鏈上,EVM 執(zhí)行的是 Solidity 語言的合約。合約編譯會(huì)生成后綴名為 ABI 的文件,其實(shí)里面就是該合約接口定義的 JSON 文本,可以用文本查看器查閱,了解你寫的合約如何翻譯成 ABI 里的接口,接口返回類型,參數(shù)列表,參數(shù)類型等,只要有合約的 ABI 文件,就可以調(diào)用區(qū)塊鏈 SDK 的接口,解析這個(gè)合約相關(guān)的交易、返回值、回執(zhí)等。

區(qū)塊數(shù)據(jù)結(jié)構(gòu)

區(qū)塊(Block)有區(qū)塊頭和區(qū)塊體。區(qū)塊體有交易列表,交易列表里的每個(gè) 交易(Transaction)(Tx)有發(fā)起方、目標(biāo)地址、調(diào)用方法和參數(shù),以及發(fā)送者簽名。交易的結(jié)果會(huì)生成一個(gè)“ 回執(zhí)(Receipt)”,回執(zhí)里包含被調(diào)用方法的返回值、運(yùn)行過程生成的 EventLog 等……

了解這些,基本上就掌握了區(qū)塊鏈數(shù)據(jù)的脈絡(luò),還可以繼續(xù)深究數(shù)據(jù)結(jié)構(gòu)里的梅克爾根以及對(duì)應(yīng)的梅克爾樹是如何生成的,有什么作用(如用于 SPV:Simplified PaymentVerification)。具體參考 該文檔 。

RPC 接口

這里把區(qū)塊鏈節(jié)點(diǎn)暴露的功能接口統(tǒng)稱為“RPC 接口”。查看鏈上數(shù)據(jù),包括區(qū)塊、交易、回執(zhí)、系統(tǒng)信息、配置信息,向鏈上發(fā)起交易,以調(diào)用智能合約、修改系統(tǒng)配置等,或者通過 AMOP 協(xié)議發(fā)送消息、監(jiān)聽事件,都是通過 RPC 接口。

幾十個(gè) RPC 接口建議一一走讀,或善用搜索,以發(fā)現(xiàn)自己想要的接口。

接口通信采用的協(xié)議可能是 JSON RPC,或者是 FISCO BCOS 獨(dú)創(chuàng)的通道協(xié)議,SDK 基本上已經(jīng)對(duì)接口和協(xié)議進(jìn)行了良好的包裝,也可以在深入理解 ABI 和 RLP 等編碼模式前提下自行開發(fā)接口客戶端。具體參考 該文檔 。

準(zhǔn)入和權(quán)限模型

聯(lián)盟鏈強(qiáng)調(diào)安全可控,節(jié)點(diǎn)準(zhǔn)入是第一步,在鏈初始化后,其他節(jié)點(diǎn)或者 SDK 配置了相應(yīng)的證書,才能接入到既有的聯(lián)盟鏈上。

鏈上的角色用權(quán)限模型控制,包括管理員權(quán)限、發(fā)布合約的權(quán)限、創(chuàng)建表的權(quán)限、參數(shù)配置權(quán)限等,以避免角色之間操作混淆,某些角色既當(dāng)運(yùn)動(dòng)員又當(dāng)裁判員。

初學(xué)者需要仔細(xì)閱讀區(qū)塊鏈平臺(tái)提供的技術(shù)文檔了解原理,遵循操作手冊(cè)的步驟進(jìn)行操作。具體參考 該文檔 。

數(shù)據(jù)存儲(chǔ)模型

區(qū)塊鏈節(jié)點(diǎn)會(huì)采用文件數(shù)據(jù)庫(kù)(LevelDB 或 RocksDB),或者關(guān)系型數(shù)據(jù)庫(kù)如 MySQL 保存數(shù)據(jù),所以,鏈上是真的有“數(shù)據(jù)庫(kù)”的。

寫入數(shù)據(jù)庫(kù)的數(shù)據(jù)包括區(qū)塊、交易、回執(zhí)、合約產(chǎn)生的狀態(tài)數(shù)據(jù)等,是否寫入“調(diào)用合約產(chǎn)生的歷史數(shù)據(jù)”根據(jù)不同的平臺(tái)而定, FISCO BCOS 默認(rèn)只保存最新的狀態(tài)值,可以選擇性地將修改記錄寫入“回執(zhí)”或“歷史表”里進(jìn)行追蹤。

FISCO BCOS 還提供方案,將歷史數(shù)據(jù)導(dǎo)出到鏈下數(shù)據(jù)庫(kù)進(jìn)行關(guān)聯(lián)分析。具體參考 該文檔 。

共識(shí)機(jī)制原理

聯(lián)盟鏈通常采用插件化共識(shí)機(jī)制實(shí)現(xiàn),F(xiàn)ISCO BCOS 提供 PBFT 和 RAFT 兩種高效共識(shí)算法,而不會(huì)采用“挖礦”這些高耗能低效率的共識(shí)。

共識(shí)機(jī)制是區(qū)塊鏈的靈魂,對(duì)共識(shí)機(jī)制進(jìn)行深入學(xué)習(xí),才可以深入理解區(qū)塊鏈通過多方協(xié)作、達(dá)成高度一致性、支持交易事務(wù)性、防篡改防作惡的功效。具體參考 該文檔 。

區(qū)塊鏈的知識(shí)包羅萬象,更深層次的知識(shí)還有分布式系統(tǒng)理論、博弈論、前沿密碼學(xué)、經(jīng)濟(jì)學(xué)、社會(huì)學(xué)等,掌握以上的基礎(chǔ)知識(shí),再深入學(xué)習(xí),舉一反三,用場(chǎng)景去驗(yàn)證和探索創(chuàng)新式應(yīng)用,方可發(fā)揮技術(shù)的潛力,感受分布式商業(yè)的魅力。

三、做一個(gè)怎樣的學(xué)習(xí)者

在這個(gè)過程中,希望學(xué)習(xí)者做到:

讀文檔的耐心

我們的開源項(xiàng)目文檔足有 20 萬字以上的篇幅,公眾號(hào)里還有大量的技術(shù)解析和科普文章,這都是程序員們?cè)诰幋a之外,用盡自己僅有的語文儲(chǔ)備,碼出的海量文字,是一筆巨大的技術(shù)財(cái)富,涵蓋了相關(guān)開源項(xiàng)目的方方面面。如果能通讀,或者記住文檔結(jié)構(gòu)和標(biāo)題,需要時(shí)快速打開,足以解惑且深入。

搜資料的能力

文檔、公眾號(hào)都有搜索功能,當(dāng)想起和開源社區(qū)有關(guān)的問題時(shí),可以隨手用關(guān)鍵字搜索,一般都能找到答案。如果有語言不詳之處,可以向開源項(xiàng)目團(tuán)隊(duì)提出,或者根據(jù)自己的理解進(jìn)行補(bǔ)充。通用的知識(shí)點(diǎn),如操作系統(tǒng)、網(wǎng)絡(luò)等,通過公網(wǎng)搜索引擎,一般都能找到答案。

排查環(huán)境和依賴問題的能力

開源軟件牽涉的系統(tǒng)環(huán)境、第三方軟件、軟件的版本等常常有錯(cuò)綜復(fù)雜的依賴關(guān)系,太高或太低的版本都可能會(huì)有一些問題,請(qǐng)注意閱讀項(xiàng)目文檔對(duì)軟硬件環(huán)境和依賴的描述,保證自己的環(huán)境符合要求,并善用配置管理工具、軟件安裝工具獲取和設(shè)置合適的版本。

調(diào)試能力

如上所述,Solidity 語言的調(diào)試工具完善程度尚未達(dá)到完美,但可以善用合約的返回值、EventLog 等方式,通過 WeBASE、控制臺(tái)等趁手的工具進(jìn)行調(diào)試,并查閱 Solidity 文檔,了解問題可能出在哪里。

區(qū)塊鏈節(jié)點(diǎn)的日志開啟 debug 級(jí)別后,也會(huì)打印詳細(xì)的信息,可以查閱運(yùn)行日志,獲取運(yùn)行信息和可能的錯(cuò)誤信息,將這些信息與自己所做的操作比如發(fā)交易的流程結(jié)合起來進(jìn)行分析,提高調(diào)試效率。

同時(shí),目前的開源軟件通常會(huì)在屏幕上打印錯(cuò)誤原因和解決問題的提示,仔細(xì)查看操作反饋,大概率能了解錯(cuò)誤原因和解決方案。

代碼閱讀能力

開源軟件的最大效能是把代碼毫無遺漏的攤到了開發(fā)者和學(xué)習(xí)者面前,了解代碼結(jié)構(gòu),查閱代碼里的關(guān)鍵流程,用關(guān)鍵字去搜索代碼里的對(duì)應(yīng)實(shí)現(xiàn),都可以深入系統(tǒng)細(xì)節(jié),挖掘設(shè)計(jì)思想,定位問題,尋找優(yōu)化方法。一個(gè)好學(xué)且硬核的程序員,足可通過代碼,和世界對(duì)話。

問問題的方式方法

“一個(gè)好問題,比答案還重要”。我們的社區(qū)非常活躍,大家都很熱情地答復(fù)和解決問題。我們鼓勵(lì)在社區(qū)里公開提出問題,一方面使大家都可以分享問題,找到解決方案,另一方面提問者也可以得到更多人的幫助。同時(shí),希望提問者提出問題時(shí),一次性描述詳盡,把相關(guān)的操作步驟、系統(tǒng)環(huán)境、軟件版本、出錯(cuò)提示以及希望得到的解決方案都提出來。

如果是通用性的問題,可以先搜索再提問,有利于培養(yǎng)獨(dú)立解決問題的能力。希望提問者能向社區(qū)反饋更深層次的問題,以幫助社區(qū)快速優(yōu)化。對(duì)很多典型問題,社區(qū)也積累了一些行之有效的解決方案,我們會(huì)整理和公布出來,以便查閱。

從新人到老鳥的路也許漫漫,如果能參考這篇小文的一些方法,可以少踩許多坑,多寫一些應(yīng)用。Enjoy blockchain,社區(qū)與你共同進(jìn)步。

關(guān)鍵字:區(qū)塊鏈

本文摘自:今日頭條

電子周刊
回到頂部

關(guān)于我們聯(lián)系我們版權(quán)聲明隱私條款廣告服務(wù)友情鏈接投稿中心招賢納士

企業(yè)網(wǎng)版權(quán)所有 ©2010-2024 京ICP備09108050號(hào)-6 京公網(wǎng)安備 11010502049343號(hào)

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 柏乡县| 东兰县| 嘉兴市| 偏关县| 新丰县| 裕民县| 大石桥市| 新兴县| 江达县| 尖扎县| 格尔木市| 长顺县| 唐山市| 刚察县| 静安区| 新乡县| 海淀区| 德清县| 浦城县| 耒阳市| 广安市| 玛多县| 武清区| 白沙| 和田市| 黄平县| 衡阳市| 平度市| 女性| 汉源县| 嘉定区| 探索| 昭通市| 盖州市| 南涧| 泰州市| 南乐县| 金堂县| 资中县| 新源县| 三江|