스마트 컨트랙트란?
서면으로 이루어진 계약을 코드로 구현하고 특정 조건(합의한 내용 및 조건)이 충족되었을 때 해당 계약이 자동으로 이행(self-execution)되게 하는 스크립트(전자 계약서)를 말한다.
이 때, 조건이 충족될 경우, 계약 내용을 스마트 컨트랙트 소스 코드로 작성하여 블록체인 네트워크에 전송하면 네트워크 참여자(노드)들의 유효성 검증이 이뤄지며, 검증 완료 시 스마트 컨트랙트가 포함된 블록이 생성되며 배포된다.
조건이 충족되지 않을 경우, 계약은 실행되지 않는다.
이더리움에서 스마트 컨트랙트를 만들기 위해서는 기존에 사용하던 프로그래밍 언어가 아닌 Solidity, Vyper와 같은 스마트 컨트랙트를 만드는 전용 언어로 논리적인 계약의 작동을 정의해야 한다. 작성된 코드는 컴파일러를 통해 논리적인 계약의 작동을 Bytecode로 변환하여 블록체인에 배포하게 된다.
이후 블록체인은 스마트 컨트랙트가 담긴 블록의 변경 상태를 지속적으로 확인한다. 조건에 따른 상태 변경 시 명령 실행 비용을 계산하고 상태 변경 트랜잭션을 생성한다.
이더리움 스마트 컨트랙트의 구체적인 작동 원리
- 스마트 컨트랙트로 구현하고자 하는 내용을 Solidity 등으로 구현한다.
- Solidity 코드를 컴파일하여 네트워크에 배포할 수 있는 Bytecode를 생성한다.
- Transaction에서 Bytecode를 담고, 마이너가 해당 Transaction이 담긴 블록을 채굴한다. 이와 동시에 해당 Transaction은 블록체인 네트워크에 기록된다.
- 유저는 ABI를 통해 배포된 스마트 컨트랙트 코드에 정의된 함수를 호출하는 Bytecode를 생성하고, Transaction에 담아 블록체인 네트워크에 전달한다.
- 채굴자는 유저로부터 받은 바이트코드(Bytecode)를 배포된 스마트 컨트랙트 코드에 따라 EVM(Ethereum Virtual Machine) 위에서 실행한다. 이 때, Gas Fee가 계산되면서 블록에 추가되고, 실행 결과가 유효한 경우 실행 결과가 state에 반영된다.
논리적인 계약의 작동을 Bytecode로 변환할 때 Application Binary Interface(이하 ABI)라는 것을 같이 전달해준다. 계약을 사용하고자 하는 당사자는 컴퓨터와 직접적으로 통신하지 않는다. 키보드, 마우스, 모니터와 같은 입출력 장치를 통해 상호작용하기 때문에, 사람이 이해할 수 있는 단어로 인터페이스를 구성해야만 한다. ABI라는 인터페이스를 이용하면, 사람이 이해할 수 있는 인터페이스를 만드는 작업을 좀 더 수월하게 할 수 있다.
스마트 컨트랙트와의 상호작용을 위해 ABI와 함께 대표적으로 Web3.js라는 라이브러리가 제공되는데, 스마트 컨트랙트에서 제공하는 함수들을 웹 브라우저에서 이용할 수 있도록 도움을 준다. 만약 Python에서 이를 이용하고 싶다면, Web3.py도 존재하며, 모바일 환경이라면 Swift와 Kotlin 구현체 등을 활용할 수 있다.
스마트 컨트랙트의 장단점
장점
- 자율성 - 스마트 컨트랙트는 제 3자 중개자가 필요 없으므로 기본적으로 계약에 대한 완전한 통제권을 부여한다.
- 신뢰 - 문서는 암호화되어 보안유지가 이루어지는 공유 원장에 안전하게 저장되기 때문에 문서를 훔치거나 잃어버릴 수 없다.
- 비용 절감 - 스마트 컨트랙트로 중개인(부동산 중개업자, 조언자 등)이 필요 없어져서 수수료와 같은 비용을 절감할 수 있다.
- 안전성 - 올바르게 구현된 스마트 컨트랙트는 해킹되기 어렵다. 또한 스마트 컨트랙트를 위한 환경은 복잡한 암호화로 보호되므로 사용자의 문서를 안전하게 보호한다.
단점
- 초기 계약 설정이 잘못되면 문제가 발생할 수 있다.
- 프로그래밍 코드로 동작하기에 시스템의 결함에 따라 문제가 발생할 수 있다.
- 조건이 만족하는 기준과 근거가 명확하지 않을 경우가 있다.
[참고글]
https://medium.com/haechi-audit-kr/smart-contract-a-to-z-79ebc04d6c86
https://m.upbitcare.com/academy/education/blockchain/71
'Block chain' 카테고리의 다른 글
[이더리움] Account, Transaction, Message, Smart Contract (2) | 2022.08.23 |
---|---|
ABI (2) | 2022.08.23 |
Defi 용어 정리 (0) | 2022.07.08 |