JavaScript是智能合约的未来吗?

老雅痞 view 42 2022-2-17 00:25
share to
Scan QR code with WeChat

JavaScript是智能合约的未来吗?

正如我们在《Web3堆栈》一文中所强调的,Web3中相当一部分的前端开发是用Web2.0开发者非常熟悉的JavaScript技术完成的。这意味着全球约有1600万JavaScript开发者有很多机会参与到网络下一阶段的建设中。现在,Agoric,一个第一层堆栈证明区块链,正在做一个大赌注,即JavaScript也可以用于智能合约,这是分散信任的基础,是Web3去中心化应用开发的核心。到目前为止,智能合约主要是使用Solidity或Rust等语言进行编程。

什么是智能合约?

智能合约比区块链早了几十年,尽管它们已经成为区块链和Web3技术的同义词。正如Agoric的Dean Tribble在接受The New Stack采访时所说:"核心是智能合约是执行安排条款的软件,就像第三方之间的法律合同"。

一些熟悉的例子可能是像Uber使用软件把你和一个未知的司机联系起来,这个司机同意把你带到一个预先选择的目的地,这是一种智能合约。该交易需要一个可信的中介,在这种情况下,一个集中的软件公司有特权访问信息,比如你的信用卡和支付位置,以及司机的可用性。该软件连接双方,给你搭车,替司机收费。

"区块链带来了复制的执行,"特里布尔说,"在这里,你有多个管辖区和行政领域的机器,投票同意下一步计划。这种跨管辖区的共识意味着没有任何组织或政府可以破坏执行的完整性。"

这会导致像金融交易的发生,比起位于同一城镇的司机和骑手,这是在更复杂的信任中跨越国界。Agoric的目标是使商业世界的大部分都能在这种环境下工作,这意味着它需要由几千名以上的开发人员来编程。因此,没有什么比一门1600万开发人员都能理解的语言更好的了,这可以让开发者使用熟悉的开发环境。

现在,区块链智能合约的编程仅限于知道如何使用Solidity(以太坊及其第二层侧链的智能合约语言)或其他语言(如Solana上的Rust)编程的相对少数人。Agoric正在帮助JavaScript开发者快速越过实施智能合约的障碍,就像React让人们更容易使用可重复使用的组件构建JavaScript应用程序一样。

在智能合约中使用JavaScript的弊端

我向Tribble询问了潜在的缺点,他首先做了一个精辟的回答,说:“可能有缺点,但这并不重要。Github做了一项分析,Github上的应用程序中97%的代码来自第三方库。”

但他紧接着又聊了一些细节。

“具体的组件模型有很多缺点,”他说,“你真的想要一种语言、框架和库,将安全隐患降到最低,同时使其易于组合。React是一个很好的例子,因为该模型具有负担能力,并解决了把东西插在一起的正确挑战。在React之前有很多用户体验框架,但React把它做对了。我们的组件就像React组件,我们的框架支持使用我们的组件并与其他组件组成一个应用程序。”

安全性探讨

Agoric在他们的组件模型中使用加固的JavaScript来构建可组合的智能合约,这限制了JavaScript运行时可以做什么。

“加固的JavaScript允许你锁定你的JavaScript,这样它就不可能做你不希望它做的事情,”Tribble解释说,“进入一个程序的权限完全由该程序运行的范围控制。我们控制着范围。你完全以我们提供的访问和权限运行,所以这样我们得到了真正的限制执行任意的JavaScript。”

Agoric对加固的JavaScript进行了详细的探讨,其中包括这个图片:

JavaScript是智能合约的未来吗?

相比之下,Solidity编程模型有安全隐患,而且有重入性等问题。自从有了同步程序以来,重入性一直是同步编程模型的一个问题。当一个程序在请求者得到初始请求完成的确认之前,可以有效地多次向另一个程序重复同一请求时,就会出现这种情况。例如,这意味着你可以重复请求相同数量的ETH,并在你请求的程序有时间确认你拿到钱之前不断获得更多ETH。Will Shahda在Medium上提供了一个很好的例子。

根据Tribble的说法,Agoric首席工程师Brian Warner在以太坊上线前的安全审查中指出了这些重入式攻击的风险。他也承认,这在当时有可能是正确的权衡。转向异步模式可以避免重入问题,但由于这是以太坊设计中的一个基本特征,这并不是可以解决的问题。

减少使用费用

对以太坊最大的抱怨之一是与工作证明相关的碳排放费用。这个问题的核心是希望增加以太坊网络活动的人和希望增加费用的矿工之间的根本错位。正如Tribble所说:“矿工是贫民窟的房东,而以太坊是租户。房东获得更多钱的唯一方法是提高租金。”

除了作为第一层股权证明网络,Agoric正在研究解决这种经济上的不相容性,以使他们的区块链网络的优先事项与经济运作的动态相一致。因此,他们将他们的治理代币BLD和他们的收费代币RUN分开,目的是让RUN成为一个稳定的代币,不会波动。

Tribble这样解释其中的原因:“把汽油费想象成你的房租或电费。以太坊就像用苹果公司的股票来支付你的租金。从商业规划的角度来看,这不是很好。很难比较每个月的租金是上升还是下降。你想要的是用一个稳定的代币来支付汽油,这意味着它需要是链条的内在因素,它不应该进入验证者的口袋,所以没有提高租金的动力。”

这就是RUN的作用。“在执行中使用的RUN进入货币储备,为链提供稳定性和执行增长,”特里布说,“验证人的所有费用都来自于借入RUN的费用,而不是支付执行费用。这意味着,随着经济的增长,当我给你发送更多的支票、当我购买更多的NFT、当我锁定更多的代币时,流通中的RUN数量会增加,一小部分会给BLD持有人用于抵押和委托。所以他们的回报随着经济的增长而增长。”

JavaScript是智能合约的未来

Agoric是否能成功地为其可组合的JavaScript智能合约组件带来大规模的采用,还有待观察,但React无疑是建立一个基于组件的框架的成功模式。在一个可预测的成本控制结构中分层,也将在帮助去中心化的应用程序了解业务成本方面发挥作用。Agoric也在规划互操作性,通过区块链间通信协议和Chainlink甲骨文网络的方式,使其能够与以太坊和Cosmos连接。

看起来非常有意义的是,允许那些已经有深厚经验的JavaScript开发人员,特别是在金融领域,利用这些知识和他们的背景来满足金融合规准则和安全标准。这部分开发者往往也有为数十万用户实施应用程序的丰富经验,他们的技术水平参差不齐,因此将他们的用户体验知识与编写智能合约的简便方法相结合,可能是一个成功的组合。

btcfans公众号

Scan QR code with WeChat

Link
Disclaimer:

Previous: 常见的NFT理解误区,你中了几个? Next: 在Web3时代,社区拥有的协议将给用户提供价值

Related