1. 서론
블록체인 기술의 발전과 함께 Web3.0 시대가 도래하면서, 탈중앙화된 신원 인증의 중요성이 증대되고 있다. 이더리움의 창시자 비탈릭 부테린이 제안한 SBT(SoulBound Token)는 이러한 필요성을 충족시키기 위한 개념으로, 특정 지갑 소유자의 신원을 나타내는 정보를 담고 있으며 전송과 판매가 불가능한 특징을 가지고 있다. 그러나 SBT는 다음과 같은 주요 문제점을 내포하고 있다.
개인 키 분실 위험: 사용자의 기기 도난, 분실, 장애시 SBT에 접근할 수 없어 신원 증명이 불가능해질 수 있다.
보안 취약성: 해킹으로 인한 개인 키 유출 시, 해커가 SBT 소유자로 위장할 수 있는 위험이 있다.
본 논문에서는 이러한 문제들이 발생하였을 때 키와 지갑주소를 변경하기 위해 기존의 매핑 구조를 개선한 새로운 접근 방안을 제시한다. 이를 통해 SBT의 사용성을 향상시키고, 사용자가 안전하게 자신의 신원을 관리할 수 있도록 하며, 동시에 블록체인 네트워크의 효율성을 높이고자 한다.
2. SoulBound Token 개요
SBT(SoulBound Token)이란 기존의 NFT와는 달리 특정 개인이나 조직에 영구적으로 귀속되는 토큰이다. 예를 들어, 디지털 자격증, 증명서, 평판 시스템 등의 분야에서 활용될 수 있다. SBT는 주로 사용자의 신원이나 성과를 영구적으로 기록하고, 해당 정보가 변조되지 않도록 보장하는 데 사용된다. 이러한 특성 덕분에 SBT는 교육 인증서, 전문 자격증, 회원증, 명예 증서 등 다양한 형태로 활용될 수 있다.
SBT는 ERC-721 표준을 기반으로 하며, EIP-5192를 통해 추가적인 잠금 기능을 제공한다.
2.1 ERC-5192 및 EIP-5192
ERC-5192와 EIP-5192는 SoulBound Token (SBT)의 잠금 기능을 위한 표준을 정의한다. 이 표준들의 주요 목적은 토큰이 특정 조건 하에서 전송되지 않도록 잠금 상태를 유지하는 것이다. 주요 기능으로는 토큰의 잠금 상태 확인, 잠금 및 잠금 해제 상태 변경 시 이벤트 발생이 있으며, locked(uint256 tokenId)인터페이스를 통해 특정 토큰 ID의 잠금 상태를 반환한다. 이 표준은 ERC-721을 기반으로 확장되어, NFT에 잠금기능을 추가하며 신원 증명을 전송 또는 판매를 방지하여 탈중앙화된 신원 인증 시스템에서 중요한 역할을 한다. 결과적으로 블록체인 기반의 신원 인증 시스템의 신뢰성을 향상시킨다.

(그림 1) IERC5192 인터페이스
3. 기존 문제점 및 해결 방안
기존의 표준 구현에서는 매핑[mapping1](TokenId, 사용자 주소)만을 사용하여 지갑 주소를 관리한다. 그러나 이 방식에는 여러 가지 문제가 있다.
3.1 기존의 문제점
기존 표준에서는 지갑 주소를 변경하기 위해 스마트 컨트랙트의 사용자 지갑 주소를 모두 변경해야 한다. 이는 TokenID와 사용자의 지갑 주소를 매핑한 테이블을 전수 조사해야 하는 과정을 수반한다. 이 과정에서 ownerOf 함수를 호출하여 해당 토큰의 소유자가 누구인지 확인하는 방식으로 이루어지는데 발급된 토큰이 많을 경우, 전수 조사에 과도한 시간이 소요될 수 있다.
3.2 제안된 해결 방안
본 논문에서는 이러한 문제를 해결하기 위해 매핑(mapping1) [TokenID, 사용자 주소]에 매핑(mapping2) [사용자 주소, TokenID]를 추가하고, mapping2를 이용하여 mapping1을 변경하는 함수를 제안한다. 구체적으로, 주소를 변경하기 위해 mapping(address => uint256) userTokens라는 매핑(mapping2)을 추가하고, changeKey함수를 추가하였다.

(그림 2) ERC721 내부 mapping1

(그림 3) 본 논문에서 사용되는 mapping2

(그림 4) setUnLock, locked, transfer 코드

(그림 5) mapping2를 사용하는 changeKey함수
changeKey함수는 모든 SBT의 기존 주소(from)를 새로운 주소(to)로 바꾸는 기능을 한다.
기존 주소에 발급된 SBT 토큰 개수를 얻고, 그 수만큼 loop를 돌리면서 새로 추가한 mapping2(userTokens 매핑)에서 token Id를 변경할 주소로 토큰을 옮긴다. 그리고 새로운 지갑주소와 토큰ID를 mapping2에 매핑 후 기존 주소와 관련된 것을 지운다.
changeKey2 함수는 본 논문에서 제안한 mapping2를 사용하지 않고 기존의 mapping1만을 사용하여 ownerOf함수를 통해 발급된 모든 토큰의 소유자를 확인한 후 해당 토큰의 소유자가 사용자 본인인지를 확인하는 과정을 거친다.

(그림 6) mapping2를 사용하지 않는 changeKey2 함수
4. 시스템 구조 및 프로세스
본 논문에서 제안하는 시스템 구조는 사용자 단말, 지갑 인증 서버, SBT 스마트 컨트랙트로 구성되며, 다음과 같은 구조와 프로세스를 가진다.
4.1 시스템 구성요소
사용자 단말 : 사용자는 해킹, 분실 등의 상황이 발생할 경우 새로운 키를 생성하고 기존 SBT 주소를 새로운 주소로 변경해야 한다. 이를 위해 사용자는 인증 서버에 자신의 신원을 인증하고 새로운 주소를 서버에 전송한다.
지갑 인증 서버 : 지갑 인증 서버는 사용자의 신원을 인증하고 새로운 주소를 DB에 기록한다. 서버는 DB에 저장된 기존 주소와 새로운 주소를 스마트 컨트랙트로 전송하여 SBT TokenID와 사용자 주소 매핑을 수정한다.
SBT 스마트 컨트랙트 : 스마트 컨트랙트는 SBT TokenID와 사용자 주소 매핑을 관리하고 수정하는 역할을 한다. 제안된 시스템에서는 새로운 매핑 구조와 함수를 통해 이 작업을 효율적으로 처리한다.

(그림 7) 전체 시스템 구성도
4.2 전체 시스템 프로세스
전체 시스템 프로세스는 오프체인(offchain)에서 정당한 사용자가 바꾸고자 하는 것인지 확인 절차를 포함하여 다음과 같은 단계로 이루어진다.

(그림 8) 사용자 등록
사용자는 ID/PW와 같은 사용자 인증정보와 지갑 주소를 서버에 등록하여야 한다.
4.2.1 주소 변경 요청
사용자가 새로운 지갑 주소로 바꾸고자 하면 우선 사용자 인증을 하고 새로운 지갑 주소를 전송한다.

(그림 9) 사용자 인증, 새로운 지갑 주소 전송
4.2.2 서버 측 처리
서버는 사용자 인증 정보와 기존 지갑 주소(ABC)를 DB 테이블에 저장하고 있으며, 사용자 인증이 성공하면 인증정보와 새로운 지갑 주소(BCD)를 테이블에 저장한다. 그 후 블록체인의 스마트컨트랙트를 호출하여 기존 지갑주소를 새로운 지갑주소로 변경한다.

(그림 10) changeKey를 사용한 지갑주소 변경

(그림 11) 전체 시스템 프로세스
이와 같은 시스템 프로세스를 통해 사용자는 안전하게 지갑 주소를 변경할 수 있으며, 연산 속도를 줄일 수 있다.
5. 성능 분석
본 섹션에서는 ownerOf함수를 사용하는 방식과 본 논문에서 제안하는 새로운 방식의 성능을 비교 분석한다. 분석은 시간 복잡도와 가스비 측면에서 이루어지며, 각 방식의 장단점을 제시한다.
5.1 시간 복잡도 비교
5.1.1 ownerOf 사용
ownerOf함수를 사용하는 changeKey2함수의 시간 복잡도는 O(n)이다.(n은 전체 토큰의 수) 이 방식에서는 주소 변경 시 모든 토큰에 대해 소유자를 확인해야 하므로, 토큰의 총 개수에 비례하여 선형적으로 실행 시간이 증가한다.
5.1.2 제안한 방식(mapping2 사용)
제안하는 방식에서는 사용자 주소와 토큰 ID를 매핑하는 추가적인 데이터 구조(mapping2)를 사용한다. 이 방식의 시간 복잡도는 O(m)이다. (m은 사용자가 소유한 토큰의 수) 이 방식에서는 사용자가 소유한 토큰만을 순회하므로, 전체 토큰 수와 관계없이 해당 사용자의 토큰 수에 비례하여 실행시간이 결정된다. mapping2를 통해 특정 사용자의 토큰 목록에 직접 접근할 수 있어, 불필요한 검색 과정을 피할 수 있다.
5.1.3 시간 복잡도 분석
일반적으로 m ≤ n이므로 (한 사용자의 토큰 수 ≤ 전체 토큰 수), 제안 방식은 기존 방식에 비해 시간 효율성이 높다. 특히 전체 토큰 수가 많고 개별 사용자의 토큰 수가 상대적으로 적은 경우, 이 차이는 더욱 두드러진다. 예를 들어, 전체 토큰 수가 1,000,000개이고 한 사용자가 평균 10개의 토큰을 소유하고 있다면 changeKey2함수는 1,000,000번의 순회가 필요한 반면 제안 방식은 10번의 순회만 필요하다. 이는 실행 시간을 단축시킬 수 있다.

(그림 12) 시간 복잡도 비교
5.2 가스량 비교
5.2.1 기존 방식의 가스량
changeKey2함수는 모든 토큰을 순회하며 해당 토큰의 소유자가 사용자인 경우에 mapping1의 주소를 변경한다.
5.2.2 제안 방식의 가스량
제안 방식은 추가적인 매핑 구조(mapping2)를 사용하여 해당 사용자가 보유중인 모든 토큰에 대해 상태를 변경한다. 추가적인 매핑 구조를 사용함으로 인해 가스량이 증가하며, 사용자 소유의 모든 토큰에 대해 상태 변경 시 mapping1과 mapping2를 변경해야 하는 추가적인 과정이 필요하다.
5.2.3 가스량 분석
changeKey함수는 다음과 같은 이유로 changeKey2 함수에 비해 가스량 증가한다. 첫째. mapping2를 유지하기 위한 추가적인 저장 공간이 필요하며, 이는 요구되는 가스량의 증가로 이어진다. 둘째. 키를 변경 할 때마다 mapping2를 업데이트해야 하므로, 추가적인 가스가 발생한다. 이는 changeKey함수와 changeKey2 함수를 사용하는 방식의 주요 차이점인 mapping2를 사용함으로 인한 결과이다. 구체적으로, 키 변경시 changeKey함수는 새 소유자의 mapping2 업데이트에 약20.000가스, 원래 소유자의 mapping2 삭제에 약 5,000 가스가 소요되어 토큰 하나당 약 25,000의 가스가 요구된다. 이로 인해 mapping2를 사용하지 않는 changeKey2함수에 비해 chaneKey함수가 더 많은 가스량을 요구하는 것이다.
5.3 성능과 비용의 균형 분석
제안 방식은 시간 복잡도와 가스량 사이의 trade-off 관계를 보여준다. 제안 방식은 O(m)의 시간 복잡도로, changeKey2함수를 사용하는 방식의 O(n)에 비해 향상된 시간 효율성을 제공한다. 하지만 changeKey2 함수에 비해 제안 방식은 추가적인 저장 공간과 연산으로 인해 가스량이 증가한다. 이러한 trade-off 관계는 시스템의 특성과 요구사항에 따라 다르게 평가될 수 있다. 대규모 시스템에서는 토큰 수가 많고 주소변경이 빈번한 경우, 시간 효율성 향상이 가스비 증가를 상쇄할 수 있다. 반면 소규모 시스템에서는 토큰 수가 적고 주소 변경이 드문 경우, 가스비 절약이 더 중요할 수 있으므로 기존 방식이 더 적합할 수 있다.
6. 결론
본 논문에서는 해킹이나 지갑 주소 분실시 SBT(SoulBound Token)의 주소 변경울 위해 새로운 매핑 구조와 함수를 제안하였다. 이를 통해 SBT의 사용성을 향상시키고자 하였다. 연구의 주요 결과로, 기존의 TokenID와 사용자 주소 매핑(mapping1)에 더해 사용자 주소와 TokenID를 매핑하는 새로운 구조(mapping2)를 제안하였고, changeKey 함수를 통해 사용자의 지갑 주소를 효율적으로 변경할 수 있도록 하였다. 성능 분석 결과, 제안된 방식의 시간 복잡도는 O(m)으로, 기존 방식의 O(n)에 비해 향상되었다. 여기서 m은 사용자가 소유한 토큰의 수, n은 전체 토큰의 수를 나타낸다. 이러한 개선은 특히 대규모 SBT 시스템에서 큰 효과를 발휘할 것으로 예상된다. 제안된 방식의 주요 장점으로는 지갑 주소 변경 시 전체 토큰을 순회하지 않고 해당 사용자의 토큰만을 조회하므로 연산 속도가 향상되며, 대규모 SBT 발행 환경에서도 효율적으로 작동할 수 있어 시스템의 확장성이 향상된다는 점을 들 수 있다. 이는 블록체인 기반의 신원 인증 시스템이 실제 환경에서 대규모로 적용될 때 발생할 수 있는 성능 저하 문제를 효과적으로 해결할 수 있는 방안이 될 것이다. 그러나 이러한 장점에도 불구하고, 제안된 방식에는 추가적인 매핑 구조로 인해 저장 비용과 토큰의 주소 변경 시의 가스비가 증가할 수 있다는 한계가 존재한다. 이는 이더리움 네트워크에서 운영 비용 증가로 이어질 수 있다. 그러나 이러한 연구 결과를 바탕으로, 향후 연구에서는 다음과 같은 방향으로 발전될 수 있을 것으로 기대된다. 첫째, 제안된 방식의 가스비를 줄일 수 있는 추가적인 최적화 방법 연구가 필요하다. 이는 블록체인 네트워크의 효율성을 높이고 사용자의 비용 부담을 줄이는 데 기여할 것이다. 둘째, 새로운 매핑 구조와 함수의 보안성을 더욱 강화하는 방안을 모색해야 한다. 본 연구에서 제안한 새로운 SBT 관리 방식은 기존 방식의 한계를 극복하고 효율성을 향상시킬 수 있는 가능성을 보여주었다. 그러나 이는 시간 효율성과 가스비 사이의 trade-off 관계를 수반하며, 실제 적용 시에는 시스템의 특성과 요구사항을 고려한 신중한 접근이 필요하다. 향후 연구를 통해 이러한 한계를 극복하고 SBT의 활용 가능성을 더욱 확장시킬 수 있을 것으로 기대된다.
References
- SBT-키관리 특허 요약서
- Tim Daubenschütz, Anders, 'ERC-5192: Minimal Soulbound NFTs,' Ethereum Improvement Proposals, No.5192, 2022. https://eips.ethereum.org/EIPS/eip-5192
- William Entriken, Dieter Shirley, Jacob Evans, Nastassia Sachs, 'ERC-721: Non-Fungible Token Standard,' Ethereum Improvement Proposals, No. 721, 2018 .https://eips.ethereum.org/EIPS/eip-721
- Vitalik Buterin, 'Soulbound', 2022, https://vitalik.eth.limo/general/2022/01/26/soulbound.html.
- Ethereum Yellow Paper, 2024, https://ethereum.github.io/yellowpaper/paper.pdf.
- E. Glen Weyl, Puja Ohlhaver, Vitalik Buterin, 'Decentralized Society: Finding Web3's Soul,' 2022. https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4105763. 105763
- Ashish Khanna, Devansh Singh, Ria Monga, Tarun Kumar, Ishaan Dhull, Tariq Hussain Sheikh, 'Integration of Blockchain-Enabled SBT and QR Code Technology for Secure Verification of Digital Documents,' in Machine Learning, Advances in Computing, Renewable Energy and Communication, Springer, Cham, 2024. https://link.springer.com/chapter/10.1007/978-3-031-42987-3_34.
- 김동훈, '블록체인과 스마트 계약: Solidity와 Remix를 활용한 실전 개발 가이드', 에이콘출판사, 2023.
- 야마모토 야스마사, '기술이 만드는 미래 WEB 3.0과 블록체인', 퍼블리온 출판사, 2023.
- 이병욱, '블록체인 해설서', 에이콘출판사, 2021.