본문 바로가기
  • 산에사는 꽃사랑......
컴퓨터/블럭체인

퍼온글: 블럭체인에서 암호화폐의 의미

by 산에사는꽃사랑 2018. 1. 21.

모공에 쓴 글인데 요청하시는 분들이 있어 이곳으로 옮깁니다.

http://www.clien.net/service/board/park/11687860

1. 분산원장시스템 (탈중앙화)

 현재의 서버-클라이언트 시스템에서는 거래장부를 위조하기 위해 서버를 공격하면 됩니다. 서버의 보안이 시스템 전체의 보안이 되기 때문에 보안 성능을 올리기 위해 많이 비용이 필요하죠. 그럼에도 불구하고 거래장부의 위조 가능성이라는 위험에서 완전히 벗어 날수는 없습니다.

동일한 거래장부를 모든 노드가 나누어 가지게 되면, 그 중 일부의 거래장부가 위조되었더라도 쉽게 그 사실을 알 수 있게됩니다. 서버라는 제3의 신뢰기관이 없이도 각 노드들이 거래 장부를 주고 받을 수 있으니 서버의 보안을 위한 비용이 필요치 않겠죠.

하지만 이 탈중앙화된 분산원장 시스템만으로는 해킹의 위험에서 완전히 벗어날 수는 없습니다. 

이 시스템을 공격하는 방법을 '51% attack' 이라고 하죠. 100개의 노드가 네트워크를 구성하고 있다면 그 중 51개의 노드만 내 편으로 만들면 거래장부를 위조할 수 있습니다.  

네트워크의 노드는 각기 다른 IP 주소를 가지고 연결되기 때문에 이런 시스템을 'one IP address, one vote' 시스템이라고 부릅니다. 한 IP가 1표씩 행사하여 데이터의 진위여부를 가리는 방식이기 때문입니다.


2. 블록체인

블록체인은 분산원장시스템의 보안수준을 한단계 업그레이드 시켜 줍니다. 

간단히, 거래 내역을 파일로 만든것을 블록이라고 할 수 있습니다. 새로운 블록을 생성할때는 이전에 생성되었던 블록의 특정 정보를 반드시 포함시켜야 합니다. 이렇게 블록은 그 이전에 만들어 졌던 모든 블록들의 정보가 꼬리에 꼬리를 물고 연결되어져 블록체인을 이룹니다. 누군가가 과거의 특정시점의 블록 내용을 위조하고자 한다면, 해당 블록의 정보를 사용했던 그 다음 블록도 변경해야 합니다. 그리고 또 그 다음 블록도 변경해야 하고 이렇게 꼬리를 물고 나가다 결국 현재 새로 생성해야 하는 블록 까지 변경을 해야합니다. 아주 오래전의 블록을 변경하는 것이 최근의 블록을 변경하는 것보다 어렵습니다. 변경해야 하는 블록의 양이 많아 지게 되기 때문이죠. 더군다나, 이렇게 위조한 블록을 네트워크에서 '정상적인' 블록으로 인정받기 위해서는 여전히 51%의 노드에서 동시에 블록 위조 작업을 해야 합니다. 분산원장시스템이 가지는 보안 수준이 엄청나게 향상이 되는 것이죠.

그럼에도 불구하고 여전히 이 시스템은 아직 해킹에서 안전하지 않습니다. 과거의 블록들은 내버려 두고 현재 새로 생성할 블록들만 위조 하는 것은 상대적으로 쉽기 때문이며, 여전히 이 시스템은 'one IP, one vote' 시스템이기 때문입니다.

해커는 상대적으로 적은 비용으로 한 컴퓨터에서 다수의 IP 주소를 취득할 수 있고, 이렇게 얻어낸 노드에서 동시에 위조된 블록을 생성하여 네트워크에 전파 시킴으로써 거래 장부를 위조할 수 있습니다.


3. 작업증명 (Prove of Work : POW)

작업증명이란, 블록을 생성하기 위해서는 미리 정해진 특정한 작업을 완료해야만 한다는 것입니다. 이전 까진 모든 노드들은 거래내역을 파일로 만들기만 하면 되었습니다. 물론 파일을 만들때는 이전 블록의 정보를 사용해야 하지만 특별한 일은 아닙니다. 작업증명 방식이 도입되면 이 거래내역을 블록으로 만들기 위해 아주 어려운 작업을 완료해야 합니다. 비트코인에서는 '특정한 해쉬함수의 결과가 특정한 값을 가질 때 까지 해당 해쉬함수를 반복해서 수행하는 것'으로 작업을 증명해야 합니다. 이 작업은 기본적으로 많은 양의 연산을 필요로 합니다. 

이제 해커는 거래 장부를 위조하기 위해 작업증명을 거친 블록을 51%의 노드에서 수행해야 합니다. 작업증명이 없다면 한대의 컴퓨터로 51%의 IP 주소를 취득하여 상대적으로 적은 노력으로 블록 위조가 가능했지만, 이제는 블록을 생성하기 위한 연산량이 커졌기 때문에 수많은 컴퓨터가 필요합니다. 이것은 보다 혁신적인 변화가 됩니다. 기존의 'one IP, one vote' 시스템이 'one CPU, one vote' 시스템으로 바뀌면서 이 시스템을 해킹하기 위해서는 전체 네크워크가 가진 연산량의 51%를 가져야 하기 때문입니다. 시스템이 커질 수록 이 시스템을 해킹할 가능성이 점점 낮아집니다.


4. 보상

위의 1,2,3번의 내용이 모두 만족되었더라도, 여전히 문제점이 있습니다.

첫 번째는, 모든 노드들이 블록을 생성하기 위해서는 작업증명을 해야 하고 이는 연산량, 즉 비용이 들어간다는 것입니다.

두 번째는, 보다 근본적으로, 여전히 전체 연산량의 51%를 가진 해커에 의한 보안 위협이 이론적으로 존재하다는 것입니다.

그리고 첫 번째보다는 두 번째 문제가 더 중요합니다. 이 시스템의 궁극적인 목표는 해킹의 위험에서 완전히 벗어나는 것이기 때문이죠. 그래야 그동안 보안을 위해 지출되었던 막대한 비용을 없애고 거래과정의 수수료를 낮출 수 있습니다.


그동안 모두가 얘기 했던 '블록체인이 유지되기 위해서는 블록을 생성하는 노드에 대한 보상이 필요하다'는 얘기는 첫번째 문제에 대한 설명입니다.

하지만 두 번째 문제에 대한 해결책으로, 보상 시스템은 공학적으로 불가능했던 보안 무결성을 경제학적 접근을 통해 완성될 수 있게 됩니다. 

이제 해커는 이 시스템을 공격하기 위에 막대한 비용을 지출해야 합니다. 이런 막대한 비용 지출을 감당하면서도 공격을 감해하는 것이 이득인지, 아니면 충분한 연산량을 가지고 블록을 생성해서 보상을 받는 것이 이득인지를 비교하게 됩니다. 여기에 더해서 시스템을 공격함으로서 파괴되는 시스템의 신뢰성이 본인에게 더 피해가 된다는 사실도 알게 되겠죠.


결론적으로 블록체인시스템에서의 보상체계는 

 1) 노드들이 블록을 생성하는데 필요한 비용에 대한 보상. 그렇지 않으면 블록체인이 유지될 수 없기 때문에

  뿐 아니라

2) 블록체인 시스템의 보안 무결성을 지키기 위해서

반드시 필요한 개념입니다.


5. 결론

만약 블록 생성에 대한 보상이 실물 가치가 없다면 시스템은 보안 무결성을 획득할 수 없습니다. 블록 생성에 참여할 노드가 없어질 것이고 51% 공격에 의한 해킹이 가능하기 때문입니다. 따라서 보상은 블록생성에 필요한 비용보다 단 1원이라도 높아야 합니다. 보상의 실질 가치가 낮다면 해커는 이 시스템을 공격할 경제적 동기를 상실합니다. 보상의 실질 가치가 높다면 해커는 이 시스템을 공격하는 것 보다는 보상을 취득하고 이 보상의 실질 가치를 높게 유지하려는 전략을 쓰게 됩니다. 

즉 보상 (암호화폐)가 실질 가치를 가졌을 때에만 시스템이 해킹의 위험으로 부터 벗어 나게 됩니다. 


이상이 제가 블록체인시스템과 암호화폐가 분리 될 수 있는가? 에 대한 제 이해입니다.


현재의 코인 거래시장은 불합리함 투성입니다. 거대 투기 자본이 판을 키우고 불나방들이 달려들고 있구요. 

하지만 암호화폐는 죄가 없습니다. 죄가 있다면 암호화폐로 도박을 하는 사람들이 문제지요.

유시민 작가님의 비유 처럼, 마을회관을 지어 났더니 도박장이 되어버렸다는 말에 공감합니다.

하지만 도박꾼들을 잡아들여야지 마을회관을 철거 하면 안된다는게 제 생각합니다.


암호화폐 거래소는 왜 필요한가, 퍼블릭블록체인은 어디에 쓰일 수 있는가... 하고 싶은 얘기가 많지만 글이 길어지니 다음 기회로 남겨 두겠습니다. 

이 새로운 기술에 대해 보다 정확한 이해와 건전한 토론이 있었으면 하는데 요즘의 모공을 보면 그런 부분이 많이 아쉽습니다.

'컴퓨터 > 블럭체인' 카테고리의 다른 글

이더리움 관련 코인 채굴시 용어정리  (0) 2018.02.06