안녕하세요. @piljae 입니다. DEX 시리즈를 준비하는 중에 @apmmh님께서 IOS 프로젝트에 대해서 얘기를 나눠보고 싶다고 하셔서 급하게 준비하게 되었습니다. 그 댓글을 받고 바로 준비하기 시작하였는데, 이해하는데 어려움이 많았습니다. 하지만 공부하기에는 정말 좋은 자료 인 것 같아서 apmmh님께 감사하다고 말씀드리고 싶습니다:)
Internet of Services의 약자인 IOS프로젝트가 풀려고하는 문제는 Scalability 문제입니다. 지난번에 소개해드렸던 질리카 프로젝트와 비슷한데요. 샤딩과 새로운 합의 알고르즘 PoB (proof of believability)를 통해서 초당 트랜잭션을 100만까지 올린다는 목표를 갖고 있습니다. 아래에서 자세히 소개해 보도록 하겠습니다:)
[알트산책] Scalability의 또 다른 해결사. IOS 프로젝트 ( IOST 토큰)
IOS 프로젝트
IOS 프로젝트가 풀려고 하는 문제는 Scalability입니다. 지금 존재하는 많은 플랫폼 형식의 블록체인들이 겪고 있는 문제입니다. 그래서 EOS, Zilliqua 등 많은 프로젝트들이 다양한 방법으로 이 문제를 풀려고 하고 있습니다. IOS 프로젝트도 마찬가지 입니다. IOS는 샤딩, POB, Micro state block 등의 on-chain 스케일링 방법으로 확장성 문제를 해결하고 있습니다.
기본적으로 IOS는 기본적으로 플랫폼의 형식입니다. 비트코인의 UTXO 구조에 이더리움의 Smart contract를 합친 형식이라고 소개하고 있습니다. 그리고 노드간엔 가십 프로토콜을 통해 주변에게 트랜잭션을 전달합니다. 여기에다가 각 노드들을 여러개의 샤드로 나눠서 빠르게 트랜잭션을 처리 합니다.
Efficient Distributed Sharding
IOS의 확장성을 높여주는 가장 큰 기술이라고 할 수 있습니다. 기존의 블록체인이 모든 노드에서 한 트래잭션을 모두 검증하였습니다. IOS는 네트워크를 각 각의 샤드로 나누고 모든 트랜젝션을 검증하는 게 아니라 각각의 샤드들이 일부의 트랜잭션만 검증하게 됩니다. 이를 통해 확장성을 높이는 것입니다.
샤딩에서 중요한 것 중의 하나는 노드들이 적절하게 분배되는 것입니다. 악의적인 노드가 한 샤드에 몰려 있다면 더 쉽게 공격 받을 수 있기 때문입니다..예를 들면, 일반적인 블록체인 시스템에서 1000개의 노드에서 시스템을 붕괴 하려면 300개 이상의 악의적인 노드가 필요합니다. 그러나 100개 노드가 10개의 샤드로 나눠진 시스템이라고 봅시다. 그러면 한 샤드에 30개의 악의적인 노드가 들어가게된다면 그 샤드에 문제가 생기기 때문입니다. Bias-Resistant Distributed Randomness를 통해 완전히 랜덤하게 분배함으로 IOS이 문제를 막고 있습니다.
Proof-of-Believability (PoB) Consensus Mechanisms
사실 여기서 부터가 IOS의 핵심이라고 할 수 있습니다. 간략하게 POB를 이해하면 POS의 개량된 버전이라고 생각하시면 됩니다. POS가 갖고있는 '빈익빈 부익부' 문제를 해결하고자 발전시킨 것이라고 볼 수 있습니다.
기본적으로 Validator가 되기 위해서는 Believability score가 높아야 합니다. Believability score는 pos와 비슷하게 IOST토큰을 많이 갖고 그것을 deposit 해야 합니다. 거기다가 Servi라는 포인트도 높아야 합니다. 즉 , 많은 토큰과 Servi를 갖고 있어야 높은 Believability score 얻고 Validator가 될 가능 성이 높습니다.
Servi
Servi라는 포인트제도는 독특한 특성이 있는데 첫째, 교환이 불가능합니다. 오직 획득만으로 얻을 수 있습니다. 둘째, 이것은 네트워크의 기여도에 따라 얻을 수 있습니다(자산의 deposit정도, 다른서비스를 평가한 것 등등) 셋째, 한번 Validator가 되어 검증을 하게되면 0점이 됩니다. 세번째 특징이 눈에 띄는데 Validator가 되기 위해서는 지속적으로 네트워크에 공헌해야한다는 점입니다. 이를 통해 자산의 정도에 따라서 검증자가 될 가능성이 높긴 하지만 기존의 POS보다는 낮아질 것으로 보입니다.
Believable League & Normal League
높은 Believability 점수로 선정 된 Valdiator들은 한 샤드 내에서 다시 Believable League 와 Normal League로 나누어 집니다. Believability 점수가 높을수록 Believable리그에 들어갈 가능성이 높게 됩니다. 이 둘은 서로 다른일을 하게 됩니다.
- Believable validator : 소수 정예 그룹으로 이들이 블록에 넣을 트랜잭션을 정하고 순서를 정합니다.
- Normal validator : 나머지 그룹으로 첫번째 믿음직한 놈들이 만든 트랜잭션 중에 몇개를 랜덤하게 뽑아서 검증합니다. 검증이 되면 블록을 완성하고, 문제가 발생하면 검증자를 처벌하는 역할을 합니다.
이렇게 두가지로 나눈 이유는 빠르게 더 많은 블록을 만들기 위해서 입니다. 각 샤드마다 두가지의 그룹으로 나누어 지는데 더 믿음직한 소수(혹은 한명)가 블록을 거의 생성하고 나머지가 이를 검증하는 방법입니다. 이를 통해 속도와 안정성을 모두 얻을 수 있다고 합니다.
Block chain storage pruning
여기다가 더하여 속도를 높이기 위해 Micro state block이란 것을 도입했습니다. 현재 많은 블록체은 제네시스 블록부터 현재 블록까지 모든 기록들을 저장해오고 있습니다. 이는 검증속도도 느리게 할 뿐아니라, 높은 용량으로 노드를 유지하는 것도 힘들게 하고 있습니다. 이를 해결 하기 위한 방법으로 압축해서 보관하는 것이라고 보면 됩니다.
한 Epoch이 끝날 때 그 epoch에 모든 트랜잭션을 머클루트에 담아 헤더를 만듭니다. 다음 헤더를 검증을 합니다. 그리고 검증된 헤더를 블록체인에 올리는 방법 입니다. 그래서 다음 epoch이 시작되면 바로전 epoch에 헤더만 참조하여 검증하는 것입니다. 이를 효율성을 높이는 방법 입니다.
요약
너무 복잡해서 그 과정을 한번 요약해보겠습니다.
- 한 Epoch이 시작되면, 일정 수의 validator가 선정됩니다.
- 이들은 랜덤하게 각 샤드에 분배 됩니다. 그리고 각각의 샤드에서 믿음직한 정도에 따라 2개의 그룹으로 나누어집니다.
- 분배된 validator들은 각 샤드에 맞게 필요한 정보를 받아내립니다.(이전 epoch의 정보를 받는다)
- 트랜잭션이 발생되면 믿음직한 친구는 블록에 트랜잭션을 정하고 나머지는 그것을 검증합니다. 이것이 반복됩니다.
- epoch이 끝날 때, 지난 트랜잭션을 다시 모와 압축시켜서 블록에 올립니다.
이정도로 요약될 수 있을 것 같습니다..
마치며 ( 개인적인 생각)
백서에 보면 이 팀은 온체인이 안정적이고 off체인 스캐일링은 안정성이 떨어진다고 느끼는 것 같습니다. 그래서 온체인으로 스케일링 할 수 있는 모든 방법을 총집합 해 놓은 것 같습니다. 제가 자세히는 모르지만 어느 부분에서는 캐스퍼의 모습이 보이기도하고, 어느 부분에서는 dpos의 모습이 보이기도 합니다.
이제 막 시작한 프로젝트여서 아직 가야할 길이 멀다고 느꼈습니다. 블록의 생성시간은 얼마나 할것인지, 믿음 스코어는 어떤 기준으로 할 것인지, 노멀 검증자가 트랜잭션을 검증할 랜덤 확률은 몇인지 까지 아직 디테일하게 숫자로 나와있는것이 하나도 없었습니다. 그런 세부적인 검증을 하고 메인넷까지 가는데 많은 시간이 걸리기 때문입니다.
그래도 세콰이어 차이나에서 투자했다는 것은 이 팀의 가능성이 어느정도 있다고 본 것 같습니다. 성공적으로 스케일링하여 좋은 서비스를 만들어 줬으면 좋겠습니다:) 마지막으로 좋은 공부 기회 만들어주신 @apmmh님 감사합니다.
(참고로 이팀은 프라이빗 세일만하고 퍼블릭 세일은 일체 하지 않았습니다)
재밌게 읽으셨고 유익하셨다면 팔로우/보팅/ 리스팀 부탁드리겠습니다:) 주관이 많이 담겨있습니다. 저도 아직 공부하는 중이라 틀린점도 많고 모르는 부분도 많이 있습니다. 토론할 거리, 혹은 제가 잘못 알고 있다면 언제든지 피드백 기다리고 있겠습니다.
( dofac0802@gmail.com 으로 메일로 보내주셔도 감사하겠습니다:) )
더하여
저는 블록체인이 앞으로 더 성장하고 미래의 핵심이 될 것이라고 생각하고 있습니다. 그래서 거의 모든시간을 블록체인에 대해 공부하는데 시간을 쓰고 있습니다. 스팀잇에도 정말 많은 분들이 블록체인에 대해서 공부하고 연구하는 것 같다는 생각이 들어 함께 공부하면 좋겠다라는 생각이 들었습니다. 그래서 함께 스터디 하실분을 찾고 있습니다. 아직 정해진 방법은 없고 함께 만나서 토의하고 서로 발표하는 자리를 만들고 싶습니다. 편하게 연락주시면 감사하겠습니다.
우선 지금은 백서스터디 생각하고 있습니다.!
https://open.kakao.com/o/seuIjvG
문의 주시면 단체방 알려드리겠습니다:)
[알트산책] 시리즈
- [알트산책] 메탈 편 (metal pay, metal coin, 메탈 코인)
- [알트산책] 스톰 편 (Storm , storm token, 스톰 토큰)
- [알트산책 - 번외편] 시장규모 파악하기 편 ( TAM , SAM, SOM)
- [알트산책] 인터체인(inter-chain) 시리즈 - (1) 인터체인이란 무엇인가?
- [알트산책] 인터체인(inter-chain) 시리즈 - (2) ARK (아크) 편
- [알트산책] 인터체인(inter-chain) 시리즈 - (3) AION (에이온) 편
- [알트산책] 인터체인(inter-chain) 시리즈 - (4)Wanchain(완체인) 편
- [알트산책] Augur 어거 편 (미래 예측시장)
- [알트산책] 김정은의 최애 코인 MONERO (모네로, XMR)
- [알트산책] 신디케이터 - CND 토큰 (Cindicator , CND 코인, CND)
- [알트산책] Scalability 문제는 내가 해결한다! Zilliqa 플랫폼
- [알트산책] 노시스(Gnosis) 미래예측? 너의 미래가 궁금하다! (GNO 코인)
- [알트산책] DEX시리즈 - (1) 어서와 탈 중앙화 거래소는 처음이지?
- [알트산책] DEX시리즈 - (2) 0x(제로엑스) , 누구나 DEX를 만들 수 있어! (zrx 토큰)
- [알트산책] DEX시리즈 - (3) Airswap(에어스왑), P2P형식의 DEX(AST 토큰)
스스로 홍보하는 프로젝트에서 나왔습니다.
오늘도 좋은글 잘 읽었습니다.
오늘도 여러분들의 꾸준한 포스팅을 응원합니다.
항상 감사합니다👍
저도 가지고 있는 코인이라 궁금했는데, 자세하게 알려주셔서 감사드립니다 :)
읽어주셔서 감사합니다:) 자주자주 놀러와주세요^^
내용이 너무 알차네요~ 자주 놀러오겠습니다^^
찾아와주셔서 감사합니다:) 힐링스님 글도 잘보고있었습니다! 앞으로 더욱 좋은 글 올리려고 노력하겠습니다. 힘이나네요 ㅎㅎ
오! 많은 분들이 읽어 주시는 글에 제 계정명이 나오니 황송?할 따름입니다. ㅎㅎ
공부하면서 잘 이해 안되는 점이 많았는데 깔끔하게 정리해주신 덕분에 더 잘 이해가 되었습니다. ㅎㅎ
제가 이 코인에 주목하게 된 것은 말씀하신 것 처럼 on chain scaling 이슈 해결에 초점을 맞춘 점과 PoB를 통해 빈익빈 부익부 문제를 완화하려고 하는 점이 매력적으로 느껴졌기 때문입니다.
off chain을 통한 스케일링 이슈 해결은 그 한계가 분명합니다. 마치 CPU에 코어개수를 계속늘린다고 해서 실질적인 속도 개선은 힘든것 처럼요.
그러기에 질리카, iost와 같은 블록체인이 어서 나와서 on chain scaling 이슈 해결을 위한 또다른 기술개발의 동력원이 되었으면 합니다.
감사합니다. ^^
p.s. 미디엄 글에서 보면 iost는 atomic commit protocol 을 통해 inter-shard-transaction 을 구현한다고 나오지만 슈도코드 이외에 정확히 어떤식으로 문제없이 구현가능한지에 대해 잘 이해가 안되더라구요. 동시에 질리카는 샤드간 거래에 대해 아직 명확하게 설명하고 있지 않다고 하면서 iost를 옹호하던 문구를 보았습니다.
그렇다면 샤드간 거래에서 어떤 문제가 존재하는지 그리고 그것을 어떻게 해결해야 하는지가 중요해 보입니다. 그런데 그 문제가 무엇인지도 저는 몰라서.. 혹시 아시는게 있을까요?
부족하지만 잘이해되셨다니 다행입니다ㅜㅜ
사실 저도 샤딩에대해서 정확하게 아직 이해하지는 못했습니다. 정확한 답변을 드리기는 힘들 것 같습니다.
atomic commit protocol에 관해서는 백서에서는 omniledger를 활용했다고 나와있어서 omniledger 논문을 대충보니.. 거기에 답이 있는 것 같습니다.(아직 막막해서 자세히보지는 못햇습니다ㅜㅜ)
옴니렛져: https://eprint.iacr.org/2017/406.pdf
여길 참고해보면 좋을 것 같습니다ㅜㅜ
저도 더 찾아보다가 알게되면 말씀드리겠습니다 ㅎㅎ 화두를 던져주셔서 감사합니다👍👍