인프런 '블록체인과 솔리디티' - 솔리디티프로젝트/졸업 프로젝트2022. 3. 27. 17:22
Table of Contents
솔리디티
- 스마트 컨트렉트를 만들기 위한 언어
- 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에서는 접근 불가
- external
가스
- EVM에서 무언가가 실행될 때 발생하는 수수료
- 가스 리밋
- 수수료의 한계치
- 이를 낮게 설정하면 일을 끝마치기 전에 수수료를 전부 사용하게 되어 버림
- 이런 경우 이더리움에서는 지금까지 한 일은 취소시키지만 수수료는 돌려주지 않음
- 가스 프라이스
- 가스 당 가격을 의미함
- 가격이 비싸지면 채굴자들이 수수료를 많이 받을 수 있기 때문에 먼저 채굴됨
- 가스 프라이스 * 가스 사용량 = 수수료
- 솔리디티에서 기능을 사용할 때 마다 가스를 사용하게 되므로 신중하게 코드를 짤 필요가 있다.
'프로젝트 > 졸업 프로젝트' 카테고리의 다른 글
solidity contract 분석 및 한글 계약서와의 비교 (0) | 2022.03.28 |
---|---|
이해당사자 특정 및 문제 상황 정의하기 (0) | 2022.03.27 |
인프런 '블록체인과 솔리디티' - 블록체인 (0) | 2022.03.27 |
도출된 아이디어 덧붙이기 (0) | 2022.03.27 |
문제 정의 (0) | 2022.03.27 |
@gmelon :: gmelon's greenhouse
백엔드 개발을 공부하고 있습니다.