一、说明
合约所有权放弃后,一般情况下即说明合约中的动态参数不允许调整,合约模式固定不变。后续的合约运行会按照当前状态一直运行下去。并且通过合约安全检测及审计功能查询后确认已经放弃了合约所有权。这样用户才可以放心的参与项目,保证项目的持续化运营。
但是,实际的合约开发过程中某些功能需要等待合约运行一段时间后才能确定最终的合约执行参数。也就是说需要待合约实际运行一段时间后才可以最终确定某些动态参数的状态,因此就需要在项目上线时先放弃合约所有权,待项目运营一段时间后再找回合约所有权,调整动态参数,最终将合约的动态参数调试到合适的状态。
二、操作流程
增加找回合约所有权功能需要代合约代码进行整体调整修改
- 增加如下两个变量,保存合约所有权和锁定时间
address private _previousOwner; uint256 private _lockTime;
2. 增加锁定和解锁功能(假弃权,找回所有权)
//Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { //Lock fixed time logic code emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function unlock() public virtual { //UnLock fixed time logic code }
其中输入变量 time 是以秒为单外的时间间隔。
假放弃所有权:区块链浏览器执行 lock 方法后,合约的owner即变成了全0地址
找回所有权:区块链浏览器执行 unlock方法后,合约的owner即变成了原来的合约所有者。
3. 找回合约所有权功能核心代码如下
abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
至此,完成合约中增加合约所有权找回功能的所有操作流程。
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载:
币安智能链BSC发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:
多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载地址:
此内容仅供注册用户可见,请登录!
添加VX或者telegram获取全程线上免费指导
评论前必须登录!
注册