[개발자의 시선] Blockchain 기반의 어플리케이션 개발시 기존 어플리케이션 구조를 그대로 적용하면 생기는 문제점
블록체인이 개발자들 사이에서 최근 화두다. 엄청난 가격 상승에, 주변에 개발자 치고 블록체인 공부를 하지 않는 사람이 없다고 할 정도다. 블록체인에 관심이 있는 개발자라면 블록체인 자체를 개발하는 것과 Dapp을 개발하는 두가지로 개발 영역이 나뉜다는 것을 알 것이다. Dapp 개발은 Ethereum의 Solidity 언어를 통해서 블록체인을 개발 하는 것보단 비교적 쉽게 개발 할 수 있다. 하지만 Dapp을 개발 한 뒤에 사용자에게 전달하는 데 있어서 비용, 처리 방법등 여러 문제가 발생한다.
기존 어플리케이션의 구조는 간단하게는 front-end와 back-end server 그리고 database, 추가적으로 file storage 정도로 구성되어 있다. 이 구조에서는 모든 정보들이 database에 저장되고 file은 storage에 저장되어 사용된다. 블록체인 어플리케이션의 경우, 간단하게는 back-end server와 database의 일부분을 blockchain으로 교체하면 되는 것처럼 보인다. Back-end server의 역할은 블록체인에서 돌아가는 smart contract가 될 것이고, database는 블록체인에서 존재하는 state라고 볼 수 있다. 이렇게 간단하다면 블록체인 기반 Application 개발은 단지 database와 back-end만 블록체인으로 변경하면 된다. 하지만 다른 점은 back-end의 기반이 되는 블록체인 네트워크가 Ethereum인 경우에는 사용 할 때마다 비용(이더)을 지불해야 하고, eos인 경우에는 서비스를 제공 하는 사람이 충분한 양의 eos를 들고 있어야 한다. 또한 transaction이 처리되는 것이 asynchronous하고, abort될 수 있다. 위와 같은 특징 때문에 블록체인 기반의 app을 개발하는 데 있어 세심한 주의가 필요하다.
블록체인 dapp의 어플리케이션 고려점
1.Asynchronous Process & Abort
기본적으로 블록체인의 transaction처리는 decentralize된 합의를 통해 block을 생성하기에 asynchronous한 process구조를 가지고 있다. Smart contract의 function을 담은 transaction을 submit한 뒤에, 그 transaction이 블록체인의 노드들에 의해 선택되어야 한다. 그 결과, 블록체인의 처리 방식은 asynchronous 구조를 띄게 된다. Transaction이 향후에 abort 될 수도 있다. 예를 들어, Ethereum의 경우 원래 요청보다 더 높은 GAS fee를 제시하여 요청을 보내면 기존의 요청은 취소된다.
2.Usage Cost
블록체인 시스템이 유지 되기 위해서는 블록체인에 올라오는 transaction을 처리 해주고, 그 결과를 저장해 줄 node들이 필요하다. 사용자는 처리의 댓가로 node에게 GAS라는 사용료를 지불 하게 된다. 사용자는 GAS를 지불하고 node는 GAS를 받음으로써 블록체인 네트워크가 유지된다. 이 구조 덕분에 사용자는 블록체인을 사용 할 때 신중해야 한다. 1MB의 데이터를 블록체인에 올리려면 ETH/$600 기준으로 대략 $11,000의 비용을 지불해야 하기 때문이다. 따라서, 기존의 database나 file storage처럼 블록체인을 사용하게 된다면 엄청난 돈을 지불 해야 하기에 사용을 결정하는 것이 쉽지 않을 수 있다. 이러한 문제점을 해결하기 위해서 Casper를 통한 transaction 처리량 효율화와 Plasma같은 side-chain 프로젝트들이 진행되고 있으나, 아직 개발이 진행 중이다. 현재로서는 블록체인에서 바로 처리가 일어나게 하거나, 정보를 저장하는 것들은 그 만큼의 GAS를 지불 하더라도 가치가 있는 것들만 블록체인에서 처리를 하게 해야 한다.
Case Study — Crypto Kitty
Crypto Kitty는 Ethereum 네트워크의 지연을 가져온 Ethereum의 핫한 Dapp 으로 Crypto Kitty의 contract에 ether를 지불하면 random으로 가상의 고양이를 만들어 주는 서비스다. 고양이들은 교배를 거치면서 모양이 다양하게 분화되어 생성 되고, 이렇게 생성된 고양이는 거래가 가능하다. ERC-721라는 protocol을 사용하여 구성했고 더 매력적인 고양이를 뽑으려는 사람들의 시도와, 거래, 교배로 인하여 Ethereum network의 transaction이 지연되는 엄청난 일이 벌어졌다. 대규모 ICO 프로젝트들이 진행 될때에나 발생했던 transaction의 지연이 가상의 고양이로 인해 일어나게 된 것이다.
Crypto Kitty는 cost문제를 해결 하기 위해서, blockchain위에는 generic information만 저장하는 식으로 해결했다. 고양이의 모양을 표현하는 engine과 그 기본이 되는 정보를 분리하여 기본이 되는 정보만 블록체인 위에 저장하는 식으로 구현을 한 것이다. 기본이 되는 정보를 저장하는 데는 문자열만 저장하면 되기에 이미지를 저장하는 것 보단 훨씬적은 양의 데이터만 블록체인 위에 저장하면 된다.
또한 고양이들의 거래는 실시간으로 일어나야 하는 것이 아니기에 async하게 구현이 되어도 문제가 없다. 거래로 얻는 수익이 거래에 필요한 GAS 비용보다 적으면 팔지 않을 것이기 때문에 판매하는데 쓰는 비용 조차도 문제가 없어지게 된다.
정리하면, Crypto Kitty는 이미지를 가지고 서비스하는 dapp임에도 불구 하고 정보와 표현 엔진의 분리를 통해 비용을 최소화했고, 블록체인 위에서 바로 거래가 되는 기능이 담겨져 있음에도 사용자가 거래에 필요한 GAS 마저도 지불하지 못 할 가격으로 팔면 손해를 보기에 자발적으로 그 이상의 가격을 정하게 하는 경제구조를 통해 현재 블록체인의 문제점을 해결하면서 서비스를 만들어 냈다.
Congratulations @project-talent! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Do not miss the last post from @steemitboard:
Vote for @Steemitboard as a witness to get one more award and increased upvotes!
Congratulations @project-talent! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Do not miss the last post from @steemitboard:
Vote for @Steemitboard as a witness to get one more award and increased upvotes!