BSV
$54.22
Vol 32.26m
-3.94%
BTC
$96949
Vol 46951.65m
-1.55%
BCH
$459.18
Vol 368.22m
-2.08%
LTC
$102.04
Vol 906.26m
-0.95%
DOGE
$0.32
Vol 5743.91m
-4.89%
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

Google unveils ‘Willow’; Bernstein downplays quantum threat to Bitcoin
Google claims that Willow can eliminate common errors associated with quantum computing, while Bernstein analysts noted that Willow’s 105 qubits...
December 18, 2024
WhatsOnChain adds support for 1Sat Ordinals with new API set
WhatsOnChain now supports the 1Sat Ordinals with a set of APIs in beta testing; with this new development, developers can...
December 13, 2024
Advertisement
Advertisement
Advertisement