νμ¬ μ ν¨νμ§ μμ ꡬ쑰λ₯Ό κ°μ§ ꡬνμΌλ‘ νλ‘μ κ³μ½μ λ°°ν¬νλ €κ³ νλ©΄ μ¬μ ν μ±κ³΅ν κ²μ
λλ€.
μλ₯Ό λ€μ΄ μ΄ κ³μ½μ μ λ°°ν¬λ©λλ€.
contract Foo {
uint public b;
uint public c = 5;
constructor(a uint) {
b = a;
}
}
κ·Έλ¬λ μ΄ κ³μ½μ νλ‘μμμ λ°°ν¬λ λ μ ν¨νμ§ μμ΅λλ€. μ΄ κ΅¬νμΌλ‘ μ€κ³νλ νλ‘μμλ c
λλ b
λ³μκ° μ€μ λμ΄ μμ§ μκΈ° λλ¬Έμ
λλ€. μ¬μ©μκ° μ΄κ²μ λ°°ν¬νκ±°λ μ΅μν μΌμ’
μ κ²½κ³ λ₯Ό λ°°ν¬νλ €κ³ νλ©΄ μ¬κΈ°μ μ€λ₯κ° λ°μν΄μΌ νλ€κ³ μκ°ν©λλ€.
λν νλ‘μλ₯Ό μ κ·Έλ μ΄λνλ κ²κ³Ό κ΄λ ¨μ΄ μμ΅λλ€. μ μ₯μ μΆ©λλ‘ μΈν΄ μ¬μν μ€λ₯κ° λ°μν©λλ€. λΆλͺ ν, μ κ·Έλ μ΄λλ λ¨Ό λ―Έλμ μΌμ΄λ μ μκΈ° λλ¬Έμ μ΄κ²μ νμΈνκΈ°κ° λ μ΄λ ΅μ΅λλ€.
μ΄μ ꡬν:
contract Foo {
uint public b = 5;
};
μλ‘μ΄ κ΅¬ν:
// Incorrect
contract Bar {
uint public c; // Collision here! - value is actually set to 5 not 0
}
// Correct
contract Bar {
uint public b; // value is 5 as expected
uint public c; // value is 0
}
μ κ³μ½μ΄ μ΄μ κ³μ½ μ μ₯μμ μΆ©λνμ§ μκ³ μ ν¨ν νλ‘μ μ κ·Έλ μ΄λμΈμ§ νμΈνλ κΈ°λ₯μ΄ μμΌλ©΄ μ μ©ν κ²μ λλ€.
// Checks if "Foo" can be upgraded to "Bar"
const isValid = deployments.isValidProxyUpgrade("Foo", "Bar");
OpenZeppelinμλ λΉμ·ν κ²μ¬κ° μμ§λ§ λ°°ν¬ κΈ°λ₯μ λ΄μ₯λμ΄ μμΌλ―λ‘ νμΈ μ½λλ₯Ό λλΆλΆ μ¬μ¬μ©ν μ μμ§λ§ μ¬κΈ°μμλ hardhat-deployμμ μ¬μ©νμ§ μμ΅λλ€.
νμ€ν μνμ΅λλ€ :), μ΄κ²μ λν μ¬κΈ°μ μΈκΈλμμ΅λλ€ : https://github.com/wighawag/hardhat-deploy/issues/65
κ°μ₯ μ μ©ν λκΈ
λν νλ‘μλ₯Ό μ κ·Έλ μ΄λνλ κ²κ³Ό κ΄λ ¨μ΄ μμ΅λλ€. μ μ₯μ μΆ©λλ‘ μΈν΄ μ¬μν μ€λ₯κ° λ°μν©λλ€. λΆλͺ ν, μ κ·Έλ μ΄λλ λ¨Ό λ―Έλμ μΌμ΄λ μ μκΈ° λλ¬Έμ μ΄κ²μ νμΈνκΈ°κ° λ μ΄λ ΅μ΅λλ€.
μ΄μ ꡬν:
μλ‘μ΄ κ΅¬ν:
μ κ³μ½μ΄ μ΄μ κ³μ½ μ μ₯μμ μΆ©λνμ§ μκ³ μ ν¨ν νλ‘μ μ κ·Έλ μ΄λμΈμ§ νμΈνλ κΈ°λ₯μ΄ μμΌλ©΄ μ μ©ν κ²μ λλ€.
OpenZeppelinμλ λΉμ·ν κ²μ¬κ° μμ§λ§ λ°°ν¬ κΈ°λ₯μ λ΄μ₯λμ΄ μμΌλ―λ‘ νμΈ μ½λλ₯Ό λλΆλΆ μ¬μ¬μ©ν μ μμ§λ§ μ¬κΈ°μμλ hardhat-deployμμ μ¬μ©νμ§ μμ΅λλ€.