DERO Virtual Machine represents entire DERO Smart Contracts eco-system which runs on the DERO block chain.
DVM is a decentralized platform that runs both public and private smart contracts: applications that run exactly as programmed without any possibility of downtime, censorship, fraud or third-party interference.Public Smart contracts are open versions. However, the DVM is being designed to support Private Smart Contracts where everything is hidden, eg parties, and information involved. Smart Contracts are nothing but rules which apply on transacting parties.
DVM are written in a DVM-BASIC custom BASIC style language with line numbers.
Dero 虚拟机
智能合约的定义与调用
和普通编程类似,合约也有定义和调用。
区别在于,定义和调用都是一笔笔交易完成。
一个比较形象的比喻:
- BlockChain 是世俗世界
- SC_Transaction 是俗家子弟
- SmartContract 是出家和尚
- DVM_Interpreter 是和尚寺院
DVM,就像一个和尚寺院 DVM_Interpreter,有自己的运行管理规则,有出家和尚 SmartContract、有大雄宝殿 Blockchain_Input、有藏经阁 TX_Storage、有少林功夫 Shared_State 等等。
定义:
DERO 的智能合约由一个个函数构成,即合约以“函数”为单位。
函数又可以进一步细分,函数以“行(带行号)”为单位。
缩写好一个个“函数”,将它们放在同一文件里,即构成“智能合约”。
通过 install_sc
将合约上链。
相关代码存放于交易的 Extra
里,没有接收方,除此之外和普通交易一样。
上链后会有一个 scid
合约编号。
调用:
通过 transfer_split
调用合约代码,需要指明 entrypoint
入口和 scid
合约编号,以及所需要的参数。
这里所谓的“入口”,就是“定义”部分所编写的一个个“函数”。
相关代码存放于交易的 Extra
里,没有接收方,除此之外和普通交易一样。
智能合约执行的时候,会先解析合约代码,然后一行行执行,即执行合约时以“行(带行号)”为单位。
虚拟机支持:
- 内建指令
- 内建函数
- 自定义函数
即,合约代码完全由内建指令、内建函数、自定义函数 3 者构成。
自定义函数,也是由“内建指令”和“内建函数”组成,所以“虚拟机解释器”可以比较简单实现。
数据结构:
数据结构从几个方面入手
- 编写(SmartContract、Function、Variable)
- 运行(DVM_Interpreter、Shared_State、Blockchain_Input)
- 存储(Locals、TX_Storage、DataKey、SC_Transfers)