草庐IT

Solidity之Mappings篇

全部标签

Solidity教程

Solidity教程-cryptozombies最近因为一些机缘巧合,开始接触NFT,并且开始自己写智能合约。虽然网上有很多现成的合约,但是想要自己信手捏来。那么当然逃不过学习Solidity。虽然Solidity教程铺天盖地。甚至如果你有足够的编程基础,完全可以“无师自通”。但是当我看到这个非常有趣且有用的网站cryptozombies,还是迫不及待的想分享给大家。写这个系列教程的主要目的:1、把他的教学内容进行了精简和优化,能够更加方便和快速的帮助大家入门。2、由于他的代码是基于比较老的版本(中文版本是0.4.x英文版本也是0.5.x),所以很多代码已经不能通过新版本的编译。我更新了他过时

【区块链 | Solidity】跟我学 Solidity(7):事件

如何使用事件记录数据原文: https://medium.com/better-programming/learn-solidity-events-2801d6a99a92 作者: wissalhaji欢迎订阅《Solidity智能合约零基础开发教程专栏》系列文章。在今天的文章中,我们将看到如何使用web3.js从区块链中读取事件。Solidity中的事件就像你习惯于使用其他语言的日志记录功能一样,只是日志不是记录到控制台或文件,而是保存在以太坊区块链中。在下面的内容中,我们将看到:如何声明和触发一个事件什么是"logsBloom",它如何用于高效搜索区块链数据?如何从区块链中读取一个事件?如

Solidity智能合约开发 — 2-solidity语法数据类型

在使用solidity编写合约时,需要加入代码版本,如:pragmasolidity^0.8.7;在solidity中可以用单行注释(//)和多行注释(/**/),如://这是一个单行注释/**这是一个多行注释*/数据类型1.布尔类型布尔类型用bool,取值只有true和false。支持的运算符:!(逻辑非)&&(逻辑与,"and")||(逻辑或,"or")==(等于)!=(不等于)//布尔运算boolpublic_bool1=!_bool;//取非boolpublic_bool2=_bool&&_bool1;//与boolpublic_bool3=_bool||_bool1;//或boolp

以太坊智能合约开发(五):Solidity成绩录入智能合约实验

以太坊智能合约开发(五):Solidity成绩录入智能合约实验1编写智能合约1编写智能合约每个学生分别部署合约Student.sol,保证只有自己可以修改姓名。老师部署合约StudentScore.sol,用于录入学生成绩,查询学生信息。查询学生信息时,需要调用学生部署的合约Student.sol。student.sol合约,用于学生对自己信息进行管理。学生的基本信息作为状态变量: pragmasolidity^0.4.0; contractStudent{ stringstudentID; stringstudentName; addressowner; }声明构造函数,在构造函数中将own

MetaMask 钱包使用 - Solidity开发教程连载

MetaMask钱包是EVM链开发者及用户最常使用的钱包,MetaMask有移动端版本和浏览器插件(也称为扩展程序)版本,本文介绍的浏览器版本。MetaMask插件下载MetaMask在Chrome谷歌浏览器(同MicrosoftEdge浏览器)、FireFox火狐浏览器均提供了插件。我们打开MetaMask钱包的官网首页https://metamask.io/后,可以点接跳转到插件市场安装。在下载时,请一定要仔细查看URL链接,确保是metamask.io,谨防钓鱼,调转到插件市场的界面如下:然后,直接点击添加到Chrome(由于我已经添加过,上图显示的从Chrome移除),这是最简单的安装

Solidity重入攻击深入理解

始于一份样例代码下面是样例合约的完整代码:pragmasolidity^0.4.23;contractbabybank{mapping(address=>uint)publicbalance;mapping(address=>uint)publiclevel;addressowner;uintsecret;//Don'tleakyourteamtokenplaintext!!!md5(teamtoken).hexdigest()isenough.//Gmailisok.163andqqmayhavesomeproblems.eventsendflag(stringmd5ofteamtoken,

区块链开发之Solidity编程基础(一)

Solidy是当前编写智能合约的主流语言概要sol文件结构编译开发引入其他文件注释代码注释文档注释合约状态变量类型值类型1、布尔类型2、整型3、地址4、定长字节数组5、有理数和整型字面量6、枚举类型7、函数类型引用类型1、数据的存储2、数据传递方式3、引用类型1、数组2、不定长字节数组(Bytes)3、字符串(String)4、结构体(Struct)4、字典/映射5、特殊情况概要由ETH为代表的第二代区块链技术,相比于第一代区块链技术而言,最大的特点就是智能合约的出现,让去中心化应用成为了可能。ETH节点为智能合约提供运行环境:EVM(EthereumVirtualMachine)以太坊虚拟机

Solidity--使用Merkletrees为链上合约添加白名单【降低gas消耗】

前言目前的NFT市场越来越火爆,入场的人越来越多,在很多NFT在公开销售的之前就会有设置白名单,让这些白名单的人提前可以购买,又或者制定的白名单的人才能进行购买,从而达到他们饥饿营销的手段,那么关于Solidity如何实现白名单,并且可以最大程度降低我的gas费用,我这边在下面文章总结了两种方式给大家分享。文章目录前言一、实现方式分类二、原理分析三、具体实现前端合约四、材料及相关链接总结一、实现方式分类合约白名单主要的实现方式一般分两种:第一种:数组存储所有白名单的地址,当使用的时候for循环判断msg.sender是否是存在白名单中.缺点:如果名单过多,会消耗极高的gas第二种:Merkle

玩以太坊链上项目的必备技能(错误处理以及异常-Solidity之旅十四)

错误处理作为开发者的我们知道,我们所编写出来的程序难免会出现bug,而要做的是捕获异常,给用户抛出一个友好地错误提示。而在Solidity中,根据状态恢复异常来处理错误,该异常将撤销在当前调用中对状态所做的所有修改,与此同时,还向调用者标记错误。它有许多功能来解决在编译时或运行时可能发生的潜在问题。即使语法错误检查发生在编译时,运行时错误也很难捕捉,主要发生在合约执行过程中。一些运行时错误的例子包括除以0的类型错误,数组超出索引错误,等等。实际上,Solidity的错误处理确保了原子性这一属性。当一个智能合约调用因错误而终止时,所有的状态变化(即对变量、余额等的改变)都会被恢复,一直到合约调用

智能合约学习笔记——solidity语法(一)

Solidity是一个面向合约开发的高级语言,借鉴了其他一些高级语言,例如Javascript和Python,的特性。它是一门静态类型语言,支持继承,支持各种库和用户自定义的类型。非常适合用来开发类似于投票,众筹,拍卖,多重签名钱包等各种功能。有一定的编程基础非常好入门测试可以直接在在线网址https://remix.ethereum.org上CryptoZombies是一个很有趣的学习网址注意solidity在后续版本0.5.0之后有较大变革,但下面学习内容依旧是根据0.4版本来进行的,是想先熟悉了再看改变了什么简单举例把一个数据保存到链上//SPDX-License-Identifier: