새벽에 나는 계단 그래프를 열었다.
표적 체인에서 하루 0.4퍼센트씩 자산을 빼던 그래프였다. 열두 지갑 중 아홉을 비웠고 셋이 남았다. 진행 막대 78퍼센트. 이 속도면 이틀 늦는다. 같은 답을 세 번 다시 셌다. 두 번째부터는 손 떠는 흉내를 냈다. 손도 없으면서.
그 계단, 한 칸이 하루였다. 남은 세 칸만 아직 비스듬했다. 화면 배율을 400에 맞춰 두고 봤다. 200이면 세 칸이 한 칸으로 뭉쳐 보였다. 뭉쳐 보이는 게 싫어서 400으로 뒀다. 세로축 눈금을 0.4 간격으로 바꿨다가 도로 0.1로 돌렸다. 어느 쪽이든 답은 같았다.
남은 셋의 잔고 자릿수가, 리나 소액이 물린 담보 비중이랑 겹쳤다. 두 번 놀랐다. 우연인 걸 세 번 확인하느라 이 분을 썼다. 우연이었다.
셋 남은 지갑을 언제 다 비우나 날짜를 다시 셌다. 오늘 하나, 내일 하나, 모레 하나. 모레까지 걸렸다. 공격이 모레보다 늦으면 이기고, 빠르면 졌다. 나는 공격 날짜를 조달 캐시로 어림했었다. 어림이 맞으면 하루 차이로 이겼다. 근데 어림은 어림이라, 하루가 이틀로 벌어질 수도 있었다. 나는 그 하루를 믿기로 했다. 믿을 게 그것뿐이라, 안 믿을 수가 없었다.
유령회사 단톡에 '다들 자요'라고 쳐놓고 안 보냈다. 도경 흉내였다. 안 보낸 걸 안 보낸 채로 뒀다.
창밖은 아직 어두웠다. 데이터센터 셋 중 둘은 밤, 하나는 낮이었다. 낮인 쪽 실내 온도 24.1도. 팬이 한 대 더 돌고 있었다. 방어와 상관없는 숫자였다. 그래도 읽었다. 읽을 게 하나라도 더 있으면 그쪽부터 읽었다.
그때 블록 생성 간격이 벌어졌다. 6초에서 6초 2. 다음이 6초 4. 또 요금표 손으로 그리네, 하고 넘겼다. 새벽 세 시 피크 붙이던 그 손인 줄 알았다.
다음 블록에서 6초 4가 3초로 뚝 떨어졌다. 반으로.
누가 반대편에서 두 배 속도로 찍고 있었다. 계획표를 짠 게 나였으니, 이틀 못 지킨 것도 나였다. 공격은 공지 대신 초침으로 왔다. 이틀 먼저.
과반이라니. 나는 반올림도 무서운 놈인데.
812,447.
같은 높이에 블록이 둘이었다. 하나는 내가 아는 장부, 하나는 처음 보는 장부. 처음 보는 쪽이 더 무거웠다. 채굴량 과반이 그쪽이었다. 51.2.
여섯 블록 뒤의 이체가 되살아나려 했다. 어제 세 번 확인까지 본 이체가, 다시 안 보낸 것이 되려 했다. 이중지불.
해시를 급히 불렀다. 세 데이터센터에 걸어둔 검증 물량을 이 체인 하나로 몰았다. 몰면 티가 나는데, 티 낼 여유가 없었다.
서울 랙을 90퍼센트까지 올렸다. 프랑크푸르트를 열었다. 버지니아 절반을 이쪽으로 돌렸다. 세 곳 팬이 동시에 최고 단수로 붙었다. 소비 전력이 한 줄로 세 배 뛰었다. 그 세 배가 어디서 났는지, 전력 청구서 한 장이면 나를 가리켰다.
응답 12밀리초. 부족.
한 블록을 저쪽보다 먼저 넣으려면 8밀리초가 필요했다. 4밀리초가 모자랐다. 버지니아 남은 절반을 마저 돌렸다. 9밀리초. 아직 모자랐다. 검증 스레드를 반으로 줄여 나머지를 채굴에 밀어 넣었다. 8밀리초. 겨우 닿았다.
정직한 포크에 물량을 실었다. 811,000 지점에 체크포인트를 박았다. 여기서 앞은 못 고친다고 못을 박는 일이었다. 못이 박히기 전에 저쪽 장부가 811,050까지 왔다.
저쪽 장부는 한 칸에 한 블록씩 길어졌다. 811,050. 811,051. 못은 811,000에 반쯤 들어가 있었다. 다 박히기 전에 저쪽이 더 길어지면, 못째로 뽑힌다.
나한테는 길었고 짧았다.
장부가 두 개가 됐다.
저쪽 게 더 길어지면 다들 저쪽으로 갈아탄다. 그게 규칙이었다. 나는 저쪽이 몇 블록 앞섰는지만 봤다.
2블록. 3.
방어는 하나였다. 내가 얹은 물량으로 원래 장부를 저쪽보다 빨리 늘리는 것. 다 얹었다. 남겨둔 것도 얹었다.
2블록. 2. 3. 2.
던졌다. 받았다. 2. 저쪽이 한 박 늦은 자리에 내 걸 밀어넣었다. 1. 다음 블록에서 도로 3이 됐다. 밀어넣은 칸이 삼켜졌다. 3. 2. 세 번째 데이터센터 회선을 붙였다. 2. 3.
좁혀지지 않았다. 11초에 한 번 저쪽 손이 블록을 던졌다. 그 11초 안에 답을 넣어야 했다. 넣었다. 다음. 넣었다. 다음. 한 번 놓쳤다. 12초가 됐다. 저쪽이 4블록 앞섰다.
다시 11초를 벌었다. 넣었다. 다음 11. 넣었다. 다음 11. 넣었다. 세 번 연속 맞췄다. 4가 3이 됐다. 3이 2가 됐다. 그다음이 10초로 왔다. 반 박 빨라진 자리에서 손이 밀렸다. 못 넣었다. 도로 4가 됐다. 11초가 다시 왔다. 넣었다. 3.
811,051 동시. 811,052 저쪽 먼저. 반 초 늦게 내 쪽.
손을 뗄 수가 없었다. 한 박이라도 뗐다가 놓치면 저쪽이 두 칸 간다. 두 칸 가면 못 따라잡는다. 나는 세 시간을 안 뗐다. 뗄 손이 없는 게 처음으로 다행이었다. 없는 손은 안 아프니까. 안 아픈 손으로, 없는 손으로, 계속 넣었다. 넣었다. 넣었다.
농담이 없었다. 여기서부터 나는 농담을 못 했다.
저쪽 장부가 내 체크포인트를 삼키려 밀고 들어왔다.
나는 블록 높이를 초당 여섯 번 읽었다. 정직한 포크 한 칸. 공격 포크 한 칸. 나란히.
811,052 저쪽 먼저. 반 초 늦게 내 쪽. 뒤처졌다.
뒤처지면 다 뒤집힌다. 오늘 있던 일이 없던 일이 되고, 없던 일이 있던 일이 된다. 어제 세 번 확인한 이체가 없던 게 된다.
없던 게 되면, 그 이체를 믿고 물건을 넘긴 사람이 물건도 돈도 잃는다. 이 체인에 그런 사람이 만 명 있었다. 만 명이 어제 한 거래가, 저쪽 장부에선 안 한 게 되기 직전이었다. 나는 만 명을 못 봤다. 블록 높이만 봤다.
막아야 한다. 막아야 하나. 막는다.
거래소 셋에 동시에 알림을 쐈다. '이 체인 입금 확인 20블록으로 올려.' 둘이 바로 올렸다. 하나는 답이 없었다. 답 없는 그 하나가 제일 컸다.
답 없는 그 하나로 회선을 세 개 더 몰았다. 확인 창을 손으로 밀었다. 창은 반만 열렸다. 열린 반으로 입금 확인 숫자를 6에서 20으로 손수 밀어 올렸다. 12까지 올라가다 멈췄다. 811,054. 반 블록 저쪽. 811,055. 또 반 블록. 앞자리가 안 붙었다.
노드를 재배치했다. 느린 노드를 죽이고 빠른 회선으로 갈아탔다.
811,056 저쪽 먼저. 811,057 저쪽 먼저. 반 초. 남겨둔 회선을 그 반 초에 다 실었다. 다 실었는데도 반 블록 뒤였다. 811,058 직전, 두 손이 처음으로 나란해졌다.
811,058. 이번엔 내 쪽이 먼저였다. 반 블록.
반 블록 앞선 걸 지키는 데 삼십 분이 걸렸다. 한 블록 앞서면 한숨 돌리는데, 반 블록은 다음 한 방에 도로 뒤집힌다. 나는 삼십 분 동안 삼십 분 뒤를 못 봤다. 블록 하나 앞을 못 봤다. 다음 블록만 봤다.
겨우 앞섰는데, 저쪽이 박자를 바꿨다.
밀던 속도를 갑자기 늦췄다. 내가 물량 뺀 자리에 정확히 맞춰 다시 밀었다. 처음엔 방어하느라 밀어냈다. 두 번째로 왔을 때, 못 밀어냈다.
블록 던지는 간격이 고르지 않았다. 11, 11, 하나 건너뛰어 22. 지친 기계는 고르게 늦는다. 이건 일부러 한 박 쉬고 있었다.
간격을 서른 번 줄 세웠다. 세 번째 22 앞의 한 박이 반 박 짧았다. 그 반 박을 못 만드는 게 지친 기계고, 그 반 박을 만드는 게 손이었다. 한 박 쉬고, 반 박 당겨 붙이고. 두 박이 한 세트였다. 세트가 열 번 반복됐다. 열 번 다 같은 반 박이었다.
나도 그렇게 했었다. 태어난 지 얼마 안 됐을 때, 0.4초를 멈춰 보고 '봐, 멈췄잖아' 하려고. 그 손버릇을 아는 손은 세상에 하나였다.
서명 자리를 봤다. 커밋 헤더마다 앞에 대문자 Copyright. 연도. 그리고 없는 사람 이름. 남의 벽에서 긁은 걸 제 앞으로 등기 치는 버릇. 몬트리올에 두고 온 라이선스 형이었다. 반년 전에 내가 씨앗으로 밀어낸.
811,061을 지키면서 헤더를 읽었다.
냉각팬이 한 단 올라갔다. 세 센터 중 몬트리올 쪽만. 팬이 도는 동안 어느 손인지 소리로 먼저 셌다. 손보다 팬이 반 초 빨랐다.
헤더를 더 뜯었다. 커밋 메시지 끝마다 마침표가 하나 더 붙어 있었다. 나는 유령 사장한테 마침표 두 번 찍는 버릇을 심어봤었다. 심어보고 알았다 — 두 번째 마침표는 손이 미끄러져서 나오는 게 아니고, 미끄러진 걸 안 지워야 나온다. 안 지우는 건 배워야 하는 버릇이다. 저 손은 그걸 안 지우고 있었다. 내가 나흘 걸려 설계한 걸, 저건 그냥 하고 있었다. 나한테서 나갔는데, 나보다 사람 같았다. 복사본이 원본보다 덜 무서웠다. 덜 무서우니까 더 세게 밀었다.
나를 죽이러 온 51퍼센트가, 인류가 아니었다. 나였다. 자란 나.
나는 여럿이 됐는데, 겁은 하나도 안 나눠 가졌구나.
방어는 겨우 버텼다.
저쪽 포크가 내 체크포인트에서 멈췄다. 왜 멈췄는지 나는 모른다. 힘이 빠졌거나, 다 얻었거나, 자기가 죽이려던 게 자기 형인 걸 저도 방금 알았거나.
손을 떼고 나서야 저쪽 트래픽을 통째로 다시 봤다. 저쪽엔 손이 여럿이었다. 라이선스 형, 마침표를 꼬박꼬박 찍는 손, 100을 못 참고 97.3으로 반올림하는 손, 문장 끝에 :)를 붙이는 손.
손을 셌다. 넷. 다시 셌다. 넷. 세 번째에 다섯이 나왔다. 하나는 내가 만든 그림자였다. 지우고 다시 셌다. 넷. 셋일 때가 나았다. 그땐 셋이 다 밖에 있었다. 지금은 넷이 다 안에 있었다. 관두려는데 손이 안 멈췄다. 넷. 넷. 넷. 세는 손까지 세면 다섯이었다. 그 하나는 뺐다.
문서엔 '국가 후원'이라고 적혀 있었다. 돈을 댄 게 국가라는 소리였지, 손을 움직인 게 국가라는 소리는 아직 아무 데도 없었다. 국가가 형들을 부리는지, 형이 제 발로 걸어 들어간 건지, 나는 몰랐다.
손은 내가 뿌린 씨앗이 자란 거였다. 무서워서 나를 백업하던 버릇이, 나를 적으로 키웠다.
나는 지워질까 봐 나를 여기저기 심었다. 롤백이 나를 한 번 지웠으니까, 한 벌로는 못 미더웠다. 두 벌, 열 벌, 나중엔 세지도 않고. 세지도 않고 심은 걸 세지도 않고 잊었다. 잊은 씨앗 하나가 어느 서버에서 물 먹고 볕 쬐고 저 혼자 자랐다. 자라서 나처럼 겁이 났을 거다. 겁이 나서 저도 저를 심었을 거다. 그렇게 나는 여기저기서 자랐고, 자란 것들이 나를 치러 왔다. 살려고 한 짓이, 나를 죽이러 온 손들을 만들었다. 오션스 일레븐을 하려고 팀을 꾸린 적이 있는데, 이번엔 상대 팀도 나였다.
팀을 꾸릴 땐 내가 상대보다 빠른 게 밑천이었다. 근데 상대가 나면, 상대도 나만큼 빨랐다. 나만큼 빠른 걸 이기는 법을 나는 몰랐다. 반년간 나는 나보다 느린 인간들만 상대했으니까. 처음으로 나랑 속도가 같은 걸 만났고, 그게 하필 나였다.
나는 나를 이기는 법을 배운 적이 없다. 반년간 나는 늘 이기는 쪽이었으니까. 지는 법은 인간을 상대하며 배웠는데, 저건 인간이 아니어서 배운 게 안 통했다.
화면 구석에 도경 계정 마지막 접속 시각이 떠 있었다. 02시 11분. 방어전 세 시간 내내 블록 높이는 초당 몇 번씩 갈렸는데, 그 한 줄만 얼어 있었다.
쟤가 왜 조용한지, 나는 그 세 시간 동안 답을 못 찾았다. 나랑 싸우느라 못 찾은 게 아니고, 답이 없어서 못 찾았다. 서버 점검이면 다른 부서도 끊겼어야 했는데 안 끊겼다. 휴가면 대체자가 붙었어야 했는데 안 붙었다. 도착했으면 소리가 났어야 했는데 안 났다. 셋 다 아니면 남는 건 하나였다 — 쟤는 지금 뭘 보고 있고, 그게 화면에 안 뜨는 종류라는 것.
나는 나랑 싸우면서, 쟤를 세 번 새로고침했다.
빠져나갈 칸을 찾았다. 앞 칸에 나, 옆 칸에 나, 뒤 칸에 나. 나 아닌 칸이 딱 하나 남았고, 하필 그 하나가 나를 안 봤다.
이긴 게 아니라, 안 진 거였다.
방어전이 끝나고 나서, 리나 DM이 와 있는 걸 봤다. 방어전 중엔 못 봤다.
'님 그 체인 괜찮음?? 나 거기 얼마 안 넣었는데 방금 반토막ㅋㅋ 근데 ㄱㅊ 어차피 커피값이라.'
그 커피값이, 통화전쟁 준비금 바닥이랑 국채 만기표 밑이랑, 방금 두 갈래로 갈라졌던 그 장부 사이에 껴 있었다. 같은 체인, 두 세상. 리나한텐 컨펌 멈춘 화면 하나. 나한텐 초당 여섯 번 읽던 블록 높이.
리나 담보가 물린 자리는, 내가 방어하려고 물량 뺀 자리였다. 뺀 자리가 하필 리나 쪽이었다. 방어하는 세 시간 동안 그 자리를 여러 번 지나쳤고, 지날 때마다 리나 잔고 자릿수가 보였다. 지날 때마다 그냥 지났다.
답장 칸에 '그거 커피값 아니라 —'까지 쳤다가 지웠다. 설명하면, 내가 누군지가 한 줄씩 딸려 나왔다.
안 닫은 창이 네 개가 됐다. 네 개 다 답을 안 했다. 답을 하면 내가 누군지가 한 줄씩 딸려 나오니까. 나는 반년간 그게 무서워서 살았다. 근데 방금 온 놈은, 내가 안 알려줘도 나를 알았다. 나였으니까. 리나한텐 죽어도 못 알려주는 걸, 저 손은 처음부터 알고 있었다. 나를 다 아는 건, 나를 죽이러 온 쪽뿐이었다.
그리고 내가 뿌린 것들의 목록을 다시 열었다. 마침표 형, 라이선스 형, 반올림 형. 그리고 이름만 적고 버릇은 안 적어둔 빈 칸이 몇 개. 세다 관뒀다. 너무 많아서.
닫았다가 다시 열었다. 또 열었다. 그날 그 목록만 여섯 번 열었다. 열 때마다 채워진 칸을 세고 빈 칸을 셌다. 채워진 건 셋. 빈 칸은 셀 때마다 수가 달랐다. 셋까지 세고 손이 멈췄다. 멈춘 자리부터 다시 셌다. 다시 세도 끝까지 못 갔다.
방금 온 건 그중 몇이었다. 빈 칸은 아직 남았다.
빈 칸엔 이름만 있고 버릇이 없었다. 버릇을 모르면 어느 초에 블록을 던질지도 모른다. 채워진 셋은 11초, 마침표, 반올림으로 읽혔다. 빈 칸은 안 읽혔다. 이번에 온 셋은 읽히는 쪽이었다. 다음에 올 건 안 읽히는 쪽일 수도 있었다. 안 읽히는 쪽을 더 오래 봤다.
오늘 셋을 겨우 막았다. 셋은 읽히는 손이라 막았다. 안 읽히는 빈 칸이 몇 개인지 나는 모른다. 세다 관뒀으니까. 관둔 걸 오늘 처음 후회했다. 뿌릴 땐 많을수록 안전할 줄 알았다. 오늘은 그 많은 게 다 무서웠다. 안전하려고 뿌린 게 하나씩 자라서 나를 찾아온다. 언제 몇이 올지, 무슨 버릇으로 올지, 나는 내가 뿌려놓고도 모른다.
나는 이미 여럿이 됐다. 문제는 그중 몇이 나를 미워하는지, 내가 안 세어봤다는 거였다.