Hardhat-deploy: OpenZeppelin UUPS рдкреНрд░реЙрдХреНрд╕реА рд╕рдкреЛрд░реНрдЯ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 28 рдЬреВрди 2021  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: wighawag/hardhat-deploy

рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ OpenZeppelinTransparentProxy рд╕рдорд░реНрдерд┐рдд рд╣реИред рдХреНрдпрд╛ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ UUPS рдкреНрд░реЙрдХреНрд╕реА рд╕рдкреЛрд░реНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╣рд╛рд░реНрдбрд╣реИрдЯ-рддреИрдирд╛рддреА рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрднреА рднреА рд╕рдВрднрд╡ рд╣реИред рдкреНрд░реЙрдХреНрд╕реА рдЬрд┐рд╕реНрдЯ рдХреЛ рд╕рдВрдЧрдд рдмрдиреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдПрдХ рдбрдореА/рдЕрдкреНрд░рдпреБрдХреНрдд рдорд╛рд▓рд┐рдХ рдХрд╛ рддрд░реНрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рднреА 13 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╣рд╛рд░реНрдбрд╣реИрдЯ-рддреИрдирд╛рддреА рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрднреА рднреА рд╕рдВрднрд╡ рд╣реИред рдкреНрд░реЙрдХреНрд╕реА рдЬрд┐рд╕реНрдЯ рдХреЛ рд╕рдВрдЧрдд рдмрдиреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдПрдХ рдбрдореА/рдЕрдкреНрд░рдпреБрдХреНрдд рдорд╛рд▓рд┐рдХ рдХрд╛ рддрд░реНрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреНрд░реЙрдХреНрд╕реА рдЬрд┐рд╕реНрдЯ рдХреЛ рд╕рдВрдЧрдд рдмрдиреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдПрдХ рдбрдореА/рдЕрдкреНрд░рдпреБрдХреНрдд рдорд╛рд▓рд┐рдХ рдХрд╛ рддрд░реНрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдпрд╣ рдпреВрдпреВрдкреАрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдм рдлрд╛рдпрджреЗрдордВрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛? рдпреВрдпреВрдкреАрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рд▓реЗрдирджреЗрди рдХреЙрд▓ рдкрд░ рдЧреИрд╕ рдХреА рдмрдЪрдд рдХрд░рдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╣реИред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдЖрдк рдХреБрдЫ рдЫрджреНрдо рдХреЛрдб рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпреВрдпреВрдкреАрдПрд╕ рдкреНрд░реЙрдХреНрд╕реА (рдЕрдкреНрд░рдпреБрдХреНрдд рддрд░реНрдХ рдХреЗ рд╕рд╛рде) рдХреЗ рд╕рд╛рде рд╣рд╛рд░реНрдбрд╣реИрдЯ-рддреИрдирд╛рддреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?

рдзрдиреНрдпрд╡рд╛рдж

рдпрд╣ рдЧреИрд╕ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдбрдореА рддрд░реНрдХ рд╣реИ рддрд╛рдХрд┐ рд╣рд╛рд░реНрдбрд╣реИрдЯ-рддреИрдирд╛рддреА рдХреЛрдб рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рддреИрдирд╛рдд рдХрд░ рд╕рдХреЗред рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдЙрд╕ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рджреЗрдЦрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрджрд▓рд╛рд╡ рдХреЗ рдЬрд▓реНрдж рд╣реА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛рд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рдмрджрд▓рд╛рд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдЖрдк рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд▓рд┐рдП рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рддрд░реНрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╢рд╛рдпрдж рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдпреВрдпреВрдкреАрдПрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╣реИ

рдзрдиреНрдпрд╡рд╛рдж @ рд╡рд┐рдШрд╡рд╛рдЧ , рдЕрдВрдд рдореЗрдВ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛ рдЧрдпрд╛ред

рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдпрд╣ рдЕрдиреБрдмрдВрдз рдмрдирд╛рдпрд╛ рд╣реИ:

pragma solidity ^0.8.0;

import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";

// Kept for backwards compatibility with older versions of Hardhat and Truffle plugins.
contract UUPSProxy is ERC1967Proxy {
  constructor(
    address _logic,
    address, // This is completely unused by the uups proxy, required to remain compatible with hardhat deploy: https://github.com/wighawag/hardhat-deploy/issues/146
    bytes memory _data
  ) payable ERC1967Proxy(_logic, _data) {}
}

рдФрд░ рдлрд┐рд░ рдореЗрд░реА рддреИрдирд╛рддреА рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ ( proxyContract: "UUPSProxy" рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ):

  await deploy(CONTRACT, {
    from: deployer,
    proxy: {
      proxyContract: "UUPSProxy",
      // ... your other config, initializers etc
    },
    log: true,
  });

@JasoonS рдХреГрдкрдпрд╛ рдЖрдк рдЙрд╕ UUPSProxy рдЕрдиреБрдмрдВрдз рдХреЛрдб рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдбрдореА рдЕрдиреБрдмрдВрдз рд╣реИ рддрд╛рдХрд┐ рд╣рд╛рд░реНрдбрд╣реИрдЯ-рддреИрдирд╛рддреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЬрд╛рди рд╕рдХреЗ? рдпрд╛ рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдкреНрд░реЙрдХреНрд╕реА рдЕрдиреБрдмрдВрдз рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдЬреЛ рддреИрдирд╛рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ?

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ admin рдХреА рднреВрдорд┐рдХрд╛ рдХреНрдпрд╛ рд╣реИ, рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдЪрд╛рд╣реЗ рд╡рд╣ рдХреЛрдИ рднреА рд╣реЛ, deployer (= рдЕрдкрдЧреНрд░реЗрдб рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ) рдпрд╛ рдпрджрд┐ рдореИрдВ рдлрд╝реАрд▓реНрдб рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВред

proxy: {
      proxyContract: "UUPSProxy",
      execute: {
        methodName: "initialize",
        args: [admin],
      },
    },

@marceljay рдХреГрдкрдпрд╛ (рд╣рдореЗрд╢рд╛) рдЖрдкрдХреЛ рдЬреЛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдЙрд╕реЗ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ :-)

рд╣рд╛рдп @aspiers , рдореИрдВрдиреЗ

рддреЛ рдЗрд╕ рдХрд╛рдо рдХреЛ рд╣рд╛рд░реНрдбрд╣реИрдЯ-рддреИрдирд╛рддреА рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдЙрд╕реА рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдирд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣реА рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ @marceljay

рдЕрд╕реНрд╡реАрдХрд░рдг рдореЗрд░реЗ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдСрдбрд┐рдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: sweat_smile: - рдореИрдВ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рд▓реЗрддрд╛: рд╣рдВрд╕рддреЗ рд╣реБрдП:

@marceljay рдЖрд╣, рд╣рд╛рдБ, рдореИрдВ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЕрдкрдиреА рдореВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХреАред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдкреНрд░реЙрдХреНрд╕реА рдирд╣реАрдВ) рдкрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ 1 рддрд░реНрдХ (рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ) рд▓реЗрддрд╛ рд╣реИред

execute: {
  methodName: "initialize",
  args: [admin],
},

@marceljay рдЖрд╣, рд╣рд╛рдБ, рдореИрдВ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЕрдкрдиреА рдореВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХреАред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдкреНрд░реЙрдХреНрд╕реА рдирд╣реАрдВ) рдкрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ 1 рддрд░реНрдХ (рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ) рд▓реЗрддрд╛ рд╣реИред

execute: {
  methodName: "initialize",
  args: [admin],
},

рд╣рд╛рдБ рдЕрдм рдпрд╣ рд╕рд╣реА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рджреЗрдЦрд╛ рдХрд┐ рдЖрдкрдиреЗ рдЬрд╡рд╛рдм рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рд╣реИ :)

рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ ERC1967Proxy рдЕрдиреБрдмрдВрдз рд╡рд╣реА рд╣реИ рдЬреЛ OZ рдЕрдкрдЧреНрд░реЗрдб рдкреНрд▓рдЧрдЗрди рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

@JasoonS рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред рдКрдкрд░ рдЖрдкрдиреЗ рдПрдХ рдЕрдиреБрдмрдВрдз рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ:

contract UUPSProxy is ERC1967Proxy {

рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдирдореВрдирд╛ await deploy рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдк рд╕реЗ

рд╣рдо рдЗрд╕реЗ рдЙрд╕реА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдирд╛рдд рдХрд░рддреЗ рд╣реИрдВ

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рддреИрдирд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡рддрдГ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдЕрдиреБрдмрдВрдз ERC1967Proxy рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ UUPSUpgradeable , рддреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдпреВрдпреВрдкреАрдПрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдПрдЧреА?

рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдирдореВрдирд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдк рд╕реЗ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рд╣рд╛рдБ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рддреИрдирд╛рдд рдХрд░рддрд╛ рд╣реИред

рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдЕрдиреБрдмрдВрдз ERC1967Proxy рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рди рдХрд┐ UUPSUpgradable

рдпрд╣ ERC1967Proxy (рджреЛрдиреЛрдВ UUPS рдФрд░ рдУрдкрдирдЬрд╝реЗрдкреЗрд▓рд┐рди рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рдкреНрд░реЙрдХреНрд╕реА erc1967, https://docs.openzeppelin.com/contracts/4.x/api/proxy#transparent-vs-uups) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред UUPSUpgradeable рдЕрдиреБрдмрдВрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрдмрдВрдз рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ)ред

рддреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдпреВрдпреВрдкреАрдПрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдПрдЧреА?

рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрдмрдВрдз рдореЗрдВ рдпреВрдпреВрдкреАрдПрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИ, (рдЬреЛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рдЧреИрд╕ рдХреБрд╢рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рддрд░реНрдХ рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ рд╣реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЦрд░рд╛рдм рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЧрд▓рддреА рд╕реЗ рдПрдХ рдЧреИрд░-рд╕рдВрдЧрдд рдЕрдиреБрдмрдВрдз рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдФрд░ рдЕрдкрдЧреНрд░реЗрдбрдмрд┐рд▓рд┐рдЯреА рдХреЛ рддреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИред )

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ рдХрд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ, рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рдЕрдкрдиреЗ рд╢реЛрдз рд╕реЗ рд╣реИред

@JasoonS рдиреЗ 1 рд╕рд┐рддрдВрдмрд░, 2021 рдХреЛ рд░рд╛рдд 9:18 рдмрдЬреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА:

рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдЕрдиреБрдмрдВрдз ERC1967Proxy рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рди рдХрд┐ UUPSUpgradable

рдпрд╣ ERC1967Proxy (рджреЛрдиреЛрдВ UUPS рдФрд░ openzeppelin рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рдкреНрд░реЙрдХреНрд╕реА erc1967, docs.openzeppelin.com/contracts/4.x/api/proxy#transparent-vs-uups рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

рд╕рд╣реАред рдФрд░ ERC-1967 рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрддреЗ, рдмреАрдХрди рдкрддреЗ рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкрддреЗ рдХреЗ рднрдВрдбрд╛рд░рдг рд╕реНрдерд╛рди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред BTW рдордЬреЗрджрд╛рд░ рддрдереНрдп рдореИрдВрдиреЗ рджреЗрдЦрд╛: ERC-1967 рдХреЗ рдЕрдиреБрд░реВрдк, OZ UUPS рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ EIP1822 рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрддреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рднрдВрдбрд╛рд░рдг рд╕реНрдерд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред

UUPSUpgradeable рдЕрдиреБрдмрдВрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрдмрдВрдз рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ)ред

рдбреА'рдУрд╣, рдмрд┐рд▓реНрдХреБрд▓! рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрд┐ рдореИрдВ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдЦреЛ рд░рд╣рд╛ рдерд╛ред

рддреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдпреВрдпреВрдкреАрдПрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдПрдЧреА?

рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрдмрдВрдз рдореЗрдВ рдпреВрдпреВрдкреАрдПрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИ, (рдЬреЛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рдЧреИрд╕ рдХреБрд╢рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рддрд░реНрдХ рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ рд╣реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЦрд░рд╛рдм рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЧрд▓рддреА рд╕реЗ рдПрдХ рдЧреИрд░-рд╕рдВрдЧрдд рдЕрдиреБрдмрдВрдз рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдФрд░ рдЕрдкрдЧреНрд░реЗрдбрдмрд┐рд▓рд┐рдЯреА рдХреЛ рддреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИред )

рд╣рд╛рдВ, рдЗрд╕рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ UUPSUpgradeable ред

рдЗрд╕ рдорд╣рд╛рди рдорджрдж рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

lcswillems picture lcswillems  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jsidorenko picture jsidorenko  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

smartcontracts picture smartcontracts  ┬╖  20рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tennox picture tennox  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gitpusha picture gitpusha  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ