인프런 '블록체인과 솔리디티' - 솔리디티

2022. 3. 27. 17:22·프로젝트/졸업 프로젝트

솔리디티

  • 스마트 컨트렉트를 만들기 위한 언어
  • C++, JS, Python의 영향을 받음
  • EVM(Ethereum Virtual Machine)을 타겟으로 함
    • EVM : 이더리움 노드들이 공유하는 하나의 거대한 가상 머신
  • 스마트 컨트렉트는 수정, 삭제가 불가한 블록체인의 특성상 신중하게 작성해야 함
    • 하지만 이 때문에 신뢰성이 보장되는 것
  • remix.ethereum.org → 웹 기반 솔리디티 IDE, 테스트 및 디버깅 기능 지원

솔리디티 특징

  • 튜링 완전한 언어
  • 두 가지 특수한 변수를 가짐
    • msg.sender → 메시지를 보낼 주소 , msg.value → 메시지로 보낼 값

스마트 컨트렉트 구조

  • contract → class와 비슷한 개념
  • 솔리디티 데이터 타입
    • 문자열 → string(utf8로 인코딩), bytes12
  • 매핑 (key, value 쌍)
    • mapping (address ⇒ string) myMap;
      → address를 key로, string을 value로 매핑한 myMap 선언
  • 동적/정적 배열 지원
    • 동적 배열을 사용하면 블록체인 상에 마치 DB처럼 값을 계속 추가하며 사용할 수 있음
  • interface 지원
    • 추상 계층 작성 가능
  • modifier (한정자) 지원
    • 함수 선언 시 같이 작성해주면 함수를 실행하는 조건으로 사용됨

데이터 위치

  • storage → 전역변수 (상태, 로컬변수?) → 블록 체인에 저장됨
  • memory → 로컬 변수 → 사용 후 휘발됨

가시성

  • 접근자와 같은 개념
  • 종류
    • external
      • 다른 contract, transaction을 통해서만 호출 가능
      • 따라서 단순히 f()로는 사용 불가, this.f()는 가능
    • public
      • 모든 방법으로 접근 가능
      • getter 함수가 자동 생성됨
    • internal
      • 내부적으로만 접근 가능
      • this.f()와 같이 호출 불가
    • private
      • internal과 비슷하지만 상속된 contract에서는 접근 불가

가스

  • EVM에서 무언가가 실행될 때 발생하는 수수료
  • 가스 리밋
    • 수수료의 한계치
    • 이를 낮게 설정하면 일을 끝마치기 전에 수수료를 전부 사용하게 되어 버림
    • 이런 경우 이더리움에서는 지금까지 한 일은 취소시키지만 수수료는 돌려주지 않음
  • 가스 프라이스
    • 가스 당 가격을 의미함
    • 가격이 비싸지면 채굴자들이 수수료를 많이 받을 수 있기 때문에 먼저 채굴됨
  • 가스 프라이스 * 가스 사용량 = 수수료
  • 솔리디티에서 기능을 사용할 때 마다 가스를 사용하게 되므로 신중하게 코드를 짤 필요가 있다.

'프로젝트 > 졸업 프로젝트' 카테고리의 다른 글

solidity contract 분석 및 한글 계약서와의 비교  (0) 2022.03.28
이해당사자 특정 및 문제 상황 정의하기  (0) 2022.03.27
인프런 '블록체인과 솔리디티' - 블록체인  (0) 2022.03.27
도출된 아이디어 덧붙이기  (0) 2022.03.27
문제 정의  (0) 2022.03.27
'프로젝트/졸업 프로젝트' 카테고리의 다른 글
  • solidity contract 분석 및 한글 계약서와의 비교
  • 이해당사자 특정 및 문제 상황 정의하기
  • 인프런 '블록체인과 솔리디티' - 블록체인
  • 도출된 아이디어 덧붙이기
gmelon
gmelon
백엔드 개발을 공부하고 있습니다.
  • gmelon
    gmelon's greenhouse
    gmelon
  • 전체
    오늘
    어제
    • 분류 전체보기 (91)
      • 개발 공부 (28)
        • Java (6)
        • Spring (10)
        • 알고리즘 (11)
        • 기타 (1)
      • 프로젝트 (12)
        • [앱] 플랭고 (4)
        • 졸업 프로젝트 (8)
      • 스터디 (0)
        • 자바 (30)
      • 기록 (15)
        • 후기, 회고 (9)
        • SSAFYcial (5)
        • 이것저것 (1)
      • etc. (6)
        • 모각코 (6)
  • 블로그 메뉴

    • 홈
    • 방명록
    • github
    • 스크랩
  • 인기 글

  • 태그

    Java Collector
    자바
    태초마을이야
    프리티어 종료
    groupingBy()
    자바 Collector
    2024 회고
    2024 상반기 회고
    java
    한글프로그래밍언어
    싸피 회고
    AWS 프리티어 종료
    졸업프로젝트
    Collector groupingBy()
    groupingBy mapping
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
gmelon
인프런 '블록체인과 솔리디티' - 솔리디티
상단으로

티스토리툴바