공부 내용 정리

스테이킹 이란?

blockchoin 2025. 7. 17. 16:28

 

1. 스테이킹 이란?

스테이킹이란 보유한 암호화폐를 스마트 컨트랙트에 예치하여, 일정 기간 동안 락업(Lock-up)하고 그에 대한 보상(이자, 리워드 등)을 받는 행위를 의미합니다. 대표적으로 DeFi, PoS(Proof of Stake) 네트워크 등에서 활용되며, 사용자는 보유 자산을 단순히 지갑에 두는 것보다 스테이킹을 통해 추가 수익을 얻을 수 있고, 토큰 제공자는 유동성 확보를 할 수 있기 때문에 상부상조의 역할을 가지고 있습니다.

 

https://choseolmin.github.io/staking-dapp/


2. 주요 구조

(1) 배포 할 컨트랙트

이름 역할
DonToken (ERC20) 토큰 발행, approve 용도
Staking 스테이킹 / 언스테이킹 / 이자 관리
 

(2) Staking 컨트랙트 주요 함수

주요 함수 설명 
stake(uint256 amount) 스테이킹 (토큰 예치)
unstake() 원금 + 이자 수령
getStakeInfo(address) 현재 스테이킹 상태 조회

 

 

3. 프론트엔드 기능 구성

기능  역할
메타마스크 지갑 연결 ethers.js 사용
스테이킹 컨트랙트 주소 입력 직접 입력 가능하게 구성
스테이킹 approve 후 stake 실행
이자 확인 getStakeInfo() 조회 후 표시
언스테이킹 unstake() 실행
 

4. 중요한 포인트: permit vs transferFrom 비교

(1) transferFrom

  • approve() 먼저 실행 → 지갑 서명 필요
  • 이후 컨트랙트가 transferFrom() 으로 토큰 직접 이동
  • 두 번 트랜잭션 필요 (approve, stake)
donToken.approve(stakingAddress, amount); staking.stake(amount);
 

장점: ERC20 표준 / 모든 토큰 호환
단점: 트랜잭션 2번 필요

(2) permit (ERC20Permit, EIP-2612)

  • permit() 서명으로 승인 (on-chain 없이 오프체인 서명)
  • 한번의 트랜잭션으로 바로 stake() 가능
token.permit(...) staking.stakeWithPermit(...)
 

장점: 사용자 입장에서 approve 트랜잭션 없음 (가스비 절약)
단점: permit 지원하는 토큰만 가능 (USDC, DAI는 OK, 오래된 토큰은 불가)

 

'공부 내용 정리' 카테고리의 다른 글

유니온 파인드란?  (0) 2025.07.21
wagmi란?  (0) 2025.07.18
블록체인에서 오라클이란?  (1) 2025.07.16
블록체인에서 프록시란?  (0) 2025.07.15
ERC-2612란?  (0) 2025.07.14