Solidity -> sCrypt 转译器简介

Posted sCrypt 智能合约

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solidity -> sCrypt 转译器简介相关的知识,希望对你有一定的参考价值。

为什么需要它?

sCrypt 是 BSV 的原生智能合约语言。理想情况下,每个人都应该在 sCrypt 中开发智能合约,利用最具扩展性的区块链。在实践中,我们也了解到许多项目和开发人员已经投入大量时间和金钱来开发他们当前的 Solidity 代码库。

转译器有助于开发人员将他们的应用程序从以太坊和其他 Solidity/EVM 兼容的区块链迁移到 BSV 网络,而无需从头开始编写代码。它极大地降低了他们的迁移成本,尤其是当他们的代码库包含数千行或更多代码时。

此外,现有的 Solidity 库和代码库可以被转换并用于 sCrypt 合约。

最后,它还可以用于 Solidity 开发人员通过观察 Solidity 代码与其 sCrypt 对应代码之间的相似性和差异来快速学习 sCrypt。

它是如何工作的?

转译不是一件容易的事,因为以太坊智能合约是基于账户模型的,而 BSV 区块链是基于 UTXO 模型的。

从抽象的高层上来讲,我们使用单个 UTXO 来表示以太坊合约的快照,并将每个合约账户映射到一个具有等效的代码和数据存储的起始 UTXO,表示合约的初始状态。我们使用有状态智能合约来映射更改合约状态的函数调用。每当合约的状态发生变化时,就会产生一笔新的交易,该交易花费合约的当前 UTXO,并生成另一个具有新状态的 UTXO。原始合约的最新状态总是在最新的 UTXO 中。转译器将合约的solidity 代码转换为 sCrypt 中的等效对应代码。更多详情,请参考这里

将以太坊合约映射到 BSV 有状态合约

在哪里使用它?

我们为转译器开发了一个 playground。只需单击一下,您就可以将 Solidity 编写的合约转换为等价的sCrypt 合约。

我们在下面展示了一个简单的计数器合约示例。

你可以看到左边的 Solidity 代码和右边的 sCrypt 代码几乎是一一对应的。
每个 Solidity 状态和函数都映射到一个 sCrypt 状态和函数。sCrypt 中的额外代码是用于将合约状态传播到下一个 UTXO 的样板代码,并且对于任何合约几乎都是相同的。

致谢

我们感谢 Vaionex 开发 Web UI 和 BSV 协会赞助该项目。

以上是关于Solidity -> sCrypt 转译器简介的主要内容,如果未能解决你的问题,请参考以下文章

制作类似 sql 的语言转译器的好选择

Swift 到 JavaScript 转译器 - 可能吗?

SCrypt对密码进行加密及密码验证

sCrypt 调试器简介

预处理器和转译器有啥区别?

Django 4.0 alpha 1 发布