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
author[Q & A of Denglian community],Please bring the original link to reprint, thank you.
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]
- 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?