[블로그 번역] Memo.cash:트위터를 블럭체인에 모두 담기 위해서 얼마나 큰 블럭이 필요할까? 18.04.29
원문 Memo.cash math: How big do blocks need to be to handle twitter on-chain
트위터와 유사한 어플리케이션 memo.cash가
몇일 전 출시되었고 큰 관심을 모으며 많은
열정적 지지와 흥분들을 자아내고 있습니다.
온체인으로 이뤄지는 검열 불가능한
소셜 네트워크라니,정말 멋지지 않나요?
전체주의적 해이트 스피치 금지 법과
주커버그 밈들이 만연하는 이시대에
정말로 필요한 어플리케이션 입니다.
하지만 열기 속에서는 우려의 소리도 담겨있습니다.
요컨대 블럭체인이 감당할수 없는 크기까지
성장하게 될 경우에 대한 우려입니다.
트위터는 하루에만 수백만의 트윗을 감당합니다.
이 수준이면 블럭이 순식간에 꽉차 버리고 네트워크는
붕괴되던가 블럭을 감당할 수 있는 소수의
마이너들만이 남게될것입니다.
이 사안이 계속 저의 머릿속에 맴돌았기에
이하와 같은 질문들에 대해 답을 한번 구해보기로
마음 먹었습니다.
트위터의 규모를 감당하기 위해서는 얼마나 큰
블럭사이즈가 필요할까?
한번 계산을 해봅시다
제 스스로 여러가지 데이터를 한번 모아봤습니다
트위터에는 수많은 트윗들이 있습니다.
트위터는 하루에 500,000,000 개의 트윗을
감당합니다
그러니 이 갯수를 바로 Memo에 적용시켜
보면 되겠죠?
memo의 프로토콜에 설명되어 있는 바이트수에는
오류가 있습니다.
“follow user”행위에는 32바이트가 사용된다고
되어있지만 실제로는 20바이트 입니다.
“like“행위에는 20바이트가 아니라 32바이트가
사용됩니다.
Memo의 바이트 크기는 memo작성에 사용된
글자수에 의해서 정해집니다.76바이트가 한계죠.
그러나 5월 하드포크로 Op_return에 사용가능한
데이터 크기가 80바이트에서 220바이트로
상승하기에 memo역시 216자까지 감당이
가능해 집니다.
이 사이즈 크기의 차이를 알기쉽게 비교 하기 위해
비트 코인 백서에서 76 자로 이뤄진 인용문을
가져와 봤습니다
A purely peer-to-peer version of electronic cash would allow online payments
그리고 다음 인용문은 216자 입니다.
With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as
훨씬 더 유용하게 쓰일 수 있습니다.
(참고로 마지막에 문장에서 잘려나간 부분은 “unavoidable.”입니다.)
즉 이 상승분도 계산에 포함시켜야 됩니다.
Memo는 206바이트+글자수 입니다
만약 평균적으로 메모당 150자를 사용한다고
했을 때,메모의 크기는 356바이트 입니다.
그렇다면 비트코인 캐쉬의 블럭체인에서
블럭당 1236메가바이트,하루에 178기가바이트의
블럭이 생성된다는 뜻입니다.
뭔가 현실적인 숫자로 들리지 않나요?
기가블락 테스트넷 이니셔티브가 이미
1기가 블럭을 마이닝한바 있으니,가까운 미래에
이뤄질 1,2기가 정도의 블럭크기도 크게 문제가
없을 겁니다.
이제 Likes도 계산에 한번 넣어 봅시다.
하지만 우리는 트윗과 마찬가지로 메모에도
Likes를 클릭합니다.
트위터에서 하루에 얼마나 많은 Likes가
클릭되는지에 대한 공식자료는 없지만
개인적으로 자료를 한번 모아봤습니다.
저는 the,be,to,of,and 그리고 a 라는 단어가
포함된 1,252,199개의 트윗을 수집했습니다.
가장 흔하게 쓰이는 영단어들이죠.
(트위터 API를 이용하더라도 데이터를 모으기
위해서는기준이 필요하니까요)
그리고 어느정도 시간이 지난 트윗들이어야
했습니다.
사람들이 좋아요 표시를 누를 충분한 시간이
필요하니까요.
그래서 저는 일주일전의 트윗들만을 수집했습니다.
그리고 당연히 영어로 트윗만이 수집가능했습니다.
전체 트윗의 42.9%를 차지하고 있는 언어죠.
저 비율을 토대로 다시 계신한 결과
총 214,000,000의 영어 트윗으로
계산을 했습니다.
463,383개의 트윗은 아무 좋아요를
받지 못했습니다.
어떤 트윗하나는 4,587,067개의 좋아요를
받았더군요.
(이건 일주일 전의 트윗이 아니었는데 트위터 API가 포함을 시켰더군요.중복 체크를 통하여 계산에 악영향을 줄수 있는 이러한 트윗들은 제외시켰습니다.)
좋아요 갯수의 중앙값은 16개로 나왔습니다.
평균값은 8,737개로 나왔습니다.
저에게는 Pareto 분포와 비슷한 경향으로
보이는군요.
이미 많이 노출이 된 트윗일수록 더 많은 노출을
가지게 되는게 당연하니까요.
리트윗의 평균값은 3,606으로 나왔습니다.
(좀 더 계산하기 좋은 방법이나,데이터를 얻기 좋은 방법을 알고 계신분은 댓글을 남겨주시길 부탁드립니다.)
이제 이 계산값을 포함한 메모의 블럭체인 사이즈는
얼마나 될까요
메모의 like는 238바이트입니다.
(여기에 팁을 얹힌다명 271바이트가 됩니다.)
트윗의 경우 평균적으로 8,737의 like였으니까
계산을 하면...
하루에 1,876,673,412,332개의 like가 영어 트윗에서
이뤄집니다.
엄청난 숫자죠.
이것을 저장하기 위해서는 하루에 446테라바이트가
필요합니다.
블럭당 3.1테라바이트 입니다.
계산을 하다보니 비트코인의 블럭체인을
테라바이트 사이즈 블럭까지 스케일하는것을
목표로 하고 있는 Terab프로젝트의 영역까지
와버렸군요.
Joannes Vermorel의 이 프로젝트는 현재의
기술로도 이미 가능하다고 주장을 합니다.
그의 주장이 맞다면 트위터를 온체인으로
운영하는 것에 대해선 아무 문제가 없을듯 하군요.
메모가 트위터의 과거행보를 따라 성장하게 된다면 어떻게 될까요?
위에서 나온 숫자들이 뜻하는 바는 무엇일까요?
트위터는 오래시간에 걸쳐서 지금과 같은 인기를
구축했습니다.
여기서 우리는 네트워크효과에 따라서 Like의 수는
트윗수의 증가에 따라 2차적으로 증가한다는 점을
고려해야 합니다.
그렇기에 트윗하나당 like의 평균값은 훨씬 낮아야
할것입니다.
저는 과거의 트윗성장률에 따라 증가한
트윗의 수를 메모에 대입시켜서 얼마나 큰
블럭사이즈가 블럭체인에 요구되는지를
계산해 보았습니다.
여기에는 Like를 위한 공간도 추가를 시켜야 합니다.
계산하기 위해서는 트윗당 Like의 평균값을 알아야
하지만,저에게는 데이터가 없습니다.
2013-8-16: 하루당 5억개의 트윗, 1236 MB/block (2028년)
2012-3-21: 하루당 3억 4천만개의 트윗, 840.6 MB/block (2027년)
2011-10-17: 하루당 2억 5천만개의 트윗, 618.05 MB/block (2026년)
2011-6-30: 하루당 2억개의 트윗, 494.44 MB/block (2025년)
2011-1-30: 하루당 1억개의 트윗, 247.22 MB/block (2024년)
2010-3-14: 하루당 5천만개의 트윗, 123.61 MB/block (2023년)
2010-2-1: 하루당 3500만개의 트윗, 86.53 MB/block (2022년)
2009-1-1: 하루당 250만개의 트윗, 6.18 MB/block (2021년)
2008-1-1: 하루당 30만개의 트윗, 741 kB/block (2020년)
2007-2-1: 하루당 5000개의 트윗, 12 kB/block (2019년)
2006-3-21: 첫 트윗이 올라온 날자 (Memo가 2018년 4월에 출시)
만약 트윗의 성장세를 따라 메모가 성장하게 된다면
3년정도는 블럭사이즈에 크게 영향을 받을일은
없을것입니다.
체인을 스케일링 하기엔 충분한 시간이죠!
결론
무분별하게 정책위반이라는 사유를 들어
자신의 포스팅이 제거되어 본적이 있는
모든 분들에게 메모는 하나의 축복입니다.
기업의 아젠다와 발언을 제한을 가하는
법률에서 벗어나,우리는 지금 역사상 최초로
진정한 자유로운 아이디어의 장터를
가지게 된 것인지도 모릅니다.
그리고 그 모든것들이
비트코인 캐쉬 블럭체인으로 지켜집니다.
제가 수행한 계산으로 미뤄볼때,
우리에겐 메모를 위한 충분한 공간이
있는것으로 보입니다