前言
本人在加入比原链之前一直是做Java开发的,当初看到Go还有点犹豫,还怕过不了面试,结果是否掌握一门语言的考量确实没那么高,我顺利入职比原链,并在半个月内很快掌握Go并能够进行核心项目的开发。
Java语言在较大的成熟项目上具有优势,但是在区块链开发中确实会有很多短处,比如在协程处理上,还有Java语言本身不够灵活等等,当然选择使用Go主要是因为其在区块链的流行程度。
区块链的流行语言
在区块链公链的开发圈子里,我们找到了一些流行的编程语言,有C++、Golang、Python和最近新起的Rust等等。
稍微对比较有名的项目采用的编程语言做个统计,如下图:
武汉“23条”新政:开源平台或社区经认定最高可获500万元一次性补助:金色财经报道,武汉市人民政府发布《武汉市支持数字经济加快发展若干政策》,《政策》中提到,鼓励支持举办各类元宇宙等在国际国内有影响力的重要活动或者创新大赛,支持数字经济基础环节和前沿领域公共服务平台、开源平台或者社区等建设,经市级以上主管部门认定的,按照软件和硬件设备投资额的30%给予最高500万元一次性补助。支持以元宇宙、区块链等相关产品和技术等为主营业务的投资项目。尝试区块链等技术在未来城市场景中的应用,在区块链等数字经济领域,每年发布一批应用场景创新重点任务,对揭榜后经考核认定实施成功的,按照项目总投入30%的比例给予最高200万元资金支持。[2022/5/8 2:58:24]
门罗币社区就7月16日进行硬分叉达成共识:金色财经报道,门罗币(XMR)社区就7月16日进行硬分叉达成共识,该网络将在区块高度 2,668,888 处启动主网硬分叉,包括将目前门罗币的环签名(ring signatures)大小从11增加到 16、在输出中添加视图标签以减少钱包扫描时间、实施费用变更等。其中增加环签名的数量是为了确保交易具有更大的匿名集,从而更难对交易的来源进行逆向解析,零知识证明系统Bulletproofs将用于门罗币的范围证明(range proofs),该功能将在区块链上实现更快的加密和验证。(cointelegraph)[2022/4/19 14:32:26]
老一代的公链,比如Bitcoin,Litecoin一般使用C/C++较多,新一代的公链比如以太坊,联盟链翘楚超级账本,开始较多使用Go语言,当然我们看到Rust的发展势头也很猛,近两年的很多公链比如波卡,Grin都开始采用Rust语言开发了。
Go语言的优势
部署简单
Go编译生成的是一个静态可执行文件,除了glibc外没有其他外部依赖。这让部署变得异常方便:目标机器上只需要一个基础的系统和必要的管理、监控工具,完全不需要操心应用所需的各种包、库的依赖关系,大大减轻了维护的负担。可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。
BMEX与虎哥社区达成战略合作关系:据官方消息,目前BMEX已与虎哥社区达成战略合作,旨在为合约交易者提供专业的知识普及,以提升整个行业的交易水平。
虎哥社区是一家专注于数字资产合约交易的服务机构,亦是国内最大的区块链行业社群之一,专注于数字货币量化交易与行情分析投资建议。
BMEX是一家数字资产综合服务平台,致力于为全球用户提供安全、信赖的数字资产交易及资产管理服务。[2021/3/5 18:19:34]
性能优秀
虽然不如C和Java,但通常比原生Python应用还是高一个数量级的,适合编写一些瓶颈业务。内存占用也非常省。
并发性&通道
Goroutine和channel使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的各种问题。单个Go应用也能有效的利用多个CPU核,并行执行的性能好。
良好的语言设计
Go非常简单,且易于学习。从学术的角度讲Go语言其实非常平庸,不支持许多高级的语言特性;但从工程的角度讲,Go的设计是非常优秀的:规范足够简单灵活。正是由于Go的简单性,任何的Python、Elixir、C++、Scala或者Java开发者皆可在一月内组建成一个高效的Go团队。
Cardano社区自发成立治理小组,有望与基金会合作主导项目治理:由Digital Fortress YouTube频道播主Rick McCracken发起的Cardano社区Telegram群组已拥有超过500名社区成员,该社区小组旨在对Cardano基金会的发展方向进行探讨,并自发进行社区提案。此前Cardano基金会已将两名社区经理撤职,Cardano开发公司IOHK首席执行官Charles Hoskinson表示:“很高兴社区成员共同为基金会建立路线图,如果社区决定并主导治理,IOHK或在未来不会参与该治理过程并帮忙引入可靠的治理基础架构。”(CryptoSlate)[2020/9/10]
标准库&工具
Go目前已经内置了大量的库,特别是网络库非常强大。更重要的是Go自带完善的工具链,大大提高了团队协作的一致性。比如gofmt自动排版Go代码,很大程度上杜绝了不同人写的代码排版风格不一致的问题。把编辑器配置成在编辑存档的时候自动运行gofmt,这样在编写代码的时候可以随意摆放位置,存档的时候自动变成正确排版的代码。此外还有gofix,govet等非常有用的工具。
动态 | Ripple与Flutterwave合作 推动非洲社区更接近全球经济:Ripple最近宣布与Flutterwave合作。Flutterwave是一家专注于建设支付基础设施、将非洲与全球经济连接起来的支付服务公司。Flutterwave一直在帮助各种企业和银行为非洲客户提供安全的支付体验。[2018/10/23]
团队牛逼
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实现,毕竟生态的多样性才是一个项目长久的根本。
不管是不是减半行情或是各类消息刺激,我们能在市场上赚钱的根源,其实都只是趋势的钱,并不是我们的能力有多强,只是恰好符合市场趋势而已。至于亏钱,则一定是与趋势作对、逆势而为的结果.
1900/1/1 0:00:00作者获悉,日本虚拟货币交易所Bitbank近日发布公告,宣布将于4月开始为用户提供虚拟货币借贷服务。具体的流程为,Bitbank在官网发布其需要的虚拟货币借贷.
1900/1/1 0:00:00一、区块链研习社发展历程区块链研习社成立于2017年1月23日,我作为创始人带领一帮人从得到专栏稀里糊涂杀入到正值爆发前夜的区块链领域,一转眼已经进入到2020年,三年过去了,区块链也已经由币圈经济切换到产业经济.
1900/1/1 0:00:002020年一开年,国际局势便突生变故,中东地区冲突升级,这次危机事件不仅导致全球石油价格开始飙升,而且引发了比特币价格从6850美金开始反弹,截止发稿时候比特币报7880美金附近。也是有很多人说比特币的牛市已经到来.
1900/1/1 0:00:00对于2020,看好者有之,看衰者亦有之,但比特币的何去何从并不会因此而受到影响。还是那句话,将一切交给市场,市场才是这个行业中最好的裁判.
1900/1/1 0:00:00「现在,其实大部分中小企业处于观望期,很多企业还没进行大刀阔斧地开源节流是企盼2月底结束,3月恢复正常。但随着开工日期不断后延,2月如果没好转,3月将是一个巨大的公司倒闭和就业人员失业潮的开始.
1900/1/1 0:00:00