赞
踩
Golang 以其在高并发场景下的天然优势等特性,已经成为今天开发分布式系统的首选语言,在云计算领域占据了无法替代的位置。如今,越来越多的项目组织都选择了 Golang 来编写核心处理模块。在当下最热门的技术领域——区块链上,我们所熟知的包括以太坊、SiaCoin 、IPFS 等都在使用 Go 语言开发,甚至可以大胆预测:继云计算之后,未来整个区块链行业也将会是 Go 语言的天下。
姜家志-现在在比特大陆负责比特币客户端开发项目,10 年互联开发经验,13 年开始接触比特币,开发了比太钱包,这是中国人开发的唯一一个被 bitcoin.org 推荐的钱包。13年开始接触 Go 语言,刚一接触就被 Go 的简洁和高效吸引。
以下是对于演讲的内容实录。
大家好,我是比特大陆哥白尼项目负责人姜家志。我 2013 年开始接触比特币,开发了比太钱包(是国内开发的唯一上 bitcoin.org 的钱包)。现在就职于比特大陆,从事区块链底层协议开发相关的工作。比特大陆是一家专注于高速、低功耗定制芯片设计研发的科技公司。可能圈外的人对比特大陆了解比较少,更多是知道我们的蚂蚁矿机。实际上我们除了矿机业务还有 AI 业务,而且已经产出了人工智能的芯片。我们是一家以技术为驱动的科技公司,拥有着硬件和软件方面的各类人才。
今天主要跟大家分享一下 Go 和区块链的发展和演进。
首先,我们一起看一下区块链里面招聘的 TOP15 的技能要求,如图1。
图1
我们可以看到,在区块链行业里面 Go 的招聘排位是第一的,占比 10.20%,超过了 Java 和 C++。目前区块链领域对于 Go 语言的招聘需求不断提高,以我们公司为例,很多项目除了前期使用了Java 和 C++ 之外,后期的项目都是以 Go 语言为主。
图2
图2 是来自 GitHub 的统计,排行第一是 JavaScript。这是有原因的,因为一般网站代码中 Java Script 占比很高,比如说我搭了一个网站,把网站的代码放到了 Github上,统计之后,这个网站就算作以 JavaScript 为主了。此外,写测试脚本一般大多会使用 Python ,也导致了python 的使用增加。而在区块链领域,真正的首选语言还是 Go 语言,比如以太坊都是基于 Go 语言开发的,很多新的项目也都选择了 Go 语言进行开发。接下来我们进入正题。
区块链
区块链的定义是一个很复杂的事情,因为不同的人对于区块链的理解不同,而且区块链也在不断的发展中,以下列出一些大家对区块链了解的基本定义:
1.去中心化 。其实现在很多的区块链的项目,因为要求高 TPS,已经在牺牲中心化的特性实现高 TPS 了,比如说典型 EOS,它其实更相当于弱中心化。
2.数字化帐本。这些很清晰,所以的区块链都是在互联网上进行的。
3.不可篡改。在以太坊中通过交易的方式可以改变合约的状态的,但是这种改变在合约上也是已知的。
4.确定性的可复制状态机。这个是用来解决整个系统的容错性问题。
2.区块链的特点
1.去中心化(弱中心化)
弱中心化是为了解决信任问题,不会出现一个单一组织或者个人能够控制整个协议。
2.弱信任,对等的写入权限的数据库
在区块链的每个矿工,或者是超级节点以及其他的 POS 见证人等,都有对等的写入权限,这个根据各个协议的不同,虽然说有对等的写入权限,但是什么时候能写入就是共识要解决的问题。
3.共识信任的机制来自于规则,非第三方
这些代码中定义的规则,不是来自于任何的第三方,这里的第三方比较广泛,比如说任何公司、个人甚至一个政府。
4.不可篡改性
在智能合约中有可能改一些智能合约的状态,其他的数据和交易都是不可篡改的。
5.加密安全性,强规则
区块链世界中都是一些非常强的规则,比如说我们常常听到交易,确认。强一致性的规则是各个节点都必须要遵守,如果发生了和规则不一致的交易,或者是区块,会被其他的节点拒绝。
6.可编程
<Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。