[블록체인] 개념 정리

else·2023년 3월 6일
0

블록체인

목록 보기
3/4

Solidty

  • EVM을 타겟으로 하는 언어

  • 고수준 언어 ( 사람의 언어에 가까운 )

  • 모든 종류의 프로그래밍 가능

  • 이외에도 vyper, yul, yul+, FE 등이 있지만 스마트 컨트랙트 하다보면 이거 쓰게됨

스마트 컨트랙트 (smart contract)

  • 이더리움 블록체인 위에있는 (주소가 있는) 프로그램

  • 코드와 함수, 데이터들의 모음

EVM

  • 이더리움에서 스마트 컨트랙트를 위한 런타임 환경

  • 완전히 고립되있는 환경 (외부에서 접근 불가)

  • 데이터 저장 공간

    • 스토리지
      • 영구적으로 저장
      • key-value 구조
      • 전역 변수처럼 쓰면 다 스토리지가 되니 주의
      • 접근 하려면 따로 접근 함수를 만들어줘야한다(Public)
      • 스토리지에 저장할 경우 모든 노드들에게 데이터가 퍼져나감
      • 꼭 필요한 경우에만 사용
    • 메모리
      • 컨트랙트가 호출할 때 마다 생기는 임시공간
      • 256비트 단위로 확장됨
      • 확장될 수록 더 비싸짐 (쿼드라틱(제곱))
      • 메모리 절감 기법이 필요
      • 휘발성
    • 스택
      • EVM은 레지스터 머신이 아니라 스택 머신
        • 일반적인 컴퓨터는 레지스터라는 가상 공간에서 연산하는 방식
      • 모든 연산은 스택에서 이루어짐
      • 최대 스택 사이즈 1024(element) 제한에 걸리지 않도록 조심해야함
  • 메세지 콜(Message Call)

    • 컨트랙트가 다른 컨트랙트 호출 혹은 계좌에 전송할 때 사용
    • 트랜잭션과 비슷함
    • 이 친구도 1024스택깊이로 제한, 재귀보단 반복문을 사용하는게 좋음
  • DelegateCall
    • 메세지 콜의 특별한 형태
    • 컨트랙트가 호출된 변수들의 상태를 유지한 채로 다른 컨트랙트를 호출
  • Logs
    • 솔리디티의 이벤트 같은 개념
    • 이벤트를 호출하는 것으로 로그를 찍을 수 있음
    • 블록체인 밖에서 프론트가 값 접근할 때 효율적
    • 전체 블록을 다운로드 하지 않은 라이트 클라이언트도 로그를 찾을 수 있음
  • Selfdestruct
    • 블록체인 상에서 스마트 컨트랙트를 지울 수 있는 유일한 방법
    • 아카이브 노드에서는 여전히 접근 가능
    • 스토리지도 지워져서 문제를 야기할 수도있음
      • flag 같은 변수로 함수 수행 로직 작성 추천
  • 생성(Create)
    • 스마트 컨트랙트가 다른 스마트 컨트랙트를 생성
profile
피아노 -> 개발자

0개의 댓글