solidity 小案例 收费站
2024-10-19 07:27:11
solidity IDE下载地址 https://pan.baidu.com/s/1cY8VgDqB9Wt9VzK-Nocbyw
代码案例:
pragma solidity ^0.4.0;
//创建合约的时候,点的那个地址就是合约本身的地址
contract TollStation{ //构造器 存储车库车辆信息
struct CarInfo{
address _carAddr;//车主账户地址
string _lisencePlateNumber;//车牌号
uint _intime;//车辆进入时间
} //定义数组
CarInfo[] public car;
address addre;//合约地址 //合约的创建(构造器): payable(收钱)
function TollStation() public {
addre = msg.sender;
} //添加数据
function addData() payable{
car.push(CarInfo(msg.sender,"云A1123", now));
} //判断用户是否存在
modifier carExist{ bool contain;
for(uint i = 0;i<=car.length-1;i++)
{
if(msg.sender == car[i]._carAddr){
contain = true ;
} }
require(contain);//判断contain的值,如果不存在,则不继续执行
_;
} function account() public payable carExist returns (uint adr) { uint beforeTime; //取出当前账户的时间,然后用系统当前时间减去原来的时间 就可以计算需要扣除的金额
for(uint i = 0;i<=car.length-1;i++)
{
if(msg.sender == car[i]._carAddr){
beforeTime = car[i]._intime;
}
}
uint nowTime = now;
uint bal = nowTime - beforeTime;
if(bal<100000000){//小于1小时 扣除6wei
require(msg.value>0);
addre.transfer(6 ether);
emit Sent(msg.sender,"转账成功",msg.value);
}
else{
require(msg.value>0);
addre.transfer(10 ether);
emit Sent(msg.sender,"转账成功",msg.value);
}
return addre.balance;
} //事件 定义事件的作用就是可以在控制台输出和发送消息给客户端
event Sent(address addr,string msg,uint count); //查询数组
function queryCarData() returns(address addr,string str,uint time,uint size){
if(car.length<1){
return(0x323,"s",0,0);
}
else{
addr =car[car.length-1]._carAddr;
str = car[car.length-1]._lisencePlateNumber;
time = car[car.length-1]._intime;
size = car.length;
}
} function getLocalAddress() returns (address addr){
return this;
} function getTime() returns (uint now11){
now11 = now; return now11;//h获取系统时间 时间格式为12524208878 1524295087
}
}
(注意:require代码需要注释掉才可以)
下载了IDE后操作步骤如下:
1、解压后打开index.html,进入页面,复制代码,点击右侧的create,账户选择第一个。
2、切换账户,value值必须写,它主要是用于后面操作,就是车主进入车库多长时间,然后需要扣费多少,就是从value里面扣得,如果钱不够,交易失败。单位选择ether。
3、转账成功:
最新文章
- jboss jms 实例
- swift枚举
- Swift入门篇-字符串和字符
- 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(四)码农网
- 使用gson-1.6.jar解析json
- HDU 5437 Alisha’s Party (优先队列模拟)
- Michael Kors成了时尚行业的公敌-股票频道-和讯网
- this web application instance has been stopped already.
- centos 打包RPM包 ntopng
- MySQL索引 - 索引的类型
- Python字符串详解
- 2017noip普及组赛前注意事项总结
- java之设计模式工厂三兄弟之简单工厂模式
- 从PRISM开始学WPF(番外)共享上下文 RegionContext-更新至Prism7.1
- ABP之模块系统
- 2018-2019-1 20189203《Linux内核原理与分析》第二周作业
- 安全运维之:Linux后门入侵检测工具的使用
- java集合进行排序的两种方式
- flaks___git
- spring 加载jar包中的配置文件
热门文章
- 解决nohup: 忽略输入并把输出追加到";nohup.out";或者nohup: 忽略输入重定向错误到标准输出端
- ocalhost kernel: [244840.301449] nf_conntrack: nf_conntrack: table full, dropping packet
- 基于端口划分vlan
- Linux创建RAID0_实战
- Linux useradd 命令介绍
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十五)——集中式接口文档实现
- idea开发web项目框架失效和无法启动问题
- 90%的人都不知道的Node.js 依赖关系管理(下)
- Jmeter- 笔记7 - 服务器监控(ServerAgent配置)
- Selenium八种元素定位方法源码阅读