CryptoZombies 4

띠로리·2021년 3월 19일
0
post-thumbnail

함수제어자(function modifier)

접근제어자(visibility modifier)

함수가 언제 어디서 호출될 수 있는지 제어함

private

컨트랙트 내부의 다른 함수들에서만 호출될 수 있음

internal

private와 비슷하지만, 해당 컨트랙트를 상속하는 컨트랙트에서도 호출될 수 있음.

external

오직 컨트랙트 외부에서만 호출될 수 있음

public

그냥 상관 없다고 보면 됨. 내외부 모두, 언제 어디서든 호출될 수 있음

상태제어자(state modifier)

블록체인과 상호작용하는 방법에 대해서 알려줌

view

해당함수를 실행해도 어떤 데이터도 저장이나 변경되지 않음

pure

해당 함수가 어떤 데이터도 블록체인에 저장하지 않을 뿐만 아니라 블록체인으로부터 어떤 데이터도 읽지 않음을 알려준다.

*view 와 pure의 차이점은?
https://noooop.tistory.com/entry/Solidity-%EA%B0%95%EC%A2%8C-Function-%ED%95%A8%EC%88%98

*이들 모두는 컨트랙트 외부에서 불리면 가스를 전혀 소모하지 않는다. (다른 함수에 의해 내부적으로 호출된다면 그때는 가스를 소모한다.)

제어자

함수 끝에 해당 조건 체크와 같이 사용됨.

onlyOwner

aboveLevel

비트코인 vs 이더리움

비트코인 : 웹 서버에서 api 함수를 실행할 때, 함수 호출을 통한 US달러를 보낼 수 없다. 비트코인도 보낼 수 없다.

이더리움 : 돈, 데이터(transaction payload), 스마트 컨트랙트 코드 모두 이더리움에서 작동하기 때문에 함수 실행과 동시에 컨트랙트에 돈을 지불하는 것이 가능하다.

스마트 컨트랙트

한마디로 표현하자면 '똑똑한 강제 이행 계약권' 같은 느낌

  • 부동산이나 각종 인증서 그리고 계약등 각종 가치있는 모든 것을 쉽게 교환할 수 있게 해줌과 동시에 완전한 투명성을 보장.

  • 중앙화를 벗어나기 때문에 중개자의 서비스와 그에 수반되는 수수료를 피할 수 있음(부동산 복값)

  • 당사자들간의 신뢰 문제를 근절시킬 수 있다. 당사자들이 합의한 모든 약관이 포함되고 탈중앙화된 분산형 거래장부처럼 모두에게 저장되기 때문에 변형이 불가능하다.

  • 스마트 컨트랙트를 이용한다면 수많은 문서를 원본으로 지니고 있어야하는 곤란함을 겪지 않아도 되며, 특정 장소로 전송하거나 운송할 때 분실 위험을 고려하지 않아도 된다. (시간절약과 보안성)

payable

이더를 받을 수 있게해주는 특별한 함수 유형

value : 봉투 안에 현금을 넣는 것과 같은 것으로 수령인에게 편지와 돈이 모두 전달된다.

  • 자바스크립트 함수 호출에서 이 필드를 통해 얼마의 ether를 보낼지 결정.
profile
제 소개를

0개의 댓글