๋งํฌ ๐ ERC-6551: Non-fungible Token Bound Accounts
ย
1. ๊ฐ์ ๋ฐ ๋๊ธฐ (Motivation & Overview)1-1. ๊ธฐ์กด์ ํ๊ณ1.2. ํด๊ฒฐ์ฑ
: ํ ํฐ ๋ฐ์ด๋ ๊ณ์ (Token Bound Account, TBA)2. ์ํคํ
์ฒ ๋ฐ ๋ ์ง์คํธ๋ฆฌ (Architecture & Registry)2.1. ์ฑ๊ธํค ๋ ์ง์คํธ๋ฆฌ (Singleton Registry)2.2. ํ๋ก์ ๊ตฌ์กฐ (ERC-1167 Minimal Proxy)2.3. ๋ ์ง์คํธ๋ฆฌ ์ธํฐํ์ด์ค3. ๊ณ์ ์ธํฐํ์ด์ค (Account Interface)3.1. ํ์ ๊ธฐ๋ฅ3.2. ์๋ช
๊ฒ์ฆ (ERC-1271)4. ์คํ ์ธํฐํ์ด์ค (Execution Interface)4.1. execute ํจ์4.2. ํ๋ผ๋ฏธํฐ ๋ฐ operation ์์ธ5. ์ค๊ณ ๊ทผ๊ฑฐ (Rationale)6. ๋ณด์ ๊ณ ๋ ค์ฌํญ (Security Considerations)6.1. ์ฌ๊ธฐ ๋ฐฉ์ง (Fraud Prevention)6.2. ์์ ๊ถ ์ํ (Ownership Cycles)7. ์ฐธ์กฐ ๊ตฌํ (Reference Implementation)
1. ๊ฐ์ ๋ฐ ๋๊ธฐ (Motivation & Overview)
1-1. ๊ธฐ์กด์ ํ๊ณ
ํ์ฌ ERC-721 NFT๋ ์์ ๊ถ ์ฆ๋ช
์ ๋จธ๋ฌด๋ฅด๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๋ผ, ์ค์ค๋ก ์์ด์ ํธ์ฒ๋ผ ํ๋ํ๊ฑฐ๋ ๋ค๋ฅธ ์จ์ฒด์ธ ์์ฐ์ ์ง์ ์์ ํ์ง๋ ์๋๋ค.
- ์: RPG ๊ฒ์ ์บ๋ฆญํฐ๋ฅผ NFT๋ก ๋ฐํํ๋๋ผ๋, ์บ๋ฆญํฐ๊ฐ ํ๋ํ ์์ดํ ์ ์บ๋ฆญํฐ NFT ์์ ๋ค์ด๊ฐ๋ ๊ฒ์ด ์๋๋ผ ์ฌ์ ํ ์ ์ ์ ์ง๊ฐ์ ๋ณ๋๋ก ์กด์ฌํ๋ค.
- ์ด ์ ์์ ๋ชฉํ๋ ์จ์ฒด์ธ ์์์ "์บ๋ฆญํฐ๊ฐ ์นผ์ ์ฅ๊ณ ์๋ ์ํ", "์๋์ฐจ๊ฐ ๋ฐํด์ ์์ง์ ๊ฐ์ง๊ณ ์๋ ์ํ" ๊ฐ์ ๊ตฌ์ฑ์ ์์ฐ์ค๋ฝ๊ฒ ํํํ ์ ์๊ฒ ๋ง๋๋ ๋ฐ ์๋ค.
1.2. ํด๊ฒฐ์ฑ : ํ ํฐ ๋ฐ์ด๋ ๊ณ์ (Token Bound Account, TBA)
์ด ํ์ค์ ERC-721 ํ ํฐ๋ง๋ค ๊ณ ์ ํ๊ณ ๊ฒฐ์ ๋ก ์ ์ธ(Deterministic) ์ค๋งํธ ์ปจํธ๋ํธ ๊ณ์ ์ฃผ์๋ฅผ ํ๋์ฉ ๋ถ์ธ๋ค.
- ์ด ๊ณ์ ์ ํด๋น NFT์ ์๊ตฌ์ ์ผ๋ก ๋ฌถ์ฌ ์๋ค.
- ๊ณ์ ์ ์ ์ด๊ถ(Control) ์ ํญ์ NFT์ ํ์ฌ ์์ ์(Holder)๊ฐ ๊ฐ์ง๋ค.
- ๊ธฐ์กด ERC-721 ์ปจํธ๋ํธ ์ฝ๋๋ฅผ ๋ฐ๋ก ์์ ํ ํ์๋ ์๋ค.
2. ์ํคํ ์ฒ ๋ฐ ๋ ์ง์คํธ๋ฆฌ (Architecture & Registry)
์์คํ
์ ํฌ๊ฒ ๋ ๋ถ๋ถ์ผ๋ก ๋๋๋ค.
- ์ฑ๊ธํค ๋ ์ง์คํธ๋ฆฌ(Registry)
- ๊ณ์ ๊ตฌํ์ฒด(Account Implementation)
2.1. ์ฑ๊ธํค ๋ ์ง์คํธ๋ฆฌ (Singleton Registry)
- ์ญํ : ๋ชจ๋ TBA ์ฃผ์๋ฅผ ๊ณ์ฐํ๊ณ ์์ฑํ๋ ๋จ์ผ ์ง์ ์ ์ด๋ค.
- ํน์ง:
- ๋ฌดํ๊ฐํ(Permissionless): ์์ ์๊ฐ ์๊ณ , ๋๊ตฌ๋ ์ฌ์ฉํ ์ ์๋ค.
- ๋ถ๋ณ์ฑ(Immutable): ํ ๋ฒ ๋ฐฐํฌ๋ ๋ค์๋ ์ฝ๋๊ฐ ๋ฐ๋์ง ์๋๋ค.
- ๊ณ ์ ์ฃผ์: ๋ชจ๋ EVM ํธํ ์ฒด์ธ์์ ์๋ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
0x000000006551c19487814612e58FE06813775758
- ์ฃผ์ ์์ฑ ์๋ฆฌ (
CREATE2): implementation(๊ณ์ ๊ตฌํ ์ปจํธ๋ํธ ์ฃผ์)chainIdtokenContract(NFT ์ปจํธ๋ํธ ์ฃผ์)tokenIdsalt(๊ตฌ๋ถ์)
TBA ์ฃผ์๋ ์๋ ๊ฐ๋ค์ ์กฐํฉํด์ ๋ง๋ค์ด์ง๋ค.
์ด ๋ฐฉ์์ ์ฐ๋ฉด ์ค์ ๋ก ๊ณ์ ์ ์ฒด์ธ์ ๋ฐฐํฌํ๊ธฐ ์ ์๋ ๋ฏธ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ ์๋ ์นด์ดํฐํฉ์ถ์ผ(Counterfactual) ๊ณ์ ์ ๋ง๋ค ์ ์๋ค.
2.2. ํ๋ก์ ๊ตฌ์กฐ (ERC-1167 Minimal Proxy)
- ๋ ์ง์คํธ๋ฆฌ๋ TBA๋ฅผ ERC-1167 Minimal Proxy ํํ๋ก ๋ฐฐํฌํ๋ค.
- ์ด๋ ํ๋ก์ ๋ฐ์ดํธ์ฝ๋ ๋ค์ ๋ค์๊ณผ ๊ฐ์ ๋ถ๋ณ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ธ๋ค.
salt,chainId,tokenContract,tokenId
- ์ด๋ ๊ฒ ๊ตฌ์ฑํด ๋๋ฉด TBA ์ปจํธ๋ํธ๋ ์์ ์ ์ฝ๋ ๋๋ถ๋ถ์ ์ฝ์ด "์ด๋ค NFT์ ๋ฌถ์ฌ ์๋ ๊ณ์ ์ธ์ง" ์ค์ค๋ก ์์๋ผ ์ ์๋ค.
2.3. ๋ ์ง์คํธ๋ฆฌ ์ธํฐํ์ด์ค
createAccount- TBA๋ฅผ ์ค์ ๋ก ์์ฑ(๋ฐฐํฌ)ํ๋ ํจ์๋ค.
- ์ด๋ฏธ ๊ฐ์ ์กฐํฉ์ผ๋ก ๋ง๋ค์ด์ง ๊ณ์ ์ด ์๋ค๋ฉด ์๋ก ๋ฐฐํฌํ์ง ์๊ณ ๊ทธ ์ฃผ์๋ง ๋๋ ค์ค๋ค.
account- ๊ณ์ ์ ์์ฑํ์ง ์๊ณ , ์ฃผ์ด์ง ํ๋ผ๋ฏธํฐ์ ํด๋นํ๋ ๊ณ์ฐ๋ ์ฃผ์๋ง ๋๋ ค์ฃผ๋ view ํจ์๋ค.
3. ๊ณ์ ์ธํฐํ์ด์ค (Account Interface)
์์ฑ๋ TBA๋ ๋ฐ๋์
IERC6551Account ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ผ ํ๋ค.3.1. ํ์ ๊ธฐ๋ฅ
receive()- ๊ณ์ ์ด ETH๋ฅผ ์ง์ ๋ฐ์ ์ ์์ด์ผ ํ๋ค.
token()- ์ด ๊ณ์ ์ด ์ด๋ค NFT์ ๋ฌถ์ฌ ์๋์ง ๋ํ๋ด๋ ์ ๋ณด๋ฅผ ๋ฐํํ๋ค.
chainId,tokenContract,tokenId- ์ด ๊ฐ์ ๊ณ์ ์ด ๋ง๋ค์ด์ง ์ดํ์๋ ๋ณํ์ง ์๋๋ค.
state()- ๊ณ์ ์ ์ํ ๊ฐ(์: ํธ๋์ญ์ nonce ๋ฑ)์ ๋ฐํํ๋ค.
- ๊ณ์ ์ํ๊ฐ ๋ฐ๋ ๋๋ง๋ค ์ด ๊ฐ๋ ํจ๊ป ๋ฌ๋ผ์ ธ์ผ ํ๋ค.
isValidSigner(signer, context)- ํน์ ์ฃผ์(
signer)๊ฐ ์ด ๊ณ์ ์ ์ ์ดํ ๊ถํ์ด ์๋์ง ํ์ธํ๋ ํจ์๋ค. - ๊ธฐ๋ณธ์ ์ผ๋ก NFT์ ํ์ฌ ์์ ์๋ฅผ ์ ํจํ ์๋ช ์๋ก ๋ณธ๋ค.
3.2. ์๋ช ๊ฒ์ฆ (ERC-1271)
- TBA๋ ์ค๋งํธ ์ปจํธ๋ํธ ๊ณ์ ์ด๋ผ ์์ฒด์ ์ธ ๊ฐ์ธํค๋ฅผ ๊ฐ์ง์ง ์๋๋ค.
- ๋์
isValidSignature๋ฅผ ๊ตฌํํด์ NFT ์์ ์๊ฐ ์๋ช ํ ๋ฉ์์ง๋ฅผ ์ ํจํ๋ค๊ณ ์ธ์ ํ๋ ๋ฐฉ์์ ์ด๋ค.
- ์ด๋ ๊ฒ ํ๋ฉด TBA๋ฅผ DApp ๋ก๊ทธ์ธ์ด๋ ๋ฉ์์ง ์๋ช ์ ์ฃผ์ฒด๋ก ํ์ฉํ ์ ์๋ค.
4. ์คํ ์ธํฐํ์ด์ค (Execution Interface)
TBA๊ฐ ์ธ๋ถ๋ก ํธ๋์ญ์
์ ๋ ๋ฆด ๋ ์ฌ์ฉํ๋ ํต์ฌ ์ธํฐํ์ด์ค๊ฐ
IERC6551Executable์ด๋ค.4.1. execute ํจ์
function execute( address to, uint256 value, bytes calldata data, uint8 operation ) external payable returns (bytes memory);
4.2. ํ๋ผ๋ฏธํฐ ๋ฐ operation ์์ธ
to: ํธ์ถ ๋์ ์ฃผ์
value: ์ ์กํ ETH ์
data: ์คํํ ๋ฐ์ดํฐ(ํจ์ ํธ์ถ ์ธ์ฝ๋ฉ ๋ฑ)
operation: ์คํ ๋ฐฉ์(opcode)0(CALL): ์ผ๋ฐ์ ์ธ ์ปจํธ๋ํธ ํธ์ถ ๋ฐ ETH ์ ์ก์ ์ฐ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ ๋ชจ๋๋ค.1(DELEGATECALL): ์ธ๋ถ ์ฝ๋๋ฅผ TBA์ ์คํ ๋ฆฌ์ง ์ปจํ ์คํธ์์ ์คํํ๋ค. ๊ณ์ ๊ธฐ๋ฅ์ ํ์ฅํ ๋ ํ์ฉํ ์ ์๋ค.2(CREATE): ์๋ก์ด ์ปจํธ๋ํธ๋ฅผ ๋ฐฐํฌํ๋ค.3(CREATE2): ๊ฒฐ์ ๋ก ์ ์ธ ์ฃผ์๋ก ์ปจํธ๋ํธ๋ฅผ ๋ฐฐํฌํ๋ค.
5. ์ค๊ณ ๊ทผ๊ฑฐ (Rationale)
์ด ํ์ค์ด ์ด๋ฐ ๊ตฌ์กฐ๋ฅผ ํํ ์ด์ ๋ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ฑ๊ธํค ๋ ์ง์คํธ๋ฆฌ
- ์ฌ๋ฌ ์ฒด์ธ์์ ๋์ผํ ์ฃผ์ ์ฒด๊ณ๋ฅผ ์ ์งํ๊ธฐ ์ฝ๋ค.
- ์ธ๋ฑ์ฑ์ด๋ ํ์ ๋ก์ง์ ๋จ์ํ๊ฒ ๊ฐ์ ธ๊ฐ ์ ์๋ค.
- ์นด์ดํฐํฉ์ถ์ผ(Counterfactual) ๊ณ์
- ๊ณ์ ์ ์ค์ ๋ก ๋ฐฐํฌํ๊ธฐ ์ ์ ์์ฐ์ ๋จผ์ ์ ๊ธ๋ฐ๋ ํจํด์ ์ง์ํ๋ค.
- ์ด๊ธฐ์ ๋ถํ์ํ๊ฒ ๋๋ ๊ฐ์ค๋น๋ฅผ ์ค์ผ ์ ์๋ค.
- Factory ๋์ Registry๋ผ๋ ์ด๋ฆ
- ํ ๋ฒ ๊ณ์ ์ ๋ง๋๋ ํ์๋ณด๋ค, ๊ทธ ์ดํ์ ๋ฐ๋ณต์ ์ผ๋ก ์ฃผ์๋ฅผ ์กฐํํ๋ ํ์๊ฐ ๋ ํต์ฌ์ด๋ผ๋ ์ ์ ๋๋ฌ๋ด๊ธฐ ์ํ ๋ค์ด๋ฐ์ด๋ค.
- ๋ค์ค ๊ณ์ ํ์ฉ (Account Ambiguity)
- ํ๋์ NFT๊ฐ ์ฌ๋ฌ ๊ฐ์ TBA๋ฅผ ๊ฐ์ง ์ ์๋ค.
salt๊ฐ์ ๋ค๋ฅด๊ฒ ๋์ด "์ ์ถ์ฉ", "์ง์ถ์ฉ"์ฒ๋ผ ๊ณ์ ์ ์ฉ๋๋ณ๋ก ๋ถ๋ฆฌํ๋ ํจํด์ ์ง์ํ๋ค.
6. ๋ณด์ ๊ณ ๋ ค์ฌํญ (Security Considerations)
6.1. ์ฌ๊ธฐ ๋ฐฉ์ง (Fraud Prevention)
์
์์ ์ธ ํ๋งค์๊ฐ NFT์ ๋ฌถ์ธ ์์ฐ์ ๋นผ๋๋ฆด ์ ์๋ ์ ํ์ ์ธ ์๋๋ฆฌ์ค๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ํ๋งค์ Alice๊ฐ TBA์ 10 ETH๊ฐ ๋ค์ด ์๋ NFT๋ฅผ ๋ง์ผํ๋ ์ด์ค์ ์ฌ๋ฆฐ๋ค.
- ๊ตฌ๋งค์ Bob์ด ์ด๋ฅผ ๋ณด๊ณ ๊ตฌ๋งค ํธ๋์ญ์ ์ ์ ์กํ๋ค.
- ํธ๋์ญ์ ์ด ์ฒ๋ฆฌ๋๊ธฐ ์ง์ , Alice๊ฐ TBA์์ 10 ETH๋ฅผ ๋จผ์ ์ธ์ถํ๋ค(Front-running).
- ๊ฒฐ๊ตญ Bob์ ์์ด ๋น ๊ณ์ ์ด ๋ฌถ์ธ NFT๋ฅผ ๋ฐ๊ฒ ๋๋ค.
- ๋์:
- ๋ง์ผํ๋ ์ด์ค ์ธก์์ ๊ฑฐ๋๊ฐ ์ฒด๊ฒฐ๋๋ ์์ ์ TBA์ ์๊ณ ๋ ์ํ(
state) ๋ฅผ ํจ๊ป ๊ฒ์ฆํ๋ ์ ์ฐจ๋ฅผ ๋๋ ์์ผ๋ก ๋ง์ ์ ์๋ค.
6.2. ์์ ๊ถ ์ํ (Ownership Cycles)
- NFT A์ TBA ์์ผ๋ก ๋ค์ NFT A๋ฅผ ์ ์กํ๋ฉด, ๋ง ๊ทธ๋๋ก ์๊ธฐ ์์ ์ ์์ ํ๋ ๋ฃจํ๊ฐ ์๊ธด๋ค.
- ์ด ๊ฒฝ์ฐ TBA๋ฅผ ์ ์ดํ ์ ์๋ ์ธ๋ถ ์ฃผ์ฒด๊ฐ ์ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์, NFT์ ๊ทธ ์์ ๋ค์ด ์๋ ๋ชจ๋ ์์ฐ์ด ์๊ตฌ์ ์ผ๋ก ์ ๊ธธ ์ ์๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ์์๋ ์ด๋ฐ ์ ์ก์ ์ ์ด์ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ง๋ ๋ก์ง์ ๋๋ ํธ์ด ์์ ํ๋ค.
7. ์ฐธ์กฐ ๊ตฌํ (Reference Implementation)
ํ์ค ๋ฌธ์์๋ ๋ ์ง์คํธ๋ฆฌ์ ๊ณ์ ์ ๋ํ Solidity ์ฐธ์กฐ ๊ตฌํ์ด ํจ๊ป ํฌํจ๋์ด ์๋ค.
- Registry ๊ตฌํ์ฒด
CREATE2๋ฅผ ์ฌ์ฉํด์ ํ๋ก์๋ฅผ ๋ฐฐํฌํ๋ค.- ์ด์ ๋ธ๋ฆฌ(Assembly) ์ฝ๋๋ฅผ ์ด์ฉํด ํ๋ก์ ๋ฐ์ดํธ์ฝ๋ ๋ค์ ๋ถ๋ณ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ด๋ ๋ก์ง์ ํฌํจํ๋ค.
- Account ๊ตฌํ์ฒด
executeํจ์ ๋ด๋ถ์์_isValidSigner(msg.sender)๋ฅผ ํธ์ถํด ๊ถํ์ ๋จผ์ ํ์ธํ๋ค.- ์ดํ
operation๊ฐ์ ๋ฐ๋ผcall,delegatecall๋ฑ์ ์คํํ๋ค.
์ด ํ์ค์ ์์ด๋์ด ์๊ฐ ์์ค์ ๋์ด์,
- ๋ฐ์ดํธ์ฝ๋ ๋ ๋ฒจ์ ํ๋ก์ ๊ตฌ์กฐ์
- ์ ์ฌ์ ์ธ ๋ณด์ ์ด์์ ๊ทธ์ ๋ํ ๋์ ๋ฐฉ์๊น์ง
ํจ๊ป ์ ์ํ๋, ์์ฑ๋๊ฐ ๊ฝค ๋์ ์ ์์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
ย
ย
6551์ ํ ํฐ ๋ด์์ฃผ๊ธฐ
ย
๋ด๊ธด ํ ํฐ์ ์ฎ๊ธฐ๊ธฐ
