스마트 컨트랙트, 블록에 어디까지 쓰지?

Vex
Thenully
Published in
4 min readJan 21, 2019

‘벡스야, 블록에 어디까지 쓸거야?’

신규 프로젝트 아이템을 암호화폐 담보대출 서비스로 정하고 얼마 후 CTO가 진지한 어조로 물었다. 메인넷은 이더리움으로 결정한 상태.

아직 블록체인의 개념만 잡혔을 뿐, 구현에 대한 스펙은 아직 잘 몰랐던 때였다.무식하면 용감하다고, 의지를 담아 힘차게 말했다.

‘개인정보와 단순 로그성 정보는 빼고 다 넣었으면 좋겠습니다. 굳이 블록체인의 스마트 컨트랙트를 쓰는 취지는 투명과 보안 때문이니까요.’

스마트 컨트랙트는 서비스 제공자가 사용자와 신뢰를 구축하기 위해 필요한 것!

‘어떤 조건으로 얼마를 대출 받았고, 어떤 금리를 언제 받았는지.

상환이 언제 이뤄졌고 담보물에 대한 평가는 어떻게 이뤄졌고 청산은 어떤 로직으로 실행되었는지, 그 로직을 실행시킨 데이터는 출처가 어디이고, 언제 스냅샷을 찍은건지. 등등등’

문과적 사고방식으로는 스마트 컨트랙트라는 게 블록에 아예 프로그램 자체를 올리는 거니까 알고리즘에 영향을 주는 변수들, 이벤트를 모두 남길 수 있을 거라고 생각했다.

결론적으론, 무리수였다.

일단 1) 비싸다.

블록에 쓸 수 있는 용량의 범위가 있는데다 결정적으로 수수료(GAS)가 문제다.

저런 식으로 스마트 컨트랙트에 다 때려박으면 상태가 변할 때마다 업데이트로 들어가는 수수료가 드는데 부담이 꽤 크다.

당시 계산해보니 이 비용이 계약 하나에 최대 몇천원, 심하면 만원도 넘게 나올 수도 있었다. 심지어 이더리움은 소비자가 이걸 부담해야 한다. 아무리 비대면 금융 서비스라고 해도 이건 가격 경쟁력이 너무 떨어져서 재고할 수 밖에 없는 사유였다.

글을 쓰는 지금 Ether Gas Station에서 수수료를 계산해보니 컨펌 시간을 1분 미만으로 맞추려면 10 Gwei. 트랜젝션 수수료는 한화로 60원 정도.

스마트 컨트랙트 on/off에 드는 비용도 기만원 들어가는데 업데이트 한 번에 60원은 너무 비싸거 아닌가. 더 중요한 건 Gas 가격은 고정된게 아니라 마이너들의 시장 상황에 따라서 달라진다는 점이다. 즉, 비용 예측이 안 된다는 얘기. 글쓰는 현재 시점과 실제로 저 스펙을 고려할 때 이더리움 가격이 2배 이상 비쌌으니까 그 당시엔 120원 정도. 가격을 통제 가능한 수준으로 낮추면 이 스펙을 초단위가 아니라 분단위로 품질을 낮춰야 하는 문제가 있다.

그리고 2) 넘 느리다.

이게 제일 크리티컬한 문제다.

우리 경우엔 대출 시 맡기는 담보 코인 가격이 일정 수준 이하로 떨어지면 청산하는 조건이 스마트 컨트랙트 안에 들어가는데, 최악의 경우 한 시간 넘게 걸릴수도 있다는 건 매우 치명적인 문제였다. 코인의 변동성을 생각하면 1분 1초가 엄청 큰 리스크이고 비용인 상황.

이 문제로 팀 내에서 고민이 많았고 여러 시간 토의한 결과 현재 단계에서는 모든 걸 블록에 쓴다(On-chain)는 건 무리라고 판단했다.

대안으로 중요한 거래 내용만 블록에 쓰고, 나머지는 별도의 작은 블록체인(Side-chain)을 따로 만들어서 거기에 기록하는 방법도 있었지만 이건 구현 비용이 더 많이 드는데다 이걸 지원하는 메인넷 중에 맘에 드는 곳이 없었다.

모바일 서비스에서 속도는 포기할 수 없다고 보고 결론은 일단 오프체인으로 구현하기로 결정했다. 대신 거래(Transaction)기을 남기고 사용자가 이더스캔에서 직접 조회할 수 있도록 기능을 제공하는 걸로 투명성을 보완했다.

이더스캔(Etherscan)과 같은 블록뷰어 서비스에서 누구나 블록에 쓰인 스마트 컨트랙트의 코드와 거래내역을 볼 수 있습니다.

우선 오프체인으로 시작하지만 MVP 제품의 가설이 검증되면 베타를 떼고 본격적으로 서비스 할 땐 사이드체인으로 구현하기로.

--

--

Vex
Thenully
Editor for

더널리 PM, 모터바이크 열혈라이더