Smart Contract

Smart Contract는 Dapp개발자가 개발한 서비스 Logic을 네트워크에 등록하는 것이다. 사용자는 Contract를 실행하게 되면 그 Contract의 State를 변경하거나 조회한다. 사용자가 변경한 State는 블록체인상에 등록된 Contract Logic과 State에 따라 위변조없이 동작함을 보장한다. Turing complete한 시스템이다.

스크린샷 2024-01-08 오후 12.48.18.png

개발 언어

Yul & Yul+

초보자가 하기 어려운 언어이다. EVM 뿐아니라 Ewasm도 지원한다. Yul+은 Low-Level언어로 Yul에 비해 더 효율적인 개발이 가능하다.

FE

가장 최근 개발된 언어로 2021년 1월 출시하였다. Ethereum에 처음 도전하는 개발하는 사용자를 위해 개발되었으며, Python과 Rust 기반 언어이다.

Solidity

가장 많은 개발자들이 사용하는 언어로, C++기반의 언어이다. Object 기반 언어이며 상속, Library, 사용자 지정 type등을 지원한다.

Vyper

Python 기반 언어이다. 보안을 위해 Solidity에 비해 더 작은 기능을 가지고 있다. (modifiers, 상속, inline assembly, overload 미지원)

Solidity

Contract는 오른쪽 화면과 같은 형식으로 되어있으며, 블록체인 Storage에 저장될 중요한 데이터와 이를 처리하는 함수로 구성되어있다.

스크린샷 2024-01-08 오후 12.48.43.png

Compile Contract

Smart Contract를 Compile하게 되면 Bytecode, OPCODE, ABI를 얻게 된다. Contract를 네트워크에 배포할 때는 Bytecode가 필요하다. Contract를 실행할때 Gas 계산을 위해서는 OPCODE가 필요하다. ABI를 통해서 Client에서 정해진 Interface로 Contract와 통신을 할 수 있다.

스크린샷 2024-01-08 오후 12.48.59.png

Contract Deploy

Smart Contract Compile 후 생성된 Bytecode를 Ethereum Network 상에 배포하게 되면 Contract Address 생성과 함께 해당 주소에 Code가 블록체인상에 저장된다