본문 바로가기

카테고리 없음

스마트 컨트랙트 프로그래밍

스마트 컨트랙트란?

1996년에 닉 사보가 제안한 디지털 계약으로 계약 계약의 내용을 디지털로 저장하고 참가자들이 정의된 약속을 수행하는 프로그램의 형태이다.

 

 

이더리움 가상머신(EVM)이란?

https://www.notion.so/EVM-9690b31d386e4619a4be0bde749ad294

참고

 

EVM의 구조 :

 

Stack 영역 — 연산에 필요한 데이터를 저장하는 공간. 최대크기는 1024개로 제한되어있다.

콜 데이터 영역 — 트랜잭션 발생시 전송되는 데이터들이 기록되는 저장공간. (Log는 저장만 하고 읽으려면 web3를 사용해야한다.)

 

스토리지 — 블록체인에 영구적으로 기록되는 데이터들을 저장하는 공간.

 

메모리 — 함수를 호출하거나 메모리 연산을 수행할 때 사용되는 영역.

Gas라는 개념을 사용하여 트랜잭션 발생시 gas를 지불하도록하고 남은 가스가 없는 경우 트랜잭션을 중지시켜 무한루프를 막는다.

 

 

스택 기반 머신

EVM은 스택 기반 머신이다.

모든 블록에 저장된 데이터들이 모든 노드들에게 복제 되어야 함으로 메모리 연산량을 최소화 시키는것이 중요하다. 이를 위해 EVM을 스택 기반 머신으로 제작했다.

스택 기반 머신은 모든 변수들을 받아 연산하는 인텔등이 사용하고 있는 레지스터 기반 머신과 다르게 필요한 데이터와 계산된 결과를 모두 스택에서 가져오고, 저장하기 때문에 피 연산자에 대한 정보가 필요없게 된다.

 

솔리디티란?

EVM을 위해 설계된 언어로 opcode로 컴파일 된 후 이더리움 플랫폼에서 실행되는 객체지향 프로그래밍 언어이다.

 

 

요구사항을 따라 문자열, 기시성, 함수의 상태 변경성등을 고려하여 작성된 스마트 컨트랙트를 리믹스로 컴파일 및 배포해본 코드이다.

오랜만에 코드 쳐서 재밌고 뭔가 크립토 좀비도 생각났다.