본문 바로가기

솔리디티/크립토좀비17

레슨2 챕터 5, 6 - 상속 / import 상속 컨트랙트는 다른 컨트랙트를 상속받을 수 있고 상속받은 컨트랙트는 해당 컨트랙트의 상태변수, 함수 등을 사용할 수 있다(public, private, internal external 등에 따라 사용하지 못할 수 있을듯) 다중 상속이 가능하다 사용방법은 다음과 같다 contract 나는컨트랙트 { } contract 나는세컨트랙트 { } contract 상속자 is 나는컨트랙트, 나는세컨트랙트 { } import JS의 require나 TS, 리액트의 import와 같다고 보면 된다 import "./경로/경로경로/파일.sol"; 챕터 5 답 // ZombieFeeding은 ZombieFactory로부터 상속받는다 contract ZombieFeeding is ZombieFactory { } 챕터 6 .. 2022. 2. 12.
레슨2 챕터2, 3, 4 - 매핑, 주소 / msg.sender / require 주소(address) 이더리움 블록체인에는 은행계좌처럼 계정들이 있다. '주소'는 특정 계정을 가리키는 고유 식별자 역할을 한다. 매핑(mapping) 데이터를 저장하거나 검색해서 접근하는데에 사용된다 매핑에는 키-값(key-value) 이 들어가고 사용방법은 다음과 같다 // 키 값 사용할이름 mapping (address => uint) public abcd; public은 함수처럼 다른 컨트랙트에서도 사용할 수 있게 만들어준다 msg.sender msg.sender는 솔리디티 자체에 있는 내장변수같은것이다. msg.sender는 해당 컨트랙트, 함수 등에 접근하는 외부 호출자(사용자)를 의미한다 msg.sender와 매핑을 활용하는 예시 // favoriteNumber라는 이름으로 address를 .. 2022. 2. 12.
레슨1 챕터 11, 12, 13 - 형변환, 종합, 이벤트 필요에 따라 자료형(타입)을 바꿔야 할 때가 있다. 이번 챕터에 활용할 것이 string형을 uint형으로 바꾸는것이다. 안의 내용물이 바뀐 결과인 자료형이 되는데에 문제가 없으면 변환이 된다 챕터 11 답 // 매개변수 _str을 keccak256()을 통해 16진수 난수를 만들고 // 그것을 uint()로 string에서 uint로 형변환을 해주어 rand 변수에 담고 // 그것을 10^16승으로 나눈 나머지를 반환한다 uint rand = uint(keccak256(_str)); return rand % dnaModulus; 챕터 12 답 // 랜덤좀비생성 함수를 public으로 선언 function createRandomZombie(string _name) public { // _name을 매개변.. 2022. 2. 11.
레슨1 챕터10 - 함수 제어자 함수선언에 public / private 처럼 추가로 넣을 수 있는 함수 제어자라는것이 있다 함수제어자는 view와 pure, modifier가 있다 함수 내에서 실행하는것들이 어떤 값을 변경시키지 않는 경우에 view로 선언하고 함수가 매개변수로 받은 값 외에는 어떤 데이터에도 접근하지 않는 것은 pure로 선언한다. string 인사 = "안녕?"; function 인사해() public view returns (string) { return 인사; } 위와 같은 함수는 함수밖의 데이터에 접근은 하지만 그 값을 변경시키지는 않는다. 그래서 view함수로 선언할 수 있다. function _계산좀하자(uint a, uint b) private pure returns (uint) { return a * .. 2022. 2. 11.