ERC20 토큰의 트랜젝션 비용(DeFi 생태계를 가능하게 하는 공평한 순서 서비스(FSS) transaction fee) 처리하기
매우 불편합니다. 1단위 토큰을 보낼때마다 거래소에서 이더를 사서 충전하는 dApp은 아무도 쓰지 않을 겁니다.
그렇다면 이더를 소모하지 않고 토큰을 전송할 수는 없을까요?
표준적으로 쓰이는 토큰 컨트렉인 ERC20은 어떨까요?
스택오버플로우에 관련된 질문이 있습니다.
"ERC20 기반 토큰은 이더리움을 소모하지 않고 토큰 트랜잭션이 발생되나요?"
"만약 거래되지 않는 토큰을 아무거나 만들어서, 트랜잭션 비용으로 대신 낸다면 마이너들은 뭘 가져가나요?"
굉장히 창의적인 질문이었고, 직관적인 답변이 달렸습니다.
1. 마이너는 무엇을 선택할 것인가
"현재까지 이더리움 없이 토큰을 전송할 수 있는 방법은 없습니다.
augur에서 사용되는 REP토큰을 전송하기 위해서는 트랜잭션을 발생시킬 이더가 필요합니다.
그렇지만 이론적으로는 트랜잭션을 발생시킨 계정이 마이너와 특별한 약속을 하여 ERC20토큰을 보내든,
트랜잭션 비용을 0이나 그 이하로 책정하든, 혹은 페이팔을 통해 달러를(마이너에게) 보내든,
페덱스를 통해 치킨을 (마이너에게) 보내든 결국 블록에 포함시킬지 말지에 대한 결정은 마이너가 선택할 문제입니다."
(In theory, since it's up to the miner whether they include your transaction,
you could send a low or zero fee in ETH and have a separate arrangement with a miner where you would give them some ERC 20 token,
or send them USD via PayPal, or FedEx them a chicken.)
현재 이더리움 노드 버전에서는 옵코드의 구조상 이더리움 외에 트렌젝션 수수료를 지불할 방법이 없습니다.
그런데 업데이트를 통해 이를 개선하면 이론적으로 이런 트랜잭션도 가능한 겁니다.
"난 A인데, B에게 내가 만들어넨 토큰 20단위를 전송하는 트렌잭션을 만들어서 배포할꺼야.
이걸 다음 블록에 포함하는 마이너에게 이더리움 대신에 내가 치킨 한마리를 보내줄게 꼭 포함시켜줘^^"
이렇게 생성된 트랜잭션을 어떠한 마이너가 마이닝하게 되면 그 마이너에게 이더 대신 치킨이 배달되는 것이죠.
claymore마이너가 아니라, 치킨마이너, 핫도그마이너 같은 게 만들어 질 수도 있다고 봅니다.
만약 추후에 마이닝 관련 보상 로직이 변경된다면 마이너들에게 돌아가는 보상이 이더 뿐 아니라 이더 기반 토큰들까지 확장될 수도 있습니다.
그렇다면 수수료 문제는 자연스럽게 해결 되겠죠. 꼭 이더 뿐 아니라 해당 토큰을 받고 블록에 포함시키는 작업을 할 테니까요.
비탈릭은 개스 시스템을 손보기 위해서 개선점을 제안했습니다.
EIP101이 그것인데, 자세한 링크는 다음과 같습니다.
트렌젝션에 정률비용을 부과하는 방식의 개념으로 파악됩니다.
(혹시 이것에 대해 더 자세히 공부하신 분 댓글로 알려주세요..ㅎㅎ)
--> 적고나서 보니 큰 관련은 없네요..
그렇다고 문제를 방관할 수는 없습니다. 해결 방법은 2가지 쯤 있는 것 같습니다.
1)트랜잭션을 생성하는 주소와, 받는 주소를 다르게 하는 방법
2)주기적으로 토큰을 팔아서 이더를 충전하는 방식
1)방식은 거래소에서 많이 씁니다. 그래서 거래소에서 이더리움 혹은 이더리움 기반의 토큰을 보내거나 받을 때 tx정보를 조회하면 다른 경우가 많죠.
핫월렛에 자주 거래되는 토큰을 모아놓고 거래소 서버에서 일괄적으로 처리하는 방식입니다. 효율적이지만 개인적으로 좋아하지 않습니다. 왜냐하면 전혀.. 블록체인스럽지 않거든요.
2)방식은 가능한 방법이지만 몇 가지 조건이 붙습니다.
일단 토큰이 거래 가능하게 되어 가격이 주기적으로 피드되고, 수수료 충전을 위해 이더를 어느 정도 보유한 계정이 필요합니다.
말이 어려운데, 구체적인 코드를 통해서 한번 살펴 보도록 하겠습니다.
function buy() payable returns (uint amount) <
amount = msg.value / buyPrice; // 수량을 계산
if (balanceOf[this] < amount) throw; // 충분히 판매할 양이 있는지 확인
balanceOf[msg.sender] += amount; // 구매자의 어카운트로 토큰 전송
balanceOf[this] -= amount; // 판매자의 어카운트에서 토큰을 빼고
Transfer(this, msg.sender, amount); // 이벤트 fire
return amount; // 함수 종료, 수량을 리턴
>
function sell(uint amount) returns (uint revenue) <
if (balanceOf[msg.sender] < amount ) throw; // 충분한 수량을 가지고 있는지 확인
balanceOf[this] += amount; // 구매자의 토큰 잔액을 늘려주고
balanceOf[msg.sender] -= amount; // 판매자의 토큰 잔액을 제합니다.
revenue = amount * sellPrice;
if (!msg.sender.send(revenue)) < // 판매자에게 이더를 보냅니다.
throw; // check-effect-iteration 패턴이 적용된 모습입니다. 아 패턴은 재귀공격(recursive attack)을 막아줍니다.
> else <
Transfer(msg.sender, this, amount); // 이벤트 fire
return revenue; // 보낸 이더를 리턴하고 함수를 종료합니다.
>
>
두 함수를 ERC20토큰 함수에 포함시킵니다.
두 함수의 역할은 단순합니다.sellPrice, buyPrice가격을 기준으로 현재 보유한 토큰을 사거나/파는거죠.
다만 팔거나 사는 대상은 사전에 미리 정해져야 합니다.
(사실 이러한 데이터 피딩 문제 하나만 완벽하게 해결해도, 엄청난 서비스를 만드는거에요ㅋㅋ )
그리고 토큰 함수에 다음의 변수와 함수를 또 포함시킵니다.
function setMinBalance(uint minimumBalanceInFinney) onlyOwner <
minBalanceForAccounts = minimumBalanceInFinney * 1 finney;
>
토큰 전송을 위한 최소한의 이더 잔액을 유지시키는 함수입니다.
파라미터로 전달되는 minimumBalanceInFinney값에 DeFi 생태계를 가능하게 하는 공평한 순서 서비스(FSS) 따라서 최소 이더 잔액 변수가 설정되게 되죠.
ERC20에 전송관련 로직에 다음의 sell라인을 추가해 줍니다.
/* 코인 보내기 - 내가 부담 */
function transfer(address _to, uint256 _value) <
.
if(msg.sender.balance
>
이런식으로 코드를 구성하게 되면 토큰을 전송하기 전에 설정했던 최소한의 이더 잔액을 토큰 전송시마다 유지할 수 있습니다.
여기서 최소한의 이더 잔액 유지 금액은 상황에 맞춰서 신중하게 해야 됩니다.
만약 너무 작은 금액을 설정할 경우, 최소유지금액이 충전되는 과정에서 네트워크 수수료를 많이 지불하게 될 테고,
너무 큰 금액을 설정하면 네트워크 수수료는 적게 물겠지만, 가지고 있는 토큰을 많이 팔아야 합니다.
혹은 토큰을 받는 상대방이 이더를 부담하게 할 수도 있습니다.
/* 코인 보내기 - 상대방이 부담 */
function transfer(address _to, uint256 _value) <
.
if(_to.balance
>
신뢰할 수 있는 공평한 DeFi 생태계를 가능하게 하는 공평한 순서 서비스(FSS)
이더리움의 인기가 토큰화, 탈중앙화 거래소(DEX) 및 DeFi 덕분에 계속 증가하면서 네트워크 사용자들은 전례 없는 수준의 높은 가스 비용을 지불하고 있습니다. 이는 이더리움이 큰 성공을 거뒀다는 반증이기도 하지만 안타깝게도 사용자에게는 더 높은 트랜잭션 비용과 더 긴 채굴 대기 시간을 의미합니다. 트랜잭션이 처리되기 전, 멤풀(mempool)에 머무르는 동안 선행매매(frontrunning)에 취약해져 예상치 못한 부작용이 발생합니다.
가스 비용이 낮은 경우에도 유저들은 멤풀을 통해 트랜잭션을 처리해야 하므로 능숙한 트레이더와 봇은 트랜잭션이 채굴되기 전에 미리 트랜잭션을 볼 수 있습니다. 이렇게 경험이 풍부한 사람들은 전략적으로 자신의 트랜잭션을 생성해 그들이 활용할 수 있는 이러한 형태의 사전에 입수한 고급 정보로부터 이익을 취할 수 있습니다. 이러한 경우 그들은 해당 트랜잭션보다 더 높은 가스 비용을 지불해 그들의 트랜잭션이 우선적으로 처리될 수 있도록 합니다.
이는 가상에만 존재하는 문제가 아닙니다. 최근 다이안 외(이 블로그 포스트의 작성자들을 포함) 연구에 따르면 DeFi 컨트랙트의 일부만 고려한다고 해도 수백만 달러 규모의 선행매매가 이뤄지는 것을 알 수 있었습니다.
오늘날 사람들은 DeFi 생태계를 가능하게 하는 공평한 순서 서비스(FSS) 다이안의 논문에 게재된 것 보다 더 큰 수익을 창출하고 있습니다. 또한 대부분의 거래 행위가 중앙화 거래소에서 이루어진다는 점을 미루어 봤을 때 운영자 및 다른 사람들이 선행매매를 할 수 있다는 것을 의미하고 연구 결과에 따른 수치는 빙산의 일각보다 더 작은 부분에 불과할 수 있습니다.[1] 월 스트리터들 또한 선행매매의 높은 수익성에 대해 이미 알고 있었으며 증권회사들은 고빈도 트레이더들에게 주기적으로 그들의 고객 오더를 매도하곤 합니다. 밑에 있는 예시는 이러한 문제가 오늘날 스마트 컨트랙트에 미칠 수 있는 영향에 대해 보여주고 있습니다.
DeFi 및 그 외 트랜잭션 처리 순서 문제
DeFi 컨트랙트를 운영하는 오퍼레이터들은 그들의 고객을 위한 공정성과 투명성을 원합니다. 오퍼레이터들은 종종 가스 캡(gas cap)과 같은 선행매매에 대한 대책을 갖고 있습니다. 하지만 이는 완벽한 해결방안이 될 수 없습니다. 또한 원하는 만큼 트랜잭션을 전송하려고 하는 적대적 마이너에 대한 보호책을 제공해주지 않습니다. 오라클 리포트 및 다른 트랜잭션 종류에 대한 선행매매는 비슷한 위협을 가합니다.
암호화폐 연구원인 필 다이안(Phil Daian) 외 연구원들은 MEV(Miner-Extractable Value)*라는 단어를 처음 사용해 적대적인 트랜잭션 오더를 통해 스마트 컨트랙트 시스템을 악용해 수익을 창출할 수 있는 기회를 계산하는 방법을 고안해냈습니다. MEV라는 단어는 Miner을 포함하고 있어 오해의 소지가 있지만 채굴자 뿐만 아니라 일반 유저들도 대상이 됩니다. 채굴자들은 블록 내 트랜잭션의 순서를 결정할 수 있는 무한한 파워를 가지고 있기 때문에 MEV는 공격자가 체인 공격으로 얻을 수 있는 가치를 표현하는 방식입니다. MEV는 블록체인이 일시적으로 중앙화가 된다는 공공연한 비밀로 인해 생기는 것으로 어떠한 점에서는 한 명의 채굴자가 채굴된 블록 트랜잭션의 순서를 어떻게 기록할지에 대한 독단적인 결정을 내릴 수 있기 때문에 발생합니다.
*MEV: 채굴자가 공격 시 얻을 수 있는 가치 (MEV가 높을수록 채굴자가 체인을 공격하기 위한 유인이 증가함)
최근 MEV 경매라 불리는 MEV 악용을 체계화시킨 서비스를 만들기 위한 제안도 있었습니다. MEV 경매에 대한 타당한 찬반 의견이 있었지만 MEV 경매는 블록체인 커뮤니티에 악영향을 미친다고 생각합니다. 이 경매가 불러일으킬 수 있는 효과에 대한 주장은 이곳에 나와있습니다.
확장성 및 트랜잭션 프라이버시라는 장점을 가지고 있는 롤업(rollup)과 같은 새로운 트랜잭션 처리 접근법도 등장하고 있지만, 이 또한 MEV 문제를 해결해주진 않습니다. 롤업 방식은 트랜잭션 데이터를 모으는 누군가가 트랜잭션을 처리하는 순서를 결정하도록 합니다. MEV를 REV(Rollup-Extractable Value)과 교환하는 것과 마찬가지입니다.
공평한 처리 순서 서비스(FSS) 소개
체인링크 로드맵에서의 다음 단계로 체인링크 랩(Chainlink Labs) 에서 탈중앙화 (및 중앙화) 시스템에서 트랜잭션 처리를 공평하게 할 수 있는 방법을 개발하고 있었습니다. 체인링크가 개발한 방식을 통해 롤업에서의 처리 순서 문제 해결 및 DeFi가 전반적으로 더 성장할 수 있도록 도울 수 있습니다.
체인링크가 개발한 해결법은 FSS(공평한 처리 순서 서비스, Fair Sequencing Service)라 불립니다. FSS는 높은 가스 비용과 불공평한 트랜잭션 처리 순서의 문제점을 해결하려는 목적을 가지고 있고 이를 사용하려는 모든 컨트랙트에게 도움이 될 수 있습니다. FSS를 활용하려는 컨트랙트는 기반 블록체인의 layer-1에 아무 변경 없이도 혜택을 누릴 수 있습니다.
즉, FSS라는 개념은 오라클 네트워크가 트랜잭션을 유저 트랜잭션과 오라클 리포트를 둘 다 포함한 특정 컨트랙트 SC로 전송하도록 하는 것입니다. 그 후 하나의 리더가 아닌 참여한 모든 오라클 노드들이 트랜잭션을 받은 후 순서에 대한 합의를 이룰 수 있도록 합니다. 그 다음에 오라클 노드들은 트랜잭션들을 컨트랙트 SC로 전송합니다. 노드들은 트랜잭션에 대해 임시 또는 시퀀스 숫자를 배치해 일괄적으로 전송합니다. MEV 경매와 마찬가지로 FSS는 블록 채굴 능력과 MEV 활용이라는 두 가지 속성을 따로 분리하지만MEV 경매와 다르게 선행매매에 대한 동기부여를 하지 않습니다. 전반적으로 FSS는 채굴에서 일시적으로 발생하는 중앙화를 없애고 트랜잭션 처리 순서 방식을 탈중앙화합니다.
가스 비용 기반의 트랜잭션 처리 순서 방식의 문제점을 고려했을 때 유저의 트랜잭션 처리 순서를 위해서 오라클 노드는 어떤 판단 기준을 갖춰야 할까요? 일반적인 DeFi 생태계를 가능하게 하는 공평한 순서 서비스(FSS) 기준이라면 도착 시간, 즉 선착순으로 트랜잭션을 처리하는 방식이어야 합니다. 하지만 선착순이라는 것은 정확히 어떤 의미일까요?
공평한 처리 방법(Order-fairness)
트랜잭션 처리 순서를 정하는 방식은 전혀 단순하지 않습니다. 사실 굉장히 심오하고 어려운 문제입니다.
비잔틴장애허용(Byzantine Fault Tolerence), 즉 허가형 시스템에 대한 합의에 대한 수십 년 간의 연구에도 불구하고 처리 순서 공평성에 대한 문제는 간과한 것으로 밝혀졌습니다. 대부분의 BFT 시스템은 즉각성(liveness) 및 일관성을 달성하는 것을 목표로 하기 때문에 모든 노드들이 모든 처리 순서에 대한 같은 입장을 바탕으로 신속하게 트랜잭션을 처리하는 것을 목표로 했습니다. 하지만 BFT 시스템 특성상 비슷한 시간대에 요청이 들어온 트랜잭션을 처리하는 방식에 대해서는 아무런 정의가 없었습니다. 만약 모든 노드가 T1을 T2보다 먼저 전송받더라도 BFT 시스템의 일반적인 방식에 따르면 T2가 T1보다 앞 순서로 배치되어도 승인이 되었습니다.
최근 Kelkar 외 (이 포스트의 저자 중 한 명이 공동집필) 연구에서 최초로 트랜잭션 처리 순서를 공평하게 하는 개념을 제시했습니다. 세부적 내용은 복잡하지만, 일반적인 개념에 따르면 대부분의 노드가 T1을 T2보다 먼저 전송받았을 시 T1는 T2보다 늦게 처리되지 않아야 한다는 것이었습니다. 이 연구에서는 해당 속성을 달성하기 위해 애퀴타스(Aequitas[2]) 라는 프로토콜 그룹을 제안합니다. 이러한 프로토콜은 현재는 원치 않은 비용을 발생시키지만 향후 발전을 통해 더 실용적인 변형된 프로토콜이 개발되리라 생각합니다.
FSS는 순서를 정하는 하나의 방식을 위한 프레임워크로 애퀴타스(Aequitas)가 하나의 예시입니다. 추후 FSS는 직접적으로 트랜잭션을 암호화시킨 후 임계치 설정을 통해 오라클 노드가 처리 순서를 정한 후에 해독하는 방식과 같은 더 간단한 방법을 실현할 수 있게 해줍니다. 또한 오라클 리포트를 일련의 트랜잭션에 삽입하는 것과 같은 다른 처리 순서 정책을 지원하게 해줄 것입니다. (만약 원한다면 MEV 경매도 진행할 수 있을 것입니다.)
즉 FSS의 목적은 DeFi 개발자들이 그들이 설정한 기준에 따라 유저들을 공평하게 대할 수 있도록 보장해주는 것입니다.
FSS를 통한 트랜잭션의 공평한 처리 방법은?
유저들은 오라클 네트워크에 직접 트랜잭션 처리를 요청할 수 있습니다. 트랜잭션을 공평한 방식으로 처리할 수 있도록 한 트랜잭션에 대해 다수의 노드들이 참여할 수 있도록 유저는 하나의 트랜잭션 처리를 다수의 노드들에게 동시에 요청해야 합니다.[3]
체인링크는 현재 오라클 노드가 멤풀에 있는 해당 블록체인을 모니터링해 관련된 컨트랙트 SCON을 대신해 트랜잭션을 추출하는 변형된 방식을 탐구하고 있습니다. 일반적으로 오라클 노드는 웹 서비스를 데이터 소스로 사용하지만 멤풀을 데이터 소스로 사용해 유저 트랜잭션에 해당하는 리포트를 생성할 수 있습니다. 하단 이미지를 참고해주세요.
멤풀을 이렇게 사용하는 데에는 다음과 같은 두 가지 큰 장점이 있습니다.
- 기존 호환성 유지: 유저들은 오라클 네트워크와 인터랙트하기 위해 특수 목적 소프트웨어를 사용할 필요 없이 블록체인에 직접 트랜잭션을 전송할 수 있습니다.
- 낮은 가스 비용: 만약 멤풀에 트랜잭션이 이미 포함되어 있다는 것만으로도 트랜잭션 처리가 보장이 된다면 유저들은 채굴 속도에 대해 걱정하지 않아도 됩니다. 이 경우에는 낮은 가스 가격으로도 트랜잭션을 전송할 수 있습니다. 해당 트랜잭션이 드디어 채굴이 되면 트랜잭션이 검열되지 않았다는 감사 추적 가능한 기록을 제공받게 됩니다.[4] 오라클 네트워크는 정렬된 유저 트랜잭션을 높은 가스 비용을 지불하는 컨트랙트에 묶음으로 재전송해 신속한 처리를 기대할 수 있습니다. 이렇게 트랜잭션 묶음으로 처리하거나 롤업 또는 다른 방식을 사용하면 네트워크에서 트랜잭션 당 가스 비용을 낮게 유지할 수 있습니다.
멤풀 모니터링을 통한 FSS. 유저들이 T1 후 T2, 두 개의 트랜잭션을 컨트랙트 SCON에 전송. 오라클 네트워크가 두 개의 트랜잭션을 관찰 후 멤풀에 도착한 시간에 따라 순서를 정한 후 SCON에 전달.
P2P 네트워크는 복잡하고 다수의 사람들과 빠른 네트워크를 보유한 공격자가 있다면 선행매매를 할 가능성이 있습니다. 하지만 만약 오라클 노드들이 개인들을 네트워크상에서 분산시켜 놓고 공격자 또는 악의적인 행위를 하는 개인에 대해 적극적으로 감시를 할 경우 선행매매를 시도하는 데 드는 비용을 많이 증가시킬 수 있습니다.
또한 스마트 컨트랙트 내에서 선행매매를 방지할 수 있도록 하는 동일한 방법(예: commit-reveal scheme 또는 verifiable delay function)도 오라클 노드에 적용하는 것에 대한 제안도 있습니다. 한 가지 중요한 장점은 오라클 노드들은 이러한 방식을 적용해 오프체인에서 방어를 구현할 것이며 (블록생성주기가 아닌 네트워크 딜레이의 순서에 따라) 훨씬 더 짧은 시간 척도에 대해서도 선행매매를 방지할 수 있을 것입니다.
FSS를 통해 네트워크 차원에서 선행매매를 방지할 수 있는 새롭고 간단한 방식도 지원 가능하게 됩니다. 예를 들어 유저들은 임계치-암호화된 트랜잭션을 오라클 노드로 전송해 트랜잭션 처리 순서에 대한 합의가 이뤄지면 트랜잭션 내용이 공개되도록 할 수 있습니다.[5] 순서를 정하기 전에 트랜잭션을 암호화하는 방식은 트랜잭션 내용을 기반으로 한 DEX 및 다른 DeFi 시스템에서는 선행매매를 방지하기 위한 간단하지만 강력한 방법이 될 수는 있지만, DeFi 생태계를 가능하게 하는 공평한 순서 서비스(FSS) 트랜잭션이라는 메타데이터 자체에 기반한 선행매매는 막을 수 없습니다. (예를 들어 어떤 유저가 트랜잭션을 전송했다는 사실 자체가 다른 유저로 인해 선행매매를 하도록 유인하거나 다른 트랜잭션을 우선적으로 처리하도록 하는 것) 이더리움에서는 Submarine Sends와 같은 아이디어를 통해 선행매매를 방지할 수 있으며 유사한 방어 메커니즘이 네트워크 차원에서 적용될 수 있을지에 대한 흥미로운 질문을 던지고 있습니다.
Batch auction과 같은 하나의 독립적인 시스템만 보면 공평한 것 같은 시스템도 다른 시스템과 함께 사용되면 공평하지 않은 경우가 많습니다.[6] 공평함이라는 것은 늘 달성하기 어려운 과제입니다. 체인링크가 FSS를 통해 달성하려는 목표는 기존과 같은 친근한 유저 경험을 전달할 수 있는 UX를 고수하면서도 DeFi 개발자들에게 그들이 만든 시스템이 그들이 선택한 방식을 통해 공평하게 운영될 수 있도록 하는 도구를 제공하는 것입니다. FSS에 대한 더 자세한 내용은 백서에 포함될 것입니다. 체인링크는 앞으로 트랜잭션 처리 방식이 더 공평해짐에 따라 DeFi가 약속했던 더 평등한 금융 체제를 달성할 수 있기를 희망합니다. 적어도 월 스트리트보다는 더 투명하고 공평한 체제를 만들 수 있기를 소망합니다.
이번 블로그 포스트 초안에 대한 의견을 남겨주신 Andrew Miller, Dan Moroz, Fan Zhang 과 Sergey Nazarov에게 감사 인사드립니다.
1. 말 그대로 빙하의 10% 만이 수면에 존재. 모든 거래소의 거래량 중 DEX 거래량은 0.1% 수준.
2. 라틴어로 “공평함(fairness)”
3. 검열에 대해 우려하는 유저들을 위해 오라클 기반 제출과 동시에 평행으로 운영되는 컨트랙트에 직접적으로 연결할 수 있는 조금 느린 채널.
4. 유저들은 더 높은 가스 비용을 지불하는 대신 재전송해 기존 트랜잭션을 대체할 수 있음. 중복 기재된 트랜잭션이 멤풀 내에서 처리되는 방법은 내부 정책에 따름. 예를 들어 오라클 네트워크에서 처음 전송된 트랜잭션만 유효하다고 인정하고 완전한 감사가능성(auditability)를 원한다면 유저들이 중복으로 기재할 수 없도록 함.
5. Khalil 외, 중앙화 거래소를 위한 유사한 방법을 제안함.
6. Batch auction 시스템이 만약 정해진 경매 시간 외에도 시장에서도 계속 판매되는 자산을 판매한다면 후자에 참여하는 사람들은 실시간 시장 정보를 바탕으로 경매를 참여할지 여부를 결정해 경매 스니핑(DeFi 생태계를 가능하게 하는 공평한 순서 서비스(FSS) 최대한 마지막 순간에 최고가 부르기)을 할 수 있습니다.
[김호광 칼럼] P2E를위한블록체인기술의이해
일반적인 게임은 결제 시스템(PG)이 검증되어 있고 안정적이다. 하지만 블록체인 기반의 게임에서는 고려해야할 것이 많다.
기존 메타마스크로 가상화폐 지갑을 사용해도 서비스 구현은 가능하지만, 입금 확인, 송금 지연, 송금 실패, 펜딩 트랜잭션까지 다양한 상황을 관리하기 위한 개발이 필요하다. 이 경우 자체적인 메인넷 노드를 구축하고 관리해야 할 정도로 일이 방대해진다.
아쉽게도 트랜잭션이 10분을 넘어 반 나절 이상 지연되면 게임 개발사에서 해결할 방법은 많지 않다. 유저에게 이더리움 기반의 코인을 송금하거나 환불할 때 이더리움의 수수료가 환불비용보다 비싼 경우도 각오해야한다.
아무리 이더리움 2.0이 되면서 수수료가 저렴해졌다고 하지만 종종 만원이 넘는 수수료가 발생할 때가 있다. 이더리움 기반의 플랫폼에서는 수수료의 예측과 통제가 되지 않는다.
이더리움 기반의 P2E에서 가장 고민해야할 것은 가스비가 순간적으로 폭등하여 송금 트랜잭션이 캔슬되거나 장시간 지연되는 상황을 서비스에서 가정해야 한다는 것이다. 고객이 환불을 신청했거나 코인 출금의 신청이 지연되었을 경우 처리 방법이 모호하다.
이더리움은 엔터프라이즈 환경을 고려하지 않고 만들어졌기 때문에 이런 문제를 해결하기 위해 다양한 부가 서비스가 존재한다.
대표적인 게 인프라(infura.io)다. 이더리움 송금의 트랜잭션 관리와 더불어 최적화된 수수료, 관리 툴을 제공한다. 이더리움 메인넷 노드를 PaaS로 서비스 형태로 사용한 만큼 임대해서 내는 서비스이다. infura는 1달 10만 건 트랜잭션의 경우 무료이기 때문에 간단한 P2E나 인디 게임이라면 초기 비용 없이 사용할 수 있다.
이더리움 수수료 문제에 질린 서비스는 수수료가 저렴한 카카오 클레이튼, 폴리곤, 바이낸스체인 등을 사용하여 수수료를 절감하는 전략을 사용하기도 한다. 클레이튼은 잦은 장애와 수수료를 인상했다가 NFT 프로젝트들에게 반발을 사고 탈출 러시가 발생하고 있다.
이더리움 외에 다른 생태계는 서비스가 확실하지 않다면 큰 리스크가 될 수 있다. 이더리움의 생태계보다 상대적으로 다른 메인넷의 홀더는 적기 때문에 P2E 플랫폼의 성장의 한계가 되기도 한다. 유저가 적다는 것은 시장 확장 규모가 작다는 의미다. 많은 P2E, NFT 프로젝트가 나중에 비싼 수수료와 느린 트랜잭션을 감당하면서 ERC20로 전환하거나 병행 지원하는 사례가 많다.
이더리움의 가장 큰 문제는 게임에 사용하기에 송금이 매우 느리다는 것이다. 게임은 즉각적인 결제와 반응이 있어야한다. 게임 개발자들은 일부 트랜잭션을 기존 방식대로 DB에서 처리하고 결과만 트랜잭션에 올리는 방식으로 해결하기도 한다. P2E 업계에서는 이더리움의 송금 지연의 문제로 다른 메인넷을 선택하는 경우도 늘어나고 있다.
싸이메타버스체인(cymetaversechain)은 게임에서 처리 가능한 속도의 트랜잭션을 보장하고 있고 수수료 역시 고정 수수료 30원 이하로 저렴한 편이다. 싸이메타버스체인은 NFT와 메타버스, 게임을 위해 개발되었기 때문에 P2E를 위한 관리자 기능이 추가될 예정이다.
P2E를 구현하기 위해서는 게임 개발자가 그 동안 경험해보지 못한 지갑이 필요하다. 지갑 기술은 오픈 소스이고 여러 솔루션이 있기 때문에 다양한 선택지가 있다. 앞서 말한 infura도 좋은 선택이지만, 앞으로 한국에서 서비스되려면 ISMS 인증이 필수다. 필자는 국내외 여러 가상화폐 지갑 서비스를 이용해봤는데 가상화폐 지갑으로 헥슬란트의 옥텟(octet.hexlant)이 다음과 같은 이유로 서비스 도입과 운영에서 좋은 선택지 중 하나이다.
첫째. 보안적인 면에서 ISMS와 금융권 보안 가이드를 지킨다.
둘째, 이더리움을 비롯한 다양한 메인넷을 지원한다.
셋째, 좋은 관리자와 관리자를 확장하기 위한 좋은 API가 있다.
넷째. 한국어로 서비스 대응이 가능하다.
옥텟의 장점 중 하나는 개발자와 사용자에게 열린 커뮤니케이션이다. 서비스 도중 발견한 테스트넷의 관리자의 보안 취약점 역시 즉시 대응하는 팀의 모습은 인상 깊었다.
P2E를 비롯해서 NFT 프로젝트를 운영하다보면 서비스 장애를 자주 만난다. 대표적으로 클레이튼의 메인넷 장애로 송금이 되지 않거나 송금 내역이 제대로 갱신되지 않는 문제이다. 이 경우 옥텟과 같은 지갑 서비스 팀이 지속적으로 메인넷의 상태를 확인하고 개발팀에 장애와 장애 후속 대책 DeFi 생태계를 가능하게 하는 공평한 순서 서비스(FSS) 대응을 진행한다. 옥텟으로 서비스를 운영하면서 메인넷의 장애, 추가로 다양한 메인넷의 지원에서 만족스러운 서비스를 경험할 수 있었다.
P2E 지갑 서비스는 오픈 소스로 만들거나 해외 서비스를 사용할 수 있지만, 가능하다면 보안과 관리자툴까지 확인하고 서비스를 선택할 필요가 있다. P2E 게임을 개발하기 위해서는 다음 질문을 고려해야 한다.
이더리움 기반으로 할 것인가?
얼마나 빠른 전송 속도가 필요한가?
송금 수수료는 어느 정도까지 용납 가능한가?
메인넷 커뮤니티의 규모는 적절한가?
여러 메인넷을 지원할 것인가?
가상화폐 지갑은 개발할 것인가?
서비스로 이용할 것인가?
메인넷 장애 허용 시나리오와 유저 대응을 어찌 할 것인가?
블록체인 기반의 게임은 앞으로 시장의 한 축이 되어 갈 것이다. 아직 대부분의 게임 기업들이 이더리움 생태계에서 겪었던 문제에 대해서 리스크를 잘 이해하지 못하고 있다. 기술의 한계를 억지로 뛰어넘으려고 하기보다 우리는 블록체인의 한계를 이해하고 P2E를 개발해야 할 것이다.
김호광은?
마이크로소프트 MVP이며, 블록체인 기업 베타랩스의 대표이다. 게임과 블록체인 시장 모두를 경험하고 이를 잇는 가교가 되고자 노력하고 있다.
유연성과 효율성을 모두 높인 코넬대학교
대학에서는 개성을 존중합니다. 대학마다 고유한 특징의 단과 대학과 학과가 있는 경우가 많습니다. 그러나 리소스가 감소하는 지금과 같은 시대에 효율성을 높이기 위한 추진력은 여전히 유효합니다. 대학의 다양한 요구와 효과적인 운영 사이의 균형을 어떻게 맞출 수 있을까요?
코넬대학교의 경우 Workday HCM(Human Capital Management) 및 Workday 급여 솔루션이 해답을 제시합니다.
인적 자원 및 안전 서비스 부문 VP인 Mary Opperman이 설명합니다. “우리는 이타카 캠퍼스에 7개의 학부 대학과 3개의 전문 대학이 있는 미국 최대 규모의 사립 연구 대학 중 하나입니다.”
“우리는 기업처럼 운영되지 않습니다. 우리의 혁신은 교수진과 여러 학문 분야에 걸친 협업에서 비롯됩니다. 이를 인식하고 매우 빠르게 적응하며 교수진을 방해하지 않는 관리 시스템이 필요합니다.” 대학의 핵심 임무에 투입할 리소스를 확보하기 위해 관리 기능을 간소화할 필요가 있었습니다.
“우리는 매우 분산되어 있으며, 중요한 이유 때문에 다른 방식으로 일을 수행한다는 것을 알고 있습니다.”라며 덧붙입니다. “학술 기업에 맞는 유연성이 필요하며, Workday를 통해 실현할 수 있습니다.”
우리는 매우 분산되어 있으며, 중요한 이유 때문에 다른 방식으로 일을 수행한다는 것을 알고 있습니다. 학술 기업에 맞는 유연성이 필요하며, Workday를 통해 실현할 수 있습니다.
인적 자원 및 보안 서비스 부문 VP
Workday와 함께 준비하는 미래
Workday를 도입하기로 한 결정은 ‘코넬 재구상(Reimagining Cornell)’이라는 큰 프로젝트의 일환으로, 대학과 관리 기능을 새로운 관점에서 바라보기 위해 시작되었습니다. 이 이니셔티브의 두 가지 구성 요소는 대학이 관리 운영을 간소화하기 위해 할 수 있는 모든 조치를 취하고 있는지 확인하는 일과 학술, 장학금, 연구 및 서비스 분야에서 대학의 장기 목표에 부합하도록 인력과 리소스를 조정하는 일입니다. 정보 과학 학과장이 이끄는 미래 지향적인 팀은 관리 측면에서 클라우드 시스템을 검토할 것을 제안했습니다.
“Workday는 비즈니스 수행 방식에서 우리와 일치하는 점이 많았습니다.”라고 Opperman이 설명합니다. 코넬의 직원과 매니저는 일상적인 트랜잭션을 직접 수행할 수 있기 때문에 HR 팀은 트랜잭션 비용을 낮추고 전략적인 HR 업무에 더 많은 리소스를 투입할 수 있습니다. Workday 사용자 인터페이스는 사용자 친화적이기 때문에 직원들이 사용하기 쉽습니다. “학부 매니저들은 데스크톱 어플리케이션을 살펴본 후 매우 직관적이라고 생각했습니다.”라고 그녀는 강조합니다.
Workday 급여를 통해 새로운 차원의 효율성 실현
코넬에서는 급여와 HR 시스템의 결합이 주요 이점으로 부각되었습니다. “고등교육에는 매우 빠르게 진행되는 부분이 많이 있습니다.”라고 Opperman은 합니다. “인력의 이동이 얼마나 역동적인지가 실제로 눈치챌 수 없는 경우가 많습니다. 예를 들어, 연구 분야에서는 연구 지원금을 받으려면 많은 인력을 빠르게 채용해야 합니다. 지원금을 빠르게 집행할 수 있도록 시스템을 연결하는 것이 중요합니다.”라고 계속 설명합니다.
“DeFi 생태계를 가능하게 하는 공평한 순서 서비스(FSS) HR 급여 시스템을 변경할 일이 있다면 커뮤니티의 일원으로서 결정하기로 했습니다.”라고 Opperman은 말합니다. “이것은 큰 결정이고, 만약 결정을 하게 된다면 함께 하기로 한 것입니다.” 코넬대학교는 부서 매니저, 대학의 비즈니스 리더, IT 직원, 급여 전문가, 주요 HR 직원에게 이 시스템 검토를 요청했습니다. 어떻게 될까요? “모두 기뻐했습니다.”라고 Opperman이 말합니다.
같지만 다른 환경
Workday를 통해 코넬대학교의 승인 프로세스를 자동화할 수 있지만, 이를 개별 대학과 학과에만 적용할 수도 있습니다. “이 기능은 우리에게 매우 중요합니다.”라고 말하며 Opperman은 이어갑니다. “현재 우리는 비즈니스 프로세스에 관련된 많은 일을 진행하고 있습니다. 모두가 같은 프로세스에서 일하는 환경을 만들기 위해 함께 노력하고 있습니다. 가장 효율적인 방법이기 때문이죠. 하지만 대학별로 서로 다른 승인 프로세스 또는 절차가 필요한 경우도 있습니다. Workday 시스템에서는 이게 가능합니다.”라고 그녀는 설명합니다.
“Workday를 사용하면 HR 팀은 지금까지 불가능했던 많은 일을 할 수 있습니다.”라고 Opperman은 계속 말합니다. “발전에 가속도가 붙는 것이 큰 장점입니다. 어렵고 시간이 많이 걸리는 업그레이드를 고민하지 않아도 됩니다.” Workday를 사용하면 업데이트할 때마다 어떤 기능을 업데이트할지 대학에서 결정할 수 있습니다.
“또한 구매 기능과 운영 기능이 매우 효율적인 시스템입니다.”라고 말합니다. 유지관리 비용 절감과 복잡성 감소라는 강점이 코넬대학교에서 Workday를 선택한 결정적인 요인이었습니다.
0 개 댓글