技术开发合同样例—技术开发合同法律规定
PDX Utopia区块链协议栈,支持WASM合约与Solidity合约互相调用。具体请见:
https://github.com/PDXbaap/ewasm-rust-demo/blob/master/README-SOL.md
是Solidity?
以太坊Solidity是一种面向智能合约的高级语言,其语法与JavaScript类似。Solidity是用于生成在EVM上执行的机器级代码的工具。Solidity编译器获取高级代码并将其分解为更简单的指令。Solidity代码封装在Contracts中。
以太坊合约中的Solidity
合约是以太坊去中心化应用程序的基本构建模块。所有变量和函数都是合约的一部分,这是所有项目的起点。一个名为MyFirst的空合约看起来像这样:
Solidity文件的布局
源文件可以包含任意数量的合约定义,包括指令和Pragma指令。
Version Pragma
Version Pragma是定义代码使用的Solidity编译器版本的声明。
往期链接:PDX Utopia区块链协议栈已正式支持eWASM智能合约
Solidity智能合约在区块链的价值
信任
创建久的、安全的、不可篡改的可追溯的记录
价值
独一无二的资产转移,不需要第三方的组织
可靠
分布式、稳定性
支持WASM合约与Solidity合约互相调用
数据类型
禁止使浮点数,兼容evm中规定的数据类型,例如:
- bytes:不定长字节数组
- 地址:160 bit数字,在内存中以20字节小字节无符号整型表示
- u128:128位数字,在内存中以16字节小字节无符号整型表示
- u256:256位数字,在内存中以32字节小字节无符号整型表示
格式
每个合约必存储为wasm字节码。
导入模块
合约规定iport的范围仅限于EEI提供的模块,ethereum名称空间以外的包只允许使用debug,生产在环境中debug也应被禁止使用。
导出函数
每个合约必须导两个函数(只能导出两个函数)
- 记忆:可供EEI写入的共享内存
- main:一个入口函数,没有参数也没有返回值,将被VM执行
关闭要wasm的start function功能,它开启会影响ewasm在启动前电子杂志合约内存地址指针的功能。
HELLO-WASM-ABI定义ABI
建议通过以下三步来生成ABI:
1.使用Solidity关系编写contract interface;
2.使用remix编译contract interface得到对应的ABI描述;
3.参照ABI描述文件关系编写pdxabi::Contract;
部署wasm合约后可以使用合约地址和合同接口在remix里对对约进行实例化,方便测试。
Solidity调用Wasm合约
用sol合约来调合约wasm,与sol调用sol方式相同,假设已经部署过hello-wasm-abi这个合约,并得到合约地址0xda3ce11d916ffba4a1289cef66a7f142ec5a0f74,通过hello-wasm-abi合约接口和地址,即可实例化这个合约,之后用法与sol调用sol一致。
关于ABI

