火星链 火星链
Ctrl+D收藏火星链
首页 > MATIC > 正文

COI:社区观点:我是如何从Java转型为Go区块链工程师-ODAILY

作者:

时间:1900/1/1 0:00:00

前言

本人在加入比原链之前一直是做Java开发的,当初看到Go还有点犹豫,还怕过不了面试,结果是否掌握一门语言的考量确实没那么高,我顺利入职比原链,并在半个月内很快掌握Go并能够进行核心项目的开发。

Java语言在较大的成熟项目上具有优势,但是在区块链开发中确实会有很多短处,比如在协程处理上,还有Java语言本身不够灵活等等,当然选择使用Go主要是因为其在区块链的流行程度。

区块链的流行语言

在区块链公链的开发圈子里,我们找到了一些流行的编程语言,有C++、Golang、Python和最近新起的Rust等等。

稍微对比较有名的项目采用的编程语言做个统计,如下图:

Grumpy Cat Coin社区向斯特林动物收容所捐赠近7万美元的GRUMPY代币:3月19日消息,Grumpy Cat Coin社区已经向马萨诸塞州的斯特林动物收容所(Sterling Animal Shelter)捐赠了价值近7万美元的GRUMPY代币(由于GRUMPY的价格有波动,这比其在推特上公布的价格低了1万美元左右)。这个由社区推动的项目与Dogecoin社区的元素相似,后者于2014年成立了Dogecoin Foundation慈善机构。据悉,Grumpy Cat Coin的原型是因脾气暴躁而出名的网红猫Tardar Sauce。3月13日,一张有关Tardar Sauce的NFT作品在NFT市场Foundation以44 ETH的价格售出,价值约7.8万美元。(Cointelegraph)[2021/3/19 19:00:22]

老一代的公链,比如Bitcoin,Litecoin一般使用C/C++较多,新一代的公链比如以太坊,联盟链翘楚超级账本,开始较多使用Go语言,当然我们看到Rust的发展势头也很猛,近两年的很多公链比如波卡,Grin都开始采用Rust语言开发了。

Nexus Mutual创始人呼吁社区捐赠以创建DeFi安全解决方案:DeFi保险协议Nexus Mutual创始人Hugh Karp发推称,我们的一些社区已经创建了一个gitcoin赠款,以捐赠给我个人来补偿一些黑客攻击造成的损失。非常感谢大家的善举,但我认为我不应该得到补偿。相反,我想利用这个机会为赏金筹集资金。所有通过捐赠筹得的款项将会拨作社区奖励金,将用于创建一个可与智能合约交互的高度安全的解决方案,其设计将为散户提供出色的用户体验。我会组织一组UX和安全专家来判断结果。请慷慨捐助,让我们助力DeFi和以太坊对每个人都更加安全。此前消息,黑客攻击Hugh Karp的钱包,窃取了约825万美元。[2020/12/19 15:48:02]

Go语言的优势

部署简单

Go编译生成的是一个静态可执行文件,除了glibc外没有其他外部依赖。这让部署变得异常方便:目标机器上只需要一个基础的系统和必要的管理、监控工具,完全不需要操心应用所需的各种包、库的依赖关系,大大减轻了维护的负担。可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。

伦敦交易所LDX与币途会社区达成战略合作 携手开拓亚太市场:据官方消息,伦敦交易所LDX与币途会社区于11月18日达成战略合作,双方将携手共同开拓亚太市场,合规协作、深化合约交易服务,一同为全球用户提供最专业安全的数字资产合约交易体验。

币途会社区成立于2019年9月,由知名券商基金管理人、拥有期货股票金融实战近十年经验、被称为币圈光哥(光头强)的王伟光牵头组建。业务以大趋势研判、市场行情分析为主,币途会社区涵盖币圈腾百万、币圈光哥、币圈方宇皓、币圈雲飞等多位分析师矩阵;以“来币途有前途”为社区理念,致力将波段盈利方法与中短线操作有效结合,更好的服务于社区成员。

伦敦交易所LDX是由曾任职于Bitmex、Coinbase公司的高管于2018年1月创立的数字资产交易平台。LDX采用完全自主研发的撮合引擎LD Engine,稳健高效流畅,致力于成为全球最具信赖的数字资产交易平台,目前已支持3大语种版本,全球用户数超20万。[2020/11/19 21:19:24]

性能优秀

社区成员称未知账户突然获得150万枚代币并流向交易所:Filecoin社区成员透露,有未知账户突然在10月15日获得150万枚FIL代币,并向火币转入80万枚FIL。而根据解锁方案,早期投资者、官方和矿工第一天解锁量应该只有50万枚。[2020/10/16]

虽然不如C和Java,但通常比原生Python应用还是高一个数量级的,适合编写一些瓶颈业务。内存占用也非常省。

并发性&通道

Goroutine和channel使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的各种问题。单个Go应用也能有效的利用多个CPU核,并行执行的性能好。

良好的语言设计

Go非常简单,且易于学习。从学术的角度讲Go语言其实非常平庸,不支持许多高级的语言特性;但从工程的角度讲,Go的设计是非常优秀的:规范足够简单灵活。正是由于Go的简单性,任何的Python、Elixir、C++、Scala或者Java开发者皆可在一月内组建成一个高效的Go团队。

MakerDAO社区已接受添加USDC作为新抵押品:据官方推特,经过投票,MKR持有人已接受添加稳定币USDC作为新抵押资产,现在可以使用USDC打开Maker Vault来生成Dai。这是Maker治理继ETH和BAT后批准的第三种抵押品。[2020/3/17]

标准库&工具

Go目前已经内置了大量的库,特别是网络库非常强大。更重要的是Go自带完善的工具链,大大提高了团队协作的一致性。比如gofmt自动排版Go代码,很大程度上杜绝了不同人写的代码排版风格不一致的问题。把编辑器配置成在编辑存档的时候自动运行gofmt,这样在编写代码的时候可以随意摆放位置,存档的时候自动变成正确排版的代码。此外还有gofix,govet等非常有用的工具。

团队牛逼

Go语言后面的支持者是Google,语言足够在各种场景下得到检验,同时创始人还是C语言之父,对后续的发展和创新可期。

Go成功的项目

Go语言在云时代得到了比较广泛的应用,特别是Docker和K8s这样的杀手级产品的出现让Go语言在工程界占有一席之地。

除此之外,Go语言还有非常多的成功运行中的软件:

nsq:bitly开源的消息队列系统,性能非常高,目前他们每天处理数十亿条的消息;

packer:用来生成不同平台的镜像文件,例如VM、vbox、AWS等,作者是vagrant的作者;

skynet:分布式调度框架;

Doozer:分布式同步工具,类似ZooKeeper;

Heka:mazila开源的日志处理系统;

cbfs:couchbase开源的分布式文件系统;

tsuru:开源的PAAS平台,和SAE实现的功能一模一样;

groupcache:memcahe作者写的用于Google下载系统的缓存系统;

god:类似redis的缓存系统,但是支持分布式和扩展性;

gor:网络流量抓包和重放工具;

生态卡位和隐性标准

除了打铁还需自身硬之外,还有些机遇和运势,让区块链选择的了Go语言。我们来看区块链2.0以来最成功的公链和联盟链代表,以太坊和超级账本Fabric,无一例外都选择使用Go作为主导开发语言。

这两大超级区块链的影响力可不是一般项目可以比拟的,不仅在生态中占据了大的坑位,事实上还隐性的制定了区块链的标准,不论是公链中的智能合约,还是联盟链的技术,都绕不开以太坊和Fabric,那么对于一家想要做区块链技术选型的公司来说,最快捷的实现是什么?自然是直接照搬这两个项目的创新,再捷径一点就是直接拿开源代码改,那么自然Go语言就成为后来者的首选,换种语言重新实现一遍难度也不小,而且如果选择一些创新但不是非常成熟的语言还会缺失一些特定库的支持从而导致项目无法开展。

很多人对以太坊的影响力毋庸置疑,但实际上Fabric在企业区块链部署上的影响力更不容小觑:

图表来源《2019年全球企业区块链基准研究报告》

HyperledgerFabric是已部署的企业区块链网络中使用最多的协议框架,超级账本Hyperledger是集成商和软件开发平台最常支持的协议框架,比例达到了53%。

而在所有的区块链技术书籍里面,有关超级账本的书籍是卖的最为火爆这个事实也是侧面印证了超级账本Hyperledger的影响力。

比原链在Go语言中的实践

在选型编程语言的过程中,考量了C,C++,Java,但C/C++大项目维护难度大,而Java又略显笨重,此时Go语言已经在区块链项目上大放异彩,也逐渐形成技术和人才的一个头部效应,那么顺应潮流进行技术选型自然也会减少初始比原链项目遇到的阻力,当然在逐渐开发过程中,我们也感受到了选用Go语言带来的便利和优势。

Go在区块链上的一个Case

从技术上来说,区块链节点是需要多模块异步协同工作的,所以Go语言并发性和通道就显得非常有优势,我们看下面交易验证的例子:

我们使用Routine+Ch+WaitGroup在30行代码之内,就可以构建一个并发的验证交易的功能,在高配置的服务器的情况下,可以跑出10万以上的TPS。

轻松变成Go语言大师

我当初进入比原之前也没有做过Go语言开发,但都能够很快上手,基本在半个月内能够参与核心代码的开发和维护了,这就是语言简单对团队构建带来的好处。

统一的协作

从协作上来说,通过gofmt自动排版Go代码,能够让核心团队成员甚至社区开发者提交的代码风格的差异性降到最小,提升项目的整体质量和可维护性。

总结

Go语言本身的特质和优势为其做好了铺垫,而以太坊和超级账本两个超级区块链项目的加持也让Go语言成为了很多区块链项目的首选。

比原链选用Go语言也充分体会到了其开发区块链底层的优势,但是无需落入语言之争的陷阱,讲求实用主义才是做工程应有之义,比原链核心项目是用Go语言完成,但是周边的很多子项目也有用Java,Python或者JavaScript实现,毕竟生态的多样性才是一个项目长久的根本。

标签:区块链COICOINOIN区块链域名还有市场前景吗dakcoinCosmo Coinbytecoin-bcn

MATIC热门资讯
比特币:什么是「区块高度」?-ODAILY

区块高度,指的是区块的编号,换句话说,就是一个区块与创世区块之间的块数。创世区块,顾名思义,就是一条区块链上的第一个区块,要注意的是,创世区块的区块高度是0,而不是1.

1900/1/1 0:00:00
ING:行情分析:疫情催生新业态,区块链将大有作为-ODAILY

摘要:今日大盘继续上行,ETH依然相对强势,USDT溢价明显,但短时显示超买严重,有一定的回落调整需求。区块链技术在有关疫情的很多方面有用武之地,将会在疫情结束后迎来一个加速发展阶段.

1900/1/1 0:00:00
ETH:BTC开年第二天你准备好了吗-ODAILY

据EWN消息《福布斯》撰稿人JesseColombo表示,比特币目前正处于一个巨大的下行通道中,这个通道是在6月份比特币价格达到1.4万美元的峰值时形成的.

1900/1/1 0:00:00
BTC:BTC晚间行情解读分享-ODAILY

03月21日晚间行情:BTC早间研判行情调整将持续,晚间怎么走会有反弹吗?行情回顾:BTC日内行情再度出现调整,最低破6000点截至目前日内新低5897.96点.

1900/1/1 0:00:00
ZER:美国经济大萧条即将开始?身处币圈的我们应当如何对待-ODAILY

近期加密货币市场波澜不惊,但是美国的金融市场实际上已经暗流涌动。美国金融市场和全球经济变化息息相关,大家应该还记得2008年美国次贷危机时导致的全球性金融危机.

1900/1/1 0:00:00
BTC:行情分析:大盘蓄力调整过后,ETH还能跑赢BTC吗?-ODAILY

摘要:大盘回落调整,比特币强弱指数大涨8.64%,山寨币大幅下跌,短时市场避险情绪激增。相对于比特币,以太坊虽然具有较高投资风险,但其在市值潜在空间、项目前景和应用生态上更具优势,在后市很可能会.

1900/1/1 0:00:00