현명한 계약 : 선, 악 및 게으른

프라이빗 블록 체인이 코드 실행을 열망해서는 안되는 이유

나는 "스마트 계약"이라는 용어의 팬이 아닙니다. 처음에는 많은 사람들이 여러 가지 다른 용도로 사용했기 때문에 완전히 금지해야 할 것입니다. 예를 들어, 첫 번째 알려진 참조는 1997 년에, Nick Szabo가이를 사용하여 그들의 행동을 바꾸다 일부 데이터를 기반으로합니다. 더 최근에,이 용어는 블록 체인에서의 계산을 설명하기 위해 정반대로 사용되었습니다. 영향을받는 날씨와 같은 외부 사건에 의해 지금은이 두 가지 의미를 제쳐 두겠습니다.

여기서는 블록 체인에서 발생하는 범용 계산의 의미에서 "스마트 계약"에 중점을두고 싶습니다. 이 의미는 이더리움, 누구의 백지 "차세대 스마트 계약 및 분산 형 애플리케이션 플랫폼"이라는 부제가 있습니다. 이더 리움이받은 관심의 결과로이 의미는 은행 (및 기타)이 스마트 계약 개념 증명 작업을 중단하면서 지배적 인 의미가되었습니다. 물론 규제 대상 금융 기관에 대해 이야기하고 있기 때문에 이는 대부분 식별 된 참여자가 제한된 개인 또는 허가 된 블록 체인의 맥락에서 이루어집니다. 지금 그 이유 때문에 잘 이해했습니다, 퍼블릭 블록 체인은 모든 천재적 용도로 아직 엔터프라이즈 목적에 적합하지 않습니다.

그렇다면 프라이빗 블록 체인의 스마트 계약에 대한 미래는 밝습니까? 글쎄요, 그러나 실제로는 아닙니다. 알다시피, 문제는 :

개인 블록 체인에서 스마트 계약은 네 가지 좋은 아이디어와 하나의 나쁜 아이디어를 결합합니다.

좋은 아이디어는 무엇입니까? (a) 비즈니스 로직을 컴퓨터 프로그램으로 표현, (b) 해당 로직을 프로그램에 대한 메시지로 트리거하는 이벤트를 표시, (c) 디지털 서명을 사용하여 메시지를 보낸 사람 증명 및 (d) 위의 모든 사항 블록 체인.

그리고 나쁜 것? 모든 블록 체인 노드의 모든 메시지에 대해 모든 프로그램을 실행합니다. 다시 말해 실행 모든 프로그램 중에서 블록 체인의 역할을 대신 사용하는 대신 저장 프로그램과 메시지를 위해. 그러나이 글로벌 처형은 이더 리움이 개발 된 전체 이유입니다.

당신이 알고 있다면 결정 론적 계산 특성에 대해 알고 정지 문제, 방법 이해 데이터 의존성 동시성을 방지하면 이미 확신 할 수 있습니다. 그러나 그렇지 않다면 커피를 마시고 심호흡을하고 토끼 구멍을 따라 가십시오.

이더 리움 이해

이더 리움 스타일의 스마트 계약을 이해하려면 최초의 (그리고 여전히 가장 인기있는) 퍼블릭 블록 체인 인 비트 코인으로 시작해야합니다. 비트 코인 블록 체인은 원래 한 가지 목적으로 만 설계되었습니다 : 비트 코인 통화를 한 소유자에서 다른 소유자로 이동하는 것입니다. 그러나 일단 실행되고 나면 사람들은 다음과 같은 다른 목적을 위해 트랜잭션에 "메타 데이터"를 삽입하기 시작했습니다. 디지털 자산 및 문서 공증. 일부 비트 코인 싸웠다 이러한 응용 프로그램 공식 메커니즘 for 메타 데이터는 2014 년 XNUMX 월에 도입되었으며 기하 급수적으로 늘어나는 이후로 계속.

비트 코인 블록 체인에 구축 된 프로젝트뿐만 아니라 다음과 같은 많은 차세대 퍼블릭 블록 체인이 개발되고 출시되었습니다. NXT, Bitshares, 리플스텔라. 이들은 사용자 제작 자산, 분산 거래소 및 담보 대출과 같은 광범위한 활동을 지원하기 위해 처음부터 설계되었습니다. 각 블록 체인은 개발자가 결정한 기능 세트가 다르며 새로운 기능이 추가 될 때 모든 사용자가 업그레이드해야합니다. 상황이 다소 지저분 해지기 시작했습니다.

이 프로젝트 중 일부에 참여한 Vitalik Buterin 간단하지만 훌륭한 질문을 던졌습니다. 많은 애플리케이션 별 블록 체인 대신 프로그래밍 할 수있는 단일 퍼블릭 블록 체인을 사용하지 않는 이유 우리가 원하는대로? 이 우버 블록 체인은 무한히 확장 가능하며, 그것을 사용하는 사람들의 상상력에 의해서만 제한됩니다. 암호 열광의 세계는이 강력한 아이디어에 의해 거의 만장일치로 확신했습니다. 그래서 크라우드 펀딩에서 18 천 XNUMX 백만 달러 큰 흥분에 이더 리움이 태어났습니다.

이더 리움은 "ether"라는 관련 암호 화폐를 가진 새로운 공개 블록 체인입니다. 수백 그 전에 온 것입니다. 그러나 다른 블록 체인과 달리 이더 리움은 누구나 블록 체인 내부에 "계약"을 만들 수 있습니다. 계약은 관련 미니어처 데이터베이스가있는 컴퓨터 프로그램입니다. 소유 한 프로그램에 의해서만 수정 될 수 있습니다.. 블록 체인 사용자가 데이터베이스를 변경하려면 디지털 서명 된 메시지를 계약서에 보내야합니다. 계약의 코드는이 메시지를 조사하여 대응 여부와 방법을 결정합니다. (이 "캡슐화”코드 및 데이터는 객체 지향 프로그램 작성.)

이더 리움 계약은 다음과 같은 몇 가지 새로운 프로그래밍 언어 중 하나로 작성 될 수 있습니다. 견고. 대부분의 프로그래밍 언어와 마찬가지로 튜링 완료즉, 범용 계산을 표현할 수 있습니다. 튜링 완전 언어의 주요 특징은 루프 구조조건이 충족 될 때까지 작업을 반복적으로 수행합니다. 예를 들어, 백만 줄의 코드를 요구하지 않고 루프를 사용하여 XNUMX에서 백만까지의 숫자를 인쇄 할 수 있습니다. 효율성을 위해 Ethereum 용으로 작성된 프로그램은 컴파일 더 컴팩트하게 (즉, 변환 된) 바이트 코드 체인에 저장되기 전에. 이더 리움 노드는 그런 다음이 바이트 코드를 가상 머신, 이는 본질적으로 실제 컴퓨터 내부에서 실행되는 시뮬레이션 된 컴퓨터입니다.

이더 리움 계약이 블록 체인에서 생성되면 데이터베이스의 초기 상태를 설정합니다. 그런 다음 요청이 올 때까지 정중하게 기다립니다. 블록 체인 사용자 (또는 다른 계약)가 트랜잭션으로 메시지를 보내면 계약이 실행됩니다. 내부 코드에 따라 메시지 소스를 식별하고 다른 계약을 트리거하며 데이터베이스를 수정하거나 발신자에게 응답을 보낼 수 있습니다. 이 모든 단계는 독립적으로 수행됩니다 네트워크의 모든 노드에서결과는 동일합니다.

예를 들어, 간단한 이더 리움 하위 통화 계약 특정 자산에 대한 사용자 잔액 데이터베이스를 유지 관리합니다. Alice가 Bob에게 자금을 이체하라는 메시지를 받으면 (a) Alice가 서명 한 메시지를 확인하고 (b) Alice가 충분한 자금이 있는지 확인합니다. (d) 작업이 성공했다고 응답한다. 물론, 우리는 Ethereum이 필요하지 않습니다. 기본 자산 지원 같은 일을 할 수 있습니다. 이더 리움은 크라우드 펀딩, 탈 중앙화 거래소, 계층 적 거버넌스 구조와 같은 복잡한 다단계 비즈니스 로직을 위해 자체 개발되었습니다. 아니면 적어도 약속은 간다.

그것을 파괴

이제 이더 리움 스마트 컨트랙트가 어떻게 작동하는지 알았으므로 다섯 개의 구성 요소로 나눌 수 있습니다.

  1. 컴퓨터 프로그램으로 비즈니스 로직 표현
  2. 해당 로직을 프로그램에 대한 메시지로 트리거하는 이벤트를 나타냅니다.
  3. 전자 서명을 사용하여 메시지를 보낸 사람을 증명합니다.
  4. 프로그램, 메시지 및 서명을 블록 체인에 넣습니다.
  5. 모든 노드의 모든 메시지에 대해 모든 프로그램을 실행합니다.

처음에 말한 것을 반복하기 위해 1-4 부분은 매우 좋은 아이디어라고 생각합니다. 처음 두 개부터 시작하겠습니다. 새로운 것이 아니다). 법적 계약과 달리 해석의 차이점, 컴퓨터 프로그램은 분명하다. 잘 정의 된 프로그래밍 언어로 지정된 프로그램의 경우 동일한 입력이 항상 동일한 출력으로 이어집니다. 따라서 일부 비즈니스 로직이 컴퓨터 프로그램으로 표현되고 이벤트가 해당 프로그램에 대한 메시지로 표현되면 비즈니스 결과가 결정됩니다. 실제로이 결정 론적 계산 속성은 무작위성 컴퓨터 과학의 끈질긴 문제이며 Google의 괴짜들도 틀리다.

디지털 서명과 블록 체인은 어떻습니까? 이것은 어떤 메시지가 어떤 순서로, 누구에 의해 전송되었는지를 결정하기 위해 중앙 권한이 필요하지 않습니다. 대신, 각 참가자는 한 쌍의 개인 및 공개 키공개 키 배포 일단 다른 참가자들에게. 그 후에 그들은 기호 네트워크를 통해 해당 메시지를 배포하기 전에 개인 키가있는 모든 메시지. 그런 다음 다른 참가자는 보낸 사람의 공개 키만 사용하여 메시지 소스를 확인할 수 있습니다. 영리한 암호화 기능입니다. 마지막으로, 프로그램과 서명 된 메시지를 블록 체인에 올려 놓음으로써 모든 참가자가 누가 언제 무엇을했는지에 대한 동일한 견해를 가질 수 있습니다. 결정 론적 계산과 결합하면 참가자는 최종 비즈니스 결과에 동의하지 않습니다.

그러나 모든 메시지에 대해 모든 프로그램을 실행하는 모든 노드의 마지막 아이디어는 어떻습니까? 여기서 우리는 논쟁의 여지가 있습니다. 이 전역 실행이 있으면 좋을 수도 있지만 필요하지도 않기 때문입니다. 계산은 결정적이므로 프로그램이 하나의 노드, 모든 노드 또는 일부 외부 프로세스에 의해 실행되는지 여부에 차이가 없습니다. 또한 이것이 실시간으로 발생하는지, 주문형으로 발생하는지 또는 10 년 후에 발생하는지는 중요하지 않습니다. 계산 결과는 항상 같습니다. 그리고 어떤 이유로 이것이 사실이 아닌 경우, 이것은 블록 체인 소프트웨어 또는 네트워크의 문제.

계산 문제

계산이 어디에서 중요하지 않은지 왜 지원 어디서나합니까? 글쎄요, 그것은 컴퓨터 프로그램은 예측할 수 없다. 아무리 결백 해 보이지만 달리는 데 오랜 시간이 걸릴 수 있습니다. 그리고 때때로 그들은 영원히 계속 실행됩니다. 다음 고전적인 예를 고려하십시오 ( LCG):

  1. 세트 x 선택한 한 자리 숫자로
  2. 세트 y123 * x + 567
  3. 세트 x 의 마지막 두 자리로 y, ie 모듈로 100
  4. If x ~보다 2 그런 다음 2 단계로 돌아갑니다.
  5. 그렇지 않으면 중지하고 값을 출력하십시오. x

충분히 간단 하죠? 자, 여기에 질문이 있습니다.이 프로그램이 끝날까요? 아니면 무한 루프? 확실하지 않습니까? 당신의 불행에서 벗어나게하겠습니다. x의 초기 값에 따라 달라집니다.

If x is 0, 1, 2, 5, 6, 7 or 8프로그램이 상당히 빨리 중지됩니다. 그러나 만약 x is 3, 4 or 9, 그것은 무기한 계속됩니다. 나를 믿지 않습니까? Excel을 열고 직접 시도해보십시오 (“MOD”기능이 필요합니다).

코드 만보고 예측할 수 없더라도 너무 나쁘게 생각하지 마십시오. 이것은 사람들에게 어려울뿐만 아니라 컴퓨터로는 불가능하다. 주어진 프로그램의 실행 완료 여부를 결정하는 문제를 정지 문제. 1936 년 앨런 튜링, "튜링 완료"및 모조 게임 명성, 일반적인 경우에는 해결할 수 없음을 증명했습니다. 사소한 예외를 제외하고, 프로그램 실행이 완료되는지 확인하는 유일한 방법 필요한만큼 실행하는 것입니다, 그리고 그것은 영원 할 수 있습니다.

없이 사는 것을 선호하는 사람들을 위해 죽음의 블루 스크린회전 비치 볼, 그것은 모두 다소 불편합니다. 그러나 우리가하는 일과 함께 살아가고 있으며, 놀랍게도 대부분의 소프트웨어는 대부분의 경우 원활하게 작동합니다. 그렇지 않은 경우 Windows와 같은 최신 운영 체제는 프로그램을 수동으로 종료 할 수 있도록하여 런 어웨이 코드로부터 우리를 보호합니다. 그러나 Ethereum과 같은 블록 체인에서는 같은 일을 할 수 없습니다. 개별 노드가 원하는대로 계산을 종료하도록 허용하면 다른 노드는 해당 계산의 결과에 대해 다른 의견을 가질 것입니다. 즉, 네트워크 합의. 그렇다면 블록 체인은 무엇입니까?

이더 리움의 답변은 거래 수수료를 기반으로합니다. 가스. 각 거래의 발신자 국가 계산을 위해 트리거되고이 지불은 블록에서 확인하는 채굴자가 수집합니다. 더 정확하게 말하면, 모든 이더 리움 트랜잭션은이를 처리하는 데 보낸 사람의 "이더"중 얼마를 사용할 수 있는지를 미리 명시합니다. 이더 리움 가상 머신 내에서 계약이 단계별로 실행됨에 따라 수수료가 점차적으로 사용됩니다. 트랜잭션 실행이 완료되기 전에 수수료가 소진되면 데이터베이스 변경 사항이 되돌리고 수수료가 반환되지 않습니다. 거래가 성공적으로 완료되면 남은 수수료는 송금인에게 반환됩니다. 이런 식으로 트랜잭션은 지불 할 의사가있는 정도까지만 네트워크에 부담을 줄 수 있습니다. 의심 할 여지없이 깔끔한 경제 솔루션이지만 작동하려면 네이티브 블록 체인 통화가 필요합니다..

스마트 계약 및 동시성

가스가 폭주 계산을 막을 수 있다면 스마트 계약이 녹색 신호를 받습니까? 글쎄, 그렇게 빠르지는 않습니다. 왜냐하면 우리가 얘기해야 할 스마트 계약에 또 다른 문제가 있기 때문입니다.

스마트 계약은 높은 트랜잭션 처리량을 위해 제대로 작동하지 않습니다..

동시성 컴퓨터 아키텍처에서 가장 근본적인 문제 중 하나입니다. 시스템은 여러 프로세스가 동시에 어떤 순서로든 발생할 수 있으면 동시성이 우수합니다. 동시 시스템은 다음과 같은 기술을 최적으로 사용함으로써 지연을 줄이고 전체적으로 훨씬 높은 처리량을 가능하게합니다. 프로세스 스케줄링, 병렬 처리데이터 파티셔닝. 이것이 Google이 검색하는 방법입니다. 30 조 거의 웹 페이지 100,000 시간 초당.

모든 컴퓨터 시스템에서 트랜잭션 집합은 서로 의존하거나 간섭하지 않는 경우에만 동시에 처리 할 수 ​​있습니다. 그렇지 않으면 다른 처리 순서가 완전히 다른 결과를 초래할 수 있습니다. 이제 스마트 계약에는 관련 데이터베이스가 있으며 루프를 포함한 범용 계산을 수행한다는 것을 기억하십시오. 이는 특정 메시지에 대한 응답으로 스마트 계약이 데이터베이스의 모든 정보를 읽거나 쓸 수 있음을 의미합니다. 예를 들어 하위 통화를 관리하는 경우 해당 통화의 모든 보유자에게이자를 지불하기로 결정할 수 있습니다. 물론 항상 그런 것은 아닙니다. 그러나 문제는 특정 메시지에 대한 계약 프로그램을 실행하기 전에 블록 체인 노드입니다. 예측할 수 없다 사용할 계약 데이터베이스의 하위 집합입니다. 또한이 하위 집합이 다른 상황에서 다를 수 있는지 여부도 알 수 없습니다. 한 계약이 다른 계약을 유발할 수 있다면이 문제는 모든 계약의 모든 데이터베이스의 전체 내용. 따라서 모든 거래는 다른 모든 거래를 방해 할 수있는 것처럼 취급되어야합니다. 데이터베이스 측면에서 각 트랜잭션에는 전역 잠금이 필요합니다.

이제 블록 체인 노드가 사는 세상을 생각해보십시오. 중앙에서 관리되는 큐가 없기 때문에 트랜잭션은 특별한 순서없이 다른 피어에서 들어옵니다. 또한 평균 12 초 (이더 리움)에서 10 분 (비트 코인) 사이의 간격으로 새로운 블록이 들어 와서 특정 순서로 일련의 거래를 확인합니다. 노드는 아마도 대부분의 블록 트랜잭션을 이미 보았을 것입니다. 그러나 일부는 새로운 트랜잭션 일 수 있습니다. 어느 쪽이든 블록의 트랜잭션 순서는 개별적으로 도착한 순서를 반영하지 않을 것입니다. 거래 순서가 결과에 영향을 미칠 수 있으므로 블록 체인에서의 주문이 확정 될 때까지 거래를 처리 할 수 ​​없습니다.

이제 확인되지 않은 비트 코인 거래를 취소해야하는 것은 사실입니다. 이중 지출. 그러나 확인되지 않은 이더 리움 거래 전혀 예측 가능한 결과가 없습니다. 사실, 현재의 이더 리움 구현은 비밀 거래를 처리하지도 않습니다. 하지만 이더 리움 노드가 였다 트랜잭션을 즉시 처리하려면 블록이 들어올 때 올바른 순서로 되 감고 재생해야합니다.이 재 처리는 엄청난 노력 낭비이며 외부 프로세스가 동시에 이더 리움 데이터베이스를 읽는 동안 (공평하게 말하면 비트 코인의 참조 구현 또한 블록이 들어올 때 트랜잭션을 되 감고 다시 재생하지만 이는 최적화 부족 때문입니다.)

그렇다면 비 순차적 실행을 가능하게하는 비트 코인의 거래 모델은 무엇일까요? 비트 코인에서 각 거래 명시 적으로 말한다 다른 거래와의 관계. 여기에는 입력 및 출력 세트가 있으며 각 입력은 "지출"한 이전 트랜잭션의 출력에 연결됩니다. 걱정할 다른 종속성이 없습니다. (a) 두 비트 코인 거래가 동일한 출력을 사용하지 않고 (b) 하나의 출력이 다른 거래의 입력으로 이어지지 않는 한, 비트 코인 노드는 거래가 독립적임을 확신 할 수 있습니다. 어떤 순서로든 처리 할 수 ​​있습니다.. 블록 체인에서의 최종 위치는 전혀 중요하지 않습니다.

공식적인 컴퓨터 과학 용어를 사용하려면 이더 리움 거래가 완전 주문즉, 모든 트랜잭션 쌍 간의 상대적 순서를 정의해야합니다. 대조적으로 비트 코인 거래는 directed acyclic graph 오직 부분적으로 주문, 이는 트랜잭션 순서의 일부 모호성이 허용됨을 의미합니다. 동시성에 관해서는 이것은 세상의 모든 차이를 만듭니다.

실용적인 용어로 살펴보면 기업의 프라이빗 블록 체인에 대한 많은 이야기가있었습니다. 하지만 프라이빗 블록 체인은 몇 가지 추가 기능이있는 분산 데이터베이스. 동시성을 지원하지 않는 엔터프라이즈 급 데이터베이스를 지금 판매하려고했다면 당신은 방에서 웃을 것입니다. 개별 노드가 자체 트랜잭션의 결과를보기 전에 12 초 동안 기다려야한다는 제안도 마찬가지로 성 가실 것입니다. 비탈 릭 자신으로서 최근 tweeted:

Coin Sciences에서 우리에게 이것은 단순히 학문적 인 문제가 아닙니다. 스마트 계약을 통합할지 여부와 방법을 결정해야하기 때문입니다. 멀티 체인. 수백 가지 기능 요청에도 불구하고 이상하게도 질문 우리는 지금까지 받았으며, 오직 두 개만이 스마트 계약과 관련이 있으며, 심지어 이더 리움이 제공하는 것보다 더 약한 형태입니다. 따라서 우리가 열린 마음을 유지하는 동안 스마트 계약이 사용자의 실제 문제를 해결하지 못하는 것으로 판명 될 수 있습니다.

이더 리움에 찬성

논쟁의 한면에만 관심이 있다면 여기서 읽기를 중단 할 수 있습니다. 그러나 궁금 할 것입니다. 이더 리움의 제작자는 어리 석습니까? 도대체 왜 각 노드가 실행중인 프로그램을 선택할 수 있다면 공용 분산 데이터베이스에서 전역 실행이 필요할까요? Ethereum 방식에 대한 좋은 이유가 있습니까?

사실, 우리가 퍼블릭 블록 체인에 대해 이야기하고 있다면, 나는 있다고 믿습니다. 그러나 이러한 이유를 이해하려면 이더 리움 네트워크 자체의 역학에 대해 생각할 필요가 있습니다.

거래 스팸 방지

블록 체인은 각 노드가 다른 노드의 무작위 하위 집합에 연결되는 피어 투 피어 네트워크에 의해 유지됩니다. 한 노드에서 새 트랜잭션이 생성되면 "릴레이"라는 프로세스를 통해 다른 노드로 신속하고 우연하게 확산됩니다. 개방형 공용 네트워크에서는 누구나 트랜잭션을 생성 할 수 있으므로 다음으로부터 자신을 보호 할 수있는 방법이 필요합니다. 거래 스팸 시스템을 압도 할 수 있습니다. 네트워크가 분산되어 있기 때문에 개별 노드가 새로운 거래가 들어올 때이를 평가하고이를 중계할지 여부를 결정해야만 달성 할 수 있습니다. 이 메커니즘은 스패머가 압도적인 개별 노드는 네트워크 전체를 보호합니다.

공용 네트워크에서 노드가 새 트랜잭션을 중계할지 여부를 결정할 때 핵심 기준 중 하나는 수수료와 네트워크 비용 간의 비율입니다. 비트 코인의 경우이 비용은 주로 트랜잭션의 원시 크기 (바이트)를 기반으로합니다. 이더 리움에서는 더 복잡한 공식 트랜잭션이 소비 할 계산 노력에 따라 사용됩니다. 어느 쪽이든 수수료는 거래 스팸을 방지하기위한 시장 기반 메커니즘으로 작용합니다.

그러나 노드는 보낸 사람이 제공하는 수수료를 충당하기에 충분한 자금이 있는지 어떻게 알 수 있습니까? Ethereum의 경우 각 사용자의 "ether"잔액은 이전 거래의 결과에 영향을받습니다. 계약은 이더를 지출하고 지불 할 수 있습니다.. 따라서 이전의 모든 메시지에 대해 모든 프로그램을 실제로 실행하지 않으면 이더 리움 노드는 사용자의 최신 균형을 알 수있는 방법이 없습니다. 따라서 트랜잭션을 다른 노드로 릴레이해야하는지 여부를 평가할 수 없습니다. 그리고 그것 없이는 개방형 네트워크가 사소하게 파괴 될 수 있습니다.

컴팩트 한 데이터 증명

블록 체인에서 블록은 대부분 확인한 트랜잭션으로 채워집니다. 그러나 각 블록에는 타임 스탬프 및 이전 블록에 대한 링크와 같은 중요한 정보가 포함 된 압축 "헤더"도 있습니다. 기반의 퍼블릭 블록 체인 작업 증명 해싱, 해싱 알고리즘의 입력은이 블록 헤더 만 있습니다. 이는 대부분의 콘텐츠를 다운로드하지 않고도 "경량 클라이언트"가 체인의 권한을 평가할 수 있음을 의미합니다. 예를 들어, 2015 년 30 월 현재, 전체 비트 코인 헤더 세트는 크기가 XNUMXMB입니다. 45 GB 풀 체인을 위해. 1500 : 1의 비율로 대역폭과 스토리지가 제한된 모바일 장치에 중요한 차이를 만듭니다.

각 Ethereum 블록의 헤더에는 해당 블록에서 트랜잭션을 처리 한 후 체인의 상태를 지문으로 표시하는 "상태 루트"가 포함되어 있습니다. 무엇보다도이 상태는 모든 계약 데이터베이스의 내용을 다루며 지문은 단방향 해시 함수 트리. 계약의 데이터베이스에 대한 사소한 변경은 완전히 다른 상태 루트로 이어 지므로 루트는 데이터베이스의 내용을 "연결"합니다. (비트 코인에 대한 "UTXO 약정"의 동일한 개념은 논의 된 아직 구현되지 않았습니다.)

상태 루트를 계산하는 트리와 같은 방법에는 중요한 속성이 있습니다. 알려진 상태 루트가 주어지면 계약 데이터베이스의 특정 항목 값을 효율적으로 입증 할 수 있습니다. 이 증거의 크기는 깊이에 비례합니다 이진 트리 그 잎은 개별 데이터베이스 항목, 즉 로그2 총 데이터베이스 크기 즉, 개별 항목의 경우 증거 만 더블스 데이터베이스 크기가 제곱 한 – 컴퓨터 과학자들이 죽이는 확장 성의 종류. 이제 각 블록의 상태 루트가 경량 클라이언트가 확인할 수있는 헤더에 있음을 기억하십시오. 결과적으로 경량 클라이언트는 네트워크의 모든 전체 노드에서 개별 데이터베이스 항목을 안전하고 효율적으로 쿼리 할 수 ​​있습니다. 완전한 노드는 거짓말을 할 수 없습니다.

하지만 블록 체인 헤더에 상태 루트가 포함되어 있고 상태 루트가 데이터베이스의 내용에 따라 달라진다면 모든 노드는 블록 체인의 데이터베이스를 최신 상태로 유지해야합니다. 차례로 이것은 지금까지받은 모든 메시지에 대해 모든 계약을 실행하는 것을 의미합니다. 이것이 없으면 채굴 노드는 블록 헤더에 배치 할 상태 루트를 알 수 없으며 다른 노드가 수신 한 블록을 확인할 수 없습니다. 결론은 : 경량 클라이언트가 네트워크에서 간결한 데이터 증명을 안전하게 검색하도록하려면 전체 노드가 체인의 데이터에서 설명하는 모든 계산을 수행해야합니다.

프라이빗 블록 체인에 대한 평결

프라이빗 블록 체인의 맥락에서이 두 가지 주장을 다시 살펴 보겠습니다. 프라이빗 체인에 대해 가장 먼저 주목해야 할 점은 네이티브 토큰이나 암호 화폐가없는 경향이 있다는 것입니다. 그 이유는 다음과 같습니다.

  • 프라이빗 체인에 관심이있는 실체는 새로운 자산 클래스를 다루고 싶지 않습니다.
  • 프라이빗 체인에 대한 컨센서스 모델은 작업 증명이 아닌 폐쇄 된 채굴 자 간의 합의를 기반으로합니다. 따라서 채굴 비용은 최소화되며 채굴 자에게는 많은 보상이 필요하지 않습니다.
  • 개인 체인의 모든 참가자는 심사를 거치므로 스팸 및 남용에 대한 우려가 줄어 듭니다.

글로벌 실행에 대한 첫 번째 주장은 각 이더 리움 노드가 제공하는 수수료에 따라 들어오는 트랜잭션을 중계할지 여부를 결정할 수 있도록하는 것이 었습니다. 글쎄요, 네이티브 토큰이 없다는 것은 이러한 이유를 무의미하게 만듭니다. 왜냐하면 블록 체인에 네이티브 토큰이 없다면, 거래는 수수료를 지불 할 수 없습니다. 어떤 이유로 스팸이 여전히 문제가되는 경우, 발신자의 권한을 취소하는 등 다른 방법으로 제어해야합니다.

이제 압축 데이터 증명을 가능하게하는 두 번째 인수를 고려해 보겠습니다. 퍼블릭 블록 체인은 최종 사용자가 모바일 또는 기타 경량 지갑에있을 가능성이 높습니다. 그러나 이것은 주요 기능이 개인 체인의 경우 가능성이 적습니다. 데이터베이스 공유 대기업간에. 그리고 만약 블록 체인이 is 모바일 장치에서 액세스 할 경우 모바일 사용자는 이러한 회사 중 하나의 고객 일 가능성이 높으며 해당 회사가 말하는 내용을 신뢰할 수 있습니다.

대신, 개인 블록 체인에서 문제 특히 글로벌 실행의 심각성이 높습니다. 프라이빗 블록 체인에 네이티브 토큰이 없다면, 우리는 런 어웨이 코드를 방지하기위한 가스와 같은 시장 메커니즘이 없습니다. 대신 우리는 트랜잭션 당 계산 단계 측면에서 일종의 고정 제한을 도입해야합니다. 그러나 트랜잭션이 의도적으로 많은 처리를 수행 할 수 있도록하려면이 한도가 높아야합니다. 결과적으로 네트워크는 결국 종료되기 전에 의도하지 않은 루프에 많은 에너지를 낭비하게 될 수 있습니다.

동시성에 관해서는 프라이빗 블록 체인이 동시성을 필수적으로 만드는 일종의 트랜잭션 볼륨을 볼 가능성이 훨씬 더 높습니다. 퍼블릭 블록 체인의 용량은 의미있는 분산화를 위해 제한된 예산을 가진 애호가들이 운영하는 수천 개의 노드가 필요하다는 사실에 의해 제한됩니다. 반대로 프라이빗 체인은 수십 개의 기업을 연결하는 경향이 훨씬 더 많으며,이 경우 용량과 속도가 필수적입니다.

더블 데커 블록 체인

그렇다면 스마트 계약에 대한 모든 것이 글로벌 실행과는 별도로 프라이빗 체인에서 의미가 있다면, 이것이 우리를 어디로 떠나게 될까요? 어떤 유형의 블록 체인이 우리에게 필요한 성능과 유연성을 제공할까요? 솔직히 생각하고 있어요. 그러나 한 가지 대답은 다음과 같습니다. 두 개의 계층이있는 블록 체인.

하위 계층은 즉시 동시에 처리되며 블록 확인을 기다릴 필요가없는 비트 코인 스타일 트랜잭션에 구축됩니다. 이러한 거래는 안전한 자산을 포함하여 간단한 자산 이동을 수행 할 수 있습니다. 원자력 교류, 현명한 계약에 의지하지 않고. 그러나이 하위 계층은 블라인드 저장 레이어 트랜잭션 메타 데이터로 포함 된보다 복잡한 비즈니스 프로세스를 나타내는 프로그램 및 메시지

상위 계층의 경우 각 네트워크 참여자가 그들이 원하는 프로그램. 일부는 단순한 자산 이동에만 관심이 있기 때문에 아예 실행하지 않을 수도 있습니다. 다른 사람들은 내부 프로세스와 관련된 소규모 프로그램 그룹을 실행할 수 있습니다 (이 그룹은 외부 프로그램과 메시지를 교환하지 않는다는 것을 알고 있음). 일부는 Ethereum과 마찬가지로 모든 프로그램의 모든 메시지를 처리하는 전역 실행을 선택할 수도 있습니다. 하지만 핵심은 모든 노드는 필요한 코드 만 실행합니다. 컴퓨터 과학에서이 기술은 게으른 평가, 중요한 사항을 생략하지 않고 가능한 한 적은 작업을 수행해야하기 때문입니다. 지연 평가를 사용하면 블록 체인 계산이 잘못되면 실제로 해당 프로그램을 실행하는 노드 만 알아 차립니다. 네트워크 자체는 아무것도 느끼지 않을 것입니다.

MultiChain의 경우 Turing 전체 계산을 지원하게되면 전역 실행을 구현할 수 있을지 의심됩니다. 아마도 우리는 이런 종류의 게으른 XNUMX 단계 접근 방식을 사용하거나 더 나은 것을 생각할 것입니다.

퍼블릭 블록 체인의 스마트 계약

앞서 말했듯이 공개 Ethereum과 같은 완전한 블록 체인을 튜링합니다. are 글로벌 실행을위한 좋은 이유. 그러나 여기에 또 다른 질문이 있습니다. 기업 이 체인의 사용 사례? 기업이 실제 비즈니스 프로세스에 사용할 수있는 퍼블릭 블록 체인에 대한 충분한 확신을 가지고있는 미래를 상상해 봅시다. 한 그룹의 기업이 퍼블릭 블록 체인에 컴퓨팅 로직을 내장하고자하는 경우, (1) 글로벌 실행과 함께 이더 리움 스타일 블록 체인을 사용하거나 (2) 어떤 블록 체인을 간단한 스토리지 레이어로 사용하고 코드 자체를 실행합니다. 이러한 옵션이 주어지면 왜 그들은 (1)을 선택하겠습니까?

합리적인 선택은 (a) 스토리지 바이트 당 가장 저렴한 가격 및 / 또는 (b) 총 채굴 능력을 기반으로 한 최고 수준의 보안을 갖춘 퍼블릭 블록 체인입니다. 계산이 결정적이기 때문에 회사는 네트워크에 비용 만 지불하면됩니다. 저장 실제로는하지 말고 계약과 메시지 방법 그들. 또한 블록 체인을 저장 용으로 만 사용하여 그들이 원하는 프로그래밍 언어. 이것은 Ethereum 바이트 코드 일 수 있습니다. 자바 스크립트 / ECMAScript 가독성을 위해 또는 기계 코드 고성능을 위해. 실제로 이더 리움 계약은 이미 저장 가능 비트 코인 블록 체인에서 메타 데이터를 사용합니다. 이것은 내가 제안한 XNUMX 계층 접근법입니다.

이 토론은의 개념과 관련이 있습니다 추상화 레이어, 유명하게 만든 OSI 네트워킹 모델. 최적의 안정성과 유연성을 위해 시스템의 각 계층은 가능한 한 다른 계층과 추상화되어야합니다 (즉, 독립적). 예를 들어 하드 디스크 컨트롤러에 JPEG 이미지를 렌더링하는 코드가 포함되는 것을 원하지 않습니다. 그렇다면 왜 우리는 블록 체인이 저장 한 프로그램을 실행하기를 원할까요? 대부분의 사용 사례에서 우리는 이로 인한 이점을 얻지 못하며 상당한 비용이 발생합니다.

발문

글로벌 실행이 프라이빗 블록 체인에서 의미가 없다면 왜 모든 사람들이이 작업을 수행하고 있습니까? 나는 이것이 블록 체인이 무엇을 할 수 있는지에 대한 오해로 인해 적어도 부분적으로 설명 될 수 있다고 생각합니다. 현실 세계에서. 비트 코인과 같은 퍼블릭 블록 체인은 실제 자산을 직접 이동 (즉, 자국 통화) 정의 그 통화의 소유권. 이것은 일반적으로 구별되는 자산의 두 가지 측면을 결합합니다. (a) 자산 소유자를 기록하는 원장 및 (b) 실제 물리적 위치. 이것은 cryptocurrencies를 궁극적으로 만듭니다 무기명 악기요청한 사람에 따라 용감한 새로운 세계 또는 돈세탁 자의 천국을 만듭니다.

그러나 블록 체인과 독립적으로 존재하는 다른 자산의 경우 체인이 할 수있는 유일한 일은 기록 그들이 누구의 영상을 에 속하는. 우리가 볼 때까지 이것은 계속 남아 있습니다. XNUMX 차 발행 체인의 데이터베이스 측면에서 정의 된 해당 자산의 법적 소유권과 함께 블록 체인에 자산을 추가합니다. 기관 금융 부문의 경우, 특히 필요한 규제 변경으로 인해 오늘이 아직 멀었다 고 생각합니다. 그때까지, 항상 추가 단계가 있습니다계약 및 절차, 블록 체인이 말하는 것과 실제 세계에서 일어나는 것 사이. 이 단계에는 가능한 마지막 순간에 느리게 실행되는 일부 Turing 완전한 코드가 포함될 수도 있습니다.

이 문제는 우리가 많이 들어 본“스마트 본드”사례에서 강조됩니다. 스마트 본드는 블록 체인에 직접 발행되며, 블록 체인은 적절한 시간에 채권 보유자에게 쿠폰 지불이 이루어 지도록합니다. 모두 좋고 좋습니다. 그러나 채권 발행자가 지불해야 할 지불을 처리 할 블록 체인 계정에 자금이 부족하면 어떻게됩니까? 블록 체인은 확실히 뭔가 잘못되었다는 플래그를 설정할 수 있습니다. 그러나 그것은 다른 것을 할 수 없습니다. 이발, 채무 구조 조정, 몰수 또는 파산 등 모든 문제를 해결하기 위해서는 여전히 변호사와 회계사가 필요합니다. 요컨대 :

현명한 계약이 약속을 이행 할 수 없다면 왜 우리는 그 대가를 지불합니까?

읽어 주셔서 감사합니다.

타임 스탬프 :

더보기 멀티 체인