在Solidity中的继承这篇文章中,我介绍了solidity中关于继承的相关概念和例子。本篇文章,我们来一起探讨一个更加复杂的话题多线继承。基本概念Solidity支持多线继承,即一个合约可以同时继承多个基类合约。这可以使合约代码更加简洁,更容易复用代码
在Solidity中,工厂合约是一种设计模式,用于创建和管理多个实例合约。通过一个工厂合约,你可以集中管理合约的创建逻辑,方便地部署多个合约实例,跟踪它们的地址,并对它们进行管理。工厂合约模式在开发去中心化应用(DApps)时非常有用,尤其是在需要频繁创建和销毁合约实例的场景下。
在Solidity中,错误处理和控制报错是智能合约开发中的关键部分。Solidity提供了几种机制来控制错误和异常:require:用于检查条件是否为真,如果条件为假,则会抛出异常并回滚交易。assert:用于检查不应该为假的条件,用于捕捉代码中的严重错误。
定点数是一个仅存储分子部分的整数——而分母是隐含的。
在Solidity中,Ownable合约是一种设计模式,用于管理合约的所有权。它通常提供了一些基础功能,如只允许合约所有者执行某些操作,转移合约所有权等;这种权限管理合约在以太坊主网或者其他链的主网上经常会看到。
在Solidity中,回退函数(fallbackfunctions)是在合约接收到以太币或调用不存在的函数时触发的特殊函数。自Solidity0.6.0版本起,回退函数分为两种:fallback函数和receive函数。
在Solidity中,payable关键字用于标识可以接收以太币的函数或地址。只有带有payable关键字的函数才能接收以太币转账。默认情况下,地址类型是不可支付的,也就是说,你不能直接向一个普通的地址类型发送以太币。为了发送以太币,我们需要将地址转换为payable地址。这样可以防止意外
Solidity是一种面向对象的编程语言,它支持合约之间的继承。继承允许一个合约获取另一个合约的所有非私有属性和函数,这样就可以重复使用代码,降低重复工作量。继承关键字在Solidity中,继承是通过is关键字来实现的。
Slang 旨在提升下一代 Solidity 代码分析和开发工具, 将展示如何使用 Slang 在仅 25 行代码中编写一个简单的 Solidity linter
PullPayment库是对Openzeppelin中Escrow库的一种封装。从安全角度看,PullPayment是一对多发送eth的最佳解决方案。它可以防止收款人阻塞发送eth的行为并消除重入问题。
ReentrancyGuard库是一个用来防御函数重入的工具库。函数被修饰器nonReentrant修饰可确保其无法被嵌套(重入)调用。本库的代码逻辑上只实现了一个重入锁,所以被nonReentrant修饰的函数之间也是无法相互调用的。
nonReentrant
本文主要介绍了直接在函数中 "引用" Storage;ERC-7201:命名空间存储布局,通过 assembly 在我们想要的 slot 位置定义状态变量
EVM 对象格式- EOF 的好处
在solidity中一旦出现异常,则当前交易将会回滚(即相当于没有发生过,除了你的gas被消耗了)。solidity里抛出异常的方法有三种:errorrequireassert对于可能出现异常抛出的地方,solidity也提供了try-catch方法进行异常捕获处理。
solidity
SafeTransferLib的用处//这个库就是为了防止像usdt那样没有返回值的transfer,调用方式usingSafeTransferLibfortoken;token.safeTransferFrom
VestingWallet库可给指定的受益人按时间线性释放锁在合约内的Eth或Erc20 token。任何转移至本合约的token都必须遵循释放模型。开发者可通过重写vestedAmount(uint64)或vestedAmount(address,uint64)来自定义token释放模型。
vestedAmount(uint64)
vestedAmount(address,uint64)
完全理解函数调用的 ABI 编码
PaymentSplitter库可以在一组领取地址无感知的情况下,将定量eth或某ERC20 token按照shares占比释放给该组中的某地址。当eth或ERC20 token被转入该合约后,在册的领取地址就可以来领取属于自己占比的那部分。各领取人的shares数量只能在该合约部署时被设置。
在上两篇文章中,我们分析了SolidityEVM中的存储结构,在本篇文章中,我们将详细分析EVM的calldata是如何进行编码的。
ABI(ApplicationBinaryInterface,应用二进制接口)是与以太坊智能合约交互的标准。说人话就是:给智能合约阅读的编码标准。为了应对智能合约中不同的情况,就有了不同的编码方法(合约要求的输入不一,还有省空间的问题)。关于编码方法如下:abi.encodeabi.e
扫一扫 - 使用登链小程序
106 篇文章,294 学分
3 篇文章,269 学分
55 篇文章,237 学分
13 篇文章,206 学分
16 篇文章,163 学分