Solidity智能合约面向对象编程(一、类的创建)
Solidity编写智能合约
1 pragma solidity ^0.4.4;//版本声明 ^代表向上兼容 pragma代表版本声明 solidity 代表开发语言
2 //定义类
3 contract Person {
4 //定义属性,属性名规范前面加_
5 uint _height;
6 uint _age;
7 address _owner;//代表合约的拥有者
8 //方法名与合约名相同时属于构造函数
9 function Person(){
10 _height = 180;
11 _age = 29;
12 _owner = msg.sender;
13 }
14 //set方法,去掉属性前面下划线,首字母大写,采用驼峰式
15 function setHeight(uint height){
16 _height = height;
17 }
18 //get方法,方法名不需要写get constant代表方法只读,returns(uint)代表方法返回值类型
19 function height() constant returns(uint){
20 return _height;
21 }
22
23 function setAge(uint age){
24 _age = age;
25 }
26 function age() constant returns(uint){
27 return _age;
28 }
29
30 function owner() constant returns(address){
31 return _owner;
32 }
33
34 //析构函数
35 function kill() {
36 if(_owner == msg.sender){
37 selfdestruct(_owner);
38 }
39 }
40
41 //0x692a70d2e424a56d2c6c27aa97d1a86395877b3a 当前合约地址
42 }
部署合约时,因为要往区块链写入数据,需要矿工进行验证,所以需要花费一些gas奖励给矿工,还有当我们每次调用increment方法时,也属于写入数据,同样需要花费gas,但是调用getCount方法时只是从区块链读取数据,无需验证,读取数据无须花费gas。
Solidity智能合约面向对象编程(一、类的创建)的更多相关文章
- 以太坊solidity智能合约-生成随机数
Solidity随机数生成 在以太坊的只能合约中,没有提供像其他面向对象编程一样的生成随机数的工具类或方法.其实,所谓的随机数也是伪随机的,没有哪一种语言能够真正的生成随机数. 对于solidity来 ...
- C++ Primer 学习笔记_72_面向对象编程 --句柄类与继承[续]
面向对象编程 --句柄类与继承[续] 三.句柄的使用 使用Sales_item对象能够更easy地编写书店应用程序.代码将不必管理Item_base对象的指针,但仍然能够获得通过Sales_item对 ...
- solidity智能合约如何判断地址为0或空
智能合约地址判断 在旧版本中可使用以下代码来进行比较: owner != 0x0 但如果在新版本中使用,则会提示错误信息. 那么,如何正确使用来比较地址是否为空呢. 解决方案 可以使用address( ...
- solidity智能合约中tx.origin的正确使用场景
简介 tx.origin是Solidity的一个全局变量,它遍历整个调用栈并返回最初发送调用(或事务)的帐户的地址.在智能合约中使用此变量进行身份验证会使合约容易受到类似网络钓鱼的攻击. 但针对tx. ...
- solidity智能合约字节数最大值及缩减字节数
智能合约最大字节数 在Solidity中,EIP 170将contract的最大大小限制为24 KB .因此,如果智能合约内容过多,会导致无法进行发布操作. 减少压缩字节数方法 方法及变量命名 在一定 ...
- solidity智能合约implicit conversion异常
问题场景 在使用^0.5.10版本的solidity时,如果使用this关键字会出现以下问题. 代码: require(tokenContract.balanceOf(this) >= _num ...
- 以太坊solidity智能合约语言学习资源整理
暂时看到篇文章写的不错,先收集下来,后面有机会自己也整理一个 Solidity语言学习(一)Solidity语言学习(二)——Solidity的安装与编译Solidity语言学习(三)——智能合约编程 ...
- day24:面向对象设计与面向对象编程、类和对象
一.三大编程范式: 面向过程: 面向函数: 面向对象: 二.程序的进化论: 1.编程最开始就是无组织无结构,从简单控制流中按步写指令 2.从上述的指令中提取重复的代码块或逻辑,组织到一起(比方说,你定 ...
- java面向对象编程(类、对象)
一.面向对象编程概述面向对象编程(Object Oriented Programming,缩写为OOP)是当今最流行的程序设计技术,它具有代码易于维护.可扩展性好和代码可常用等优点.面向对象的设计 ...
随机推荐
- android开发之java代码中如何获取到当前时间。详情代码带注释。
/** *获取当前时间 * @return */ public String getTime(){ Date date= new Date();//创建一个时间对象,获取到当前的时间 SimpleDa ...
- webdriver入门之环境准备
1.安装ruby 下载ruby的安装包,很简单,不解释.装好之后打开cmd输入以下命令验证是否安装成功 ruby -v 2.安装webdriver 确保机器联网,用gem命令安装是在有网络的情况下进行 ...
- Linux下命令设置别名--alias(同实用于mac)
最近在搞appium自动化脚本编写,过程中经常会使用 uiautomatorviewer这个工具查看UI布局和元素,但是不得不说这个单词太长了.. 如何快速使用,有三个小技巧,分别是: 1.设置好改工 ...
- 深入了解Netty【五】线程模型
引言 不同的线程模型对程序的性能有很大的影响,Netty是建立在Reactor模型的基础上,要搞清Netty的线程模型,需要了解一目前常见线程模型的一些概念. 具体是进程还是线程,是和平台或者编程语言 ...
- 小白也能弄懂的目标检测YOLO系列之YOLOV1 - 第二期
上期给大家展示了用VisDrone数据集训练pytorch版YOLOV3模型的效果,介绍了什么是目标检测.目标检测目前比较流行的检测算法和效果比较以及YOLO的进化史,这期我们来讲解YOLO最原始V1 ...
- Dos简易基础及常用Dos命令
Dos简易基础及常用Dos命令 什么是cmd? cmd是command的缩写,意指操作系统中的命令行程序,一般说的都是Windows中的Dos系统. 如何打开cmd? 键盘操作:Win + R 输入c ...
- Python多行缩进反向缩进快捷键
1.Python增加缩进快捷键:Ctrl+Alt+] 或tab键或shift+tab键 2.Python减少缩进快捷键:Ctrl+Alt+[
- 搭建MQTT学习平台
关于MQTT协议的介绍就不赘述了,网上资料非常多,直接入正题. MQTT协议的实现非常多,我选择了一个非常轻量级的开源项目来学习MQTT协议——mosquitto,官网:www.mosquitto.o ...
- 内存管理初始化源码4:add_active_range
我们在阅读源码时,函数功能可以分为两类:1. bootmem.c 2. page_alloc.c. 1. bootmem.c是关于bootmem allocator的,上篇文章已经简述过. 2. pa ...
- Vue企业级优雅实战04-组件开发01-SVG图标组件
(后续的文章 公众号会提前一周更新,欢迎关注文末的微信公众号:程序员搞艺术) 预览本文的实现效果: # gitee git clone git@gitee.com:cloudyly/dscloudy- ...