实验报告08orz
实验目的及要求
了解以太坊的基本逻辑,理解以太坊的运行机理。能正确使用solidity进行智能合约设计。能完成链上数据存取。
实验基本原理
了解solidity语法,使用solidity进行简单智能合约设计。
实验实施环境
Firefox & Metamask插件扩展
Remix网页:remix.ethereum.org
实验概述
在remix中编写智能合约,并进行合约的测试。
实验内容
1.学习 《Solidity介绍》视频,了解智能合约语法
- Solidity
Solidity是以太坊智能合约编程语言,是一种静态类型语言,意味着每个变量(本地或状态变量)需要在编译时指定变量的类型(或至少可以推倒出类型)。Solidity提供了一些基本类型可以用来组合成复杂类型。Solidity可以分为值类型(Value Type)和引用类型(Reference Types)。 - 智能合约
一个智能合约是一套以数字形式定义的承诺(promises) ,包括合约参与方可以在上面执行这些承诺的协议。一个合约由一组代码(合约的函数)和数据(合约的状态)组成,并且运行在以太坊虚拟机上。合约具有读取交易数据、读取或写入合约自己的存储空间、读取环境变量(块高,哈希值,gas)和向另一个合约发送一个“内部交易”的能力。
2.在remix网页中,编译部署水龙头faucet合约
运行截图如下。
选择“DEPLOY & RUN TRANSACTIONS”菜单栏进行合约部署,左侧的“ENVIRONMENT”标签选择“Injected Web3”选项,会出现remix链接以太坊的弹出框,点击“CONNECT”按钮,链接成功后点击左侧的“Deploy”按钮,点击确认。
切换到以太坊界面可查看到智能合约部署的队列,等待一会之后再次刷新页面,发现合约部署成功,具体操作截图如下。
(合约部署队列)
(合约部署成功)
附Faucet.sol代码:
pragma solidity ^0.4.17;
contract Faucet{
function withdraw(uint amount) public {
require(amount <= 100000000000);
msg.sender.transfer(amount);
}
}
3.(选作)在remix网页中,编译部署简单存储合约
运行截图如下。
附SimpleStorage.sol代码:
pragma solidity >0.4.22 <0.5.0
contract SimpleStorage{
uint myData;
function setData(uint newData) public{
myData = newData;
}
function getData() public view returns(uint){
return myData;
}
}