1.스마트 컨트랙트

특정 계약을 스스로 수립,검증,이행하기위한 컴퓨터 프로토콜이다

 

스마트 컨트랙트를 만든 사람이 말한 두가지 원칙이 있다.

 

1.“모든 트랜잭션을 실행할 때는 해당 실행 비용을 지급해야 한다.”

 

이 말은 무한반복 같은 악의적인 코드를 막고 데이터의 무결성을 지키기위해 가스비를 소모하여 막는다는 의미이다.

 

2.“컨트랙트의 모든 내용과 입력을 공유한다.”

 

모든 컨트랙트의 내용과 입력 정보를 공유한다. 그러나 결과는 공유하지 않는다. 결과를 공유 하지 않는 이유는 블록체인의 컨트랙트와 트랜잭션, 리시트 정보를 재구성하면 언제든지 해당 트랜잭션의 결과를 확인할 수 있기 때문이다. 이처럼 컨트랙트의 모든 내용과 입력을 공유함으 로써 악의적으로 컨트랙트를 조작하는 것을 방지할 수 있다.

 

 

2.컨트랙트 메시지

 

컨트랙트 메세지는 다음과 같이 이루어져 있다.

발신자 주소(from): 메시지 발신처
-수신처 주소(to): 메시지 수신처
-넌스(nonce): 거래가 실행 시 수행되도록 허용된 최대 트랜잭션 수행 횟수
-이더(amount): 메시지와 함께 전달되는 이더(기존 단위는 Wei임)
-가격(price): 가스당 트랜잭션을 요청한 사람이 지-급할 가스 가격
-가스 총량(gasLimit): 트랜잭션 수행에 소비될 총 가스량에 대한 추정치
-데이터(optional): 매개변수 전달 시 사용하는 데이터 필드로 선택적으로 사용

메시지는 한마디로 가스 비용이 발생하지 않는 컨트랙트 간의 내부 호출이다

 

3.스마트 컨트랙트 작동과정

 

외부 어플리케이션에서 스마트컨트랙트에 접근하기위해
ABI를통해 접근하여 컨트랙트 주소와 가스를 지급하여 컨트랙트를 사용한다.

 

4.이더리움 가상 머신 (EVM)

 

휘발성 메모리와 비휘발성 메모리로 이루어져있다
이더리움 스마트 컨트랙트의 바이트 코드를 실행하는32바이 트 스택 기반의 실행 환경으로 스택의 최대 크기는 1024바이트다.

 이더리움의 각 노드는 EVM 을 포함하고 있으며, EVM을 통해 컨트랙트의 바이트 코드를 Op코드로 변환 후 내부에서 실행한다.

바이트 코드를 내부 Op코드로 재해석
 스마트컨트랙트로 컴파일한 후 생성되는 컨트랙트 바이트 코드=> OP코드로 치환되어 실행

바이트코드를 OP코드로 변환하여 스텍을 이용하여 실행한다고 보면된다.

 

복사했습니다!