【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然后跟该值对比看图像对不对.这就是它的用处,在 ...
随机推荐
- 2018-2019-20175302实验二《Java面向对象程序设计》实验报告
2018-2019-2 学号实验二<Java面向对象程序设计>实验报告 一.实验步骤及内容 1. 面向对象程序设计 参考 http://www.cnblogs.com/rocedu/p/6 ...
- 20175126《Java程序设计》第五周学习总结
# 20175126 2016-2017-2 <Java程序设计>第五周学习总结 ## 教材学习内容总结 - 本周学习方式主要为手动敲代码并理解内容学习. - 学习内容为教材第六章,本章内 ...
- JVM学习01:内存结构
JVM学习01:内存结构 写在前面:本系列分享主要参考资料是 周志明老师的<深入理解Java虚拟机>第二版. 内存结构知识要点Xmind梳理 案例分析 分析1 package com.h ...
- SummerNote 富文本编辑器 - Rails 集成
使用官方提供的CDN服务 将下面一段加入layout文件中 <link href="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/css ...
- JAVA常用注解
摘自:https://www.cnblogs.com/guobm/p/10611900.html 摘要:java引入注解后,编码节省了很多需要写代码的时间,而且精简了代码,本文主要罗列项目中常用注解. ...
- http 6000端口 chrome ERR_UNSAFE_PORT
参考原因 折腾了半天.chrome的提示真不够意思,还是火狐的提示厉害,知道真相的我眼泪流下来.
- android中ScrollView嵌套ListView或GridView显示位置问题
Android中ScrollView中嵌套ListView或GridView时在开始进入界面时总是显示中间位置,开头的位置显示不出来.这种情况下只需要在ScrollView的父控件中添加以下两行代码即 ...
- CF Good Bye 2018
前言:这次比赛爆炸,比赛时各种想多,导致写到\(D\)题时思路已经乱了,肝了\(1\)个多小时都没肝出来,\(B\)题中途因为没开\(long\ long\)又被\(HACK\)了..\(C\)题因为 ...
- 设计模式学习心得<代理模式 Proxy>
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能.这种类型的设计模式属于结构型模式. 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口. 概述 意图 为其他对象提供 ...
- Python之路(第三十二篇) 网络编程:udp套接字、简单文件传输
一.UDP套接字 服务端 # udp是无链接的,先启动哪一端都不会报错 # udp没有链接,与tcp相比没有链接循环,只有通讯循环 server = socket.socket(socket.AF_I ...