Solidity - 1

Seunghyeon·2024년 2월 23일
0

블록체인

목록 보기
1/1
post-thumbnail

솔리디티


"Solidity에 대한 개념을 제가 이해한 방식으로 풀어 쓴 글입니다."


스마트 컨트랙트

백엔드 개발을 해보고 나서 바로 블록체인 공부를 하게 되었습니다.
이 블록체인의 스마트 컨트랙트를 보고 느낀점

  1. 백엔드 서버를 블록체인 블록으로 관리한다.
  2. 서버를 최대한 효율적으로 짜야 한다.

API를 호출하고 데이터를 받으려면 서버는 항상 켜져있어야 함
반면 블록체인은 컨트랙트를 블록체인에 등록함으로써 블록체인 서버는 항상 켜져있고 거기에 내 API를 추가하는 느낌


그래서 켜져있는 서버에 API를 등록하고 사용하려면
AWS를 빌려서 서버비를 내는것처럼 서버 사용료를 내야겠죠?

그 사용료를 gas라고 하자

1 eth(이더리움) = 10^9 Gwei (가스웨이) = 10^18 wei(웨이)
1 gas = 1 Gwei

  • 그럼 이 gas는 어떻게 책정되는가?

AWS ec2 서버도 한정적인 리소스가 있고 그 리소스를 사용하는데 공평하게 사용하기 위해 프로세스들이 나눠서 돌아가며 사용하는데

모든 사람들이 이 블록체인 서버를 공평하게 사용하기 위해서는 리소스를 사용하는 양에 맞추어 gas를 매겨야 합니다.

Ethereum Yellow Paper

그 기준은 위 논문 27페이지 쯤에 나와있습니다.

컨트랙트에서 어떤 행동을 하느냐에 따라 얼마의 gas가 부과되고

해당 함수가 자원을 얼마나 사용하나에 따라 gas가 부과 되는 구조입니다.


우리는 컨트랙트의 함수를 실행하는데 드는 비용 (gas)를 최소한으로 하기 위해

함수를 만들때 부터 딱 필요한 범위 내에서, 딱 필요한 기능만 동작하게 만들어야 합니다.


솔리디티는 function에서 사용되는 키워드 하나하나 마다 책정되는 gas가 다름

  • 접근제어자

  • view, pure, payable

  • 사용되는 파라미터 변수의 존재 범위

gas를 사용하는 범위를 세세하게 나눠 두었기 때문에
변수에 접근제어자 선택 안해주고 그냥 아무렇게나 변수 사용하면 난방비 엄청 나올 준비 하셔야 합니다.


  • 내가 볼려고 정리한 것들

external vs public
external 키워드의 경우, 컨트랙트의 외부에서만 함수의 호출이 가능하게 합니다. 반면 public 키워드의 경우 컨트랙트의 내부와 외부 모두에서 함수의 호출이 가능하게 합니다.


internal vs private
internal 키워드의 경우, 컨트랙트 내부 또는 해당 컨트랙트를 상속하는 컨트랙트에서 호출이 가능합니다. 다른 언어의 protected 키워드와 유사하다고 생각하시면 됩니다. 반면 private 키워드의 경우, 컨트랙트 내부에서만 호출이 가능합니다.


view : function 밖의 변수들을 읽을수 있으나 변경 불가능
pure : function 밖의 변수들을 읽지 못하고, 변경도 불가능
viwe 와 pure 둘다 명시 안할때: function 밖의 변수들을 읽어서, 변경을 해야함.

profile
그냥 합니다.

0개의 댓글