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

在这里使用cryptoPunks为实例来进行solidity的介绍,一般这些内容理解了就能够进行相对简单的智能合约的编写了,同时会添加一些我认为也十分重要的内容学习文档为http://solidity-cn.readthedocs.io/zh/develop/layout-of-source-files.html ()pragma solidity ^0.4.0;这样,意味着源文件将既不允许低于 0.4.0 版本的编译器编译, 也不允许高于(包含) 0.5.0 版本的编译器编译(第二个条件因使用…
为什么要有内联汇编? //普通循环和内敛汇编循环比较 pragma solidity ^0.4.25; contract Assembly{ function nativeLoop() public view returns(uint _r){ for(uint i=0;i<10;i++){ _r = _r +i; } } function asmLoop() public view returns (uint _r){ assembly{ let i:=0 loop: i:=add(i,1)…
call() 方法 call()是一个底层的接口,用来向一个合约发送消息,也就是说如果你想实现自己的消息传递,可以使用这个函数.函数支持传入任意类型的任意参数,并将参数打包成32字节,相互拼接后向合约发送这段数据. 简单说 根据地址调用指定合约的方法. pragma solidity ^; contract cat{ function eat(uint a) public view returns(uint){ return a; } } contract Animal{ cat c; cons…
接口:不用实现方法,仅仅定义方法. pragma solidity ^; contract cat{ //cat实际上实现了接口animalEat,因为他们有相同的方法. string name; function eat() public view returns(string){ return "cat eat"; } } interface animalEat{ function eat() public view returns(string); //定义接口的方法 } con…
修饰符: 函数修饰符有 constant  view pure 其中 constant和view的功能是一样的  不会消耗gas 也就是说不会做任何存储   constant在5.0以后的版本中被废弃 pure则更严格一点 不会消耗gas 也不会使用函数的变量 继承: 合约之间的继承是通过 is 来实现的: contract father{ uint public money = 1000; } contract son is father{   //son 继承 father function…
solidity 二维数组: pragma solidity ^0.4.23; contract twoArray{ uint[2][3] grade =[[20,30],[40,50],[45,60]];  //定义一个二维数组 function getGrade() view public returns(uint[2][3]){ return grade; } //获取二维数组总长度 function getLength() public view returns (uint){ retu…
一 pragam solidity ^0.4.23; contract helloword{ string public  name ="hello"; function getName () public view returns(string){ return name; } } solidity中string是一种动态数组类型,要取得string的长度以及string中的值,需要把string转换为bytes字节数组. 长度:   bytes(name).length; 获取字节…
1. pragma solidity >=0.4.22 <0.6.0;//版本号,头文件 contract BooleanTest { bool _a;//默认返回false int num1=100; int num2=200; function getBool() public view returns (bool) { return _a; } function getBool2() public view returns (bool) { return !_a;//去反 } funct…
library库的申明: library SafeMath{ functrion mul(uint a,uint b) public returns (uint){ uint c= a*b; assert(c/a = b) return c } } 使用library库 1 合约中引入 两种调用方式: 2) 直接调用librady名称 : 如 import "XX.sol" contract test{ function mul(uint a,uint b) public return…
1.imageHash就是将punk所有图像合在一起的那张图punks.png进行hash得到一个值,并将该值存储到链上,用处就是你可以通过将图像hash然后跟该值对比看图像对不对.这就是它的用处,在代码中它没用.即该图punks.png,在https://github.com/larvalabs/cryptopunks/tree/master/test能得到: 2.函数简单介绍CryptoPunksMarket创建10000个token,该合同的拥有者即该合约的部署者owner = msg.s…