div#pop_ad { opacity: 0; }
来源:PDX
是Solidity?
以太坊Solidity是一种面向智能合约的高级语言,其语法与JavaScript类似。Solidity是用于生成在EVM上执行的机器级代码的工具。Solidity编译器获取高级代码并将其分解为更简单的指令。Solidity代码封装在Contracts中。
以太坊合约中的Solidity
合约是以太坊去中心化应用程序的基本构建模块。所有变量和函数都是合约的一部分,这是所有项目的起点。一个名为MyFirst的空合约看起来像这样:
Solidity文件的布局
源文件可以包含任意数量的合约定义,包括指令和Pragma指令。
Version Pragma
Version Pragma是定义代码使用的Solidity编译器版本的声明。
往期链接:PDX Utopia区块链协议栈已正式支持eWASM智能合约
Solidity智能合约在区块链的价值
信任
创建久的、安全的、不可篡改的可追溯的记录
价值
独一无二的资产转移,不需要第三方的组织
可靠
分布式、稳定性
支持WASM合约与Solidity合约互相调用
was合约与sol合约之间的互相调用是建立在两端都符合ABI规范的基础之上,部署之后调用方式与sol调用sol类似。数据类型
格式
导入模块
导出函数
定义ABI
在hello-asm-abi/src/abi.rs中定义了合同对象,了所有游戏hello-wasm样例中的put/get/getcounter三个方法的ABI描述,注意,还我们不能直接用JSON来描述ABI必须使用pdxabi::Contract来定义声明;Solidity调用Wasm合约
关于ABI
看到我们导出有关函数规定与Solidity合约中定义的ABI有些不一样,Solidity合约根据方法签名来生成相应的ABI以便对合约中的函数进行调度,这在eWASM看来似乎行不通,只有因为一个main函数被导出了,使用如何main函数之外的函数呢?很我们就自然想到了使用合约的input来定义目标方法状语从句:输入侧参数,事实上Solidity也是这么做的,我们只是把这个灵活性交还给开发者实现,统一以的main函数作为入口,自行然后封装input序列化方案,在后面的例子中我们可以看到更加灵活的方式。



添加新手交流群:币种分析、每日早晚盘分析
添加助理微信,一对一亲自指导:YoYo8abc