-
비트코인의 한계
튜링불완전성: 비트코인 스크립트 언어로 할 수 있는 작업이 많긴 하지만, 모든 경우의 프로그래밍을 다 지원하지는 않습니다. 거래 증명을 할 때 무한 순환에 빠지는 것을 막기 위해 while이나 for와 같은 순환(loop) 명령 카테고리가 빠져 있습니다. 이론적으로는 튜링불완전성은 개발자가 극복할 수 있지만 (if 문과 같은 반복문으로) 코드상 공간낭비와 개발자의 시간낭비, 실수 등 아주 비효율적입니다.
가치무지하다: UTXO 스크립트만으로는 거래의 인출 액수를 세밀하게 통제할 방법이 없습니다. 그 이유는 http://brownbears.tistory.com/382?category=281929 에서 자세히 확인할 수 있습니다.
다양한 상태를 표현할 수 없다: UTXO가 표현할 수 있는 상태는 사용되었거나 안 되거나 둘 뿐입니다.
블록체인을 해독할 방법이 없다: UTXO는 nonce, 타임스탬프,이전 블록해시같은 블록체인 자료를 해독하지 못합니다. 그래서 도박이나 여러 다른 분야의 어플리케이션을 만드는 데 한계를 보입니다.
이더리움이란?
이더리움은 비트코인의 한계를 넘는 코인이라 볼 수 있습니다. 이더리움 설명에 앞서 비유를 먼저 들자면 비트코인이 화폐역할을 하는 어플이라 생각하면 이더리움은 스마트폰으로 생각하면 됩니다. 이더리움은 대규모 분산 어플리케이션에 유용할 것이라 생각되는 다른 종류의 제작기법을 제공하며, 빠른 개발 시간, 작고 드물게 사용되는 어플리케이션을 위한 보안, 다른 어플리케이션과의 효율적인 상호작용이 중요한 상황에 특히 주안점을 두고 있습니다. 간단하게, 분산 어플리케이션(Decentralized Application - dApp)을 이용할 수 있는 플랫폼을 제공합니다. 또한 튜링 안전성을 갖춰 개발자들이 주로 사용하는 언어를 사용하여 다양한 기능을 개발할 수 있습니다. 여기서 주로 사용되는 언어는 Solidity(Javascript)와 Serpent(Python)입니다. 이 언어를 사용하여 복잡한 다중계약인 Smart Contract를 가능하게 하고 분산 어플리케이션을 구현합니다. 여기서 스마트 컨트랙트(Smart Contract)를 유지하기위해 가스(Gas)라는 개념이 등장합니다.
가스(Gas)란?
일반 사용자는 이더리움(ETH)을 송금할 때 가스를 확인할 수 있습니다. 한 마디로 가스는 일종의 수수료입니다. 아래에서 가스가 무엇인지에 대해 자세히 설명하겠습니다.
모든 블록체인은 거래의 증명을 위해 노드들이 채굴활동을 진행합니다. 이더리움은 EVM(Ethereum Virtual Machine) 이라는 블록체인 환경에서 실행이 됩니다. 즉, 이더리움 네트워크에 참여하고 있는 모든 노드들이 블록을 확인하는 프로토콜의 일부로 EVM을 실행하고 있습니다. 이더리움을 보낸다면 네트워크의 모든 노드들이 동일한 계산을 수행하고 동일한 값을 저장해야 하는 일련의 '작업'이 필요해 집니다. 그리고 이런 작업량을 Gas, 혹은 특정금액으로 환산되기 때문에 Gas Value라고 표현합니다.
왜 가스란 이름이 나왔을까?
여기서 네이밍 센스를 확인할 수 있습니다. 이더(Ether)는 석유화학물질 에테르 입니다. 에테르를 얻기 위해 화합물을 분해하면 기체물질이 생성되는데 여기서 발생된 기체를 Gas라고 합니다.
즉, 가스는 이더리움이 Smart Contract를 유지하는데 연산력과 저장공간 제공의 연료로서 사용됩니다.
그렇다면 뭐하러 가스라는 단위를 생성했을까?
이더리움은 시장변화에 따라 큰 폭으로 변화하곤 합니다. 이러한 이더리움 가격으로 수수료가 정해진다면 하루동안에도 수수료가 0.001ETH, 0.0005ETH... 와 같이 계속 변하게 됩니다. 이러한 문제로 거의 일정한 가격을 가진 단위를 만들고(Gas) 개수에 따라 수수료를 표시하게 됩니다.
위 이미지는 가스의 가격변동을 보여주는 차트인데 초기를 제외하곤 큰 변동이 없는 것을 확인할 수 있습니다.