address 地址类型

40个16进制数,160位

地址包括合约地址和账户地址

payable 合约充值

balance,指的是当前地址的账户value,单位是wei

this指的是当前合约的地址

可以通过地址查找账户余额

pragma solidity ^0.4.0;

contract value {
//合约充值
function pay() payable{ }
function getvalve() view returns(uint){
address add = 0xca35b7d915458ef540ade6068dfe2f44e8fa733c;
return add.balance;//
}
function getthisvalve() view returns(uint){
return this.balance;//
} }

transfer

转账和将合约的价值转移  

pragma solidity ^0.4.0;

contract value {
//合约充值
function pay() payable{ }
//先pay(),再transfer
function transfer10rther() payable{
address receive = 0x14723a09acff6d2a60dcdf7aa4aff308fddc160c;
receive.transfer(10 ether);
}
//直接选择value的值,即可转换
function transfeMSG() payable{
address receive = 0x14723a09acff6d2a60dcdf7aa4aff308fddc160c;
receive.transfer(msg.value);
} }

send

send()方法和transfer()类似,但是不安全,在以下情况下会报错:

  • 递归深度大于1024
  • gas不足
pragma solidity ^0.4.0;

contract value {
//合约充值
function pay() payable{ }
function sendMoney() payable returns (bool){
address receive = 0x14723a09acff6d2a60dcdf7aa4aff308fddc160c;
//在图形化界面,如果输入的value的值不是10,则返回false
return receive.send(10 ether);
} }

mapping

映射

pragma solidity ^0.4.0;

contract value {
mapping (uint =>string)namemapping;
uint public sum =0; function initMap(string _name){
namemapping[sum++] = _name; }
function findNameById(uint _id) view returns(string){
if(_id <=sum)
return namemapping[_id];
else
return "worng";
}
}

函数

function (<parameter types>){private|internal|external|public}
[pure|constant|view|payble][returns(<return types>)]

函数重载

功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同

pragma solidity ^0.4.0;

contract value {
function f1(uint160 a)returns(string){
return "a";
}
function f1(address add)returns(string){
return "add";
}
function test()view returns(string) {
//下面两个情况编译不通过,uint160和地址类型格式相同
//f1(0xca35b7d915458ef540ade6068dfe2f44e8fa733c);
//f1(1);
address add = 0xca35b7d915458ef540ade6068dfe2f44e8fa733c;
return f1(add);
}
}
pragma solidity ^0.4.0;

contract value {
function f1(uint a,uint b)view returns(uint ,uint ){
return (a+b,a*b);
}
function f2(uint a,uint b)view returns(uint add,uint mul){
return (a+b,a*b);
}
}

【Solidity】学习(2)的更多相关文章

  1. solidity学习-cryptoPunks为实例

    在这里使用cryptoPunks为实例来进行solidity的介绍,一般这些内容理解了就能够进行相对简单的智能合约的编写了,同时会添加一些我认为也十分重要的内容学习文档为http://solidity ...

  2. solidity 学习笔记(7)内联汇编

    为什么要有内联汇编? //普通循环和内敛汇编循环比较 pragma solidity ^0.4.25; contract Assembly{ function nativeLoop() public ...

  3. solidity 学习笔记(6)call 函数

    call() 方法 call()是一个底层的接口,用来向一个合约发送消息,也就是说如果你想实现自己的消息传递,可以使用这个函数.函数支持传入任意类型的任意参数,并将参数打包成32字节,相互拼接后向合约 ...

  4. solidity 学习笔记(5)接口

    接口:不用实现方法,仅仅定义方法. pragma solidity ^; contract cat{ //cat实际上实现了接口animalEat,因为他们有相同的方法. string name; f ...

  5. solidity 学习笔记(3) 函数修饰符/继承

    修饰符: 函数修饰符有 constant  view pure 其中 constant和view的功能是一样的  不会消耗gas 也就是说不会做任何存储   constant在5.0以后的版本中被废弃 ...

  6. solidity 学习笔记 2 (二维数组)

    solidity 二维数组: pragma solidity ^0.4.23; contract twoArray{ uint[2][3] grade =[[20,30],[40,50],[45,60 ...

  7. solidity学习笔记

    一 pragam solidity ^0.4.23; contract helloword{ string public  name ="hello"; function getN ...

  8. 以太坊智能合约开发 Solidity学习

    1. pragma solidity >=0.4.22 <0.6.0;//版本号,头文件 contract BooleanTest { bool _a;//默认返回false int nu ...

  9. solidity 学习笔记(4)library库

    library库的申明: library SafeMath{ functrion mul(uint a,uint b) public returns (uint){ uint c= a*b; asse ...

  10. cryptopunks的代码解释

    1.imageHash就是将punk所有图像合在一起的那张图punks.png进行hash得到一个值,并将该值存储到链上,用处就是你可以通过将图像hash然后跟该值对比看图像对不对.这就是它的用处,在 ...

随机推荐

  1. 2018-2019-20175302实验二《Java面向对象程序设计》实验报告

    2018-2019-2 学号实验二<Java面向对象程序设计>实验报告 一.实验步骤及内容 1. 面向对象程序设计 参考 http://www.cnblogs.com/rocedu/p/6 ...

  2. 20175126《Java程序设计》第五周学习总结

    # 20175126 2016-2017-2 <Java程序设计>第五周学习总结 ## 教材学习内容总结 - 本周学习方式主要为手动敲代码并理解内容学习. - 学习内容为教材第六章,本章内 ...

  3. JVM学习01:内存结构

    JVM学习01:内存结构 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. 内存结构知识要点Xmind梳理 案例分析 分析1 package com.h ...

  4. SummerNote 富文本编辑器 - Rails 集成

    使用官方提供的CDN服务 将下面一段加入layout文件中 <link href="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/css ...

  5. JAVA常用注解

    摘自:https://www.cnblogs.com/guobm/p/10611900.html 摘要:java引入注解后,编码节省了很多需要写代码的时间,而且精简了代码,本文主要罗列项目中常用注解. ...

  6. http 6000端口 chrome ERR_UNSAFE_PORT

    参考原因 折腾了半天.chrome的提示真不够意思,还是火狐的提示厉害,知道真相的我眼泪流下来.

  7. android中ScrollView嵌套ListView或GridView显示位置问题

    Android中ScrollView中嵌套ListView或GridView时在开始进入界面时总是显示中间位置,开头的位置显示不出来.这种情况下只需要在ScrollView的父控件中添加以下两行代码即 ...

  8. CF Good Bye 2018

    前言:这次比赛爆炸,比赛时各种想多,导致写到\(D\)题时思路已经乱了,肝了\(1\)个多小时都没肝出来,\(B\)题中途因为没开\(long\ long\)又被\(HACK\)了..\(C\)题因为 ...

  9. 设计模式学习心得<代理模式 Proxy>

    在代理模式(Proxy Pattern)中,一个类代表另一个类的功能.这种类型的设计模式属于结构型模式. 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口. 概述 意图 为其他对象提供 ...

  10. Python之路(第三十二篇) 网络编程:udp套接字、简单文件传输

    一.UDP套接字 服务端 # udp是无链接的,先启动哪一端都不会报错 # udp没有链接,与tcp相比没有链接循环,只有通讯循环 server = socket.socket(socket.AF_I ...