草庐IT

Solidity教程一

全部标签

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版本

F5负载均衡系列教程一【使用VMWare搭建F5实验环境】

一、利用VMWare搭建F5环境的前提条件:安装VMWare软件;拥有F5负载均衡设备的授权,可以申请临时license,软件下载地址:https://downloads.f5.com/esd/productlines.jsp;二、搭建的实验环境拓扑如下所示:里面的交换机是虚拟的,逻辑上的交换机,实际上只需要将对于的设备放置于VMWare的同一个虚拟网卡下即可;将下载下来的F5镜像导入到VMware,一共4个网卡,第一个口对应管理口,第二个口对应第一个物理口,以此类推;三、配置F5双机1、配置vmware的虚拟网卡2、设置F5的网络接口配置,这里配置的意思是管理口用NAT这个虚拟网络,F5的1

死磕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)

【区块链 | EVM】深入理解学习EVM - 深入Solidity数据存储位置:内存

图片来源: MechMind on Unsplash这是深入Solidity数据存储位置系列的另一篇。在今天的文章中,我们将学习EVM内存的布局,它的保留空间,空闲内存指针,如何使用memory引用来读写内存,以及使用内存时的常规最佳做法。我们将使用 EthereumNameService(ENS)中的合约代码片段,用有意义的例子支持这篇文章。这将帮助我们更好地理解这个流行项目背后的智能合约是如何在底层工作的。目录简介EVM内存-概述内存的布局内存的基础知识从内存中读取("MLOAD")。写入内存(MSTORE+MSTORE8)。了解内存大小(MSIZE)。空闲内存指针

20. solidity 发送ETH:call()

20.发送ETH:call()Solidity有三种方法向其他合约发送ETH,他们是:transfer(),send()和call(),其中call()是被鼓励的用法。call没有gas限制,最为灵活,是最提倡的方法;transfer有2300gas限制,但是发送失败会自动revert交易,是次优选择;send有2300gas限制,而且发送失败不会自动revert交易,几乎没有人用它。接收ETH合约我们先部署一个接收ETH合约ReceiveETH。ReceiveETH合约里有一个事件Log,记录收到的ETH数量和gas剩余。还有两个函数,一个是receive()函数,收到ETH被触发,并发送L