草庐IT

Solidity之Mappings篇

全部标签

Solidity 智能合约基础入门(第一章)

目录Solidity简介:一、值类型 1.整型2.布尔型 3.地址类型 4.字节数组5. 枚举enum 二、引用类型1.数组array2.结构体struct3.映射Mapping 三、变量与常量1.变量状态变量(state)​局部变量(local )​ 全局变量(global)​2.常量总结Solidity简介:Solidity是一种面向智能合约的编程语言,用于开发以太坊区块链上的去中心化应用(DApps)。它是以太坊平台的官方语言,并且在其他一些区块链平台中也被广泛采用。Solidity语言结合了C++、JavaScript和Python的特性,其语法类似于这些语言,使开发者更容易上手。使用

【区块链-智能合约工程师】第三篇:Solidity进阶(一)

文章目录合约库String库调用库函数常用的合约库import接收ETH接收函数receive()回退函数fallback()二者的区别学习资料地址:WTF学院合约库库合约一般都是一些好用的函数合集(库函数),为了提升solidity代码的复用性和减少gas而存在。他和普通合约主要有以下几点不同:不能存在状态变量不能够继承或被继承不能接收以太币不可以被销毁String库String库合约是将uint256(大正整数)类型转换为相应的string类型的代码库,主要包含两个函数,toString()将uint256转为string,toHexString()将uint256转换为16进制,再转换为

9. solidity 常数 constant 与 immutable

9.常数constant与immutable状态变量在声明constant(常量)和immutable(不变量)这个两个关键字之后,就不能在合约后更改数值。这样做还可以节省gas。另外,immutable只能作用于数值变量。这两个常数属性的意义是节省gas的同时提升合约安全性。constant:定义时就初始化constant变量必须在声明的时候初始化,之后再也不能改变。尝试改变的话,编译不通过。//constant变量必须在声明的时候初始化,之后不能改变uint256constantCONSTANT_NUM=10;stringconstantCONSTANT_STRING="0xAA";byt

Solidity 基础(二)语言描述-类型

一、Solidity源文件结构源文件可以包含任意数量的合约定义、import、pragma和usingfor指令以及struct、enum、function、error和constantvariable定义。1.1SPDX许可证标识符如果智能合约的源代码可用,就可以更好地建立对智能合约的信任。由于提供源代码总是涉及到版权方面的法律问题,所以Solidity编译器鼓励使用机器可读的SPDX许可标识符。每个源文件都应该以说明其许可的注释开始://SPDX-License-Identifier:MIT编译器不验证许可证是否是SPDX允许的列表的一部分,但是它在字节码元数据中包含了所提供的字符串。如果

2.DApp-编写和运行solidity智能合约

题记    演示如何编写solidity智能合约,以及在remix中运行solidity代码。准备Remix环境    在浏览器中搜索remix,找到remix官网,并打开    由于是国内网络,所以访问国外网站较慢,可以耐心等待加载完成,或者科学上网。     加载完成是这样:  编写app.sol文件        app.sol智能合约可以部署到以太坊网络上,然后通过调用 setName 函数来设置名字,再通过调用 getName 函数来获取名字。 //SPDX-License-Identifier:MIT//指定Solidity的版本号,表示该智能合约是用Solidity0.8.0版本

死磕solidity之如何有效的节省gas.md

为什么要强调优化gas的重要性DAPP中收取的费用取决于功能逻辑的复杂程度,越复杂消耗的计算资源越多。并且需要用户承担一部分gas,所以solidity的优化显得非常的重要。同时注重优化gas的合约开发人员写出来的合约代码更安全,质量更高。1.封装结构以uint为例,如果我们的程序中包含多个类似的变量,可以将其封装在一起,因为不管uint8,uint32,uint16,solidity都会为其保留256位。即使你使用uint8也不会节省gas.2.最小化读写链上数据首先明确一点在读写memory变量比读写storage变量便宜。contractNotSaveGas{uintpublicvar1

【区块链Solidity】开发环境的注册与认证

 往期文章【区块链Solidity】智能合约与Solidity介绍目录工具介绍 百度超级链工具介绍目前开发智能合约的IDE,首推还是Remix,而Remix官网,总是由于各种各样的(网络原因)无法使用,我们可以在本地搭建智能合约开发环境remix-ide,除此之外我们还可以使用国内的百度超级链进行在线编写。 百度超级链百度超级链地址进入网站后点击工作台进行一个百度账号的登录,没有账号的注册一个登陆之后,我们在进行一个账户的登录或创建,创建一个百度超级链的账户。 这里的安全码就是百度超级链中的交易密码,请大家务必要牢记。生成账户信息,账户密钥和助记词只展示一次大家同样也要牢记,日后可以帮助我们找

【Solidity】智能合约案例——②供应链金融合约

目录一、合约源码分析:二、合约整体流程:    1.部署合约:        2.添加实体    3.发送交易存证      ①.银行向公司交易(公司向银行提供交易存证)      ②.公司向银行交易(银行向公司提供交易存证)      ③.公司向公司交易(接收存证的公司需要给发送存证的公司提供交易存证)一、合约源码分析:        Ownable.sol:权限控制合约,功能为:管理合约的所有者,合约所有者转移    SupplyChain.sol:供应链金融主合约,功能为:添加银行,添加公司,银行向公司交易,公司与公司交易,公司与银行交易,查询公司信息,查询银行信息,查询存证信息二、合约

solidity智能合约实例开发(2)(解释+注释)——食品溯源

项目总要求创建三个角色生产者,分销商,零售商,并分别通过三个角色对产品的生产,分销,零售上链,并且能够分别查出上链的全信息。包括每次交易的时间戳,每次交易的交易名称,每次交易的交易地址,每次交易的食品质量,食品的名称,当前交易的名称,当前交易的地址,当前交易的食品质量,当前交易的状态等等运行环境:remix(0.8.13版本)Roles.sol//SPDX-License-Identifier:MITpragmasolidity^0.8.13;libraryRoles{structRole{mapping(address=>bool)bearer;}//判断地址是否存在functionhas(

以太坊智能合约开发:Solidity语言中的映射

本文我们介绍Solidity语言中的映射,包括映射的基本定义、语法、映射的变量声明和基本读写操作。并且通过两个智能合约例子演示了映射的定义与基本操作。基本概念Solidity中关于映射的一些定义:映射以键-值对(key=>value)的形式存储数据;键可以是任何内置数据类型,包括字节和字符串类型,但不允许引用类型,如数组、结构体和映射;值可以是任何数据类型,包括另一个映射或数组;映射是不可迭代的,即无法通过遍历映射来枚举所有的键;映射通常用于将唯一的以太坊地址与值类型关联起来。声明语法映射的定义语法如下:mapping(key=>value);例如:mapping(address=>uint)