본문 바로가기

솔리디티/크립토좀비17

레슨3 챕터1 - 컨트랙트 불변성(Immutable) 이더리움 DApp은 컨트랙트를 배포하고 나면 블록체인에 영구적으로 기록될 것이기에 수정할 수 없게 된다. 이에 따른 단점은 결함이 있는 코드를 배포하고나서 결함을 해결하고 수정하려고 해도 불가하다는것 반대로 장점은 다른이들도 내가 배포한 컨트랙트를 임의로 예상치 못한 결과를 만들어낼 수 없다는것 여하튼 그래서 컨트랙트 내부의 중요한 부분들을 수정할 수 있도록 하는 함수를 만들어두어 필요할 때 그 함수를 이용하여 중요한 값들을 변경하는데에 사용할 수 있다. 챕터1 답 수정 전 // 1. address ckAddress = 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d; // 2. KittyInterface kittyContract = KittyInterface(ckAddres.. 2022. 2. 17.
레슨2 챕터 10, 11, 12, 13 - 인터페이스 인터페이스는 다른 컨트랙트에 있는 함수를 불러올 수 있는 길을 터주는 역할을 한다. JS의 module.exports , require 와 비슷한 개념이다 인터페이스에 들어갈 함수는 { } 의 내용이 빠진채로 끝내주면 된다. contract 인터페이슥 { function 함수다(매개변수) public returns (uint a, uint b); } 이렇게 인터페이스가 정의 되면 다른 컨트랙트에서 가져다가 사용할 수 있다. contract 멸치컨트랙트 { 인터페이슥 인터컨트랙트; 인터컨트랙트.함수다(매개매개); } 크립토좀비에서 사용하고있는 형태에 의하면 나를 가리키고 있는 주소값을 다른 주소값으로 변경할 수도 있나보다. contract 멸치컨트랙트 { address 남의주소 = 0xabc... 인터페이.. 2022. 2. 12.
레슨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.