Smart Contract Verification

스마트 컨트랙트는 어디에 저장되는가?

스마트 컨트랙트의 코드는 블록체인의 한 블록에 포함되어 있다.

위 그림을 한 번 살펴보자. 블록체인 데이터를 가지고 있지 않은 일반 사용자들이 어떻게 블록체인에 접근하고 스마트 컨트랙트를 사용하는지 알 수 있다.

일반적인 사용자는 그림과 같이 터미널 혹은 브라우저를 통해 접근한다. 해당 요청은 블록체인 상의 서버와 같은 역할을 하는 노드에 연결한다.

그림의 이더리움 클라이언트가 바로 노드에 해당한다. 노드는 블록이 생성되면 그 정보를 전파 받는 역할을 한다.

이더리움 클라이언트는 블록체인 네트워크의 노드이면서, 일반 사용자의 접속을 허용하고 블록체인과 연결시켜주는 역할도 담당한다.

한 사용자가 생성한 스마트 컨트랙트는 이더리움 클라이언트를 통해서 블록에 포함되고, 블록체인에 연결된다. 즉 모든 노드가 동일한 스마트 컨트랙트 코드를 가지고 있다는 뜻이 된다.(블록은 전파되기 때문에)

Verification

스마트 컨트랙트는 trustless하게 설계되어있다. 사용자는 회사 혹은 개발자를 신뢰할 필요가 없다.

이에 대한 필수 조건으로 사용자는 스마트 컨트랙트의 소스코드를 확인할 수 있어야 한다.

소스 코드 검증은 게시된 컨트랙트 코드가 이더리움 블록체인의 컨트랙트 주소에서 실행되는 동일한 코드임을 사용자와 개발자에게 보장한다.

소스 코드 검증

EVM에 컨트랙트를 배포하기 전에 개발자는 컨트랙트의 소스코드를 바이트 코드로 컴파일한다.

소스 코드 검증은 컨트랙트의 소스코드와 컨트랙트 생성 중에 사용한 컴파일된 바이트 코드를 비교하여 차이점을 감지하는 것이다.

컨트랙트 검증을 통해 기계 코드를 읽을 필요 없이 컨트랙트가 수행하는 작업들을 살펴볼 수 있다.

Last updated