단일 블록체인에서 다중 기초 토큰 지원

QuarkChain
QuarkChain Official
6 min readAug 23, 2018

새로운 토큰(예: ERC20 토큰)을 위한 일반적인 스마트 계약을 통해 모든 사용자는 블록체인에 기초 토큰(예: ETH)을 지불함으로서 토큰을 쉽게 생성할 수 있습니다. 그러나 이러한 스마트 계약 기반 토큰은 기초 토큰과 비교하여 몇 가지 근본적인 제한이 있습니다(일반성을 잃지 않고, 우리는 ETH를 기초 토큰으로 사용하고 ERC20토큰을 스마트 계약의 기초 토큰으로 사용합니다)

스마트 계약을 기반으로한 토큰으로 지불하여 스마트 계약 거래를 수행하는 것은 복잡합니다.

ERC20 토큰을 통해 분산형 서비스 또는 응용 프로그램에 지불하는 것은 토큰의 주요 기능 중 하나입니다.

예를들면

- Quantstamp 감사 서비스 (https://quantstamp.com/qsp-network/instructions)를 구입하기 위해 QSP (ERC20 토큰)을 지불해야 합니다.

-크라우드 세일 스마트 계약에서는 다른 ERC20 토큰을 지불 수단으로 받고, 새로운 토큰을 제공할 수 있습니다.

사용자가 스마트 계약을 결제 하고 나머지 거래를 직접 ETH로 결제하는 서비스와 달리, 사용자가 스마트 계약 주소로 ERC20 토큰을 보내는것은 ERC20을 이용해 거래를 하는 사용자들의 공통된 실수입니다. 이렇게 하면 ERC20 지갑의 주소 잔액만 수정되고 나머지 거래(서비스)은 결제 완료되지 않습니다. 오류가 발생하면 사용자가 환불을 요청하거나 스마트 계약 보유자가 나머지 거래를 수동으로 완료해야하는데, 이 두 가지 모두 서로에게 고통스럽습니다.

다음은 ERC20 토큰을 지불하여 스마트 계약 거래를 진행하는 올바른 단계입니다.

1. ERC20 스마트 계약의 승인 방법을 호출하고 발신자로서 스마트계약의 주소와 양을 설정합니다.

2. 스마트 계약으로 진행하는 목표를 ERC20으로 지불하는 거래를 완료하기 위해 호출합니다.

ETH를 통해서 하는 거래중에서 2단계는 1단계에 비해 상당히 불편합니다. 게다가, ERC20토큰을 통한 지불방법에서 같은 스마트 계약 주소에 많은 지불이 이루어 지면, 이중 지출을 허용합니다.

스마트 계약에 기초한 토큰으로 지불을 받은 스마트 계약 거래를 실행하는것은 가스로 기초 토큰을 필요로 합니다.
스마트 계약 거래를 실행하려면, 가스로서 ERC20토큰과 ETH을 지불해야합니다. 즉, 사용자는 거래를실행하기 전에, 양쪽 토큰의 균형이 충분이 있는지 확인할 필요가 있습니다.

단일 블록체인 상에서 다중 기초 토큰을 허용

앞서 말한 걱정들에 근거하여, 다양한 기초 토큰을 단일 블록체인상에서 지원하는것은 , dApps와 사용자 모두에게 매우 중요하고 유익하다고 생각하고 있습니다.

-기존의 기초 토큰에 표시되는 충분한 가스를 사용자가 지불하면, 사용자는 기초 토큰을 만들수 있습니다.

-사용자는 아무 기초 토큰을 교체하기 위해서 단일화된 지불방법을 이용할 수 있고, 나머지 거래를 완료할 수 있습니다.

-사용자는 아무 기초 토큰을 거래를 위한 가스로서 사용할 수 있습니다.

앞으로는, 우리는 이 특징을 어떻게 가능하게 하는지에 대해 자세하게 설명할것입니다.

토큰 ID의 소개

각 기초 토큰은 0부터 시작되는 토큰 ID와 관련되고 토큰 ID가 0의 기초 토큰은, 기초 토큰의 조상이(ETH, QKC)라고 부릅니다. 각 사용자 계정(블록체인 모델을 고려한), 한개의 정수 가치를 잔액에 포함하지 않고,잔액은 토큰 ID입니다. => 사용자의 모든 기초 토큰의 잔액을 포함 시키기 위해서 잔액을 지도화 합니다.(Patricia Trie에 의해 수행됨)

다른 기초 토큰을 이용한 거래

게다가 가스 가격, 시작 가스, 가치, 등 공통된것 중에 각각의 거래는 추가적으로 두개를 더 필요로 합니다.

-gasTokenId: 가스를 지불하고 하는 기초 토큰을 보여주는 정수 필드.

-transferTokenId: 목적지로 어떤 기초 토큰이 변환 되는지를 보여주는 정수 필드.

채굴자는 각 거래가 다른 gasTokenId를 갖는 경우에서도, 블록 내에 유효한 거래를 포함하는 것은 무료입니다. 그러나, 채굴자의 경제적 이익을 최대로 하려면, 토큰(가스가격)의 가격 설정의 외부 오라클 소스에 접속하여 거래(griceP)의 값을 결정하고 그 가치를 등급화 하는것을 거래에 포함할 필요가 있습니다.

기초 토큰을 새로 만들기

모든 사용자는 다음의 절차로 새로운 기초 토큰을 만들 수 있습니다.

1.gasPrice, gasTokenId, total supply및 genesis address를 파라미터로서 포함하여 기초 토큰을 만든 거래내역을 전송합니다.

2.거래가 실행될 때(블록에 포함), 거래는 a), 토큰 ID카운트로 불리는 글로벌 정수에 올리고 새로운 토큰 ID로 값을 받으세요. b) 총 공급량으로서 토큰ID의 원래 주소의 잔액을 설정하세요.c) 성공후에 새로운 토큰ID를 받으세요.

다중 기초 토큰에 대한 VM의 지원

다중 기초 토큰을 지원하기 위해 다중의 OP코드가 VM에 추가됩니다.

-GAS_TOKEN_ID: 가스 지불에 사용되는 현재 토큰ID의 정수를 되돌려주고 거래내역에서 변할수 없습니다.

-TRANSFER_TOKEN_ID: 값의 전송에 사용되는 현재의 토큰 ID의 정수를 되돌려줍니다.

-XCALL, XDELEGATECALL등: 서브 루틴의 TRANSFER_TOKEN_ID를 변경하기 위해서 특별한 파라미터가 필요합니다.

대부분의 스마트 계약은 GAS_TOKEN_ID를 신경 쓰지 않을지도 모릅니다. 그러나, TRANSFER_TOKEN_ID가 일치하지 않는 경우(예를 들어, 지불용 토큰 ID가 필요)에는 거래를 되돌릴 수 있습니다. 게다가, XCALL에서는, 스마트 계약은 다른 가치에서 가치를 이전할 수 있습니다, 크라우드세일, 탈중앙화 거래소같은 앱을 가능하게합니다.

다른 생각들

두개의 가능한 강화 조건이 있습니다.

-토큰 ID로 문자열을 사용합니다.예를들면, 사과, 오렌지

-기초 토큰 인식 주소의 포맷. 우리는 토큰 정보를 추가 함으로써 주소를 강화 할 수 있습니다.예를들면,
사과:0xabc, 가스로 원래 토큰을 사용하고 apple토큰을 이용해 주소에 지불하는것을 의미합니다.

-우리는 또한 특별한 거래를 필요로 합니다. a)보유자로 부터 새로운 토큰을 이슈화합니다. b)기초 토큰의 보유자를 바꿉니다. 이것은 보유자가 인플레이션 모델을 위해 새로운 기초 토큰을 만들거나 기초 토큰의 총 공급량을 고정할수 있도록 허락합니다.

요약

이 기사는, 우리는 사용자가 새로운 기초 토큰을 만들고 이것을 지불과 가스로서 사용함으로서, 블록체인 시스템이 다중 기초 토큰을 어떻게 지원하는지에 대해서 묘사하였습니다. 다중 기초 토큰을 지원하는것은 기존 dApps을 향상 시킬수 있으며 우리는 블록체인 다음 세대의 중요한 특징이 될 것이라고 믿습니다.

[출처] 단일 블록체인에서 다중 기초 토큰 지원|작성자 QuarkChain 쿼크체인

--

--