스마트 컨트랙트


특정 계약을 스스로 수립,검증,이행하기위한 컴퓨터 프로토콜이다
무한반복 같은 악의적인 코드 를 막고 데이터의 무결성을 지키기위해


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


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


모든 컨트랙트의 내용과 입력 정보를 공유한다.

 그러나 결과는 공유하지 않는다. 

결과를 공유 하지 않는 이유는 블록체인의 컨트랙트와 트랜잭션, 리시트 정보를 재구성하면 언제든지 해당 트랜잭션의 결과를 확인할 수 있기 때문이다. 

이처럼 컨트랙트의 모든 내용과 입력을 공유함으 로써 악의적으로 컨트랙트를 조작하는 것을 방지할 수 있다.


컨트랙트 메시지


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

 

코드에 담기는 내용들


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


스마트 컨트랙트 작동 과정(간단히)


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


이더리움 가상 머신


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

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

바이트 코드를 내부 Op코드로 재해석


 스마트컨트랙트로 컴파일한 후 생성되는 컨트랙트 바이트 코드=> OP코드로 치환되어 실행 

https://xangle.io/research/624c0c0e56d727e7126da112

상세내용추가 

복사했습니다!