nostr이 가진 많은 특성 중 하나로 조작이 불가능하다는 것이 있는데, 그렇게 크게 어필이 되는 강점은 아니다. sns에서 논란이 되는 것은 검열과 프라이버시 문제지(사실 이마저도 크게 신경 쓰지 않는 사람이 대다수고) sns의 운영자가 내 계정으로 내가 하지도 않을 발언을 내가 한 것처럼 속여 게시한다거나 하면 어쩌냐는 걱정을 하는 사람도 별로 없고 실제로 그런 부정도 발생하지 않는다(최소한 자주 발생하지는 않는다).
하지만 실제로 그런 부정이 발생하느냐 하지 않느냐와는 별개로 레거시 미디어에서 그런 부정이 기술적으로 가능하며, 검열 불가능한 탈중앙화 sns(혹은 메신저)를 표방하고 나온 nostr에서 당연히 해결을 해야 하는 문제였을 것이다. nostr는 계정의 소유권을 특정 중앙화된 서버가 아니라 오직 개개인에게 귀속시키기 위해 타원곡선 공개키 방식의 키를 곧 계정으로 하는 법을 택했고 이에 따라 자신의 글을 임의의 릴레이에 올리기 위해서 비밀번호 따위의 쓰레기 같은 기술에 의존하지 않고도 자기가 자신이라는 것을 '증명'할 수 있게 되었다.
암호학에 의해서 내가 나라는 것을 증명하기 위해서 오직 나만이 가지고 있는 비밀키로만 만들 수 있는 서명을 첨부하면, 서버(nostr에서는 릴레이)는 한번도 본 적이 없는 사람임에도 해당 발언이 해당 공개키가 한 발언이라는 것을 확신할 수 있어 로그인이라는 과정이 완전히 불필요하며, 해당 유저의 발언을 전해듣는 다른 클라이언트의 입장에서도 그 발언이 진짜 그 공개키를 소유한 사람의 발언이라는 것을 수학적으로 검증할 수 있다.
nostr에선....다른 sns로 치면 글 번호 혹은 글 id 라는 것이 다른 sns에서 처럼 그저 1씩 증가하는 숫자나 랜덤한 문자열이 아니라 글(트위터로 치면 트윗, nostr에서는 노트라고 부르는 그것) 내용(및 글의 메타데이터)를 sah256으로 해시한 값이며 내가 나임을 증명하기 위해 그 id값에 개인키로 서명을 해서 note를 퍼뜨리게 되는데 바로 여기서 수정의 문제가 발생한다.
글을 쓴 다음 내용을 수정하려고 한다면 앞서 말한 프로세스에 따라 글의 id값이 당연히 달라지게 된다. nostr에서 글의 id는 내용의 해시값이므로. 그런데 해당 노트가 이미 게시됐고 심지어 다른 사람들로부터 덧글이 됐든, 리트윗이 됐든, 혹은 zap(nostr 버전의 팁. 비트코인 친화적인 nostr에서는 네이티브하게 라이트닝 네트워크 결제를 지원한다)이 됐든 어떠한 종류의 반응을 받았다면 그 '반응'이라는 것은 기존의 노트를 id로 참조하기 때문에 수정을 할 수가 없어진다는 것이 문제다. 글의 내용을 조금 고친 새로운 글이 생성될 뿐이지 사실상 수정이 아닌 것이지.
이 문제를 어떻게 해결할 것이냐에 대해 양립할 수 없는 두가지 이론(異論)이 있다.
하나는 nostr의 창시자가 강력하게 지지하는 의견인데, 애초에 수정이라는 것을 허용하면 안된다는 것이다. 당연히 어떻게든 구현하고자하면 구현할 수는 있는 기능이겠지만 그것은 구현의 난이도를 높이며(레거시 미디어의 수정과는 완전히 다름) 이는 코딩에 아주 능숙한 개발자가 있는 클라이언트를 제외한 다른 클라이언트에서는 구현되지 못할 것이고, 이는 유저들이 동일한 글을 다른 클라이언트에서 봤을 때 다르게 보이는 현상을 낳을 것이며 이거는 유저의 경험을 크게 해친다는 것이다. 게다가 그런 경험은 수정을 구현하지 않은 클라이언트에 일종의 결함이 있는 것처럼 보이게 하여 유저로 하여금 그것을 버리게 할 것이고 수정을 구현한 소수의 클라이언트에게로 집중화되는 현상을 낳을 것이라는 점이다. nostr을 그저 sns나 메신저로 활용하는 것이 아니라 https와 같은 일종의 프로토콜로 여겨 수많은 클라이언트가 각자의 필요에 맞는 만큼만 구현해서 서로가 필요한 클라이언트를 다 알아서 따로 쓰는 것을 이상적으로 생각하는 입장에서 지지할 만한 의견이다.
그에 반해, 안드로이드에서 가장 지배적인 점유율을 점하는 amethyst의 메인 개발자가 지지하는 의견으로, 철학이고 나발이고 수정은 사람들이 당연히 기본적으로 요구하는 기능이며 유저들의 요구보다 우선하는 것은 없으므로 당연히 제공되어야 하는 거라는 의견이다. 글에서는 생략하겠지만 다소 복잡한 과정을 통해, id가 달라짐에도 불구하고 반응을 그대로 유지하여 유저들고 하여금 그냥 수정이 기본적으로 되는 것처럼 구현을 시키는데 성공했다.
창시자가 전자를 강력히 지지하지만 진정으로 탈중앙화된 기술이(이더더리움관 달리 ㅋ) 전부 그렇듯이 창시자가 플랫폼을 소유하는 것이 아니므로 amethyst의 개발자는 창시자를 개무시하고 해당 기능을 구현해버렸다. 뭐 창시자의 걱정처럼 사람들이 다 다른 클라이언트를 버리고 amethyst로 이주하지는 않았다. 가장 점유율이 높긴 하지만, 일단 ios 유저들이 전부 amethyst를 사용하지 않고 안드로이드 유저들도 coracle나 primal 등 수많은 클라이언트에 적절하게 분산되어 있고, 수정이 안되는 점을 특별히 심각한 문제라고 생각하지도 않는다.
하지만 그럼에도 불구하고 amethyst의 정책이 마음에 들지 않았던 nostr의 창시자는 소소한 복수를 시전했는데, 그 수정을 구현한 부분을 오히려 오류라고 사용자들이 느끼게끔 시위를 시작한 것이다.
바로 이렇게. 글을 쓴 다음, 어느 정도 반응이 달리고 나면 글을 수정해서 완전히 맛이 간 스팸처럼 바꿔 버린다. 당연히 amethyst의 이용자들은 이거 좀 어떻게 하라고 아우성을 치고 있다. 둘 개발자 사이의 기싸움이 어떤 결말을 맞을지 상당히 궁금해지는 부분이다.
일부러 수정해서 맥이는건 참신하네 ㅋㅋ