near / nearcore

Reference client for NEAR Protocol
https://near.org
GNU General Public License v3.0
2.33k stars 629 forks source link

Adding Move VM to NEAR runtime? #7468

Closed PaulFidika closed 6 months ago

PaulFidika commented 2 years ago

I think the possibility of adding the Move VM to NEAR's runtime should be seriously considered. JavaScript / Typescript are a poor choice for writing mission-critical business logic; I have no idea why effort is being wasted trying to develop this. Whereas Move was explicitly designed for blockchains. Move bytecode can be formally verified, ensuring the correctness of your programs. I believe in a few years Move, Cadence, or other (yet to be created) resource-oriented programming languages will replace Solidity and Rust for blockchain logic.

I believe other blockchains like Solana will soon be adding the Move VM to their runtimes, so NEAR should seriously consider it too:

https://github.com/solana-labs/solana/blob/5399faaf5367430b5e1451f0d9fd92c87d725171/docs/src/proposals/embedding-move.md

matklad commented 2 years ago

Our current stance is that we provide a low-level WASM runtime, and allow higher-level languages to be implemented by compilation to WASM. That's how JavaScript and EVM work on NEAR.

Building a Move VM to run on NEAR via WASM would be an awesome project! Luckily, it doesn't need any first-class support on the protocol level.

Once we know which of Move, Cadence, etc languages wins the mindshare, we can consider adding first-class support for it for better performance.

PaulFidika commented 2 years ago

Okay that's great news! I think Move will be a great language for smart contracts in the near future.

matklad commented 2 years ago

If anyone wants to take a crack at "Move via WebAssembly" approach outlined above, feel free to reach out to pagoda/contract-runtime on Zulip. I'll also tag this as good-fist-issue -- this is quite an ambitious project, but indeed something that doesn't require a lot of context :D

aborg-dev commented 6 months ago

I'm cleaning up old GitHub issues and I don't think we plan to work on this, so closing for now.