2019年11月23日我参加了GDG xi’an举办的DevFest活动,为了方便大家学习,我将本次活动演讲内容整理如下:
朋友们大家早上好,非常高兴有这个机会分享我近三年来对区块链的一些认知,也希望有更多的朋友能够参与到区块链世界里,抓住时代赋予我们的机会。
在我16年的从业经历中,大部分时间都在与密码打交道。在开始从事区块链之前,我在陕西省数字证书认证中心任副总经理,主管密码产品研发和项目实施,期间积累了大量的密码应用知识,对密码技术有一份特殊的情感。
之前很长一段时间我对于比特币认识和大部分人一样,觉着它就像QQ币一样,只是极客们的玩具。2016年下半年,机缘巧合我听到了前谷歌科学家吴军老师讲解比特币,觉着这个东西值得好好学习一下。然后我就花了很长时间学习《精通比特币》这本书,看第一遍的时候,其实我并没有看懂(后来与业内大咖聊天的时候,得知大家都有相同的经历),甚至怀疑我这么多年的技术是白搞了,后来咬着牙看了三遍,终于在某个晚上彻底看懂了比特币的实现原理。之后被比特币背后的技术所深深吸引,从此我就成为了区块链技术的重度拥护者。
区块链技术吸引我的原因主要有两个方面:一方面是它竟然可以将密码算法应用的如此巧妙,另一方面是它竟然可以将分布式与经济学结合的如此完美。之后三年时间里,我相继学习了以太坊、EOS、Fabric,也自学了经济学相关知识,对区块链逐渐有了自己的一些看法。即使在熊市里我也一直坚持学习区块链,而且一天都未中断,这才有了《走进区块链》(网络版)、《大话区块链》(刚刚)这两本书的诞生。
好了,我与区块链的结缘就先说到这里,下面我们正式进入今天的主题。
我今天演讲的主题是《人人都能学会区块链开发》,这也是我新书《大话区块链》的副标题。很多人第一次看到这样的标题都会直呼标题党,对,我也直言不讳,我就是区块链行业里第一个喊出人人都能学会区块链的标题党。但请大家注意,其实我并不认为我是标题党,因此我觉着吧,人人都能学会区块链开发确实是可行的。
很多人认为区块链很难的原因是因为技术太新,学习成本太高,我今天想告诉大家,认为区块链开发很难那是因为方法不对,只要掌握科学的方法,学习区块链其实也可以很简单,区块链开发是个低垂的果实。只要学习方法得当,短时间内就可以成为这个行业出类拔萃的人,毕竟大多数人不懂区块链,更别说区块链开发了。
本次分享的内容有区块链最硬核的概念,区块链的基本原理,区块链典型应用和区块链开发快速入门。要精通区块链确实不容易,但快速入门确实是有方法的,听过今天的演讲大家就已经超过了99%的人。
区块链核心概念
自从国家给区块链正名之后,现在大家都在大谈特谈区块链,谈区块链怎样改变世界,但其实很多人对区块链是有误解的,这里由于时间有限我只谈区块链一个最硬核的概念。大家肯定都听过关于区块链的各种解释,我认为那都是盲人摸象。区块链实际上是一种分布式账本技术,英文是Distributed Ledger Technology。
大家看上面这张图,左边是我们现在的记账方式,我们叫中心化账本,右边是区块链的记账方式,我们叫分布式账本。
我们现在熟悉的互联网和企业信息化系统都是中心化记账,不管互联网巨头们在全世界有多少服务器,但这些服务器的隶属权都属于一个组织所有。所有的数据安全都依赖于某一个组织的可信度,以及这个组织背后的技术是否过硬,管理是否足够严格。
而区块链则不同,它一上来就是采用一群人记账的方式,而且这些记账节点之间的地位平等。由于修改数据需要取得半数以上节点的同意,使得篡改数据变得很难,甚至根本就无法篡改数据。
相对于传统中心化记账方式单个节点说了算的方式,区块链分布式记账可以大幅度提高大家的信任程度。
说到这里,我不得不举一个我已经讲了无数次的例子,但这个例子确实太能说明分布式记账的好处了,我忍不住再说一次。
比如,我借了老王一万元人民币,原来的方式就是我给老王打一个借条,或者是找一个双方都信得过的人作为见证人。现在有了区块链之后,同样是我借了老王一万元人民币,我们会发动在场所有的人都来记账,每个人都会在自己的本子上记一笔账,张应平借了老王一万元人民币。传统的记账方式一旦老王的借条丢了,或者我贿赂了这个见证人,理论上我是可以抵赖这笔借款的。但有了区块链之后,由于大家都来记账,因此这笔借款就变得无法抵赖。
这就是区块链的记账方式,所谓记账其实就是写数据,原来是写到本子上,现在我们写到数据库里。但聪明的大家肯定有个疑问?我凭啥给你们俩记账。
如果大家要学经济学,我认为必须记住一个词,那就是激励(incentive)。在区块链里,要让大家来共同记账,就需要一套激励机制,也就是经济刺激,让参与记账的人都获的经济上的回报,在比特币里每个参与记账的矿工都会获得相应的比特币作为奖励。
区块链基本原理
当然,这里面还涉及到链状数据结构、共识机制,这个我们后面再详细讲解。
如果只是将区块链作为一种谈资,了解区块链是一种分布式账本技术其实就够了,但我们今天来的都是技术人员,显然这点知识是不够用的。接下来我讲一下区块链的基本原理。
在讲解区块链原理之前,我们先看一下学习区块链的正确姿势。 下面这张片子是作为老程序员给大家进入区块链世界的一把钥匙。
由于比特币遵循了奥卡姆剃刀原理,“如无必要,勿增实体”,因此比特币可以作为理解区块链实现原理的入门课。搞懂了交易、区块、共识机制、P2P这些技术,我们再学习以太坊、EOS、Fabric等区块链技术的时候就会方便很多。
由于以太坊有完善的开发生态,社区提供了大量的开发工具、API,因此可以将以太坊作为区块链开发的入门课程。如果大家愿意花上一个星期时间,用以太坊搭建一个区块链应用,相信你对区块链的认知会比只了解概念的人瞬间会高出一个level。
Fabric是超级账本下面的一个子项目,它是一个开源项目,由于有完善的文档、可插拔的代码结构,任何人只要都可以根据实际业务需要非常方便的修改共识机制、密码算法。所以如果要研发企业级商用区块链平台,Fabric是大家的首选。
今天限于时间关系,我先通过比特币来讲解区块链的基本原理,最后会给大家介绍我参与的一些区块链项目和快速入门区块链开发的一些科学方法,而且这些方法是我本人验证过且非常好用的。
比特币实际上一个货币系统,因此要了解区块链的基本原理,其实只要知道比特币转账的工作机制就可以了。
举个例子,我——张应平要给乔帮主转账0.1个比特币购买个苹果手机。
这个过程分为两个环节,一个是通过钱包转账,另一个是矿工使用矿机进行记账。
我们先看怎样通过钱包转账。钱包转账分为三个步骤:
第一步,钱包将0.1个比特币,也就是我们常说的交易,和乔帮主的公钥(相当于网银里对方的银行卡卡号)做一个哈希运算。
第二步,钱包使用张应平的私钥对上面的哈希进行签名。
第三步,将签名、我的公钥附在0.1个比特币后面广播给乔帮主。
对照上边的图,大家就可以明白比特币转账的原理了,其实比特币钱包就只做了这么个事情,这三步都与密码息息相关,这也是为什么说密码学是区块链的基石。如果你对哈希、非对称加密这些知识都熟悉的话也就很容易理解中本聪为什么会这么设计比特币系统了,但如果没有密码经验,大部分人看到这里就已经开始晕了。
别急,下面让我来一一解答大家的疑问。
首先,我们看一下什么是哈希。哈希也称为散列算法、摘要,它是对一段数据进行密码运算,形成一个定长的字符串,由于哈希的唯一性,它有点类似我们人类的指纹,所以我们也把哈希称为数字指纹,常用算法有sha256。
从这上面这张图大家可以看出,如果对“你好”进行哈希运算,就会得到一个256位的定长字符串,如果我们给“你好”加一个!,哈希运算的结果就完全不一样了。
哈希算法的一个用途就是防止对数据进行篡改。我们经常在下载软件的时候,会看到一个软件对应的数字指纹,如果想验证软件是否被修改过,就可以使用哈希工具对下载的软件进行一个哈希运算,然后与软件提供的哈希值进行比较,如果相等就代表软件没有被修改过,否则,该软件有可能被修改或植入病毒。
在讲解非对称加密之前,我们先看一下对称加密。对称加密的做法是使用同一把钥匙对数据进行加密和解密。
就像上面这张图中我们使用1234567890这样的密钥对“你好”进行加密得到一串密文,然后对方使用同样的密钥1234567890对密文进行解密,就可以看到你好这个“你好”原文。
对称加密中钥匙本身的保管是一个很大的问题,如果钥匙保管不当一旦泄露,加密就成了摆设。
所以在1978年出现了一种新的加密算法RSA,这就是非对称加密算法。非对称加密算法与加密算法不一样,加密和解密使用的密钥不一样,公钥是对外公开,任何人都可以获取,私钥自己持有,不能给任何人看。
需要强调的是私钥一定要保管好,这也是为什么很多人的比特币被盗的原因,大部分都是因为自己曾经通过社交软件、邮箱等方式传递过自己的私钥。私钥正确的保护方法应该是写在一张纸上,或者保存在安全的硬件设备里,类似银行的用的U盾。
由于公钥是对外公开的,所以我们可以用对方的公钥对数据进行加密,又因为私钥只有自己持有,因此这种方式被称为加密;反过来,如果用私钥进行加密,用公钥解密,由于私钥自己的持有,这样就可以确保数据身份的唯一性,所以我们把私钥加密、公钥解密称为签名。
了解了哈希算法和非对称加密算法之后,我们再看上面张应平给乔帮主转0.1个比特币的过程中,为了确保0.1个比特币不会被其他人修改成0.2、0.3个比特币,所以这里我们使用哈希算法对0.1个比特币和公钥做了一次哈希运算。要验证我真的是给乔帮主转了0.1个比特币,我们只需要使用我的公钥对签名进行解密,得到原始哈希值,然后使用哈希算法对我给乔帮主0.1个比特币再做一次哈希运算,最后将两次哈希运算结果进行比对,就可以验证给乔帮主的0.1个比特币是否被篡改,以及是否是张应平发送的比特币了。
从上面的讲解我们可以看出,密码学在区块链的中价值。使用哈希算法,可以保证数据的不可篡改性,使用私钥进行数字签名,可以保证身份的唯一性。当然密码的用途不只限于此,挖矿算法、防止重放攻击、保证数据隐私都与密码算法息息相关。总之,区块链与密码学的血缘关系非常紧密,因此才有人怀疑比特币的发明极有可能是一群密码领域造诣极深的专家。
了解了密码,我们已经对区块链的原理有了基本的理解。接下来我们再学习一下区块链里另外一个重要技术——共识机制。
传统分布式在系统设计时,只考虑系统故障,因此在共识设计上采用了非拜占庭的共识机制(比如Paxos、Raft)。区块链在设计上采用了拜占庭的容错机制,拜占庭是对一致性要求极高的共识机制,在完全开放的环境下,实现了数据的一致性,为了业务提供了一个可信的环境。
传统分布式中,基于CAP定理,在系统设计时,要么牺牲可用性,要么牺牲一致性。举个例子,像微信这类系统,由于对一致性要求不高,在系统压力过大的情况下,系统会选择丢弃一些数据。我们在逢年过节的时候发微信,有时候会出现微信发送消息失败的情况,这种情况就是因为服务器压力过大,为了保证系统不宕机,系统主动选择丢弃了一些数据。而类似ATM机这样的系统,如果系统出现数据不一致,就会选择停止服务,所以我们有时会看到ATM正在维护这样的情况。
区块链在共识机制的设计上,使用了拜占庭容错机制,在完全开放环境的下,确保数据的一致性和系统的安全性。
拜占庭将军问题是一个思想实验,说的是在古罗马的首都拜占庭,由于地域宽广,守卫的将军需要通过信使传递消息进行攻城,但是由于将军中存在叛徒,这些叛徒可能会发送错误的消息,干扰大家的决议。
上图左边是将军们达成一致情况下攻城成功,右边是将军中存在叛徒的情况下攻城失败。
拜占庭将军问题就是为了解决上述情况下,怎样让忠诚的将军们达成一致的决议。这个问题演变到计算机领域,就是在互联网中不同计算机之间保证信息的一致性。与拜占庭将军问题一样,有些计算机有可能被黑客攻击,怎样保证计算机之间保证信息一致就成了这个模型需要解决的问题。
区块链现在主流的共识机制有PoW、PoS、DPoS共识机制,这样的共识机制都是在技术里加入了经济博弈。工作量证明是锚定的算力,也就是要耗费大量的电。PoS和DPoS锚定的代币,实际上就是金钱。他们设计的思路是让恶意节点的攻击成本远远大于诚实节点的收益,基于利益的考虑,大家与其作恶白白损失金钱还不如老老实实记账。
工作量证明到底是怎么工作的?其实这里还是离不开我们之前的哈希算法。工作量证明实际是矿机在计算区块的哈希值,通过不断修改参数来计算一个前面固定个数为0的哈希值,一旦相等,就得到了记账权,可以将打包的区块链接到主链上。而实际上要计算一个固定个数为0的哈希难度是非常大,比如我们要计算一个前37位都是0的哈希,这个需要计算的工作量就非常大,一般PC是根本无法计算的,而且如果要算前38位都是0的哈希,难度为指数级增长。
好,理解了共识机制,接下来我们看共识机制在比特币的作用是啥?
前面我们在讲我给乔帮主转0.1个比特币的时候,计算哈希、签名、发送这些动作其实是在钱包里完成的。钱包只是比特币中一种特殊的节点,它本身并不存储数据,真正存储数据的是全节点,也就是我们说的挖矿节点。
一旦我们在钱包里点击发送比特币,这时候就需要挖矿节点来干活了。挖矿节点会做以下四件事情,分别是:
第一步就是挖矿节点通过一个校验列表进行交易验证,这个步骤其中就有我们刚才说的验证签名、核对哈希是否一致。
第二步、第三步、第三步都是要通过工作量证明来计算,挖矿节点将交易打包到区块,也就是将我们刚才那笔转账记录打包到区块中,当然区块里会有大概1000笔左右的记录,挖矿成功的节点将区块链接到区块链上。由于比特币节点分布在全球,这时候就很容易出现分叉的情况,为了保证全网数据的一致性,这时候我们会选择全网工作量累计最大的那条链。这就如同我们去火车站买票排队一样,有时候会出现几个不同队伍,这时候大家会选择最长的那个队伍。
好,通过前面的讲解,我们已经对区块链的基本原理有了一个完整的认知,接下来我们再看两个重要的知识点分别是区块链的链状结构和P2P技术。
典型的区块链的数据结构与我们之前的关系型数据库不一样,它是一种链状结构,每个区块都包含了上一个区块的哈希值,这样做的好处是,如果要修该数据,就必须将当前区块之后的数据所有区块的修改一遍,而且区块本身还在增长,所以要修改某个区块中数据必须付出巨大的代价。
我们刚才已经讲到了交易、区块、区块链这些概念,但是我们知道区块链是点对点交互的,因此它离不开P2P网络。
P2P技术大家已经非常熟悉了,我们之前使用的迅雷、BT下载都是P2P技术的应用。
由于区块链中没有中心化服务器,每个节点既是客户端又是服务器,各个节点之间是直接通讯的,不需要任何中心化服务器,因此P2P网络既是区块链去中心化核心特性的反映,也是该特性的基石。
区块链典型应用
计算机科学家吴军老师曾经说过,判断互联网技术和产品是否有前途就看“黄赌毒”是否最先采用,连“黄赌毒”都未采用,那就说明这项技术为时尚早。
为什么“黄赌毒”是一个很好的试金石,因为“黄赌毒”是人类的基本需求,人类基因中天生就带有它,这种本能和欲望不会因为素质的提高和受教育程度增加而消失,只是暂时隐藏起来。那些服务于人类本能的行业虽然上不了台面,甚至是非法的,但是来钱很快,促使了新技术在这些行业中的应用。
互联网早期,当大家还为互联网怎样盈利发愁的时候,色情网站、在线赌博和非法交易很快通过互联网盈利了。2000年互联网泡沫时,但是上面的内容和服务非常少,更没有社交网络和视频网站,电商也没有起来,当时雅虎做了统计,大约1/3的流量是和色情有关、1/4是非法下载各种音乐、软件和电影。我们现在已经习惯使用的技术HTTPS加密通道技术已经普遍应用在网站上了,但其实这项技术最早的使用者是黄色网站,用户担心自己的隐私被泄露。
截止2018年底,区块链的第一个杀手级应用比特币现在最大的价值也是被用作洗钱。被誉为区块链2.0时代的以太坊最大的应用是发币圈钱,被寄予厚望的EOS目前上面排在第一的DAPP(去中心化应用)是个博彩游戏。
除了赌博之外,游戏也是新技术发展最快的地方。由于大家对游戏的好奇心和容忍程度较高,区块链游戏也是现在最活跃的应用场景。2017年的加密猫(CryptoKitties)就是一个典型的案例,加密猫可以让玩家在以太坊网络上购买虚拟宠物,同时还可以进行交配繁殖。
除了赌博、游戏之外,金融、供应链金融、数字内容、商品溯源、公共服务等领域是区块链目前的主要应用领域。这里我重点讲两个应用,一个是区块链溯源,另外一个是负责的区块链应用——双边交易。
区块链技术拥有去中心化、数据不可篡改、可追溯等特性,成为继二维码、条形码等溯源技术的又一新的解决方案。将区块链技术和物联网、二维码等技术相结合,可以对商品信息进行全程追溯。
区块链数据不可篡改的特点,可以有效保证上链的商品信息无法篡改,使得商品溯源的信任程度大幅度提升;将商品信息采用分布式结构存储在各个节点上,使得数据受多方监管,保证链上信息的真实性。基于加密算法可以有效保证信息传输的安全性。
以农产品溯源为例。农产品溯源就是以二维码为产品溯源标识,将农产品从产地、加工、运输及销售等多个环节信息上链,将政府部门、检测机构、农业企业、流通机构、服务机构和社会公众作为节点,确保客户可在任何时间、任何地点,非常方便地通过手机扫码了解商品的流通过程。
这里需要强调的是使用区块链进行溯源信息质量是关键。在实际项目中尽可能采用电子拍照、物联网设备等自动化手段进行数据采集,尽量避免人工录入数据。
双边交易是指电力市场的运营方式之一。双边交易允许交易双方通过自由协商定价,更能体现自由竞争的效益,市场更加透明,也符合区块链点对点交易、公开透明的特点。
基于区块链的双边交易项目是针对市场主体在交易过程中协商成本高、协商效率低、协商手段繁杂等痛点,将区块链技术应用在电力双边交易协商中,可以为电力交易主体提供一个安全、可信的协商环境,有效提高电力交易双边协商效率、降低交易成本,为双边交易监管提供安全、可信的技术机制。
具体实现是基于区块链搭建一个安全、可信的双边协商工具,利用区块链防篡改的特性,将市场主体(交易中心、发电企业、电力用户、售电公司、零售公司)上链以确保市场主体的可信度;为保护市场成员交易协商隐私,使用分布式账本和密码学技术将量价协商信息加密存储在交易主体的节点上,有效保护交易双方隐私信息;利用区块链信任的特性,将交易合约上链存储,保证交易合约的权威性。
区块链开发快速入门
讲完了区块链概念、原理、应用,最后我们来一起看看怎样在最短时间学会区块链开发。
短时间内精通区块链开发,坦诚来讲那是骗人,但短时间入门是完全可以做到的,这里面我总结了大家常见的误区、区块链开发应该具备能力、区块链开发工程师的岗位要求。
大家常见误区主要有两个:
第一个误区:将智能合约开发与区块链底层协议开发混为一谈。
大部分人认为的区块链开发其实是智能合约开发,也就是基于某一个链(比如以太坊、超级账本Fabric等)进行智能合约开发,而不是区块链底层协议开发。区块链底层协议开发门槛很高,需要有丰富的密码学、分布式等技术开发经验才可以胜任。但智能合约开发其实就是基于区块链底层协议提供的高级语言进行编程,目前常用的有以太坊的solidity、EOS的C++、Fabric的go语言。
第二个误区:将技术研究和工具使用混为一谈。
如果我们的目标是要去谷歌、微软这样的大公司从事研发工作,那就需要具备深厚的计算机素养,熟悉计算机原理、算法等知识。但如果我们的目标是网站、APP、微信小程序、网络爬虫等应用的开发,那么只需要学习一点儿高级语言即可。比如APP开发就需要学习Android或者IOS的开发,网站开发就需要具备一些Html、JavaScript知识,人工智能就需要学习Python。同样学习区块链智能合约开发,在以太坊上我们需要掌握solidity(类似于JavaScript),在Fabric上需要掌握go语言、Node.js、Java其中一门开发语言,EOS需要掌握C++。
从工程角度来看,软件开发更看重的是业务需求、系统设计能力。一个高级工程师和一个初级工程师水平的差异在于两者的需求理解能力和软件设计水平的差异。如果只从编码角度来看,工程师就像生产线的工人,只不过大家使用的工具不同罢了。程序员需要熟悉计算机的基本操作,熟悉一些工程师必备的工具就可以开始干活了。在实际工程中,那些熟悉业务的人员,一旦掌握了开发工具,软件开发能力反而会超过一名纯粹只懂技术的人员。
区块链开发应该具备的能力
那么要踏进区块链世界成为区块链世界里的弄潮儿,从事区块链开发到底需要具备什么样的能力?经过梳理和思考,我认为从事区块链开发只需具备以下三种能力。
能够正确理解区块链。了解区块链技术的基本概念,熟悉密码学、分布式、共识机制、P2P网络等技术,熟悉比特币、以太坊、超级账本等区块链技术实现原理,对区块链商业价值和应用有一定的认知。
至少熟悉一种开发语言。比如Solidity、Node.js、C++、Go等。
至少熟悉一种区块链的智能合约开发。比如以太坊、超级账本、EOS等。
关于第一点正确理解区块链,可能是大多数人的一个坎。对于大部分人来说,最难的事情是克服心理上的障碍去拥抱一个新生事物。由于区块链技术比较新,中文方面的书籍、资料比较匮乏,导致大部分人无法正确理解区块链。片面和断章取义地理解都会误导大家,如果能够在一段时间里系统学习区块链,我认为这不是一件难事。前面我讲的这些知识的目的就是帮助大家跨越认知门槛。
关于第二点至少熟悉一种开发语言,我认为也不难。不管是Solidity还是Node.js这方面的学习资料已经非常多了,大家可以选择一种开发语言进行深入全面地学习。比如以太坊智能合约开发使用的是Solidity语言,超级账本的Fabric支持Go语言、Node.js和Java, EOS目前使用的开发语言是C++。
虽然智能合约开发与传统开发语言比较类似,但编程时需要注意以下三个问题:
确定性(Deterministic)
确定性指的是一个程序每次给特定的输入会得到相同的输出,比如1+1=2,任何时候1+1都等于2。由于智能合约是运行在不同节点上的一段代码,因此必须确保代码输出结果的一致性。
可终止(Terminable)
由于区块链资源有限,为了避免垃圾代码和恶意程序占用资源,通过情况会引入经济机制限制资源的浪费。比如以太坊智能合约需要支付一定的GAS费,而EOS上需要购买内存(RAM),并通过抵押方式换取一定的CPU和NET资源。运行在区块链上的智能合约一定要避免重复循环执行,必须在给定的条件下终止程序。比如超过某一个时间或者超过一定的费用,合约自动终止。
代码隔离(Isolated)
在公链上,任何人都可以上传自己的智能合约,由于智能合约可能存在bug或者病毒,如果智能合约没有被隔离,就会影响整个区块链系统的运行,因此将智能合约运行在沙盒(SandBox)机制里可以有效避免合约对整个经济系统造成破坏。
以太坊虚拟机(EVM)是以太坊智能合约的运行环境。它不仅被沙盒封装起来,事实上它被完全隔离,也就是说运行在EVM内部的代码不能接触到网络、文件系统或者其它进程,甚至智能合约之间也只有有限的调用。EOS虚拟机采用的WebAssembly(WASM)是一个内存安全的沙盒执行环境虚拟机,为智能合约提供了安全保障。超级账本Fabric使用了Docker来存放链上的代码,而不需要依靠特定的虚拟机,Docker为链码执行提供了一个安全、轻便的语言执行环境。
不同区块链使用的开发语言会有所不同,智能合约的特性也会有一些差别。
区块链开发工程师岗位技能要求:
熟悉密码学、分布式、共识机制、P2P网络等技术;
熟悉比特币、以太坊、超级账本、EOS等区块链技术实现原理;
对区块链的商业价值和应用有一定的认知;
熟悉Linux、Docker、Git等工具;
至少熟悉一种开发语言,如Solidity、Node.js、C++、Go等;
至少熟悉一种智能合约开发语言,如以太坊、超级账本、EOS等。
以上是区块链开发工程师的基本技能要求。在实际工作中,还会涉及区块链平台研发、区块链架构师等岗位。
区块链平台研发岗位要求熟悉主流区块链底层实现原理并有一定的区块链底层开发经验,熟悉BaaS、跨链等相关技术。
区块链架构师岗位重点关注系统架构设计,公链还涉及经济系统设计。要求对技术和应用都有一定的研究,能够指导工程师进行软件开发,并能钻研业务、设计合理的区块链应用场景。