变量 accountRoles 占用的 slot = 0, slot0里面存储的值也是0. 因此删除 delete accountRoles 并不会删除整个的storage(即把整个的storage置0)
所有的程序都必须和计算机内存打交道,如何从内存中申请空间来存放程序的运行内容,如何在不需要的时候释放这些空间,成了重中之重,也是所有编程语言设计的难点之一。
Clones库是最小代理合约的工厂合约实现,也称之为克隆工厂。ERC1167指定了一种将全部调用都delegatecall到一个已知固定地址的最小字节码实现,它可以以一种不可变且成本极低的方式克隆目标合约。
delegatecall是Solidity中的一种低级函数调用方法,它允许一个合约以调用者(caller)的上下文(context)执行另一个合约的代码。这意味着被调用的合约中的msg.sender、msg.value和存储都会是调用合约的上下文。
EIP-6963 解决同时多个钱包提供者的烦恼,本文介绍如在在前端 React应用中集成 EIP-6963 。
本文主要讲不规则继承下合约的插槽问题和调用函数问题钻石继承的插槽问题试问现在有上图这样的继承关系,abcd中各有一个变量,请问他们在插槽中的顺序是什么样的这要取决于D是在继承bc时的写法contractDisB,C{如果是这样写的,那么b的变量就排在c的变量前面,此时可以把c当
在Solidity中,call和staticcall是用于与其他合约进行交互的低级函数。这些函数允许合约调用其他合约的函数,发送以太币,以及检查其他合约的状态。
Farcaster 是一个去中心化的社交网络平台。Farcaster Frames 允许开发人员创建在 Farcaster feed 中运行的集成应用程序。用户可以在不离开平台的情况下与各种应用程序(如投票、游戏和其他互动体验)进行交互。
使用代码块解决stacktoodeep你是否也有过这样的报错信息:“stacktoodeep”这是因为solidity一个函数中可容纳的变量的数量最大为16个,超过这个数量就会报错那如果想在函数中声明更多的变量该怎么办呢?可以使用代码块如下所示://SPDX-License-I
Proxy库对外只暴露了fallback和receive函数,是代理合约的基础实现。所有对Proxy合约的call都将被delegatecall到implement合约且delegatecall的执行结果会原封不动地返还给Proxy合约的调用方。通常称implement合约为代理合约背后的逻辑合约。
Viem是一个相当新的web3库,它专注于EVM,提供了更好的开发体验,更小的包体积等等。在本文中,将使用foundry部署一个简单的合约,并在node环境下使用viem与部署的链上合约执行读写交互。
在Solidity中,向其他合约或地址发送主币(ETH)有三种主要方法:transfer、send、call; 这三种方法各有自己的特点,并且在Gas消耗上也有不同
在Solidity中的继承和Solidity中的多线继承这两篇文章中,我们已经学习了Solidity关于继承的相关知识点,这篇文章,我们再聊一个更细致的话题:如何运行父级函数的构造函数。
在Solidity中的继承这篇文章中,我介绍了solidity中关于继承的相关概念和例子。本篇文章,我们来一起探讨一个更加复杂的话题多线继承。基本概念Solidity支持多线继承,即一个合约可以同时继承多个基类合约。这可以使合约代码更加简洁,更容易复用代码
在Solidity中,工厂合约是一种设计模式,用于创建和管理多个实例合约。通过一个工厂合约,你可以集中管理合约的创建逻辑,方便地部署多个合约实例,跟踪它们的地址,并对它们进行管理。工厂合约模式在开发去中心化应用(DApps)时非常有用,尤其是在需要频繁创建和销毁合约实例的场景下。
在Solidity中,错误处理和控制报错是智能合约开发中的关键部分。Solidity提供了几种机制来控制错误和异常:require:用于检查条件是否为真,如果条件为假,则会抛出异常并回滚交易。assert:用于检查不应该为假的条件,用于捕捉代码中的严重错误。
定点数是一个仅存储分子部分的整数——而分母是隐含的。
在Solidity中,Ownable合约是一种设计模式,用于管理合约的所有权。它通常提供了一些基础功能,如只允许合约所有者执行某些操作,转移合约所有权等;这种权限管理合约在以太坊主网或者其他链的主网上经常会看到。
在Solidity中,回退函数(fallbackfunctions)是在合约接收到以太币或调用不存在的函数时触发的特殊函数。自Solidity0.6.0版本起,回退函数分为两种:fallback函数和receive函数。
在Solidity中,payable关键字用于标识可以接收以太币的函数或地址。只有带有payable关键字的函数才能接收以太币转账。默认情况下,地址类型是不可支付的,也就是说,你不能直接向一个普通的地址类型发送以太币。为了发送以太币,我们需要将地址转换为payable地址。这样可以防止意外
扫一扫 - 使用登链小程序
41 篇文章,405 学分
74 篇文章,295 学分
30 篇文章,252 学分
158 篇文章,161 学分
11 篇文章,160 学分