선릉역 1번 출구

solidity(2) 본문

Language/Solidity

solidity(2)

choideu 2021. 8. 12. 08:50

개요

좀비 생성 방식: 좀비가 다른 생명체를 먹어서 생성

 

1. mapping and address

매핑은 기본적으로 키-값(key-value)저장소이고 데이터를 저장하고 검색하는 데 이용된다.

ex) mapping (address => int) public name; //public 생략 가능

 

2. Msg.sender

msg.seder는 현재 함수를 호출한 사람(or smart contract)의 주소를 가리킨다.

 

3. Require

require: 특정 조건이 참이 아닐 때 함수가 에러 메세지를 발생하고 실행을 멈추게 한다.

require(식)

 

4. 상속

코드가 길어질 때 코드를 나누어 잘 정리해서 관리하기 쉽도록 함

contract name is 상속받는 contract name {
}

 

5. Import

코드가 길어질 때 여러 파일로 나누어 정리하기 위함

import "./zombiefactory.sol";
->동일한 디렉토리 안에 있다는 가정하에 이렇게 적음

 

6. storage vs memory

함수 외부에 선언된 변수인 상태변수는 초기 설정상 storage로 선언되어 블록체인에 영구적으로 저장되고 함수 내부에 선언된 변수는 memory로 자동 선언되어 함수 호출이 종료되면 사라진다.

자료형 storage/memory name;

 

7. 함수 접근 제어자 

Internal vs External

private와 public말고도 internal과 external이라는 함수 접근 제어자가 존재한다.

internal은 함수가 정의된 컨트랙트를 상속하는 컨트랙트에서도 접근이 가능하다. (이 점을 제외하고 나머지는 private과 동일)

external은 함수가 컨트랙트 바깥에서만 호출될 수 있고 컨트랙트 내의 다른 함수에 의해 호출될 수 없다. (이 점을 제외하고 나머지는 public과 동일)

 

8. 인터페이스 정의

인터페이스를 정의하는 것은 컨트랙트를 정의하는 것과 매우 유사하다.

다른 컨트랙트와 상호작용하려는 함수만을 선언하고 다른 함수나 상태 변수를 언급하지 않는다. 또 함수를 몸체를 정의하지 않는데, 이는 {}구조를 사용하지 않고 ;으로 선언을 끝내는 것을 의미한다.

 

9. 다수의 반환값 처리하기

//반환 값이 3개라면 (uint a, uint b, uint c)
#a, b, c를 모두 받을 때
(a, b, c) = 함수 이름;
#c만 받고 싶을 때
(,,c) = 함수 이름; (인자를 넣어주지 않고 ,로 넘어감!)

 

 

'Language > Solidity' 카테고리의 다른 글

solidity(3)  (0) 2021.08.12
solidity(1)  (0) 2021.08.10
Comments