区块链工程师需要掌握哪些技能?

作者:Annchain(本文一切著作权归annchain技术团队所有,未经许可,不得转载。若需转载请联系页尾二维码。) 从2017年开始,区块链逐步成为互联网的风口浪尖。曝光度的激增带来了人才市场的火爆。 区块链所要求的知识并非什么特殊的或者新兴的知识,除了密码学领域的知识需要专门了解之外,其他知识和技能几乎都是一些比较通用的网络开发核心知识。 由于区块链行业涉及到的范…

大家好,又见面了,我是你们的朋友全栈君。

作者:Annchain

(本文一切著作权归annchain技术团队所有,未经许可,不得转载。若需转载请联系页尾二维码。)

 

从2017年开始,区块链逐步成为互联网的风口浪尖。曝光度的激增带来了人才市场的火爆。

 

区块链所要求的知识并非什么特殊的或者新兴的知识,除了密码学领域的知识需要专门了解之外,其他知识和技能几乎都是一些比较通用的网络开发核心知识。

 

由于区块链行业涉及到的范围非常广泛,从各种基础设施,到各种上层应用,它们对技能的要求范围是不一样的。根据以往经验,区块链开发大致可分为两个大的部分:技术层和应用层,根据自己以往的专业技能背景选择自己合适的领域。

 

 

一、技术层

 

 

技术层是区块链最下面的一层,这一层主要工作是底层技术与基础设施的开发。我们可以把技术层比作操作系统的内核,应用层则是在操作系统之上构建各种软件。比如我们最常见的比特币网络,它的核心技术就来源于它的共识机制(POW)。当然,对于大部分链来说,共识的原理都是其最核心的部件。要构建这样的共识机制,还需要更加底层的技术支持,比如网络通信、数据存储、加密安全等等。所以,这一层对于技术的内涵要求比较高,这里的技术是一项综合的能力,可以总结为三个部分:理论基础、专业经验以及技术能力。

 

1)理论基础

 

理论基础主要是指分布式系统理论,如果是专业出身(比如计算机专业-分布式系统方向),或者有过从事过分布式数据库、网络等相关的经验,那么可能会对这一部分相对了解或熟悉。熟悉并深入理解分布式网络的特点和各种算法,是能够在区块链领域大有作为的前提之一。

 

这里,简单列举需要掌握的一些分布式系统核心概念:

 

· 全序/偏序,因果顺序

· 物理时钟/逻辑时钟

· 两阶段算法(2PC)/三阶段算法(3PC)

· Safety && Liveness

· FLP 不可能定理

· Paxos/Multi-paxos

· Raft/Multi-Raft

· CAP 理论

· 副本一致性、强/弱、最终一致性

· 简单哈希/一致性哈希

· Base/ACID、分布式 ID 等等

· BFT(Byzantine Fault Tolerance)

 

2)专业经验

 

专业经验则是指对目前最主流的区块链项目的掌握程度,比如 Bitcoin、Ethereum 等,不仅要了解它们的运行原理,账户模型、智能合约等,而且要能在它们的基础上持续改进、开拓以及创新,比如对侧链的轻节点、分布式存储、扩容方案等有一定的理解等。

 

  这里主要展示对区块链的专业经验的一些要求:

 

· 目前区块链主流共识算法之间的差异(比如 PBFT、 POW 等原理与区别)

· 联盟链、公链及私链之间的区别及适用场景

· 针对区块链的攻击方式:51%算力攻击、Sybil 攻击、Eclipse 攻击、DDos 攻击

· P2P 网络通信模式(Gossip、Totem、DHT 等)

· Merkle Tree 数据结构

· Bitcoin UTXO 模型,以太坊转账流程(GAS 计算、Nonce 值等等)

· 以太坊智能合约的编写,Solidity 相关知识

· 密码学(公钥/私钥、ECDSA、RSA、哈希算法)、签名、多重签名、盲签名等等

· 以太坊协议:ERC20、ERC721、ERC223、ERC875

· 比特币(P2SH 地址、交易脚本等)

 

3)技术准备

 

技术能力则是一项通用能力,是对网络编程、内存控制、操作系统、编解码、密码学、异步编程等开发功底的一个综合考核。它是一个日积月累的能力,扎实的技术背景可以让我们快速适应区块链底层的开发。

 

 以下是一些比较核心的研发能力和技术准备:

 

· 数据结构(二叉树、trie 树、数组、结构体/类 等等)

· 算法(回溯/递归、字符串编码、排序、搜索等等)

· 锁(原子锁、互斥锁/自旋锁)、死锁检测、内存泄露检测

· 多线程编程(共享内存、线程/进程/协程)、用户态/内核态

· 同步、异步、阻塞/非阻塞、多路复用 I/O

· 异步编程/响应式编程范式、事件驱动

· 网络编程:TCP/IP/UDP 协议、time_wait 状态、socket/select/epoll、C10k 问题等

· 服务器编程:熟悉 Linux 编程、系统资源(如:cpu/io、disk、usage等)

· HTTP 协议、RPC 通信、负债均衡等等

 

 

二、应用层

 

 

应用层是区块链最重要的一层,也是区块链行业能蓬勃和持续发展的力量来源。应用层主要涉及的是区块链产品,我们常见的有比如:数字钱包(imToken)、分布式交易所(Cosmos、bitshare)、浏览器插件(MetaMask)、区块链游戏(CryptoKitties、FOMO3D)、保险产品等等。

 

开发这些应用级别的产品,通常是与底层的区块链系统进行交互,因此并不需要对区块链底层技术达到非常专业的掌握。但需要我们对区块链的核心概念有了解,以便能与链的开发者在同一语言上进行沟通而不至于误解。

 

当然,应用层的开发对技术的要求也是共同的。它虽然没有技术层对技术能力要求的那么高,但是其更加侧重对创新和落地。

 

作为区块链行业中的一员,我们都能深深感受到区块链技术对互联网世界的重大意义,它不仅带来的是技术上的创新,而且对未来的经济关系、行业分工都有着巨大的价值潜力。当然现在,区块链技术还处在改变世界的早期阶段,没有一个大规模的应用是其一个硬伤。但是我们也看到,各种区块链创新项目在这波浪潮中如雨后春笋般冒出来,许多顶尖的人才都在致力于解决当前区块链项目的去中心化、安全性和可扩展性这个所谓的“不可能三角”,甚至已经有项目处在领先的位置。所以,我们不仅需要找准自己的目标和方向,更需要夯实技能,争取成为区块链领域中有分量的一员。

 

区块链漫漫长路,路上一同前行。

 

Annchain(众安链)是由众安科技和众安-复旦区块链与信息安全联合实验室自主研发,国内首个基于DAG架构并支持智能合约的高性能通用区块链平台。作为工信部指导的中国区块链技术和产业发展论坛两大开源项目之一,Annchain立足于中国,致力于助力中国抢占区块链全球话语权。

Annchain专注于易用、高效、安全和隐私等关键特性,兼具模块化和高度可定制的特点。目前已在数十家生态伙伴的商业场景中落地,场景涵盖农业溯源、珠宝溯源、资产通证化、公益、医疗数据共享、广告分发平台等。开发者可基于Annchain高效构建适合自身的区块链应用,期待更多伙伴加入我们一起探索新应用。

 

众安科技

众安信息技术服务有限公司(简称“众安科技”)成立于2016年11月2日,是由蚂蚁金服、腾讯、中国平安发起设立的众安保险旗下的全资科技子公司,专注于区块链、人工智能、密码学、物联网等前沿技术研究。众安科技汇聚行业内的顶尖科研人才,其中区块链团队规模近200人,多数来自于各顶尖区块链团队。

 

众安-复旦区块链与信息安全联合实验室

众安-复旦区块链与信息安全联合实验室是国内首个高校与企业联合组建的专一区块链实验室,专注于区块链相关技术的底层理论研究。同时,实验室联合复旦大学、上海众人信息技术有限公司成立了上海区块链工程研究中心。中心伴随构建长效的产学研用合作机制的同时,支撑开展增强的密码学能力,高性能区块链(如Annchain)等,为行业提供示范。

 

 

更多关于annchain:

www.annchain.io

Github: github.com/annchain

Twitter: https://twitter.com/Annchain007

Facebook: https://www.facebook.com/Annchain-295110641341258

TelegramGroup: t.me/Annchain

TelegramChannel: t.me/AnnchainChannel

 

                                                                            扫码备注昵称+研发方向

                                                                             加入annchain技术社群

annchain.jpg

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/125446.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • tkmapper mybatis plus 集成_gitea docker

    tkmapper mybatis plus 集成_gitea docker———————————————————————————————————————————-一、设置TkMapper单独放在一个包:这个包只有TkMapper一个文件importtk.mybatis.mapper.common.M…

  • 了解图形数据库_图形数据库neo4j

    了解图形数据库_图形数据库neo4j企业架构师应该知道什么您在Google上获得的图表数据库的描述主要是学术性的。我看到很多关于图形数据库的描述,它们讨论了Königsberg的七座桥梁或互联网的发明者Berners-Lee。有理论和愿景很好,但对我来说,我仍然认为引导相关性很重要。为什么图形数据库对您很重要?想象一下存储在当地连锁餐厅的数据。如果您要跟踪,则将客户信息存储在一个数据库表中,将您提供的项目存储在另一个数据…

    2022年10月29日
  • python提取字符串中的数字「建议收藏」

    python提取字符串中的数字「建议收藏」一、isdigit()函数isdigit()函数是检测输入字符串是否只由数字组成。如果字符串只包含数字则返回True否则返回False。dream=”123456″print(dream.isdigit())#返回:Truedream=”123abc456″print(dream.isdigit())#返回:Falsedream=’abcd’print(dream.isdigit())#返回:False二、filter()函数说明:filter()函

    2022年10月10日
  • 如何求a类不确定度_不确定度a类分量与随机误差相对应

    如何求a类不确定度_不确定度a类分量与随机误差相对应1.计算A类不确定度u(a):某一工业容器温度控制要求为10℃,用温度计连续。A类不确定度的计算方法n=6时,u(a)=S(x)数据平均值设为q用贝塞尔公式S(x)*S(x)=[(X1-q)*(X1-q)+(X2-q)*(X2-q).+(X6-q)(X6-q)]/(6-1)可求出a类不确定度b类Ub就是0.6."A类不确定度"和"B类不确定度"的区别在于测定方法、输入量、系统效应的不…

  • sit、qas、dev、pet「建议收藏」

    sit、qas、dev、pet「建议收藏」SIT:SystemIntegrateTest系统整合测试QAS:QualityAssurancesystem质量保证DEV:Development开发PET:PerformanceEvaluationTest性能测试

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号