락업 기능이 추가된 ERC20 컨트랙트를 개발 예정이다.
내가 어렴풋이 알고 있었던 락업 개념과 락업 과정의 자세한 프로세스를 정리해보았다.
락업(Lockup)이란?
토큰을 발행한 뒤 시장에 유통되지 않도록
토큰의 owner account에 대해 토큰에 대한 transfer를 막는 것이다.
컨트랙트를 어떻게 짜느냐에 따라
sendTransaction 을 날리지 못하게 막거나
트랜잭션을 날려도 취소되게끔 할 수 있다.
락업 기능의 특징!
어떻게 설계하냐에 따라 다를 것 같긴 한데 일단 핵심 특징은 세 가지이다.
1. 어떤 토큰을 락업 걸 것인지 IERC20
2. 누구에게 락업을 걸 것인지 account (주소는 보통 함수 호출 파라미터로 들어가기 때문에 생략 가능)
3. 얼마만큼의 시간동안 락업을 걸 것인지 timestamp
In Solidity
표준인 ERC20 기준으로 락업 기능에 대한 function, event 만 적어보자면
event
event Lock(address indexed _of, uint256 indexed _reason, uint256 _amount, uint256 _validity)
event Unlock(address indexed _of, uint256 indexed _reason, uint256 _amount)
function
락
function lock(bytes32 _reason, uint256 _amount, uint256 _time) public return (bool)
락업 기간 설정
function extendLock(bytes32 _reason, uint256 _time) public returns (bool)
락업 물량 설정
function increaseLockAmount(bytes32 _reason, uint256 _amount) public returns (bool)
언락
function unlock(address _of) public returns (uint256 unlockableTokens)
참고문서 링크
https://github.com/ethereum/EIPs/issues/1132
'solidity' 카테고리의 다른 글
22.09.05 npx hardhat test (0) | 2022.09.05 |
---|---|
21.07.28 diamond problem (0) | 2021.07.28 |
21.07.27 ERC-20 Token Contract (0) | 2021.07.28 |
21.07.23 Token Role (0) | 2021.07.26 |
21.07.22 Mint & Burn Token (2) | 2021.07.24 |