【Solidity】学习(2)
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)的更多相关文章
- solidity学习-cryptoPunks为实例
在这里使用cryptoPunks为实例来进行solidity的介绍,一般这些内容理解了就能够进行相对简单的智能合约的编写了,同时会添加一些我认为也十分重要的内容学习文档为http://solidity ...
- solidity 学习笔记(7)内联汇编
为什么要有内联汇编? //普通循环和内敛汇编循环比较 pragma solidity ^0.4.25; contract Assembly{ function nativeLoop() public ...
- solidity 学习笔记(6)call 函数
call() 方法 call()是一个底层的接口,用来向一个合约发送消息,也就是说如果你想实现自己的消息传递,可以使用这个函数.函数支持传入任意类型的任意参数,并将参数打包成32字节,相互拼接后向合约 ...
- solidity 学习笔记(5)接口
接口:不用实现方法,仅仅定义方法. pragma solidity ^; contract cat{ //cat实际上实现了接口animalEat,因为他们有相同的方法. string name; f ...
- solidity 学习笔记(3) 函数修饰符/继承
修饰符: 函数修饰符有 constant view pure 其中 constant和view的功能是一样的 不会消耗gas 也就是说不会做任何存储 constant在5.0以后的版本中被废弃 ...
- solidity 学习笔记 2 (二维数组)
solidity 二维数组: pragma solidity ^0.4.23; contract twoArray{ uint[2][3] grade =[[20,30],[40,50],[45,60 ...
- solidity学习笔记
一 pragam solidity ^0.4.23; contract helloword{ string public name ="hello"; function getN ...
- 以太坊智能合约开发 Solidity学习
1. pragma solidity >=0.4.22 <0.6.0;//版本号,头文件 contract BooleanTest { bool _a;//默认返回false int nu ...
- solidity 学习笔记(4)library库
library库的申明: library SafeMath{ functrion mul(uint a,uint b) public returns (uint){ uint c= a*b; asse ...
- cryptopunks的代码解释
1.imageHash就是将punk所有图像合在一起的那张图punks.png进行hash得到一个值,并将该值存储到链上,用处就是你可以通过将图像hash然后跟该值对比看图像对不对.这就是它的用处,在 ...
随机推荐
- React Native笔记
① 做UI快 ② 还是有很多限制,不如原生Native ③ 入门简单,能让前端快速开发App ④ iOS&Android大部分代码通用 ⑤ code-push能做热更新,但是用不好依旧坑
- Exp5 MSF基础应用 20165110
Exp5 MSF基础应用 20165110 一.实践要求(3.5分) 实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.一个主动攻击实践;(1分) m ...
- STM32的命名规范
STM32F407VET6 STM32F407代表的是芯片的型号后面的字符表示芯片的信息 V这一项代表引脚数,其中T代表36脚,C代表48脚,R代表64脚,V代表100脚,Z代表144脚,I代表176 ...
- project4 安卓
[MongoDB的密码] 用户名dbUser 密码dbUserPassword00 dbUser:dbUserPassword00 [概念] POM的配置要严格按照网页指示给出的标签顺序来. 安卓AP ...
- 4-19 css属性
1. margin 简写属性在一个声明中设置所有外边距属性.该属性可以有 1 到 4 个值. 说明 这个简写属性设置一个元素所有外边距的宽度,或者设置各边上外边距的宽度. 块级元素的垂直相邻外边距会合 ...
- log4j2.xml日志文件设置文件路径
笔者最近的项目里使用了spring,spring通过web.xml配置监听器,在web启动时web.root系统变量,以供其他变量使用,例如 在属性文件里使用${web.root}以取得完整路径,项目 ...
- 十七、Java中数组常见的几种排序方法!
转载自:https://www.cnblogs.com/bekeyuan123/p/6891875.html 数组的定义: // 3种定义方式 int[] arr = new int[5]; int[ ...
- Kubernetes集群升级(kubeadm升级方式)
1.升级前的版本确认(相同的大版本号下的小版本升级还是跨版本升级) 例如:从1.12.0升级到1.12.7 或者 从1.12.7升级到1.13.0 2.配置kubernetes安装源(已配置kuber ...
- Centos7 优盘U盘安装以及解决安装时引导错误
一.使用UltraISO将安装镜像iso文件,写入优盘(写入硬盘映像).将优盘盘符名改为CENTOS7,否则以后引导很麻烦二.将优盘插入要安装CentOS7的电脑,设置开机U盘启动三.并启动到安装界面 ...
- 除非你是BAT,前端开发中最好少造轮子
站在前人的肩膀上 HTML.CSS.JavaScript是前端的根基,这是无可否认的事实.正如一辆车当然都是由一堆钢板和螺钉组成的,但是现在还有人拎着个锤子敲敲打打的造车吗?李书福说过,“汽车不过是四 ...