11-21-2024
BSV
$67.45
Vol 204.57m
1.25%
BTC
$98635
Vol 114137.91m
5.28%
BCH
$485.2
Vol 2165.8m
12.01%
LTC
$89.35
Vol 1354.6m
7.43%
DOGE
$0.38
Vol 9371.34m
4.24%
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

David Case gets technical with Bitcoin masterclass coding sessions
Whether you're a coding pro or a novice, David Case's livestream sessions on the X platform are not to be...
November 21, 2024
NY Supreme Court’s ruling saves BTC miner Greenidge from closing
However, the judge also ruled that Greenidge must reapply for the permit and that the Department of Environmental Conservation has...
November 20, 2024
Advertisement
Advertisement
Advertisement