블록체인 확장에 대해서
댄더맨 글 입니다.
https://steemit.com/steem/@dantheman/the-real-blockchain-scalability-challenge
리얼타임 퍼포먼스 : 노드들이 돌아가고 있을 때 실시간으로 트랜잭션을 처리하는 속도
리플레이 퍼포먼스 : 노드를 새로 켜서 블록체인을 동기화 시킬 때의 속도
스팀 블록체인은 리얼타임과 리플레이를 합쳐서 1초에 50,000 개의 추천 오퍼레이션을 처리할 수 있습니다.
추천 한개를 처리하는데 20 µs (0.00002 초) 가 걸립니다.
리얼타임 처리속도가 너무 빨라서 균형이 맞지 않는다면 새롭게 시작하는 노드 혹은 약간 동기화가 뒤쳐진 노드가 실시간 새로운 오퍼레이션 처리 때문에 동기화를 따라잡지 못하는 문제도 생길 수 있습니다.
이상적으로, 리플레이 동기화는 지난 1년치를 따라잡는데 30분 이내에 완료될 수 있어야 합니다. 10년된 블록체인을 리플레이 하는데 5시간이 걸릴 것입니다.
초당 5만개는 이론상의 수치이고, 현실적인 조건에서 스팀은 초당 1000 개의 트랜잭션을 처리할 수 있습니다. (현실적인 조건이란, 증인 노드 서버들의 하드웨어 및 네트워크 성능입니다.)
이것을 초당 10000개 까지 끌어올려야 목표값인 초당 500개의 리얼타임 트랜잭션을 처리하고 리플레이 속도를 1년치에 30분 이내가 되도록 할 수 있게 됩니다.
여기서 좀더 기준을 완화시킨다면 1년치를 한시간 이내에 리플레이 시키는 것을 기준 목표로 잡을 수도 있습니다.
리플레이 퍼포먼스가 중요한 이유
새로운 노드를 trustless 로 처음부터 다 싱크 해서 동기화를 마치는 것이 쉬워야 합니다.
블록체인의 상태가 잘못된 값이 들어간 경우(corrupted), 데이터베이스 스키마 변경, 새로운 기능이 추가된 경우에 동기화를 하게 됩니다. 이 때 리플레이를 따라잡기 위해 며칠, 몇주동안 스팀노드와 그 스팀노드를 이용하는 서비스의 다운타임이 발생하면 곤란하겠죠.
비트코인 블록체인을 리플레이 하는데 최고 스펙의 하드웨어로도 12시간이 걸리는데, 지난 8년동안 평균 초당 2트랜잭션, 잘해야 초당 5 트랜잭션 정도를 처리하는 것 치고는 너무 비효율적으로 오래 걸립니다.
스팀은 이 문제를 해결했습니다.
싱글스레드 제한이 블록체인의 확장을 막는 보틀넥이었습니다. 모든 트랜잭션이 그 블록체인의 전체에 임팩트를 준다면 후속 트랜잭션에도 임팩트가 갈 수 있습니다. 동기화에 오버헤드가 있으면 병렬처리가 의미 없게 됩니다.
스팀과 스팀잇의 확장성을 최우선으로 놓겠습니다. 이번주에 우리 개발진은 스팀의 확장성에 대한 설계와 로드맵을 짰습니다. 아무리 많은 사용자와 트랜잭션이 와도 감당할 수 있도록 하는 설계 입니다. 현재 그 설계를 문서화 작업 중이고 개발과 디플로이 일정 로드맵 작성중입니다.
탈중앙화 블록체인이 레딧과 페이스북 합친것 만큼 까지도 처리할 수 있을 정도로 확장성을 가지게 된다는 점에서 지금처럼 흥분된 적이 없었던 것 같습니다.
이내용대로면 이더는 이미 낙동강오리알 신세이구 스팀이 비트도 넘어서겠는데요....
스팀이 비트를 넘어선다면 우린 전부 재벌이 되겠네요 ㅎㅎ