current position:Home>Why create a new contract language, solid, instead of using other existing languages
Why create a new contract language, solid, instead of using other existing languages
2022-02-03 20:47:09 【Q & A of Denglian community】
Create a new contract language , Such as :Solidity What are the advantages and disadvantages , As opposed to using an existing language, such as : Golang or Python?
Take the answer 1:
Each programming language is designed for a specific operating environment and target tasks , And these constraints drive almost all design decisions : What functions are supported and what functions are discarded .
Some time ago , I spent quite a lot of time creating a Go -> EVM Cross compiler . I did manage to run some trivial programs , It's definitely a lot of fun , But soon I began to find EVM The limitation of and Go The core assumptions behind it conflict :
Every goroutine All need at least 64KB Of memory . Now , For any decent hardware , Are insignificant low , But for the EVM But it's ridiculously high , The price is also very high .
Go Depending on the memory manager at the operating system level . It means , To be in EVM Up operation Go Program , We need to be in EVM Develop a micro memory manager based on , To support the Go The required operation . I designed a Buddy Memory Allocation Algorithm POC edition , But the algorithm is based on the case of limited and fixed memory , And allocate any block in it . On the other hand , EVM yes " Infinite " And charge according to the maximum offset of each allocation . therefore , All common memory allocation algorithms will be affected , Because they assume that the memory cost is constant , and EVM It's by position ( Even exponential correlation ).
Go It's a garbage collection language , Therefore, each memory allocation also needs to maintain reference counters , This requires good use of memory allocators . It is also not impossible to solve , But the associated opcode and nonlinear memory costs make the overhead very large .
Even if the memory problem is solved , You still need to synchronize primitives for example 、 Operating system outages and other things we tend to take for granted, but EVM No structure Find a solution .
These challenges are my decision not to continue transplanting Go To EVM The main reason is , But they do show that modern languages are based on countless functions supported by the underlying operating system , These functions themselves are based on assumptions about the underlying hardware capabilities and related costs .
In this regard ,EVM Is very different , Therefore, applying the same assumptions will lead to highly suboptimal code execution . therefore , That's why there's a need to develop a system specifically for EVM The language of the execution environment , It's really possible that more work needs to be done than porting existing language syntax , But it can better produce a usable environment instead of having all kinds of " Limit " Go Code ( Although effective ).
Also need attention , The original EVM The design can be bad , If someone finds a better solution , It will be expanded , Upgrade or even completely replace . But this is the possibility of the future , and Solidity Is the current need .
Original question and answer link
Block chain in depth - Build a high-quality blockchain technology blog , All the school district chains come here , Focus on You know 、 Microblogging .
copyright notice
author[Q & A of Denglian community],Please bring the original link to reprint, thank you.
https://en.netfreeman.com/2022/02/202202032047063730.html
The sidebar is recommended
- To learn blockchain technology, let's build a group school district blockchain technology
- Review of dimitra and Morpheus AMA, global blockchain agricultural technology platform
- Bitcoin public key principle
- Blockchain application series - did
- Bitcoin series - using docker to build BTC private chain
- Bitcoin series - BTC synchronous public chain, test chain and private chain
- Bitcoin series - BTC compilation and installation
- Ethereum series - Web3 js
- Experience - deploy Ethereum private chain (POA)
- Experience part - deploying Ethereum private chain (POW)
guess what you like
-
Ethereum series - Smart contract development and commissioning
-
Ethereum series - DAPP development three swordsman
-
IPFs series - combination of IPFs and blockchain
-
How can the Internet of things, big data, cloud computing, blockchain and artificial intelligence be combined to promote the development of digital economy?
-
The form of story telling tells you what is server, cloud deployment, virtualization, artificial intelligence, blockchain, cloud computing, big data and privacy computing
-
Open source Hongmeng, metauniverse, blockchain, open source collection | alot open source science and technology festival and openharmony technology forum are in hot registration
-
Bankless year-end summary: encrypted network will subvert the old power system
-
The other side of Dao: bribery in the chain and the rise of dark Dao
-
The first 3D chain game (CSC) of metauniverse concept seeks token in encrypted world and blockchain game
-
Metauniverse 3D [NFT] arrg mobile game of metauniverse blockchain [Curtis sword]
Random recommended
- It is said on the Internet that three arrows bought "Adidas and gear", which is actually a fraud
- How will the global network and metauniverse affect international politics?
- GIS + blockchain, a new application scenario of geospatial data, is expected in the future
- The demand for NFT, a clothing luxury brand, has soared, and metauniverse may provide opportunities for transformation
- Curtis sword CSC coin star "Q coin mode" will be launched in January
- Adaoracle ecology and its decentralized Oracle network promote the development of blockchain
- a16z:Web3. 0 ecological panorama
- Development and application of blockchain in food industry
- Chat blockchain (III)
- Ethereum smart contract - building the basic environment
- Founder of ENS: not only Eth, to be the domain name service provider of every digital resource in the world
- A piece of land is 32 million. Why do real estate tycoons buy land in the virtual world?
- Three minutes to understand why arbitrum TVL can lead in layer2
- 13th anniversary of bitcoin white paper, 13 key knowledge points
- From didi to bitcoin, towards a new era of zero friction economy
- Randomness in bitcoin
- Blockchain private Chain NEW
- Blockchain private chain
- Blockchain game: unsustainable or is the future coming?
- Chat blockchain (IV)
- What else does the meta universe lack? Immersive sound hasn't been customized for avatars yet
- Ethereum web3js calls smart contract and does not return transaction hash
- How is Block 0 confirmation implemented
- What are the testing tools for Ethereum smart contract?
- Why can't I display pictures in my wallet when I bind the tokenid with the hash returned from uploading to IPFs?
- TransferHelper: TRANSFER_ FROM_ FAILED
- How to solve the problem of solidness version and package?
- How can a token in Tron wave field and TRX Group LP, pair contract obtain the quantity of a token through LP?
- Using openzepplin library contract
- What was the initial POS consensus agreement?
- Introduction to blockchain
- What progress has filecoin made so far?
- What are the impacts of Libra compared with DCEP?
- What is a token in the blockchain?
- Is there any material that can make Xiaobai learn blockchain quickly?
- How to validate smart contracts?
- Can Ethereum's official wallet password be restored if you forget it?
- What is BiP
- How to convert byte type to integer uint in solidity
- Can this be used in the smart contract constructor?