在区块链公链的开发圈子里,我们找到了一些流行的编程语言,有C++、Golang、Python和最近新起的Rust等等。
我们稍微对比较有名的项目采用的编程语言做个统计,如下图:
老一代的公链,比如Bitcoin,Litcoin一般使用C/C++较多,新一代的公链比如以太坊,联盟链翘楚超级账本,开始较多使用Go语言,当然我们看到Rust的发展势头也很猛,近两年的很多公链比如波卡,Grin都开始采用Rust语言开发了。
Go语言的优势
部署简单
Go编译生成的是一个静态可执行文件,除了glibc外没有其他外部依赖。这让部署变得异常方便:目标机器上只需要一个基础的系统和必要的管理、监控工具,完全不需要操心应用所需的各种包、库的依赖关系,大大减轻了维护的负担。可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。
Citadel创始人:在美联储拯救硅谷银行之后,美国资本主义正在我们眼前崩溃:金色财经报道,Citadel Securities创始人兼首席执行官Ken Griffin表示,在美联储拯救硅谷银行之后,美国资本主义正在我们眼前崩溃。[2023/3/14 13:02:21]
性能优秀
虽然不如C和Java,但通常比原生Python应用还是高一个数量级的,适合编写一些瓶颈业务。内存占用也非常省。
并发性&通道
Goroutine和channel使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的各种问题。单个Go应用也能有效的利用多个CPU核,并行执行的性能好。
良好的语言设计
Go非常简单,且易于学习。从学术的角度讲Go语言其实非常平庸,不支持许多高级的语言特性;但从工程的角度讲,Go的设计是非常优秀的:规范足够简单灵活。正是由于Go的简单性,任何的Python、Elixir、C++、Scala或者Java开发者皆可在一月内组建成一个高效的Go团队。
标准库&工具
孙宇晨:我们很欢迎BTCST加入波场TRON生态:据官方消息,Binance Launchpool 上首个算力币BTCST项目正式加入波场TRON生态,孙宇晨发推特表示,我们非常高兴地欢迎Binance LaunchPool首个算力币BTCST加入波场TRON生态。
BTCST 是 Binance LaunchPool 的首个唯一算力币,BTCST自上线以来,就创下Binance LaunchPool TVL第一的记录, 项目零私募,零 VC,零团队预留,完全依靠社区自治的基于 BSC 的智能合约。
目前,Launchpool 上首个算力币BTCST 已经上线 Binance、VCC Exchange、PancakeSwap 交易所。BTCST 已与 BTC.TOP,Easy2Mine,Genesis Mining,Atlas Mining,Hengjia Group 知名五大矿场合作,同时得到 MathWallet 麦子钱包,TokenPocket,SafePal 等钱包的支持。[2021/3/15 18:44:14]
Go目前已经内置了大量的库,特别是网络库非常强大。更重要的是Go自带完善的工具链,大大提高了团队协作的一致性。比如gofmt自动排版Go代码,很大程度上杜绝了不同人写的代码排版风格不一致的问题。把编辑器配置成在编辑存档的时候自动运行gofmt,这样在编写代码的时候可以随意摆放位置,存档的时候自动变成正确排版的代码。此外还有gofix,govet等非常有用的工具。
声音 | 瑞波CEO:我们比社区所有人都透明10倍或100倍 这使我们容易遭受攻击:瑞波(Ripple)首席执行官布拉德·加林豪斯(Brad Garlinghouse)暗示了困扰该项目的一连串争议,他认为瑞波(Ripple)的“透明度使我们容易受到攻击。”“透明性比其他任何人都透明10或100倍”。他表示,目前存在“一堆错误的信息”,但是这是因为Ripple要比“加密社区中任何人都透明十倍或一百倍。我们的透明性使我们易于攻击。”[2019/10/11]
团队牛逼
Go语言后面的支持者是Google,语言足够在各种场景下得到检验,同时创始人还是C语言之父,对后续的发展和创新可期。
Go成功的项目
Go语言在云时代得到了比较广泛的应用,特别是Docker和K8s这样的杀手级产品的出现让Go语言在工程界占有一席之地除此之外Go语言还有非常多的成功运行中的软件:
nsq:bitly开源的消息队列系统,性能非常高,目前他们每天处理数十亿条的消息
packer:用来生成不同平台的镜像文件,例如VM、vbox、AWS等,作者是vagrant的作者
声音 | 加密交易员:我们仍处于加密行业的投机阶段 泡沫破灭还没有到来:加密交易员Credible Crypto在推特上表示:让我说清楚。我们仍处于加密行业的投机阶段。如果你认为下一个牛市周期中唯一会出现的货币是基本面良好的货币,那么你可能错了。现在还为时过早。真正的泡沫破灭还没有到来。[2019/8/19]
skynet:分布式调度框架Doozer:分布式同步工具,类似ZooKeeper
Heka:mazila开源的日志处理系统
cbfs:couchbase开源的分布式文件系统
tsuru:开源的PAAS平台,和SAE实现的功能一模一样
groupcache:memcahe作者写的用于Google下载系统的缓存系统
god:类似redis的缓存系统,但是支持分布式和扩展性
gor:网络流量抓包和重放工具
生态卡位和隐性标准
除了打铁还需自身硬之外,还有些机遇和运势,让区块链选择的了Go语言。我们来看区块链2.0以来最成功的公链和联盟链代表,以太坊和超级账本Fabric,无一例外都选择使用Go作为开发语言,这两大超级区块链的影响力可不是一般项目可以比拟的,不仅在生态中占据了大的坑位,事实上还隐性的制定了区块链的标准,不论是公链中的智能合约,还是联盟链的技术,都绕不开以太坊和Fabric,那么对于一家想要做区块链技术选型的公司来说,最快捷的实现是什么?自然是直接照搬这两个项目的创新,再捷径一点就是直接拿开源代码改,那么自然Go语言就成为后来者的首选,换种语言重新实现一遍难度也不小,而且如果选择一些创新但不是非常成熟的语言还会缺失一些特定库的支持从而导致项目无法开展。
币安何一:下架CTR是美国SEC要求,但我们存在不同意见:币安联合创始人何一今日在问答会中表示,我们评价一个币种的要求是很多维度的。CTR这个项目,我们从完成度、代码更新量来看,是高于很多其他币种的。但是美国证券交易委员会要求下架,那也就下架了。我们不能保证每一个上币安的项目都能为大家带来盈利。[2018/5/18]
很多人对以太坊的影响力毋庸置疑,但实际上Fabric在企业区块链部署上的影响力更不容小觑:
图表来源《2019年全球企业区块链基准研究报告》
HyperledgerFabric是已部署的企业区块链网络中使用最多的协议框架,超级账本Hyperledger是集成商和软件开发平台最常支持的协议框架,比例达到了53%。而在所有的区块链技术书籍里面,有关超级账本的书籍是卖的最为火爆这个事实也是侧面印证了超级账本Hyperledger的影响力。
比原链在Go语言中的实践
我们在选型编程语言的过程中,考量了C,C++,Java,但C/C++大项目维护难度大,而Java又略显笨重,此时Go语言已经在区块链项目上大放异彩,也逐渐形成技术和人才的一个头部效应,那么顺应潮流进行技术选型自然也会减少初始比原链项目遇到的阻力,当然在逐渐开发过程中,我们也感受到了选用Go语言带来的便利和优势。
Go在区块链上的一个Case
从技术上来说,区块链节点是需要多模块异步协同工作的,所以Go语言并发性和通道就显得非常有优势,我们看下面交易验证的例子:
funcValidateTxs(txs*bc.Tx,block*bc.Block)*ValidateTxResult{
txSize:=len(txs)
//initthegoroutinevalidateworker
varwgsync.WaitGroup
workCh:=make(chan*validateTxWork,txSize)
resultCh:=make(chan*ValidateTxResult,txSize)
closeCh:=make(chanstruct{})
fori:=0;i<=validateWorkerNum&&i<txSize;i++{
wg.Add(1)
govalidateTxWorker(workCh,resultCh,closeCh,&wg)
}
?
//senttheworks
fori,tx:=rangetxs{
workCh<-&validateTxWork{i:i,tx:tx,block:block}
}
?
//collectvalidateresults
results:=make(*ValidateTxResult,txSize)
fori:=0;i<txSize;i++{
result:=<-resultCh
results=result
}
?
close(closeCh)
wg.Wait()
close(workCh)
close(resultCh)
returnresults
}
我们使用Routine+Ch+WaitGroup在30行代码之内,就可以构建一个并发的验证交易的功能,在高配置的服务器的情况下,可以跑出10万以上的TPS。
轻松变成Go语言大师
从人才上来说,比原链核心开发团队的部分成员之前也没有做过Go语言开发,但都能够很快上手,基本在半个月内能够参与核心代码的开发和维护了,这就是语言简单对团队构建带来的好处。
统一的协作
从协作上来说,通过gofmt自动排版Go代码,能够让核心团队成员甚至社区开发者提交的代码风格的差异性降到最小,提升项目的整体质量和可维护性。
小结
Go语言本身的特质和优势为其做好了铺垫,而以太坊和超级账本两个超级区块链项目的加持也让Go语言成为了很多区块链项目的首选,比原链选用Go语言也充分体会到了其开发区块链底层的优势,但是无需落入语言之争的陷阱,讲求实用主义才是做工程应有之义,比原链核心项目是用Go语言完成,但是周边的很多子项目也有用Java,Python或者JavaScript实现,毕竟生态的多样性才是一个项目长久的根本。
文章来源:中国经济网??2020年1月1日,嘉楠董事长兼CEO张楠赓向全体员工发布新年致辞,主要总结了过去十年嘉楠的成功不光取决于时代,更取决于全体嘉楠员工的努力和智慧;第一次正式介绍了公司的愿景“提升社会运行效率.
1900/1/1 0:00:00文丨互链脉搏研究院,原题《互链年报|2019年“死亡”的70余个区块链项目:3月资金盘跑路高峰年末交易所扎堆清盘》“2019年虚拟货币造成的人均损失高达13万元.
1900/1/1 0:00:00我在1月5日的文章《比特币:2020年首秀》中谈到了上周发生在中东的美军击毙伊朗实力派高层苏拉曼尼的事件,这起事件一发生就引起黄金、白银和比特币的跳涨。事件虽然已经发生好些天了,但事件的后续影响却在持续发酵.
1900/1/1 0:00:00今日解读 从本世纪20年代开始,美元在全球资本市场上的表现似乎一如既往地强劲。截至12月31日,尽管美联储向美国金融系统注入了超2万亿美元,美国国债也增加了一倍有余,达到约23万亿美元,但衡量美元价值的一个指数在过去10年里上仅上涨了.
1900/1/1 0:00:00随着2020年的到来,美国的立法者正在为加密货币领域起草相关法案,明确定义稳定币,并为Facebook等希望创建自己的加密货币的科技公司提供监管明确性.
1900/1/1 0:00:00作者:殷耀平 来源:小葱区块链 区块链产业大潮来临,运营商携5G实力助攻在新一轮数字经济升级的浪潮中,区块链高地的竞争正愈演愈烈。“5G与区块链是相互赋能的,5G旨在实现万物互联,区块链意在实现万物互信”.
1900/1/1 0:00:00