이전글
토큰
이번 글에서는 스마트 컨트랙트를 이용한 핵심 기술인 토큰에 대해 알아보겠습니다.
I. 토큰
지금까지의 글을 통해 월드 컴퓨터가 무엇인지, 그리고 스마트 컨트랙트가 무엇인지에 대해 알아봤습니다. 이제 이더리움이라는 월드 컴퓨터를 이용하여 동작시킬 수 있는 스마트 컨트랙트라는 프로그램 중 하나인 토큰에 대해 알아보겠습니다.
이전에 알아봤던 것처럼 EVM을 이용하면 스마트 컨트랙트의 변수에 값을 저장하고 변경할 수 있습니다. 또한 이러한 변수는 블록체인 상에 영구히 저장되며, 함부로 변조할 수 없는 값이 됩니다.
이를 이용하면 다음과 같은 상황을 연출할 수 있습니다. 먼저 EOA와 어떤 변수를 하나로 묶습니다.
그다음 변수와 묶여있는 특정한 이더리움 계정만이 해당 변수에 접근할 수 있도록 만듭니다.
그리고 변수에서 다른 변수로 값을 옮기는 함수를 정의합니다.
이 과정이 끝나면 다음과 같은 작업을 진행할 수 있습니다. 계정 A는 자신의 변수의 값 일부를 다른 계정 B의 변수로 옮기기 위해, 변수 값을 옮기는 함수를 실행합니다.
이 함수가 실행되면 계정 A의 변수의 값은 옮겨진 변수의 값만큼 줄어들고, 계정 B의 변수는 증가할 것입니다.
지금까지의 과정을 보면 변수의 값을 변경하는 부분이 이더를 옮기는 과정과 유사하다는 것을 알 수 있습니다.
즉, 계정 A가 소유한 변수의 값에 해당하는 금액을 계정 B로 송금하는 과정과 유사하다는 것을 알 수 있습니다. 여기에서의 변수의 값이 바로 토큰입니다.
스마트 컨트랙트를 통해 작동되는 토큰은 스마트 컨트랙트 상의 변수를 이용하여 작동합니다. 이러한 토큰은 이더와 유사하게 보이지만, 이더와는 다르게 EVM을 사용해야 합니다. 또한 채굴자에 의해서만 생성되는 이더와는 다르게, 토큰은 스마트 컨트랙트를 생성하는 EOA가 변숫값을 조정하여 자신이 원하는 만큼 생성할 수 있습니다.
II. 토큰 표준과 ERC-20
만약 토큰을 만들기 위해 매번 새롭게 모든 스마트 컨트랙트 코드를 작성해야 한다면 상당히 귀찮을 것입니다. 또한, 개발자마다 작성한 스마트 컨트랙트 함수와 변수가 다르다면, 여러 토큰과 블록체인 지갑 간의 호환 또한 어려울 것입니다. 따라서 이더리움의 개발자들은 쉽게 토큰을 배포하고 다른 토큰과 호환될 수 있도록 하는 토큰 표준을 정의하였습니다.
토큰 표준에는 토큰에 관한 주요 스마트 컨트랙트 변수와 함수가 미리 정의되어 있습니다. 따라서 새로운 토큰을 배포하고자 하는 사람들은 이 표준에 따라서 스마트 컨트랙트 코드를 만들고 배포하면 됩니다. 이렇게 배포된 토큰은 기존의 표준을 지키는 다른 토큰들, 블록체인 지갑들과 쉽게 호환됩니다.
이러한 토큰 표준에는 여러 종류가 있습니다. 가장 대표적인 토큰 표준은 ERC-20입니다. 다음은 ERC-20에서 정의하고 있는 표준 인터페이스입니다. 솔리디티 코드로 작성되어 있습니다.
function name() public view returns (string)
function symbol() public view returns (string)
function decimals() public view returns (uint8)
function totalSupply() public view returns (uint256)
function balanceOf(address _owner) public view returns (uint256 balance)
function transfer(address _to, uint256 _value) public returns (bool success)
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
function approve(address _spender, uint256 _value) public returns (bool success)
function allowance(address _owner, address _spender) public view returns (uint256 remaining)
event Transfer(address indexed _from, address indexed _to, uint256 _value)
event Approval(address indexed _owner, address indexed _spender, uint256 _value)
지금까지 토큰에 대해 알아봤습니다. 다음 글에서는 토큰의 개념을 확장한 개념인 NFT에 대해 알아보겠습니다. 감사합니다.
다음글
'이더리움 > 이더리움과 월드 컴퓨터' 카테고리의 다른 글
[이더리움과 월드 컴퓨터] 4-1. 오라클 (0) | 2023.04.01 |
---|---|
[이더리움과 월드 컴퓨터] 3-2. NFT (0) | 2023.03.21 |
[이더리움과 월드 컴퓨터] 2-5. 솔리디티 (0) | 2023.02.18 |
[이더리움과 월드 컴퓨터] 2-4. 컨트랙트 계정 (0) | 2023.02.14 |
[이더리움과 월드 컴퓨터] 2-3. EVM (0) | 2023.02.10 |