|
시아는 분산형 클라우드 데이터 저장 시스템이다. 시아를 통해 피어(peer) 방식의 데이터 저장 계약을 맺을 수 있는데, 이러한 계약은 저장장치 공급자인 호스트와 저장장치 사용자인 클라이언트 간의 계약이다. 계약의 내용에는 어떤 데이터가 어떤 가격으로 저장될지가 포함되어 있다. 계약을 유지하려면 저장장치 공급자는 클라이언트의 데이터를 저장하고 있다는 사실을 주기적으로 증명해야 한다. 계약 내용은 블록체인에 저장되며, 공개적으로 감시할 수 있다. 시아코인은 처음에는 독립적인 알트코인으로 시작되었지만, 나중에는 양방향 페그(two-way peg)를 통하여 비트코인과 연결될 예정이다. 양방향 페그는 단어에서 유추할 수 있듯이, 비트코인을 시아코인으로 또는 그 반대로 전송하는 기능이다. 실제로 비트코인이 시아코인으로 교환될 때, 블록체인 간에 통화는 전송되지 않는다. 이러한 작업을 수행하는 단일 트랜잭션이 없기 때문이다. 이것은 시아코인이 다른 블록체인에서 잔액의 진위를 확인할 수 없기 때문이다.
구조
시아코인의 트랜잭션 구조는 비트코인과 유사하다. 시아코인은 모든 계약과 관련하여 비트코인의 모든 거래를 유효하게 하는 스크립트 언어[2]를 사용하지 않는 대신에 공동 서명 스키마(M-of-N multi-signature scheme)를 채택하였다. 공동 서명 스키마는 m-of-n의 조합으로 지정되고, 이때 m과 n은 1과 32 사이의 숫자가 된다. 멀티시그 계정으로 변환되는 계정은 개인 키(private key)가 무효가 됨에 따라, 해당 계정이 더 이상 거래할 수 있는 권한이 없어지게 된다. 이를 통해 복잡성을 늘리고 외부 공격으로부터 위험을 줄이게 된다. 시아코인은 또한 트랜잭션 부분을 확장하여 계약을 만들고 실행하는 것을 가능하도록 하는데, 계약(contract), 증명(proofs), 계약 업데이트(contract updates)의 3가지로 확장하는 것이다. 계약 안에는 호스트와 고객이 원하는 파일의 저장 공간과 해시값이 담겨 있다. 호스트는 저장소에 대한 증명(proof)을 주기적으로 해야 하며, 계약에는 그 주기를 포함하고 있다. 계약이 실행되면, 나중에 계약 업데이트를 통해 수정될 수 있다.
트랜잭션
트랜잭션에 포함되는 내용은 다음과 같다.
임의 거래 데이터
각각의 거래에는 임의 데이터 필드가 담겨 있어서, 어떠한 정보든지 저장될 수가 있다. 만약 트랜잭션 내에 서명되었다면, 노드(node)가 요구된다. 노드는 최초에는 블록당 최대 64KB까지의 용량을 담을 수 있다. 이러한 임의 데이터를 통해 호스트와 클라이언트는 분산화된 방식으로 연결될 수 있다. 임의 데이터를 통해 가용한 공간을 홍보하거나, 호스트를 찾는 데이터를 알릴 수도 있으며, 또는 분산화된 파일 트래커(file tracker)를 만드는 데에 이용할 수도 있다. 임의 데이터는 다른 소프트포크(soft fork)를 만드는 데에 활용될 수도 있다. 이러한 과정은 "누구나 사용할 수 있는(anyone-can-spend)" 출력을 만듦으로 가능하지만, 임의 데이터는 제한사항들이 명시되어 있다. 이러한 제한사항을 이해하는 채굴자들은 조건에 어긋나는 트랜잭션을 막을 수 있다. 임의 데이터를 제거하지 않아도 나이브 노드(naive node)는 동기화된다.
저장 생태계
시아코인은 분산화된 저장소에 따라 운명이 달려 있다. 저장소 공급자들은 임의 데이터 필드(arbitrary data field)를 활용하여 자신을 네트워크에 알릴 수 있다. 이러한 과정은 사용자가 읽게 될 양식화된 문서를 통하여 이루어질 것이다. 사용자들은 이러한 양식화된 문서를 널리 알려 잠재적인 호스트의 데이터베이스를 만들어낼 것이고, 그 중 신뢰하는 호스트와 거래를 맺게 된다.
1. 공급자의 보호
계약이 성립되려면 저장소 공급자와 저장소 수요자 모두의 동의가 필요하다. 공급자는 자신이 원하지 않거나, 불법적 약관을 거부할 권한이 있다. 또 공급자는 파일이 100% 전송되기 전에 계약을 파기할 수 있다. 계약 조항은 공급자에게 유연하게 적용된다. 공급자는 낮은 가격이지만 신뢰성이 낮으며 파일의 손실에 대하여 최소한의 책임을 지는 방식으로 계약을 맺을 수도 있으며, 반대로 높은 가격으로 파일의 손실에 대한 페널티를 높일 수도 있다. 이러한 계약 조항은 시장 원리에 의하여 결정될 것이다. 공급자는 서비스 공격에 취약하며, 서비스 공격을 받으면 저장소에 대한 증명(proof)을 전송하거나 파일을 전송하는 데에 제한을 받을 수 있다. 공급자는 그러한 공격으로부터 자신을 보호할 책임이 있다.
2. 사용자 보호
사용자는 복구 코드(regenerating code)와 같은 데이터 보존 및 복구를 위한 삭제 코드(erasure code)를 이용할 수 있다. 삭제 코드는 일반적으로 파일을 n개의 작은 조각으로 나누고, 이러한 조각을 이용하여 특정한 m 조각들의 모든 부분집합으로부터 복구가 될 수 있다. 이 때, n과 m의 값은 삭제 코드와 기타 다른 요인들에 따라서 달라질 수 있다. 각각의 조각들은 이후 많은 호스트로 암호화되어 저장된다.
3. 가동 시간
인센티브 저장소 증명에서 지속적인 가동 시간을 강제할 만한 수단은 없다. 사용자가 요청할 때마다 호스트가 파일을 전송한다는 것을 보장할 수도 없다. 악의적인 공급자가 파일을 담보로 거금을 요구할 것이라고 우려할지도 모른다. 그러나 이러한 공격의 위험성은 삭제 코드를 통해 상쇄된다. 사용자는 자유롭게 비협조적인 공급자를 무시할 수 있으며, 협조적인 이들만 골라낼 수 있다. 그리고 다운로드 수수료는 업로드 인센티브로 변환된다. 사용자는 파일을 전송받는 것에 대하여 보상을 제공하며, 호스트는 반드시 최고의 서비스 품질을 제공해야 한다. 사용자는 파일을 어느 시점에든지 요구할 수 있고, 공급자는 최대의 보상을 얻기 위하여 가동 시간을 최대화할 것이다. 사용자는 또한 더 많은 전송량, 짧은 대기시간에 대하여 더 많은 보상을 줄 수도 있다. 사용자는 내려받지 않더라도, 무작위적으로 검사를 하여 호스트가 온라인인지 테스트할 수 있다. 하지만, 재차 강조하지만 가동 시간 인센티브는 시아 블록체인 프로토콜의 일부가 아니다. 가동 시간은 전적으로 사용자의 행동에 달려 있다. 다운로드에 대한 지급은 기존의 소액결재 채널(micropayment channel)을 통해 이루어질 것으로 기대된다. 소액결제 채널을 통해 사용자들은 최소한의 대기시간과 blockchain bloat로 많은 양의 지속적인 소규모 지급을 할 수 있다. 호스트는 파일을 작게 쪼개어 전송하고, 진행하기 전에 소액결제를 받기를 기다릴 수 있다. 소액결제는 충분히 작고 빨라서 처리량에 대한 큰 영향 없이 수초 내에 전송할 수 있다.
4. 평판 시스템
사용자는 신뢰할 수 있는 공급자를 선택할 방법이 필요하다. 단순히 기존의 명세를 가지고 판단하는 것은 부족한데, 그 이유는 그러한 기록이 조작될 수 있기 때문이다. 공급자는 자전거래 방식으로 허위 계약을 맺을 수 있으며, 대용량의 가짜 파일, 예를 들어 내용이 전부 0으로 쓰여진 파일을 저장할 수 있다. 이러한 시빌공격(sybil attack)의 위험을 줄이기 위하여 사용자는 공급자에게 임의 데이터 부분에 공급자에 대한 정보를 기록하도록 요구할 수 있다. 잠금 처리된 코인의 양을 기준으로 평판을 판단할 수도 있다. 예를 들어, 만약 10개의 코인이 14일 동안 묶여 있었다면, 10 * 14 = 140 코인 일수만큼의 가치의 잠금 상태를 만들어낸 것이다. 저장소 공급자들이 가치 있는 잠금 상태를 오랜 기간 만들어 내기는 쉽지 않으므로, 저장소 사용자들은 높은 가치의 잠금 상태를 만들어낸 공급자들을 선호함으로써, 시빌공격의 위험을 줄일 수 있다. 각 사용자는 호스트를 선택하는 나름의 기준이 있다. 사용자들은 가격, 잠금 가치, 제공된 저장소의 용량, 파일 손실에 대한 보상금 등 다양한 요소를 고려하여 호스트를 선택한다. 또한 다른 사용자의 사용후기 등 시스템 외부적인 방법을 도입하여 공급자의 평판을 관리할 수도 있다.
STO 프로젝트
대다수의 블록체인 기업들은 유틸리티 토큰을 판매하여 자금을 조달하는 방법을 선택했다. 그러던 중 일부 소수의 진취적인 기업들이 STO(Security Token Offerings)라는 방식으로 증권형 토큰(Security Token)을 발행해 자금을 조달하기 시작했다. STO 프로젝트는 펀드, 주식, 부동산 등의 분야에서 활발하게 이뤄지며 시아는 시아펀드(SiaFunds)로 주식 분야에 속해 있다. 시아의 토큰 구조는 서비스 공급자가 사용하는 증권형 토큰인 시아펀드(Siafunds)와 데이터 임대 시에 사용되는 일종의 유틸리티 토큰인 시아코인(Siacoin)으로 구성된다. 기업과 공급자 사이에 거래가 발생할 경우 시아 플랫폼에 3.9%의 수수료를 지불하며, 이 수익이 시아펀드 투자자들에게 배당금으로 지급되는 형태이다. 물론 이러한 STO 프로젝트의 자금 조달은 유틸리티 토큰이나 페이먼트 토큰에 비해 작은 규모를 보여주지만 시아의 사례는 향후 STO를 진행하고자 하는 스타트업들에게 좋은 사례로 작용할 수 있다
시아코인 반감기
시아 시스템의 주된 통화는 시아코인이다. 시아코인의 공급은 지속적으로 증가할 것이고 모든 새로운 시아코인은 채굴자들에게 블록 보상으로 지급될 것이다. 최초의 블록은 300,000개의 코인을 지급한다. 이후 블록당 코인 1개씩 줄어들어, 두번째 블록은 299,999개의 코인이 지급될 것이다. 이런 방식으로, 30,000개까지 계속 줄어든다. 블록 사이의 시간 10분을 목표치로 하여, 공급의 연간 성장은 다음과 같다.
채굴
시아코인은 시아마이닝(SiaMining)이라는 마이닝풀에서 채굴할 수 있다. 2018년 1월 중국 우지한이 이끄는 비트메인(Bitmain) 회사가 시아코인 전용 에이식(ASIC) 채굴기인 앤트마이너 A3(Antminer A3)를 출시하고, 경쟁사인 이노실리콘(InnoSilicon)에서 S11 시아마스터(S11 Siamaster) 채굴기 제품을 출시함에 따라 시아코인 채굴 난이도가 10배 정도 올라간 적이 있었다. 이러한 상황이 되면 코인을 생성하는 생산단가가 상승하게 된다. 또한 코인 가격이 상승하면 서비스 이용에 부담이 될 수 있다. 시아코인은 첫 번째 하드포크에서 에러가 있었고, 2018년 1월 139,000번째 블록에서 두 번째 포크를 하여 블록생성 시간을 30분에서 10분으로 단축하면서 새로운 해시 난이도 알고리즘을 구현하였다.