рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ OpenZeppelinTransparentProxy
рд╕рдорд░реНрдерд┐рдд рд╣реИред рдХреНрдпрд╛ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ UUPS рдкреНрд░реЙрдХреНрд╕реА рд╕рдкреЛрд░реНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ?
рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╣рд╛рд░реНрдбрд╣реИрдЯ-рддреИрдирд╛рддреА рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрднреА рднреА рд╕рдВрднрд╡ рд╣реИред рдкреНрд░реЙрдХреНрд╕реА рдЬрд┐рд╕реНрдЯ рдХреЛ рд╕рдВрдЧрдд рдмрдиреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдПрдХ рдбрдореА/рдЕрдкреНрд░рдпреБрдХреНрдд рдорд╛рд▓рд┐рдХ рдХрд╛ рддрд░реНрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреНрд░реЙрдХреНрд╕реА рдЬрд┐рд╕реНрдЯ рдХреЛ рд╕рдВрдЧрдд рдмрдиреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдПрдХ рдбрдореА/рдЕрдкреНрд░рдпреБрдХреНрдд рдорд╛рд▓рд┐рдХ рдХрд╛ рддрд░реНрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреНрдпрд╛ рдпрд╣ рдпреВрдпреВрдкреАрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдм рдлрд╛рдпрджреЗрдордВрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛? рдпреВрдпреВрдкреАрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рд▓реЗрдирджреЗрди рдХреЙрд▓ рдкрд░ рдЧреИрд╕ рдХреА рдмрдЪрдд рдХрд░рдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╣реИред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдЖрдк рдХреБрдЫ рдЫрджреНрдо рдХреЛрдб рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпреВрдпреВрдкреАрдПрд╕ рдкреНрд░реЙрдХреНрд╕реА (рдЕрдкреНрд░рдпреБрдХреНрдд рддрд░реНрдХ рдХреЗ рд╕рд╛рде) рдХреЗ рд╕рд╛рде рд╣рд╛рд░реНрдбрд╣реИрдЯ-рддреИрдирд╛рддреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?
рдзрдиреНрдпрд╡рд╛рдж
рдпрд╣ рдЧреИрд╕ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдбрдореА рддрд░реНрдХ рд╣реИ рддрд╛рдХрд┐ рд╣рд╛рд░реНрдбрд╣реИрдЯ-рддреИрдирд╛рддреА рдХреЛрдб рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рддреИрдирд╛рдд рдХрд░ рд╕рдХреЗред рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдЙрд╕ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рджреЗрдЦрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрджрд▓рд╛рд╡ рдХреЗ рдЬрд▓реНрдж рд╣реА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛рд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рдмрджрд▓рд╛рд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдЖрдк рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд▓рд┐рдП рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рддрд░реНрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╢рд╛рдпрдж рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдпреВрдпреВрдкреАрдПрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╣реИ
рдзрдиреНрдпрд╡рд╛рдж @ рд╡рд┐рдШрд╡рд╛рдЧ , рдЕрдВрдд рдореЗрдВ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛ рдЧрдпрд╛ред
рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдпрд╣ рдЕрдиреБрдмрдВрдз рдмрдирд╛рдпрд╛ рд╣реИ:
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
ред
рдЗрд╕ рдорд╣рд╛рди рдорджрдж рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╣рд╛рд░реНрдбрд╣реИрдЯ-рддреИрдирд╛рддреА рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрднреА рднреА рд╕рдВрднрд╡ рд╣реИред рдкреНрд░реЙрдХреНрд╕реА рдЬрд┐рд╕реНрдЯ рдХреЛ рд╕рдВрдЧрдд рдмрдиреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдПрдХ рдбрдореА/рдЕрдкреНрд░рдпреБрдХреНрдд рдорд╛рд▓рд┐рдХ рдХрд╛ рддрд░реНрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред