一个用JavaScript开发智能合约的以太坊分叉主链

核心摘要:1 EthereumJS 是一个基于 Ethereum 原理开发的使用 Javascript 语言快速开发智能合约的区块链主链项目。2 EthereumJS 将通过其区块链基本特性和智能合约功能为传统行业提供区块链升 级,我们将这种升级称呼为“区块链+”。


研发初衷:以太坊 Solidity 语言的特点和劣势

Solidity 是一种合约导向式语言,可被应用于各种不同的区块链 平台上,其主要开发者为加文·伍德,Christian Reitwiessner,Alex

Beregszaszi,Liana Husikyan,Yoichi Hirai 和其他几位早期以太坊核心 贡献者。Solidity 可使程序开发人员能在区块链上(例如以太坊)编 写智能合约。

Solidity 是一款非常非常小众的编程语言,非区块链行业的软件 开发者往往需要花费时间在学习才能进行以太坊智能合约的开发。同 时,因为 Solidity 的小众化特性,其代码中的安全漏洞亦不容易被发 现和修复。

智能合约是“执行合约条款的计算机交易协议”。区块链上的所 有用户都可以看到基于区块链的智能合约。但是,这会导致包括安全 漏洞在内的所有漏洞都可见,并且可能无法迅速修复。

这样的攻击难以迅速解决,例如,2016 年 6 月 The DAOEther 的 漏洞造成损失 5000 万美元,而开发者试图达成共识的解决方案。[6] DAO 的程序在黑客删除资金之前有一段时间的延迟。以太坊软件的 一个硬分叉在时限到期之前完成了攻击者的资金回收工作。

以太坊智能合约中的问题包括合约编程 Solidity、编译器错误、 以太坊虚拟机错误、对区块链网络的攻击、程序错误的不变性以及其 他尚无文档记录的攻击。

2018 年 4 月 22 日, BeautyChain 智能合约出现重大漏洞,黑客 通过此漏洞无限生成代币,导致 BitEclipse (BEC)的价值接近归零。 同月 25 日,SmartMesh 出现疑似重大安全漏洞,宣布暂停所有 SMT 交易和转账直至另行通知,导致损失约 1.4 亿美金。28 日,EOS 被指 可能存在 BEC 代币合约类似的整数溢出漏洞,但没消息详细说明。5

月 24 日, BAI 交易存在大量异常问题, 损失金额未知。 8 月 22 日, GODGAME 合约被黑客入侵,GOD 智能合约上的以太坊总数归 零。

EthereumJS 的定义?

为了解决上面提到的“Solidity 是一款非常非常小众的编程语言, 非区块链行业的软件开发者往往需要花费时间在学习才能进行以太 坊智能合约的开发。同时,因为 Solidity 的小众化特性,其代码中的 安全漏洞亦不容易被发现和修复。”我们发起了 EthereumJS(简称: ETJS)项目,EthereumJS 是一个基于 Ethereum 原理开发的使用 Javascript 语言快速开发智能合约的区块链主链项目。

我们致力于通过开发和不断优化 EthereumJS,让智能合约和去中 心化应用的开发更加容易,更多非区块链开发者可以快速投入到区块 链开发事业中来,从而实现更多互联网行业和传统行业的区块链升 级。

Javascript 语言的特性
JavaScript(通常缩写为 JS)是一种高级的、解释型的编程语言。

JavaScript 是一门基于原型、函数先行的语言,是一门多范式的语言, 它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来 操控文本、数组、日期以及正则表达式等,不支持 I/O,比如网络、 存储和图形等,但这些都可以由它的宿主环境提供支持。它已经由

ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。 它被世界上的绝大多数网站所使用,也被世界主流浏览器(Chrome、 IE、Firefox、Safari、Opera)支持。


虽然 JavaScript 与 Java 这门语言不管是在名字上,或是在语法上 都有很多相似性,但这两门编程语言从设计之初就有很大的不同, JavaScript 的语言设计主要受到了 Self(一种基于原型的编程语言)和 Scheme(一门函数式编程语言)的影响。在语法结构上它又与 C 语言 有很多相似(例如 if 条件语句、switch 语句、while 循环、do-while 循 环等)。

在客户端,JavaScript 在传统意义上被实现为一种解释语言,但 在最近,它已经可以被即时编译(JIT)执行。随着最新的 HTML5 和 CSS3 语言标准的推行它还可用于游戏、桌面和移动应用程序的开发 和在服务器端网络环境运行,如 Node.js。

JavaScript 语言在开发者中有着相当大的普及率和使用度,且 Node.js 已经被区块链行业广泛使用于接口开发。

EthereumJS 的实现方式
EthereumJS 的主链源代码,将以以太坊 GETH 客户端为基础,使

用 Go 语言进行开发。
预计将在未来 1 年内基本实现通过转换接口实现将 Javascript 代

码开发的智能合约转化为 Solidity 代码。该转化接口我们将其命名为 Js2So Interface。

Js2So Interface 开发完成后,EthereumJS 的主链的开发将进入第二 阶段,实现直接部署并运行 Javascript 开发的智能合约,该阶段预计 将在 Js2So Interface 开发完成后的 1 年内上线。

EthereumJS 最终使用的 Javascript 语言版本将在符合 ECMA 标准 的前提下,推出一系列更适合智能合约开发的新特性,所以我们同时 还会发布 Javascript for EthereumJS smart contract 的全新 Javascript 标 准。

以太坊智能合约转化 EthereumJS 智能合约
EthereumJS 是基于以太坊 GETH 客户端源代码进行二次开发的全

新主链项目。我们不会在开发工程中删除 GETH 本身对 Solidity 代码 的支持,所以现在运行于以太坊网络上的所有智能合约和去中心化应 用都可以无缝移植到 EthereumJS 主链上进行运行。

EthereumJS 和区块链+
EthereumJS 智能合约的应用价值

因为 EthereumJS 支持 JavaScript 语言开发智能合约和去中心化应 用,非区块链从业人员无需花费大量的学习时间也可以快速从事区块 链智能合约相关开发。非区块链领域的互联网公司可以简单的安排一 部分擅于使用 JavaScript 语言的员工就可以投入区块链这一全新领 域。

由此可见,因为 EthereumJS 的问世将让更多的互联网公司和开 发者有能力为传统行业提供区块链智能合约开发服务。EthereumJS 将 通过其区块链基本特性和智能合约功能为传统行业提供区块链升级, 我们将这种升级称呼为“区块链+”。

EthereumJS 智能合约应用场景案例——抵押 智能合约可以通过自动连接各方来完成抵押合同的执行,从而提

供流畅且不易出错的体验。智能合约可以在贷款支付时自动处理付款 并从土地记录中释放留置权。

它们还可以提高所有参与方的记录可见性,并有效促进付款的跟 踪和验证。它们减少了人工操作过程中的错误和成本。为了实现这一 点,数字身份的核验非常关键。

EthereumJS 智能合约应用场景案例——金融贸易
EthereumJS 智能合约可以通过快速信用证和贸易支付开启来简

化国际货物转移,同时获得更大的金融资产的流动性。它们还可以提 高买家,供应商和机构的融资效率。

考虑到贸易融资。智能合约程序的行业标准需要更广的接受度。 此外,政府必须确定在执行失败的情况下,特别是在纠纷和违约的情 况下,法律应当如何界定责任。

对于贸易金融而言,结算系统、技术要求和离散生态系统的整合 是重要的三元素。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

微信号已复制,请打开微信添加咨询详情!
-->