본문 바로가기

솔리디티23

레슨2 챕터9 - 함수 접근 제어자 함수에 private 이나 public을 붙임에 따라 함수 사용(접근)에 제한을 줄 수 있다. 기본적으로 아무것도 안쓰면 public이다 public 다른 컨트랙트에서도 호출할 수 있게 된다 private 해당 함수가 속해있는 컨트랙트에서만 호출할 수 있고 다른 컨트랙트에서는 사용할 수 없다. internal 해당 함수가 속한 컨트랙트와 해당 컨트랙트를 상속받는 컨트랙트에서만 사용할 수 있고 그외의 상속받지 않은 다른 컨트랙트에서는 사용할 수 없다. external 함수가 있는 컨트랙트 내부에서는 사용할 수 없고 다른 컨트랙트에서만 사용할 수 있다. 챕터 9 수정 전 function _createZombie(string _name, uint _dna) private { uint id = zombies.p.. 2022. 2. 12.
레슨2 챕터 7, 8 - storage, memory storage는 블록체인에 영구적으로 저장되는 변수이고 memory는 호출되었다가 지워지는 임시적인 변수이다 storage는 하드디스크, memory는 램과 같다고 보면 된다. 보통 함수 외부에서 선언된 변수는 storage로 자동 선언되고 함수 내부에서 선언된 변수는 memory로 자동 선언된다 크립토좀비에서 설명하는 예시를 보면 contract SandwichFactory { struct Sandwich { string name; string status; } Sandwich[] sandwiches; function eatSandwich(uint _index) public { // Sandwich mySandwich = sandwiches[_index]; // ^ 꽤 간단해 보이나, 솔리디티는 여기서.. 2022. 2. 12.
레슨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.