[증권형 토큰 시리즈] 제4편 STO 플랫폼, 왜 필요해? -2-

증권형 토큰, 21세기의 로제타 스톤이 될까?

wooqii
Decipher Media |디사이퍼 미디어
18 min readDec 27, 2018

--

서울대학교 블록체인 학회 디사이퍼에서 증권형 토큰 글을 시리즈로 연재합니다. 시리즈의 세 번째 주제는 증권형 토큰의 구현체와 기능에 대한 상세내용을 R-Token Standard를 통해 살펴보고, Securitize의 DS Protocol을 다루어 보겠습니다.

블록체인이 사람을 알아볼 수 있다고?

금융시장의 역사는 해가 거듭되면서 더욱 간편하고 효율적인 자본이동을 가능케 했고, 2018년에 와서는 블록체인을 이용하여 글로벌 장벽을 뛰어넘으려는 시도를 하고 있다. 블록체인이 가진 가장 강력한 기능은 ‘전송’기능이다. 인터넷 혁명을 통해 국내 뿐 아니라 해외주식거래가 가능해 졌지만, 이보다 더욱 간편하면서도 보안성을 갖춘 솔루션들이 나타나고 있다. 블록체인 생태계에서는 누구나 Smart contract를 지원하는 이더리움 플랫폼을 이용해 자유롭게 자신만의 자산을 만들 수 있게 되었다. 더 효율적인 자산 이동을 실현시켜줄 차세대 금융상품으로서 증권형 토큰이 많은 관심을 받고 있다.

Index

블록체인이 사람을 알아볼 수 있다고?

자본조달방법의 트렌드

STO 플랫폼 뜯어보기

Harbor (R-Token Standard)

규정업그레이드가 가능한 ‘규정탑재형’ 토큰표준

3개의 컨트랙트로 이루어진 R-Token

R-Token Example : Tokenized REITs

Securitize (DS Protocol)

증권형 토큰의 생태구성에 필요한 통합 서비스를 제공하는 플랫폼

DS Token

DS Services

DS Apps

나가며

증권형 토큰은 법률을 이더리움이 읽고 판단할 수 있도록 특정한 함수를 통해 보유자가 올바른 소유자인지, 배당이나 이자를 얼마나 받을 수 있는지 등을 True or False로 구분할 수 있다. 증권의 종류가 다양한 만큼 소유자가 원하는 기능과 규정들을 토큰에 커스터마이징 할 수 있다는 것은 블록체인이 제시할 수 있는 새로운 패러다임이 될 것이다.

‘탈중앙화된 어플리케이션을 이용하는데 사용되는 토큰’을 넘어 ‘실제 금융시장에서 적법한 절차를 거쳐 유통될 수 있는 토큰’의 위치는 어디쯤이며 어떻게 변화했는지 잠시 짚어보자.

Trend

전통적인 주식시장에서 일정 조건을 만족하는 건실한 기업들은 IPO를 거쳐 자신들이 발행한 주식을 유가증권으로 거래소에 상장시킨 뒤, 그 주식들을 팔아서 많은 양의 자본을 조달 할 수 있었다. 하지만 유가증권 상장에 필요한 준비기간은 결코 만만한 절차가 아니었다. (허들을 낮추는 방법도 있지만 이 글의 방향과는 맞지않아 생략한다)

많은 이들이 쉽고 간편한 자금조달방법을 고민하던 중 ICO라는 모델이 등장 하면서 자본을 블록체인 기술을 통해 토큰을 발행하여 간편하게 조달 받을 수 있게 되었다. 코인이나 토큰을 스마트 컨트랙트로 만들어 이더리움이나 비트코인으로 자본을 조달하는 이 모델은 당시 전통적인 자본시장에 큰 충격을 주었고, 다양한 프로젝트들이 성황리에 ICO를 마치고 얻은 자본으로 그들의 사업을 개선하며 발전시키고 있다.

하지만, 모든 프로젝트들이 기업가정신을 갖고 있진 않았다. 휘황찬란한 비전과 로드맵, 명망있는 이들의 명성을 팔아 투자받은 이더와 비트코인을 현금화해서 잠적해버리는 경우도 왕왕 있었다. 이런 경험을 토대로 ICO 자체도 신뢰할 수 있는 기업에 투자하고자 하는 수요가 생겼고, 곧이어 Reverse ICO라는 모델로 변화하는 모습이 나타나기 시작했다.

Reverse ICO란, 기존에 비즈니스를 영위하던 회사가 진행하는 ICO를 일컫는다. Reverse ICO는 일반 ICO와는 달리 투자자들에게 ICO보다 조금 더 명시적인 신뢰를 제공한다. 법적의무의 귀속주체가 명확한 기업이 진행하는 ICO는 투자자 보호를 위한 청구가 가능하다고 판단할 수 있기 때문이다. 그러나 본격적으로 기존에 있던 기업들이 이 모델의 적용을 고려하는 동안 프로그램 가능한 자산에 대한 논의가 진행이 되기 시작하면서 기존 기업이 단순히 전송과 보관만 가능한 토큰을 통해 진행하던 Reverse ICO 또한 빠르게 입지가 줄어들기 시작했다.

https://news.bitcoin.com/80-of-icos-are-scams-only-8-reach-an-exchange/

위의 자료처럼 진행된 ICO의 81%가 스캠성 프로젝트로 투자자 피해가 속출하는 가운데 투자자보호에 초점이 맞춰지면서, 규제당국과 토큰을 사용하려고 하는 사용자 간에 균형을 맞추려는 시도로 ‘증권형 토큰(Security Token)’이라는 개념이 나타났다. (증권형 토큰의 자금조달 방식은 STO(Security Token Offering)이라는 모델로 구체화되었다.)

STO 플랫폼은 Polymath라는 프로젝트에서 처음 시도했는데, POLY라는 ERC20 토큰을 통해 ICO를 진행했고 성황리에 투자금을 확보한 뒤, Polymath 플랫폼을 구현하고 있다. 뒤이어 SwarmFund나 Harbor, Securitze가 증권형 토큰이 유통될 수 있는 환경을 만들어 나가고 있다. 치열한 경쟁구도에서 어떤 플랫폼이 가장 성공한 모델로써 STO 시장에서 두각을 나타낼지 보는 것도 앞으로 지켜볼만한 사안일 것이다.

STO Platform 뜯어보기

개념적인 설명은 늘 그렇듯이 피부에 와닿지 않고 두루뭉실 하다. 이번 단계에서는 플랫폼들이 제시하고 있는 증권의 토큰화 솔루션에 대해 조금 더 자세히 알아보려 한다. 이전 글에서는 STO 플랫폼이 공통적으로가지고 있는 특징을 알아보았는데, 이번 글에서는Harbor의 R-Token과 Securitize의 DS-Protocol을 더 자세히 뜯어보도록 하겠다.

Harbor (R-Token Standard)

규정 업그레이드가 가능한 ‘규정 탑재형’ 토큰 표준

R-Token은 증권의 소유권을 나타낼 수 있도록 ERC20 으로 구현된 증권형 토큰이다. 이 토큰표준은 ERC20을 따르는 기존의 모든 지갑과 거래소에서 호환 가능하지만, 내장된 RegulatorService에 의해 토큰 전송시 체인상에서 규정을 검토하는 과정을 우선 거친 뒤 전송여부를 결정한다. R-Token은 Regulated Token이라는 이름에 걸맞게 증권형 토큰이 토큰 발행자 간이나, 거래소에서 거래될 때 스마트 컨트랙트로 구체화된 규정을 따라 조건을 만족하는 경우에 교환 될 수 있도록 설계되었다. 이런 프로세스가 가능한 이유는 R-Token Standard가 몇개의 특별한 스마트 컨트랙트로 이루어져 있기 때문이다.

3개의 컨트랙트로 이루어진 R-Token

R-Token Standard는 RegulatedToken.sol, RegulatorService.sol, ServiceRegistry.sol 로 구성되어 있다. 이 세가지 컨트랙트는 서로 상호보완적으로 구동된다. 이번에는 위 세가지 컨트랙트에서 특징적인 코드 위주로 살펴볼 것이다. 자세한 코드는 Harbor에서 오픈소스로 제공하고 있으므로 여기에서 살펴볼 수 있다.

  1. R-Token의 프로세스

R-Token은 아래와 같은 형식으로 구동이 되고, 이러한 구동원리가 ERC20에 구현되지 못한 기능들을 포함하기 때문에 우리가 R-Token이 제시하는 토큰표준을 증권형 토큰을 구현하는데 있어 사용할 하나의 수단으로 고려할 수 있다.

Harbor Github

위 그림에서 ServiceRegistry가 특정 R-Token이 따르는 규정이 담긴 Regulator Service의 주소를 라우팅 해주고 이에 따라 토큰전송을 할 때 RegulatorService의 check() 함수를 불러서 check() 함수에 if 조건문으로 구현된 규정 준수 여부를 검사하고 이상이 없을 시, Transfer() 함수를 실행한다. 이상이 있을 시에는 각 조건이 부합하지 않을 시 정해놓은 조건의 에러메시지를 부르고, checkStatus라는 이벤트로 이상여부에 대한 로그를 남긴다. 이 이벤트는 서드파티로 만들어진 지갑 어플리케이션에서 왜 토큰 전송이 실패했는지 로그를 통해 이용자에게 알려줄 수 있다. 그러면 R-Token이 제공하는 컨트랙트들을 중요한 기능들 위주로 살펴보도록 하겠다.

check() function의 상세 예시. by TokenRegulatorService.sol
  • RegulatedToken.sol : ERC20 standard의 DetailedERC20과 MintableToken의 기능을 가져오고 있다. 기본적으로 토큰의 이름과 심볼, 소수점단위를 정할 수 있고 기본적인 전송기능을 담고 있어 평범해 보이지만 다른 토큰 표준과 다른 점은 _check() 와 _service() 함수가 존재 한다는 것이다.

여기서 _check()는 _service()함수에 정의된대로 ServiceRegistry에 저장된 이 R-Token에 해당하는 RegulatorService.sol의 주소를 알려주어 하드코딩된 규정에 적합한지 여부를 검사하고 토큰이 가지고 있는 다양한 기능들이 수행될 수 있게 처리하는 역할을 한다.

  • RegulatorService.sol : 실제 해당 R-Token이 준수해야할 규정이 담길 수 있는 틀(인터페이스)을 제공하는 스마트 컨트랙트이다. 인터페이스를 공유해서 이 스마트 컨트랙트를 상속하면 동일한 인자를 사용하여 인터페이스가 실행하고자 하는 기능을 실행 할 수 있다.

보이는 바와 같이 RegulatorService.sol에 구현된 인터페이스는 해당 R-Token의 주소와 규정과 비교를 할 check() 함수를 실행시키는 주체인 _spender, 누가 누구에게 보내는지를 명시하는 _from, _to와 몇 개의 R-Token을 전송하는지에 대해 명시하는 _amount를 사용하게끔 정의한다. 이 함수의 상세 실행을 위해서는 현실세계에서 정의하는 명문화된 규정을 코드로 변환해야하는 수고가 필요한데, 이 규정의 문법은 대개 조건을 만족하는지 안하는지를 판단하기 위해서 if 조건문으로 짜여진다. 만약 조건을 만족한다면 해당 기능이 구현된 함수를 실행하고 그렇지 않으면 에러메시지를 반환하는 방식으로 해당기능을 실행하지 못하게끔 구현되었다.

  • ServiceRegistry.sol : 서비스레지스트리는 발행자마다 발행하는 R-Token이 따라야하는 규정들을 직접적으로 연결해주는 역할을 한다. 이 컨트랙트를 이용해서 R-Token은 각자 구현하고자하는 기능에 귀속되는 규정들을 전송과 실행하는 데 있어 이용할 수 있게 된다. R-Token에서 서비스 레지스트리가 필요한 가장 중요한 이유는 바로 ‘규정의 업데이트 기능’ 때문이라고 해도 과언이 아니다. 우리나라의 경우에도 매년 개정되는 ‘세법’처럼 규정의 잦은 업데이트가 있을 시 추가되거나 불필요해서 제거되는 규정을 적용하기 위해 꼭 필요한 기능이 바로 ‘규정의 업데이트 기능’ 인 것이다.
Harbor Github

ServiceRegistry의 특징적인 기능은 위의 두 함수로 나타나있는데, 첫번째 함수는 ServiceRegistry가 RegulatorService를 통해 준수해야할 규정이 구현된 컨트랙트 주소를 설정하고, 앞서 언급한 컨트랙트의 라우팅역할을 이 함수를 통해 실행한다. 이를 통해 R-Token은 자신이 준수해야할 RegulatorService의 주소를 인식하고 바라보게 된다.

두번째 함수는 Harbor에서 제공하는 도식으로 표현되었듯, 규정이 업데이트 되었을 경우 이전에 R-Token에서 따르던 RegulatorService v1주소를 새로 업데이트하여 배포된 RegulatorService v2 주소로 대체하는 함수이다. ReplaceService 이벤트를 통해서 옛 버전의 RegulatoService가 새로운 RegulatorService v2로 바뀌게 된 이력을 로그로 남겨서 볼 수 있도록 구현되어 있다.

  • TokenRegulatorService.sol : R-Token은 위의 기능들을 실제 용도에 맞게 RegulatorService 인터페이스를 구현한 예시로 토큰 단위와 참여자 단위에서 TradeController역할로서 허용가능한 기능들을 예시로 구현되었다.
Harbor Github

여기서 토큰단위의 허용가능한 기능은 토큰 거래에 있어 ‘잠금기능’과 ‘분할 전송기능’이다. 위의 코드로 구현된 함수들은 각각 토큰전송을 잠그거나 풀 수 있도록 하며 1보다 낮은 소수점 단위로도 거래가 될수 있도록 추가적인 기능을 부여할 수 있다.

한편, 참여자단위에서는 이 토큰 컨트랙트의 관리자가 토큰을 전송하고 전송받을 수 있는 권한을 setPermission 함수로 해당 R-Token에 참여하는 참여자의 이더주소를 입력받아서 관리를 할 수 있도록 구현되어 있다.

  • R-Token Example : Tokenized REITs
Harbor.com
https://hubatcolumbiareit.com/#tokenization

Harbor는 증권형 토큰 플랫폼으로서 실제 진행하는 첫번째 프로젝트로 Columbia REITs로 South Carolina University 근처의 건물을 대상으로 REITs를 토큰화하여 STO를 모집하고 있다. 토큰 하나당 최소 투자금이 21,000$ 인 것으로 보아 이번 투자에서는 PartialTransfer 기능을 적용하지는 않은 것으로 보인다. 투자자는 Invest now를 클릭해서 Harbor에서 제공하는 간편한 회원가입절차와 KYC 인증을 거친 뒤 투자를 시작할 수 있는데 개인적으로는 Micro Investment를 위한 STO가 다수 진행되어야 일반 투자자들을 상대로 진입장벽을 낮추어 지속가능한 생태가 형성이 된다고 생각한다.

Securitize (DS-Protocol)

증권형 토큰의 생태구성에 필요한 통합 서비스를 제공하는 플랫폼

Securitize는 DS(Digital Security)-Protocol을 통해, 증권형 토큰의 제공 뿐만 아니라 증권형 토큰의 라이프사이클을 관리하는 솔루션을 제공한다. 현재 Securitize는 소유권을 디지털화 하기위한 새로운 블록체인 프로토콜 및 아키텍쳐를 구현하고 있는 중이다. 다른 플랫폼들보단 이들의 프로토콜 내에서 자사의 애플리케이션 및 타사의 것까지 지원하는 인프라를 구축하려고 하는 것이 두드러진 특징으로 보인다.

Securitize의 디지털 소유구조 <출처: Securitize.io>
  • DS Token : DS Protocol에서 서비스를 사용할 때 쓰일 기본 단위의 토큰이다. DS Protocol은 현재 프로토콜의 기본 인프라인 DS Service를 개발하여 디지털 증권의 라이프 사이클 관리 및 디지털 규정 준수를 지원할 계획이다.
  • DS Services : DS Protocol에 참여하는 모든 이해관계자는 다음 네가지 기본적인 서비스를 이용할 수 있는데, 프로토콜의 스마트 컨트랙트에는 다음 네개의 서비스가 포함된다.

Trust Service : 거래소와 투자자 같은 다른 참여자 및 DS App의 승인을 기존 발급자가 사용할 수 있게 한다.

Registry Service : 디지털 증권의 라이프사이클에서 각기 다른 상호작용을 할 것이라 기대되는 투자자에 대한 KYC 정보를 블록체인 상에서 등록 및 관리할 수 있게 만들어 주는 역할을 한다.

Compliance Service : DS Token에 적용이 가능한 규정을 코드로 구현하여 토큰의 소유권 및 거래가 가능하도록 만들어 준다.

Comms Service : 커뮤니티 서비스로, 커뮤니티의 공시정보를 투자자에게 제공합니다. 아마 우리나라의 dart.fss.or.kr와 같은 전자공시시스템과 유사한 서비스를 제공할 것으로 예상한다.

  • DS App : DS Protocol은 디지털 증권의 전체 라이프 사이클을 토큰화 된 경제적 권리의 소유와 관련된 이벤트를 처리하는 것으로 간주한다. 주로 증권화 토큰이 거래되는 거래소들이 디지털 방식으로 안전한 생태계를 꾸릴 수 있도록 통합시켜주는 API를 제공함으로써 UX를 향상시키려 하는 것이 목적이다.
디지털 증권의 인프라” 출처 : Securitize.io

플랫폼으로서 다른 프로젝트에 비해 Securitize가 탈중앙적인 방법으로 플랫폼을 유지하는데에 제법 구체적인 비전을 제시하고 있지만 오픈소스로 운영되는가에 대한 의구심이 조금 생겼다. 왜냐하면 이들의 깃허브 레포지토리에 DS-Token에 대한 어떤 컨트랙트도 예시로 제공되는 것이 없었기 때문이다. 하지만 Blockchain Capital과 함께 협업하여 운영하는 BCAP 토큰의 투자참여 페이지를 통해 간접적으로 나마 Securitize가 제공하는 서비스의 확인은 할 수 있었다.

securitize의 DSToken 레포지토리. 출처: Github
https://dashboard.bcap.securitize.io/

SPiCE VC가 규정을 준수할 목적으로 증권형 토큰 플랫폼을 구축한 것이 바로 Securitize이다. 이를 통해 발행한 Blockchain capital의 BCAP 토큰은 현재 여기에서 기존의 ERC20로 발행된 상태에서 DS Protocol의 규격대로 증권형토큰의 형식을 따르는 토큰으로 업그레이드 할 수 있다.

BCAP 플랫폼을 가입하면서 느꼈던 특이점은 Securitize가 기존의 KYC 과정이 참여자의 여권사진과 우편번호, 국적등을 필수적으로 요구했던 것과 같이 필수정보를 입력한 뒤, 토큰을 거래할 수 있는 이더리움 지갑에 대한 인증까지 요구한다는 것이었다. 몇 번 KYC를 해본 경험이 있는 필자는 무리없이 요구사항을 만족시킬 수 있었지만 새로운 유입자들이 이런 불편한 절차를 진행하면서 많은 시행착오를 겪을 수 밖에 없을 것이다. 플랫폼을 목표로하는 서비스들은 앞으로 UX 측면에서 더욱 간소한 절차로 사용자 친화적인 서비스가 되어야 할 것이다.

Securitize에서는 개발자를 위한 위와 같은 Landing page 구현을 여기에서 제공하고 있다. 이 부분은 최종 사용자 입장에서 보여지는 부분에 대한 이슈들만 공개되어 있다. 스마트 컨트랙트와 같은 중요한 구현체에 대한 공개되지 않았다는 것이 한계점으로 보여진다.

나가며

우리는 지금까지 STO로 트렌드가 변화해온 이유와 다양한 STO 플랫폼들의 등장 및 구현체에 대해 알아보았다. 증권형 토큰은 기존의 증권과 다르게 직접 디지털 자산 자체에 원하는 기능과 준수해야 하는 규정들을 코딩할 수 있다는 것이 핵심이다. 이용자 입장에서 본인이 지갑에 증권형 토큰을 보유하고 있기만 하면 증권형 토큰이 제공하는 각종 증권의 기능이 알아서 동작한다. 이는 당국이 제시하는 규제를 준수하기 위해서 필수적이다.

하지만, 과연 STO 플랫폼은 기능 면에서 본질적으로 기존 증권사의 서비스와 같다고 했을때, 탈중앙화의 메리트 (“과연 중앙화 되지 않은 플랫폼을 이용하여 얻을 수 있는 비용절약 효과가 유의미한지”)나 프라이버시 문제 (“만약 KYC/AML이 블록체인 상에서 이루어지면서 공개된 보유자들의 정보에 대한 보안 문제)”에 대한 의문이 여전히 남는다.

증권형 토큰에 대한 표준이 이제 막 정립되기 시작하고, 증권형 토큰이 규제를 선도하는 상황에 놓여 있으니 ‘이제는 STO의 시대다!’ 라는 희망에만 부풀어 ICO가 겪었던 시행착오들을 답습하기 보단 STO를 이용하기 전, 철저한 시장에 대한 검증과 연구, 규제당국의 시기적절한 법령의 검토와 도입이 함께 이루어져야 할 것이다.

[디사이퍼 증권형 토큰 아티클 시리즈]

1) 증권형 토큰 개요
- 증권형 토큰은 무엇이고, 어떻게 그리고 어디에 쓰일 수 있는가?

2) STO 플랫폼은 왜 필요한가?
- STO 플랫폼들이 왜 등장하게 되었고, 기존의 토큰 발행 플랫폼과는 어떠한 차이가 있는가?

3) STO 플랫폼 뜯어보기 및 code review
- STO 플랫폼을 파헤져보고, 기존 플랫폼과의 비교대조

4) Venture Capital 토큰
- 증권형 토큰을 통해 자금을 조달하는 Venture Capital에 대하여

5) 부동산 STO
- 부동산 증권형 토큰이란 무엇이고, 한계점은 무엇인지에 대하여

6) 증권형 토큰 규제 Part 1, Part 2, Part 3
- 그래서 증권형 토큰, 법적으로 가능한 것인가?

7) 증권형 토큰의 응용
- 파생상품 토큰: 파생상품과 블록체인의 만남

References

Harbor Whitepaper (https://harbor.com/rtokenwhitepaper.pdf)

DS-Protocol Whitepaper (https://securitize.sfo2.digitaloceanspaces.com/whitepapers/DS-Protocolv1.0.pdf)

--

--