Solidity数组】的更多相关文章

一.固定长度的数组(Arrays) 1.固定长度类型数组的声明 pragma solidity ^0.4.4; contract C { // 数组的长度为5,数组里面的存储的值的类型为uint类型 uint [5] T = [1,2,3,4,5]; } 2.通过length方法获取数组长度遍历数组求总和 pragma solidity ^0.4.4; contract C { // 数组的长度为5,数组里面的存储的值的类型为uint类型 uint [5] T = [1,2,3,4,5]; //…
P57 .1-Solidity Types - 玩转 Solidity 数组 (Arrays) 学习目标 1.掌握Arrays的可变不可变的创建 2.深度理解可变数组和不可变数组之间的区别 3.二维数组 4.memory arrays的创建 5.bytes0~bytes32.bytes与byte[]对比 P58 .2-固定长度的数组(Arrays)系统讲解 固定长度类型数组的声明 pragma solidity ^; contract C{ //数组的长度为5,数组里面的存储的值的类型为uint…
写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么 本文前半部分是参考Solidity官方文档(当前最新版本:0.4.20)进行翻译,后半部分对官方文档中没有提供代码的知识点补充代码说明(订阅专栏阅读). 数组(Arrays) 数组可以声明时指定长度,也可以是动态变长.对storage存储的数组来说,元素类型可以是任意的,类型可以是数组,映射类型,结构体等.但对于memory的数组来说.如果作为public…
Q: given address[] wallets. What is the correct method to check that the list contains a given address? Does solidity provide any native list contains function? If not, is the only way to do a full iteration of the array and check each element? Are t…
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…
固定长度的数组 固定长度数组声明 直接在定义数组的时候声明固定长度数组的值: uint[5] fixedArr = [1,2,3,4,5]; 可通过数组的length属性来获得数组的长度,进而进行遍历操作. // 通过for循环计算数组值的总和 function sum() public view returns (uint) { uint total = 0; for(uint i = 0; i < fixedArr.length; i++) { total += fixedArr[i]; }…
address payable  -->  address address payable addr1 = msg.sender; address addr2 = addr1; // 隐式转 address addr3 = address(addr1); // 显式转 address  -->  address payable address addr1 = msg.sender; address payable addr2 = address( uint160(addr1) ); // 需要…
现在的Solidity中文文档,要么翻译的太烂,要么太旧,决定重新翻译下,再加上代码事例讲解. 写在前面 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么 Solidity教程会是一系列文章,本文是第一篇:介绍Solidity的变量类型. 本文前半部分是参考Solidity官方文档(当前最新版本:0.4.20)进行翻译,后半部分是结合实际合约代码实例说明类型的使用(仅针对专栏订阅用户). 类型 Solidity是一种…
写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么 这部分的内容官方英文文档讲的不是很透,因此我在参考Solidity官方文档(当前最新版本:0.4.20)的同时加入了深入分析部分,欢迎订阅专栏. 数据位置(Data location) 在系列第一篇,我们提到 Solidity 类型分为两类: 值类型(Value Type) 及 引用类型(Reference Types), 前面我们已经介绍完了值类型,接下…
写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么 本系列文章一部分是参考Solidity官方文档(当前最新版本:0.4.20)进行翻译,另一部分是Solidity深入分析,这部分请订阅区块链技术专栏阅读. 结构体(Structs) Solidity提供struct来定义自定义类型,自定义的类型是引用类型. 我们看看下面的例子: pragma solidity ^0.4.11; contract Crowd…
Example地址:https://solidity.readthedocs.io/en/develop/solidity-by-example.html#voting Voting程序的功能: 这个智能合约实现了一种在区块链上公开投票的功能. 部署该智能合约的人称为chairperson(主席),主席的作用为: 1. 在合约部署时,创建一系列proposals(提案),供大家投票 2. 在合约部署后,主席有权邀请人来投票,对应于代码中的giveRightToVote(address)方法 投票…
现在的Solidity中文文档,要么翻译的太烂,要么太旧,决定重新翻译下.尤其点名批评极客学院名为<Solidity官方文档中文版>的翻译,机器翻译的都比它好,大家还是别看了. 写在前面 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以太坊是什么Solidity教程会是一系列文章,本文是第一篇:介绍Solidity的变量类型. 本文前半部分是参考Solidity官方文档(当前最新版本:0.4.20)进行翻译,后半部分是结合实际…
这是Solidity教程系列文章第9篇介绍Solidity 错误处理. Solidity系列完整的文章列表请查看分类-Solidity. 写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么 欢迎订阅区块链技术专栏阅读更全面的分析文章. 什么是错误处理 错误处理是指在程序发生错误时的处理方式,Solidity处理错误和我们常见的语言不一样,Solidity是通过回退状态的方式来处理错误.发生异常时会撤消当前调…
智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战示例快速入门,用例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力.智能合约其实是"执行合约条款的计算机交易协议".区块链上的所有用户都可以看到基于区块链的智能合约. 维基上说智能合约(英语:Smart contract )是一种旨在以信息化方式传播.验证或执行合同的计算机协议.智能合约允许在没有第三方的情况下进行可信交易.这些交易可追踪且不可逆转.智能合约概念于1994年由Nick S…
概述 最近在写合约时遇到一些坑,做一下总结: 介绍主要分一下三个方面: 对区块链的简单描述 结合业务场景,编写简单智能合约,时遇到的坑(上篇) assembly 的使用说明(下篇) 正文 进入正题之前,我稍微简单介绍一下什么是区块链,区块链干嘛用的(特点),智能合约是做什么的,为什么要写只能合约(一下是个人理解仅供参考) 什么是区块链 A blockchain is a globally shared, transactional database. 译文:区块链是一个全局共享的事物数据库:(就…
目录 目录 1.数组 1.1.对数组的增删改查操作. 2.String.Bytes.Mapping的使用 3.Enums 和 Structs 的简单应用 4.Ether 单位和 Time 单位 5.Address 6.更多数据类型介绍 7.相关文章 目录 Solidity 是一种静态语言类型,在编译前都要指定每个变量的类型.Solidity 提供了几种基本类型,通过几种基本类型的组合,可以组合成复杂类型. 网络上有很多翻译后的关于 Solidity 类型介绍的文章,这里就不多介绍,只是着重介绍后…
solidity函数修饰符 view  没有改变任何值或者写任何东西.只能读取,不能修改 function sayHello() public view returns (string) { } pure 函数不访问应用里的数据 第11章: Keccak256 和 类型转换 //6e91ec6b618bb462a4a6ee5aa2cb0e9cf30f7a052bb467b0ba58b8748c00d2e5 keccak256("aaaab"); //b1f078126895a14245…
string string类型不可以直接通过length读取字符串长度,也不可以直接通过下标直接访问数据元素 使用的方法是:强制类型转换为bytes 其中," " 和‘ ’都可以表示 pragma solidity ^0.4.0; contract first{ string public str = 'hello world'; function getstr() returns(uint){ return bytes(str).length; } function changest…
学习文档笔记:http://solidity-cn.readthedocs.io/zh/develop/layout-of-source-files.html 1.pragma solidity ^0.4.0;这样,意味着源文件将既不允许低于 0.4.0 版本的编译器编译, 也不允许高于(包含) 0.5.0 版本的编译器编译(第二个条件因使用 ^ 被添加) 2.导入import * as symbolName from “filename”;//或“.sol”文件等同于import "filen…
方法和匿名方法: funcion name(<parameter types>){public|private|internal|external}[constant][payable][<return types>)]{} payable代表是可以接受以太币的方法有如下几种:external可以被其他合约调用,也可以使用内部直接调用,如果要调用的话,要用this.f()来进行调用public既可以被其他合约调用,也可以被内部直接调用internal只能在合约和其他子类合约中使用p…
在这里使用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 版本的编译器编译(第二个条件因使用…
前言: 在使用solidity写智能合约的时候,会使用到revert和require来进行断言,比如: require(tokenOwner[tokenId] == 0x0,'this is not the first create'); 在上面的断言中,只有当你满足了tokenOwner[tokenId] == 0x0这个 条件,你才能继续往下执行,否则就会报错“this is not the first create”. 然后当我们使用remix这个编译器的时候,是能够在出错的时候得到rea…
Solidity中有个特殊的操作符delete用于释放空间,因为区块链技术做为一种公用资源,为避免大家滥用.且鼓励主动对空间的回收,释放空间将会返还一些gas. delete关键字的作用是对某个类型值a赋予初始值.比如如果删除整数delete a等同于a = 0 一.删除基本类型 对于区块链技术删除基本类型,使用delete会设置为对应的初始值: 删除bool类型是false,变长字节数组是0x0.string则是空串. 1.删除枚举 删除枚举类型时,会将其值重置为序号为0的值. pragma…
实际上,映射对于存储地址的标记值非常有用. 我们在许多合约中都看到了它们,它们通常以这种方式定义: mapping (address => uint) public users; 由于映射是公共的,我们得到一个免费的getter,我们可以通过使用简单的方法获取myAddress的值 users(myAddress); Solidity映射看起来可能类似于关联数组,但它不是,它没有索引,因此很难遍历所有地址.但它仍然可以通过其它方法遍历. 数组更容易管理: address[] public add…
映射是一种引用类型,存储键值对.它的定义是:mapping(key => value),概念上与java中的map,python中的字典类型类似,但在使用上有比较多的限制. 一.mapping定义 在mapping中, key可以是整型.字符串等基本数据类型,但不能使用动态数组.contract.枚举.struct,以及mapping这些类型. value 的类型没有限制,甚至使用一个mapping作为value也是允许的. pragma solidity ^0.4.24; contract M…
一.结构体定义 结构体,Solidity中的自定义类型.我们可以使用Solidity的关键字struct来进行自定义.结构体内可以包含字符串,整型等基本数据类型,以及数组,映射,结构体等复杂类型.数组,映射,结构体也支持自定义的结构体.我们来看一个自定义结构体的定义: pragma solidity ^0.4.4; pragma solidity ^0.4.0; contract SimpleStruct{ //学生 struct Student{ string name; int num; }…
基于 cryptozombies.io ZombieFactory pragma solidity ^0.4.19; contract ZombieFactory { // 事件, web3.js 可以监控它 event NewZombie(uint zombieId, string name, uint dna); uint dnaDigits = 16; uint dnaModulus = 10 ** dnaDigits; // 乘方 // 定义结构体 struct Zombie { str…
1 功能 这里我们使用在线编译器,打开网址 https://ethereum.github.io/browser-solidity 1.1 文件夹管理 最左边是文件夹管理,里面列出了当前工作区里的文件,remix可以支持从本地文件夹读取文件. 1.2 工作区 正中间是工作区,工作区上半部是代码编辑区,在这里可以写solidity合约. 下半部是日志区,在执行智能合约时,会显示transaction相关的信息.在输出日志的时候还可以查看Details和Debug信息. 1.3 功能区 最右边的是功…
Voting 投票 接下来的合约非常复杂,但展示了很多Solidity的特性.它实现了一个投票合约.当然,电子选举的主要问题是如何赋予投票权给准确的人,并防止操纵.我们不能解决所有的问题,但至少我们会展示如何委托投票可以同时做到投票统计是自动和完全透明. 思路是为每张选票创建一个合约,每个投票选项提供一个短名称.合约创建者作为会长将会给每个投票参与人各自的地址投票权. 地址后面的人们可以选择自己投票或者委托信任的代表人替他们投票.在投票结束后,winningProposal()将会返回获得票数最…
学习区块链之后,发现还要学习加密,接触到的视频是:Go的crypto包,所以开始接触Go.因为和solidity有些相似,但是比solidity简单一些,就开始放松的心态去学习.每天翻着go菜鸟教程,感觉简单的一批,可是当自己真要写代码的时候,就有点闷了. --凡是还是得脚踏实地才行! package main import "fmt" func main() { //var type_name []type /* 切片:[]无参数 数组:只能修改值,无法改变长度,无法添加新元素 固定…