크립토 좀비 - 2 : 좀비가 희생물을 공격하다

장원령·2021년 9월 23일
0

크립토좀비

목록 보기
2/6

https://cryptozombies.io/ko/course
위 사이트의 내용을 요약하였습니다.

1. 매핑과 주소

1.1 매핑

: key-value 저장소이다.

1.2 주소

: 특정 계정을 가르키는 고유 식별자이다.

2. Msg.sender

: 모든 함수에서 이용할 수 잇는 특정 전역 변수가 있는데, 함수를 호출한 사람의 주소를 가리키는 msg.sender가 있다.
: 누군가 다른 사람의 데이터를 변경하려면 해당 이더리움 주소와 관련된 개인키를 훔치는 것만 가능해지게 된다.

3. Require

: 함수가 실행되기 전에, 참인 조건을 확인하는데 유용하다.

4. 상속

: contract A is B 로 선언했을 경우, A 컨트랙트가 A와 B의 컨트랙트에 모두 접근이 가능하다.

5. import

import "./filename.sol";

6. Storage vs Memory

: Storage는 블록체인 상에 영구적으로 저장되는 변수를 Memory는 임시적으로 저장되는 변수를 의미한다. Memory는 컨트랙트 함수에 대한 외부 호출들이 일어나는 사이에 지워지게 된다.
: 함수 외부의 변수는 주로 storage 함수 내부는 주로 memory이다.
: 구조체와 배열을 처리할 때는 이것을 명시해줘야할 때가 있다.

7. 좀비 DNA

8. 함수 접근 제어자 더 알아보기

- internal과 external

: internal은 함수가 정의된 컨트랙트를 상속하는 컨트랙트에서도 접근이 가능하다 점을 제외하면 private과 동일
: external은 함수가 컨트랙트 바깥에서만 호출될 수 있고 컨트랙트 내의 다른 함수에 의해 호출될 수 없다는 점을 제외하면 public과 동일

9. 좀비가 무엇을 먹나요?

: 블록체인 상에 있으면서 우리가 소유하지 않은 컨트랙트와 우리 컨트랙트가 상호작용을 하려면 우선 인터페이스를 정의해야 하네.

10. 인터페이스 활용하기

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

function multipleReturns() internal returns(uint a, uint b, uint c) {
  return (1, 2, 3);
}

function processMultipleReturns() external {
  uint a;
  uint b;
  uint c;
  // 다음과 같이 다수 값을 할당한다:
  (a, b, c) = multipleReturns();
}

// 혹은 단 하나의 값에만 관심이 있을 경우: 
function getLastReturnValue() external {
  uint c;
  // 다른 필드는 빈칸으로 놓기만 하면 된다: 
  (,,c) = multipleReturns();
}

12. 보너스: 키티 유전자

: keccak256을 확인해서 동일 여부 확인

0개의 댓글