투자아이디어

[블록체인에서 이중 지출에 대한 설명]

Bb7942 2022. 1. 20. 11:54

What is double-spending?

 2020년 2월 17일 / 2021년 12월 30일 updated

 

 

이중 지출이란 무엇인가?

이중 지출은 동일한 자금이 동시에 두 명의 수신자에게 사용되는 디지털 현금 시스템에서 발생할 수 있는 잠재적인 문제다. 적절한 대응책이 없으면 문제를 해결하지 못하는 프로토콜이 근본적으로 훼손된다 – 사용자들은 그들이 받은 자금이 이미 다른 곳에 쓰이지 않았는지 확인할 방법이 없다.

 

디지털 현금과 관련해서는 특정 단위가 중복되지 않도록 하는 것이 무엇보다 중요하다. 

예를 들어 앨리스가 디지털 현금 10개를 받고 복사해서 10번 붙여넣고 100개를 소유하고 있는 자신을 발견할 수 있다면 시스템 전체가 훼손될 것이다. 마찬가지로 그녀가 같은 10개를 밥과 캐롤에게 동시에 보낼 수 있다면 그런 계략은 통할 수 없다. 

 

그래서 디지털 머니가 작동하기 위해서는 이러한 행동을 예방할 수 있는 메커니즘이 마련되어야 한다.

 

어떻게 이중 지출이 방지될 수 있는가?

중앙 집중식 접근 방식

중앙 집중화된 노선은 분산형 대안보다 구현이 상당히 쉽다. 

여기에는 일반적으로 한 명의 감독자가 시스템을 관리하고 장치의 발행과 배포를 통제하는 것이 포함된다. 

이중 지출 문제에 대한 중앙 집중식 해결책의 좋은 예는 데이비드 차움 eCash의 그것이다. 

현금(익명 및 피어투피어 교환 가능)을 모방한 디지털 자산으로 사용자에게 발급하기 위해, 암호학자 David Chaum이 1982년 작성한 '추적 불가능한 지불을 위한 맹인 서명'에서 자세히 설명한 것처럼, 은행은 맹인 서명을 사용할 수 있다.

그런 맥락에서 사용자(단이라고 부르자)가 디지털 현금 100달러를 받기를 원한다면 먼저 은행에 알려야 한다. 

그의 계좌에 잔고가 있다면, 그는 무작위 번호(또는 더 작은 액면 금액의 많은 금액)를 생성할 것이다. 그가 5개의 숫자를 생산한다고 가정해 보자.

각 숫자는 20달러씩 할당된다. 

은행이 특정 단위를 추적하지 못하도록 댄은 각 단위에 블라인딩 요소를 추가해 난독화한다.

 

그리고 나서 그는 이 자료를 은행에 넘겨주었고, 그 은행은 자신의 계좌에서 100달러를 인출했으며, 5개의 정보가 각각 20달러에 상환될 수 있다는 것을 증명하는 메시지에 서명했다. 

댄은 이제 은행에서 발행한 자금을 쓸 수 있다. 

그는 에린의 식당에 가서 40달러짜리 식사를 산다. 

댄은 각 단위(일련번호와 같은)의 고유 식별자 역할을 하는 각 디지털 현금 "청구서"와 관련된 무작위 번호를 노출하기 위해 블라인딩 요소를 제거할 수 있다. 

그는 이것들 중 두 가지를 에린에게 공개하는데, 에린은 댄이 다른 상인과 함께 소비하는 것을 막기 위해 은행과 즉시 상환해야 한다. 

은행은 서명이 유효한지 확인할 것이며, 모든 것이 정확해 보이면 에린의 계좌에 40달러를 입금할 것이다.

 

사용된 지폐는 이제 본질적으로 불타버렸고, 에린이 자신의 새로운 잔액을 이와 같은 방법으로 쓰기를 원한다면 더 많은 지폐가 발행되어야 한다.

 

Chaumian eCash 설정은 개인 이전을 위해 유용할 수 있다. 

그러나 은행은 실패의 중심점이기 때문에 회복력에서 실패한다. 

발행어음은 은행이 달러로 환전하겠다는 의지만에서 나온 것이기 때문에 그 자체로 아무런 가치도 없다. 

고객들은 은행의 자유에 의존하고 있으며, 돈이 기능하기 위해서는 은행의 영업권에 의존해야 한다. 

이것이 바로 암호화폐가 시정하고자 하는 문제다.

 

분산형 접근 방식

감독자가 없는 생태계에서 자금이 이중으로 지출되지 않도록 하는 것은 더 어려운 일이다. 

동등하게 강력한 참여자는 사기를 방지하고 모든 사용자가 정직하게 행동하도록 유인하는 일련의 규칙을 조정해야 한다.

비트코인 백서에 제시된 가장 큰 혁신은 이중 지출 문제에 대한 해결책이었다. 
사토시는 그렇게 언급하지는 않았지만, 블록체인으로 널리 알려진 데이터 구조를 제안했다.
블록체인은 실제로 몇 가지 독특한 속성을 가진 데이터베이스일 뿐이다. 
네트워크상의 참가자(노드라고 함)는 전문 소프트웨어를 실행하는데, 이를 통해 다른 참가자와 데이터베이스 복사본을 동기화할 수 있다. 
 결과, 네트워크 전체가 창세기 블록까지의 거래 이력을 감사할 수 있게 되었다. 
블록체인을 공개적으로 볼 수 있게 함으로써 이중 지출을 시도하는 거래와 같은 부정행위를 탐지하고 예방하는 것이 용이하다.
사용자가 거래를 방송할 때 블록체인에 즉시 추가되는 것이 아니라 먼저 채굴을 통해 블록에 포함되어야 한다.
 따라서 수취인은 블록이 체인에 추가된 후에만 거래가 유효한 것으로 간주해야 한다. 
그렇지 않으면, 송신자가 같은 동전을 다른 곳에서 쓸 수 있기 때문에, 그들은 자금을 잃을 위험이 있다. 
일단 거래가 확인되면, 코인은 새로운 사용자에게 소유권이 할당되기 때문에 이중으로 지출될 수 없으며, 전체 네트워크는 이것을 확인할 수 있다. 
이러한 이유로 많은 사람들이 지불을 유효한 것으로 받아들이기 전에 여러 번 확인을 기다리는 것을 추천한다. 
이후의 각 블록은 체인을 수정하거나 다시 쓰는 데 필요한 노력의 양을 대폭 증가시킨다(51% 공격 에 발생할 수 있음).

레스토랑 시나리오를 다시 살펴봅시다. 

댄은 레스토랑으로 돌아왔고, 이번에는 창문에 비트코인 수락여기 스티커를 발견한다. 

그는 지난번에 먹었던 식사를 맛있게 먹었으니 다시 주문해라. 그에게 0.005 BTC가 든다. 

에린은 그에게 자금을 보내야 하는 공적인 연설을 한다. 
댄은 그 거래를 중계하는데, 이것은 근본적으로 댄이 소유하고 있던 0.005 BTC가 지금 에린에게 있다는 것을 나타내는 서명된 메시지다. 
너무 자세히 설명하지 않고, 댄의 서명된 거래서를 제시받은 사람은 그가 정말로 동전을 소유하고 있었음을 증명할 수 있으며, 따라서 동전을 보낼 권한이 있었다.

그러나 언급했듯이, 이 거래는 확인된 블록에 포함되는 경우에만 유효하다. 

확인되지 않은 거래를 받아들이는 것은 이전 사례에서 eCash로 40달러를 받는 것과 비슷하며, 즉시 은행과 현금화하지 않고, 이것은 발신자가 다른 곳에서 그것을 쓸 수 있게 해준다. 

따라서 에린은 댄의 지불을 수락하기 전에 적어도 6블록의 확인(거의 1시간)을 기다리는 것이 좋다.

 

비트코인의 이중 지출

비트코인은 적어도 예상대로 프로토콜을 사용할 때는 이중 지출 공격을 막기 위해 세심하게 설계돼 있다. 

즉, 개인이 블록에서 거래가 확인되기를 기다리면 발신인이 이를 취소하는 쉬운 방법이 없다. 

그러려면 비현실적인 해싱 파워가 필요한 블록체인을 '역전'해야 할 것이다.

그러나 확인되지 않은 거래를 받아들이는 당사자를 겨냥한 이중 지출 공세가 한둘이 아니다. 

예를 들어, 저가 구매의 경우, 상인은 거래가 블록에 포함되기를 기다리지 않을 수 있다. 

바쁜 패스트푸드점은 아마도 네트워크가 모든 구매를 처리하기 때문에 기다릴 여유가 없을 것이다. 

그래서 만약 기업이 "즉시" 지불을 가능하게 한다면, 그들은 이중 지출까지 스스로 열게 된다. 

누군가가 햄버거를 주문하고, 돈을 지불한 다음, 즉시 같은 자금을 그들 자신의 주소로 보낼 수도 있다. 

수수료가 높아지면 이번 신규 거래가 먼저 확정될 가능성이 높기 때문에 기존 거래가 무효화된다.

 

이중 스펜드를 수행하는 데는 세 가지 인기 있는 방법이 있다.

  • 51% 공격: 단일 개체 또는 조직이 해시 비율의 50% 이상을 제어하여 트랜잭션 순서를 제외하거나 수정할 수 있는 경우. 비트코인에서는 이런 공격이 있을 가능성이 매우 낮지만, 다른 네트워크에서는 발생한 적이 있다.
  • Race attacks: 상충되는 두 개의 거래가 동일한 자금을 사용하여 연속적으로 방송되지만, 단 하나의 거래만 확인된다. 공격자의 목표는 자신에게 이익이 되는 거래(예: 그가 지배하는 주소로 동일한 자금을 보내는 것)만 검증함으로써 지불을 무효화하는 것이다. Race attacks의 경우 수취인은 확인되지 않은 거래를 지불로 받아들여야 한다.
  • Finney 공격: 공격자는 하나의 트랜잭션을 네트워크에 즉시 브로드캐스트하지 않고 블록으로 미리 마이닝한다. 대신 같은 동전을 다른 거래에 쓰고 그 다음에야 이전에 채굴한 블록을 방송해 결제가 무효화될 수도 있다. 피니 공격은 특정한 일련의 사건들이 일어나도록 요구하고 또한 수신자의 확인되지 않은 거래에 대한 수용 여부에 달려 있다.

우리가 알 수 있듯이 블록 컨펌을 기다리는 상인은 이중스페인의 피해자가 될 위험을 크게 줄일 것이다.

 

마무리 생각

이중스팬드는 사용자가 금전적 이익을 위해 전자현금시스템을 게임화할 수 있게 해 같은 자금을 두 번 이상 사용할 수 있게 한다. 전통적으로, 그 문제에 대한 적절한 해결책의 부족은 그 지역의 발전을 가로막고 있다.

그러나 다행히도 맹인서명의 사용은 중앙집권적인 재정 계획을 위한 흥미로운 해결책을 제안했다. 
이후, 작업증명 메커니즘과 블록체인 기술이 생겨나면서 비트코인이 분산형 돈의 강력한 형태로 탄생했고, 이는 다시 수천 개의 다른 암호화폐 프로젝트에 영감을 주었다.

 

 

본출처 : academy.binance.com 'double-spending-explained'

 

더 많은 에피소드를 원하시면 아래 link로 방문해 보셔도 좋을꺼 같습니다.

Bb7942의 쉽터_함께 성장합시다.