1주차에 어떻게 계정 트랜잭션 블록을 생성하는 지에 대해 정리하였고
오늘은 Smart Contract에 대해 정리 하겠습니다.
Smart Contract
0. 요약
컴퓨터 프로그래밍으로 만든 계약
1. 제안자
위 링크를 보시면 스마트 컨트랙트는 Nick Szabo가 1994년 최초 제안한 개념입니다.
2. 목적
Nick Szabo 가 말하는 Smart Contract 의 목적은, 신뢰할 수 없는 컴퓨터 네트워크환경 에서 (Machine 간에)고도로 발달된 자동 계약 이행 방법 을 제시
3.Contract 배포과정
스마트 컨트랙트를 만드는 순서는 다음과 같습니다.
1:구현하고자 하는 내용을 솔리디티나 다른 언어로 코딩합니다.
2:구현한 소스 코드를 컴파일
3:컴파일 결과 EVM 바이트 코드가 생성됩니다.
스마트 컨트랙트 배포
4:스마트 컨트랙트를 배포한다는 것은 컴파일된 EVM 코드를 하나의 트랜잭션 처럼 블록에 추가시켜 블록체인에 등록시키는 작업입니다.
5:소스 컴파일 -> EVM 바이트 코드 -> 구체적인 작업은 ABI 취득 -> ABI로부터 컨트랙트 객체 생성 -> 트랜잭션 생성하여 블록에 추가
6:마이너가 해당 블록을 채굴하게 되면 블록
체인에 포함됨
[Smart Contract 개발] #6 이더리움 스마트 컨트랙트 동작방식 종결자!!! DApp 개발 가즈아~
윗링크의 저자 @etainclub님의 글을 참고하였습니다.
배포를 통해 모든 노드에 Contract가 존재하고 CA(Contract Address)를 알수있습니다. CA를 호출하여 contract를 실행할수있습니다.
이더 스캔에서 CA 확인
EOA(Externally Owned Account)에서 비용을 지불하여 CA(Contract Account)를 생성하여 EVM을 이용 바이너리를 만들어 inputData에 넣고 CA에 넣고 트랜잭션에 넣고 블록을 생성합니다.
주목해야되는 부분은 계정(CA)에 스마트 컨트렉트가 올라간다는 부분입니다.
포인터처럼 메모리 주소만 기억해 두었다가 빠르게 데이터에 접근할수 있게 설계된것처럼 보입니다.
4. 배포된 Contract 호출
보시는거와 같이 rpc호출을 통하여 배포된 컨트렉을 호출할수있습니다.
호출할때 컨트렉트를 쓰거나 수정하면 가스가 소모됩니다. (호출한 계정에서 차감합니다.)
실행도중에 가스비용이 부족하면 모든 상태를 되돌리고 소모한 가스는 돌려주지 않습니다.(주의)
web3에서 호출방법은 다른분이 정리하실예정이니 정리되는 대로 링크 올리겠습니다.