为什么区块链编写都用GO语言?CX将是一次革新!

转载:https://mp.weixin.qq.com/s/wG2uQJxzP5uZLHM8r9Ac_w
所有链圈的朋友都该有的常识:Go语言现被用来做去中心化系统(decentralised system)。

当然,其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。

长期项目中的易维护代码

Go语言很简单。并且每次你中途休息(cessation)之后回到代码中时,它没有那么多诡异的错误(quirk)来浪费你的时间。再加上,它所需要的学习量很少,因为它的语法比较大众,开发者的学习曲线很平缓,这样的特性本身就很吸引开发者。这也导致(facilitate)出现Bug的几率很低。所以整个开发过程显得如此简单快速。

一般来讲,代码量越多,项目越难维护。而一个区块链系统需要的代码可达几千行,所以我们需要一门语言,来让维护变得轻松。

速度与效率

不似Python, Go不是一种解释型语言——它是编译型的。这大大地(drastically)减少了在运行中突然出现的Bug。这一点有点像C语言,代码先被编译,错误会在编译时出现并得到处理,然后才能运行;但是,它比C更高级,比JavaScript和Python更具生产力。

一个区块链非常需要高效性,鉴于其使用的是加密(cryptographic)算法,鉴于它把大量数据传输(propagate)于网络,并存储于网络。


为分布式系统而生

这一点,在那些用Golang打造的工具和软件中显而易见。Docker,作为一种微服务的容器,也是用Golang打造。

我们能用Golang打造的微服务轻松驾驭百万数量的请求。

Go语言在处理线程方面与Java的不同之处:

在Java中,对象(object)在工作单元间共享,其中某一单元为了访问到这个数据,必须先得到它的对象锁。在Golang中,工作单元间共享一种被称为信道(channel)的东西,一个信道基本上就是一个先入先出通道(FIFO pipe)——工作单元可以向信道发起数据读写。

Go语言遵循着它的准则——“不要通过内存共享进行通讯,应当通过通讯来共享内存”(not to communicate by sharing memory, instead share memory by communicating)。

并行操作对于区块链是有着特殊意义的。同时跑大量函数——这一巧妙而天然的特性使得Go程序灵活地运行于分布式系统,这正是区块链的主要需求。不过这一特性早已被发掘,有Docker,MongoDB,Netflix,Uber等等等,他们的产品功能也都主要依赖于高并发。


区块链领域的所有人都用它

很多基于稳定区块链的DApps和tools都是用的Go语言。你所需要的某个功能,很轻松就能找到一个相对应的库。

Go是编译型的,所以直接由操作系统执行。这让我们可以更自如地实现像以太坊沙盒(EVM (Ethereum Virtual Machine))一样的技术。而如果是Java,因为它本身的运行载体JVM就是一个虚拟机,要再在上面做一个沙盒,实质是更高一层的抽象,这完全没有必要,会浪费计算机资源。

当然,Go的使用体验像是脚本语言,学习成本很低,所以非常适合小型项目。而在QPS(The Queries per second)上,比起Java好太多,所以又适合用来构建高请求量的服务。


一些美妙的Go代码片段

1, 这个是轻易地从一个函数返回一个指针到局部变量:

Go 没有class,而是松耦合的类型、方法对接口的实现。

GO 语言最重要的三个方面分别是:封装,继承和多态,在 Go 中它们是怎样表现的呢?

封装(数据隐藏):和别的 OO 语言有 4 个或更多的访问层次相比,Go 把它简化为了 2 层:

1)包范围内的:通过标识符首字母小写,对象 只在它所在的包内可见

2)可导出的:通过标识符首字母大写,对象 对所在包以外也可见

类型只拥有自己所在包中定义的方法。

继承:用组合实现:内嵌一个(或多个)包含想要的行为(字段和方法)的类型;多重继承可以通过内嵌多个类型实现

多态:用接口实现:某个类型的实例可以赋给它所实现的任意接口类型的变量。类型和接口是松耦合的,并且多重继承可以通过实现多个接口实现。Go 接口不是 Java  接口的变体,而且:接口间是不相关的,并且是大规模编程和可适应的演进型设计的关键。

综上所述,GO的优点极多,而且非常适用于区块链行业!

Skycoin的CX语言就是基于Go语言,独家定制的区块链专用语言!

CX语言的优势

因此目前没有一个电脑程序是具有确定性的。如果是在为飞机、导弹和卫星编程,这个问题就显得更严重了。设想一下,将卫星发射到太空,然后程序发生错误,数以万计的卫星无法运行,为此付出的代价就很高。

对于区块链来说,这也是一个大问题。就如以太坊智能合约,每周有资产被盗,让人担忧。这种情况已经持续多年了,一直没有人能解决。


为解决这些问题,Skycoin决定开发一种安全、快速且具有确定性的区块链编程语言——CX语言。

CX语言将字节序列化,可将其发送到另一台电脑,然后恢复执行,这一功能目前各类编程语言都无法实现。CX语言具有确定性,每个任务都有一个标准的序列化方式,序列化后可将其发送到整个网络中,这对于区块链编程是非常重要的。

而且CX语言简单易学,它看起来和Golang非常像,在主循环中它也有结构、函数以及数据包。任何Golang、C#或者Java开发者可以在10或20分钟的时间内用CX语言开始编写区块链应用程序。

另外,CX语言具有可见性。CX的可见性使你能够指定哪些函数可调用、谁可调用,这对于安全性的影响十分重大。

例如我有一个智能合约函数,不希望所有人调用这个函数,我可以限制只有某个人或者符合某个条件才能调用,甚至设定没有人能调用这个函数。CX语言具有可见性,使“谁能调用什么”的问题形式化。但在DAO和以太坊区块链上,人们把资产放到智能合约里,然后有人调用程序偷走了资产。

利用CX语言的可见性可更新合约。假如一家公司在区块链上运营,其合约有漏洞,但没有办法修复,因为一旦建立了智能合约就无法进行更新。

但有了可见性,我们可以指定谁能修改智能合约,因此有人能够修复这个漏洞。以太坊的主要问题也表现在这里,一旦建立了智能合约,没有人能更改它。


CX也可以用于人工智能和机器学习。举个简单的例子,假设你有一串点,你希望电脑能帮你设计一个函数来覆盖这些点,你现在不需要告诉电脑怎么做,只需告诉电脑你想要解决的问题,然后电脑开始随机尝试,利用可见性找到最终的解决方法。

CX数据包可以自动带入不同的解决方案并选择解决问题的最佳方案,这是其他语言无法做到的。事实上,在不断开发新的解决方案,在人工智能、生物学以及机器学习等领域,CX语言的这些特性都非常有用。

一般的编程语言在运行程序时无法看到运行过程,也无法得知下一步。而CX语言除了看到运行过程,还可以查看对象和数据,查看一共有多少对象、占用了多少内存。

对使用者来说,可以看到程序当下的进程,帮助排错;对于区块链应用程序用户来说,他们可以知道每个应用消耗了多少内存,有多少任务并检查程序的运行状态。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容