블록체인/블록체인 개발

[이더리움 블록체인 개발] 스마트 컨트랙트 배포

HHRR 2022. 7. 18. 17:35

강의 영상 - Solidity를 사용한 이더리움 블록체인 개발자 부트캠프 (2022)

: https://www.udemy.com/course/solidity-ethereum-bootcamp/learn/lecture/31207252#questions

강의 자료 : https://ethereum-blockchain-developer.com/003-first-smart-contract/01-setup-remix/

솔리디티 : https://remix.ethereum.org/

 

Remix - Ethereum IDE

 

remix.ethereum.org

 개발

리믹스에서 새 파일 생성
스마트 컨트랙트를 테스트 블록체인에 배포하기

- pragma solidity ^0.8.1; : 솔리디티 버전 설정

 

- 배포와 트랜잭션 실행탭

  Injected Web3 선택 : 메타마스크 리믹스 ID 연결

 

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.1; //솔리디티 버전

contract MyContract {
    string public myString = "Hello World!";
}

 

Deploy로 컨트랙트 배포

- 리믹스 Deploy 클릭 -> 메타마스크 계정에서 연결된 계정으로 계약 배포

 Etherscan(블록 탐색기) : 거래 성사 여부 확인 

- 이더 스캔 : 거래 성사됨 확인, 트랜잭션 채굴됨

- 리믹스 : 새 트랜잭션 인스턴스 생김, 

                myString : 스마트 계약과 상호작용 할 수 있는 버튼

                                  모든 공개 변수가 자동으로 생성되고 솔리디티 내부에서 기능을 얻음(누르면 Hello World 출력됨)


 

이론
  • 스마트 컨트랙트  : 닉 사보가 1994년 처음 만듦, 자동 트랜잭션을 부름, 블록체인에서 작동하는 코드의 일부

- 트랜잭션을 발송할 때

 : 해당 트랜잭션이 채굴됨 -> 상태 변화 (트랜잭션+채굴을 통해 이루어짐)

** 트랜잭션을 발송했다고 해서 상태가 바뀌는 것이 아님. 채굴이 되어야함.

 

- 스마트 컨트랙트 프로그래밍 언어

 : 모두 컴파일 되어서 실제로 블록체인에 EVM bytecode 보냄

  트랜잭션 전송하고 데이터 필드가 채워진 걸 봤을 때 전송된건 컴파일된 코드 -> 블록으로 만들어져 블록체인에 들어감

 

- 스마트 컨트랙트

 -> 바이트 코드로 배포하여 블록체인에서 실행 (EVM-많은 블록체인이 트랜잭션 기반에서 유사한 바이트 코드를 실행하려고 복사해감, 튜링되어있음)

 -> 네트워크의 모든 참여중인 노드가 해당 트랜잭션 실행

 -> 블록체인의 모든 노드가 블록체인의 사본을 가지고 있어서 트랜잭션이 유효한지 확인

      => 참여하는 모든 노드가 하나의 원장을 공유 

 

  •  솔리디티 

- 함수, if/else, Loops(for,while), DataTypes((U)Int, Boolean,Array/Struct,Mapping,Address,No Floats), Inhertiable, modifiers, Imports

 

contract MyContract {
    string public myString = "Hello World!";
}

- 솔리디티 문서에서 컨트랙트는 대문자로 시작 

- 중괄호 안 : 스토리지 변수, 이벤트, 변경자, 함수, 생성자 등등