以太坊数据上链和展示智能合约
1. 首先定义上链数据的基本结构(推荐使用结构体)
2. 定义全局变量和判定的一些变量
3. 定义接受数据和展示数据的函数
4. 将数据传入,使用memory定义接受变量,保证数据上链
5. 展示函数将展示数据直接返回
pragma solidity ^0.4.13;
contract TimeProject {
enum ProjectStatus { Open, Examing, Finshed }
uint public projectIndex;
mapping (address => mapping(uint => Project)) examer;
mapping (uint => address) projectIdInStore;
struct Project {
uint id;
string name;
string category;
string when;
string where;
string description;
uint price;
uint demandNum;
ProjectStatus status;
}
constructor() public {
projectIndex = 0;
}
function addProject(string _name, string _category,string _when, string _where, string _description, uint _price, uint _demandNum) public {
require(_price>0,"The price is too low!");
projectIndex += 1;
Project memory project = Project(projectIndex, _name, _category, _when, _where, _description,_price,_demandNum, ProjectStatus.Open);
examer[msg.sender][projectIndex] = project;
projectIdInStore[projectIndex] = msg.sender;
}
function getProject(uint _projectId) view public returns (uint, string, string, string, string, string, uint, uint, ProjectStatus) {
Project memory project = examer[projectIdInStore[_projectId]][_projectId];
return (project.id, project.name, project.category, project.when, project.where, project.description, project.price, project.demandNum, project.status);
}
}