일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- nestjs 튜토리얼
- 러스트 기초 학습
- ethers type
- 스마트컨트렉트프록시
- git rebase
- 머신러닝기초
- 스마트컨트렉트 함수이름 중복 호출
- Vue.js
- 깃허브명령어
- 컨트렉트 배포 자동화
- ambiguous function description
- multicall
- 러스트 기초
- 스마트컨트렉트 예약어 함수이름 중복
- nest.js설명
- 러스트기초
- Vue
- ethers websocket
- 스마트 컨트렉트 함수이름 중복
- ethers typescript
- 프록시배포구조
- 스마트컨트렉트테스트
- vue기초
- ethers v6
- ethers
- SBT표준
- rust 기초
- 체인의정석
- 컨트렉트 동일한 함수이름 호출
- chainlink 설명
Archives
- Today
- Total
체인의정석
Contract `` has a constructor Define an initializer instead 본문
728x90
반응형
https://forum.openzeppelin.com/t/security-advisory-initialize-uups-implementation-contracts/15301/23
업그레이더블 컨트렉트에서는 initializer만 있어야 하고 constructor는 없어야 한다.=
하지만 initializer를 쓰더라도 이를 이용해 다시 접근할 수 있기 때문에
import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
constructor() {
_disableInitializers();
}
만약 initializer를 다시 한번 쓰려는 의도가 없다면 constructor에서 _disableInitializers를 쓰는게 좋다.
이 때 constructor를 넣고 싶다면
/// @custom:oz-upgrades-unsafe-allow constructor
이런 문구를 위에 써주어야 오류가 나지 않는다.
728x90
반응형
'블록체인 > Solidity' 카테고리의 다른 글
Solidity에서 특정 Contract 타입 사용방법과 Storage를 지정하고 Interface Contract를 작성하는 방법 (0) | 2023.03.27 |
---|---|
스마트 컨트렉트 "Error: types/values length mismatch" (0) | 2023.02.28 |
스마트컨트렉트 주석 달기 및 solidity-docgen 사용하기 (0) | 2023.01.12 |
Openzepplin - Address 라이브러리 분석 (0) | 2022.10.27 |
payable 사용시 발생하는 에러 ParserError: Expected primary expression. (0) | 2022.08.11 |
Comments