ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Blockchain 101] Smart Contract
    Intern/블록체인 2024. 11. 27. 09:01


     

     

    • EOA / Smart Contract 차이점?

     

    구분 EOA Smart Contract
    소유 및 관리 주체 개인이 소유하며 프라이빗 키를 통해 제어 블록체인에 배포된 코드특정 주소를 가짐
    트랜잭션 생성 직접 트랜잭션을 생성하고 서명 가능 자체적으로 트랜잭션 생성 불가능
    외부 요청에 의해 작동 
    실행 조건 사용자의 서명과 가스비 지불로 실행 트랜잭션 호출 및 조건 만족 시 실행 가능
    가스비 지불 주체  사용자가 직접 가스비를 지불 가스비는 호출한 EOA나 다른 Smart Contract가 부담
    저장 데이터  ETH 잔고만 보유 가능  상태 변수, ETH, 기타 데이터 저장 가능
    역할  사용자가 블록체인과 상호작용하는 기본 계정  특정 로직을 수행하는 프로그램처럼 작동 

     

     


     

     

    • ERC-20, ERC-721, ERC-1155

     

    - ERC-20

      ➀ 대체 가능한 토큰 표준

      ➁ 동일한 값의 토큰이 상호 교환 가능 

      ➂ 토큰 전송, 잔고 확인, 승인 등의 기능 제공 

     

    - ERC-721

      대체 불가능한 토큰(NFT) 표준

      각 토큰이 고유하며 식별 가능한 메타데이터 포함 

      주로 디지털 자산(ex) 이미지, 게임 아이템) 표현에 사용 

     

    - ERC-1155

      멀티 토큰 표준

      대체 가능한 토큰과 대체 불가능한 토큰을 동시에 지원

      단일 Contract에서 여러 토큰 관리 가능 

     

     


     

     

      Read / Write

     

    - Read

      Smart Contract에서 데이터를 읽는 작업 

      상태 변수 조회 또는 함수 호출(가스비 없음

      ➂ ex) 토큰 잔고 확인, 특정 상태 값 조회 

     

    - Write

      Smart Contract의 상태를 변경하는 작업 

      트랜잭션을 통해 실행되며 가스비가 필요 

      ➂ ex) 토큰 전송, 상태 변경, 데이터 추가 

     

     


      

     

      Proxy Pattern

     

    - Proxy Pattern이란?

      Smart Contract를 업데이트 가능하도록 설계

      사용자와 상호작용하는 Proxy Contract실제 로직이 담긴 Logic Contract로 분리 

      Proxy Contract는 Logic Contract로 호출을 위임 

     

    - 장점

      코드 업그레이드 가능 

      기존 데이터 및 주소를 유지하면서 새로운 로직 배포 가능 

     

     


     

     

    • Smart Contract는 어떻게 배포하고, 배포되면 이후에 어떻게 실행이 되는가?

     

    - 배포 

      Solidity로 작성된 코드를 컴파일해 바이트코드 생성 

         (Solidity : 이더리움 플랫폼에서 Smart Contract를 작성하기 위해 설계된 프로그래밍 언어)

      EOA에서 트랜잭션을 생성하여 배포 

      ➂ 배포 후 Smart Contract가 블록체인에 저장

     

    - 실행

      EOA가 Smart Contract의 함수를 호출하는 트랜잭션 전송

      특정 조건 만족 시 내부적으로 정의된 로직 실행 

      실행 결과는 블록체인에 기록되며 불변 

     

     


     

     

    • Smart Contract가 스스로 어떤 조건에 의해 실행되는 것이 가능한가?  

     

    Smart Contract는 EOA 또는 다른 Smart Contract의 호출에 의해 실행됩니다. 

     

    ex) 자동 실행 예시 

          타임락(Time Lock) : 특정 시간이 되면 실행 

          특정 이벤트 발생 감지 

          다른 Contract에서 호출을 통해 트리거

     

     


     

     

    Smart Contract에 Transaction을 보내려면 어떤 방법들이 있는가?

     

    웹 인터페이스 사용

        - Metamask지갑을 통해 직접 트랜잭션 서명 및 전송

     

    프로그램 코드 사용 

        - Web3.js, Ethers.js 등의 라이브러리를 활용해 트랜잭션 생성 

     

    CLI 도구 사용

        - Truffle, Hardhat을 통해 스크립트 실행

     

    Smart Contract 내부 호출

        - 다른 Smart Contract에서 함수 호출을 통해 실행

     

     


     

     

    Smart Contract에 Transaction을 보내면 어떤 일들이 일어나는가?

     

    트랜잭션 생성 및 서명 

        - EOA가 트랜잭션 생성 후 개인 키로 서명

     

    트랜잭션 전송 및 블록 포함

        - 노드로 전송되어 네트워크에서 검증 후 블록에 포함 

     

    Contract 실행 

        - 트랜잭션에 포함된 데이터(함수 호출 및 파라미터)에 따라 로직 실행 

        - 상태 값 변경이벤트 발생 가능 

     

    결과 저장

        - 실행 결과가 블록체인에 기록 

        - 실패한 경우 트랜잭션은 롤백되며, 가스비 일부 소모 

     

     

     

     

    반응형
Designed by Tistory.