BlockChain/solidity
-
[Solidity] UUPS란 무엇인가?BlockChain/solidity 2024. 9. 25. 21:48
https://blog.logrocket.com/using-uups-proxy-pattern-upgrade-smart-contracts/#what-is-a-uups-proxy-pattern이 글은 위의 글을 번역한 글입니다.UUPS 프록시 패턴은 무엇인가요?일단 UUPS가 무엇의 약자인지 먼저 알아보자. Universal Upgradeable Proxy Standard의 준말이다. 이것은 transparent proxy pattern과 비슷하다. 그러나 upgrade가 프록시 contract가 아닌 logic contract로부터 트리거 된다.스마트 컨트랙트가 향하는 logic contract의 address를 저장하기 위해 유일한 storage slot이 프록시 컨트랙트 안에 존재한다. logic co..
-
[solidity] UUPS 패턴 실습BlockChain/solidity 2024. 9. 25. 21:47
https://blog.logrocket.com/using-uups-proxy-pattern-upgrade-smart-contracts/#what-is-a-uups-proxy-pattern Using the UUPS proxy pattern to upgrade smart contracts - LogRocket BlogUUPS is a gas-efficient proxy pattern that allows underlying logic to be upgraded when needed, without losing previous data.blog.logrocket.com위의 실습코드를 그대로 따라한 것이다. Proxy contract 만들기$ npm i hardhat -g$ mkdir uups-demo &&..
-
[Solidity/openzeppelin] AddressUpgradeableBlockChain/solidity 2024. 9. 25. 21:46
pragma solidity ^0.8.1;library AddressUpgradeable { function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } function sendValue(a..
-
[solidity/openzepplin] initializable.sol 분석BlockChain/solidity 2024. 9. 25. 21:44
몇 줄이 안되지만 필요하다.변수명 설명uint8 private_initialized초기화가 되었는지 기본 0bool private_initializing초기화하는 중인지 기본 falsepragma solidity ^0.8.2;import "../../utils/AddressUpgradeable.sol";abstract contract Initializable { uint8 private _initialized; bool private _initializing; event Initialized(uint8 version); modifier initializer() { bool isTopLevelCall = !_initializing; require( ..
-
[solidity] Tokenvesting 분석BlockChain/solidity 2024. 9. 25. 21:43
https://github.com/abdelhamidbakhta/token-vesting-contracts/blob/main/contracts/TokenVesting.sol 여기 있는 소스를 분석하도록 하겠다. 대표적인 token-vesting 즉, 토크노믹스에 나오는 allocation을 자동으로 할당해주는 컨트랙트이다. # 1. 변수들 정리VestingSchedule이라는 구조체가 있다. 형태이름역할boolinitialized초기화 진행되었는지 여부addressbeneficiaryrelease된 후 토큰 수령 주소uint256cliff클리프 타임스탬프uint256start베스팅 기간 시작하는 타임스탬프uint256durationVesting기간 얼마만큼 설정할거냐uint256slicePeriodS..