BSV
$67.26
Vol 186.96m
-3.06%
BTC
$96802
Vol 115718.17m
2.03%
BCH
$478.29
Vol 2068.07m
5.83%
LTC
$88.33
Vol 1454.86m
2.05%
DOGE
$0.38
Vol 10518.83m
-2.92%
Getting your Trinity Audio player ready...

This post was first published on Medium.

Why is it needed?

sCrypt is Bitcoin’s native smart contract language. Ideally, everyone shall just develop smart contracts in sCrypt, leveraging the most scalable blockchain. In practice, we also understand that many projects and developers have invested plenty of time and money into developing their current Solidity codebases.

The transpiler facilitates developers to migrate their applications onto the Bitcoin network from Ethereum and other Solidity/EVM-compatible blockchains, without writing code from scratch. It reduces their migration cost enormously, especially if their codebase contains thousands of lines of code or more.

In addition, existing Solidity libraries and codebase can be converted and used in sCrypt contracts.

Lastly, it can also be used for Solidity developers to learn sCrypt quickly, by observing the similarity, as well as difference, between Solidity code and its sCrypt counterpart.

How does it work?

It is no easy task since Ethereum smart contract is account-based, while Bitcoin is based on UTXO.

At high level, we use a single UTXO to represent a snapshot of an Ethereum contract and map each contract account to a starting UTXO, with equivalent code and data storage, representing the contract’s initial state. We use Stateful Smart Contracts to map function calls that change a contract’s state. Whenever the state of the contract changes, a new transaction is generated that spends the current UTXO of the contract and generates another UTXO with the new state. The latest state of the original contract is always in the lastest UTXO.

The transpiler converts the contract’s solidity code to its equivalent counterpart in sCrypt. For more details, please refer to this.

Introducing Solidity to sCrypt transpiler: Run Ethereum smart contracts on Bitcoin
Map an Ethereum contract to a Bitcoin stateful contract

Where to use it?

We have developed a playground for the transpiler. With one single click, you can magically convert your contract written in Solidity to its sCrypt equivalent.

We show a simple counter contract example below.

Introducing Solidity to sCrypt transpiler: Run Ethereum smart contracts on Bitcoin

You can see there is almost a one-to-one correspondence between the Solidity code on the left and the sCrypt code it transpiles to on the right. Each Solidity state and function are mapped to an sCrypt state and function. The extra code in sCrypt is boilerplate code for propagating the contract state to the next UTXO and is virtually identical for any contract.

Acknowledgements

We thank Vaionex for developing the web UI and the Bitcoin Association for sponsoring the project.

Watch: The BSV Global Blockchain Convention presentation, Smart Contracts and Computation on BSV

https://www.youtube.com/watch?v=RzSCrXf1Ywc&t=6154s

Recommended for you

Blockchain enables autonomous AI agents to learn
Utilizing blockchain tech, a group of Belgian scientists enabled autonomous AI agents to learn and communicate securely, contributing to the...
September 17, 2024
WhatsOnChain gets own UTXO endpoints for BSV blockchain services
With ElectrumX set to retire in October, WhatsOnChain is gearing up to implement a new UTXO set of API endpoints,...
September 16, 2024
Advertisement