JavaScript 不可用。

我们检测到浏览器禁用了 JavaScript。请启用 JavaScript 或改用支持的浏览器来继续访问

OpenZeppelin 升级合约使用

作者:Anban Chu

发表日期:2023年09月01日

所属目录:OpenZeppelin

标签:

升级合约

import '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';
import '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';
import '@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol';
import '@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol';

contract XXX is UUPSUpgradeable, OwnableUpgradeable {
    using SafeERC20Upgradeable for IERC20Upgradeable;
    // ======================== State Variables ========================
    // --------------- pool
    // --------------- user

    // ======================== Events ========================

    // ======================== Constructor ========================
    function initialize() external initializer {
        __Ownable_init();
    }

    function _authorizeUpgrade(address) internal override onlyOwner {}

    // ======================== Functions: Limit ========================


    // ======================== Functions: Main ========================


    // ======================== Functions: View ========================


    // ======================== Functions: Private ========================
    function _transfer(address _from, address _to, uint256 _amount) private {
        IERC20Upgradeable(address(WETH)).safeTransferFrom(_from, address(this), _amount);
        WETH.withdraw(_amount);
        (bool success, ) = payable(_to).call{ value: _amount }('');
        require(success, 'transfer failed');
    }
}

其中 initialize_authorizeUpgrade 是固定格式。

升级合约的部署

const XXXX = await ethers.getContractFactory("XXXX");
const xxxx = await upgrades.deployProxy(XXXX);
await xxxx.waitForDeployment();




以上就是本篇文章的全部内容了,希望对你有帮助。

>> 本站不提供评论服务,技术交流请在 Twitter 上找我 @anbang_account