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. 在Ubuntu中使用JDB调试代码

    在Ubuntu中使用JDB调试代码 了解JDB JDB是JDK安装的一部分,是基于文本和命令行的调试工具,JDB是可以免费获取且平台独立的,缺点是只有命令行格式. JDB基础命令 在方法中设置断点st ...

  2. Eclipse使用相关配置

    问题描述:The word is not correctly spelled问题分析:eclipse校验单词拼写造成,出现在配置文件中,会影响到程序的正常执行解决方案:在eclipse下的Window ...

  3. hive上传数据到oracle

    # Oracle 建立hive外部表 使用oracle的大数据连接器向建立hive的外部表,在通过在oracle中根据外部表建立内部表(create table as select * from ex ...

  4. php操作redis数据库方法总结

    一.安装php_redis扩展,用以操作redis http://pecl.php.net/package/redis 选择自已系统php版本对应的扩展. 二.redis连接与验证 <?php ...

  5. Collection<T> 的一个坑

    当前所在的公司偏好使用 Collection<T>(System.Collections.ObjectModel), 这货比起List<T>不仅少了很多实用方法, 而且还有一个 ...

  6. gitlab 误关闭sign-in

    sudo gitlab-rails console ApplicationSetting.last.update_attributes(password_authentication_enabled_ ...

  7. clean-room 洁净室软件工程

          众所周知,软件工程的主要目的是提高软件的开发效率和软件质量.近年来发展起来的洁净室软件工程(cleanroom software engineering)提出了用统计的质量控制方法管理软件 ...

  8. 计数排序之python

    话说,一口气不能吃个胖子, 一次性 学习 计数排序, 也确实容易消化不良. 下面,我们逐步学习下计数排序. 1.  已知一个简单列表 l1 = [5, 4, 3], 分析下这个列表的情况 5 > ...

  9. 给pdf添加导航目录

    给pdf添加导航目录 我们下载pdf书籍经常需要以下导航功能,没有导航的pdf根本看不下,接下来会分享我添加导航的方法 首先需要下载工具软件,链接: http://t.cn/Exyss1G 打开软件, ...

  10. Object.defineProperty(obj,prop,descriptor)使用

    初步实现了数据自动映射到html中,动态修改对象数据也很自动更新到html.提供addProps方法-添加新增属性并初始化自动监听代码如下: 1.abserve.js:包含数据监听实现.类似jquer ...