본문 바로가기

전체 글71

레슨3 챕터2, 3 - 소유 가능한 컨트랙트, 함수제어자(modifier) external 함수는 누구든지 사용할 수 있는 함수다. 이것을 소유자만 사용할 수 있도록 만들 수 있다. 이를 위해 만들어져있는 OpenZeppelin라는 솔리디티 라이브러리에 있는 Ownable 컨트랙트를 가져와서 살펴보자 Ownable.sol // Ownerable 계약에는 소유자 주소가 있으며 기본 권한 제어 기능을 제공하므로 // "사용자 권한"의 구현이 간소화됩니다. contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); // Ownerable 생성자(constructor)는 계약의 원래 '소유자'를 발신자 계정으로 설정합니다.. 2022. 2. 17.
레슨3 챕터1 - 컨트랙트 불변성(Immutable) 이더리움 DApp은 컨트랙트를 배포하고 나면 블록체인에 영구적으로 기록될 것이기에 수정할 수 없게 된다. 이에 따른 단점은 결함이 있는 코드를 배포하고나서 결함을 해결하고 수정하려고 해도 불가하다는것 반대로 장점은 다른이들도 내가 배포한 컨트랙트를 임의로 예상치 못한 결과를 만들어낼 수 없다는것 여하튼 그래서 컨트랙트 내부의 중요한 부분들을 수정할 수 있도록 하는 함수를 만들어두어 필요할 때 그 함수를 이용하여 중요한 값들을 변경하는데에 사용할 수 있다. 챕터1 답 수정 전 // 1. address ckAddress = 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d; // 2. KittyInterface kittyContract = KittyInterface(ckAddres.. 2022. 2. 17.
오버플로우, 언더플로우 오버플로우 Overflows 오버플로우는 저장가능한 공간을 초과하는 경우를 뜻한다. 예를들어 uint8은 이진수 11111111이나 십진수255까지만 표현할 수 있는데 여기에 1을 더하면 0이 된다 시계가 23시가 지나면 0시가 되듯. 이러한 것을 오버플로우라고 한다. 언더플로우 Underflows 언더플로우는 오버플로우와 반대로 0에서 -1을 하면 11111111(255) 가 되는것 uint8 num = 255; // 최대 255까지만 표현 가능 num++; // 0이 됨 num++; // 1 uint8 num2 = 0; num2--; // 255 num2--; // 254 오버플로우와 언더플로우가 생기면 문제가 발생할 여지가 있을 수 있다. 수치가 더 커져야하는데 줄어들어버리거나 음수로 가야하는데 커.. 2022. 2. 16.
인터페이스 (interface) 인터페이스는 다른 컨트랙트에 있는 함수를 불러올 수 있는 길을 터주는 역할을 한다. JS의 module.exports , require 와 비슷한 개념이다 인터페이스에 들어갈 함수는 { } 의 내용이 빠진채로 끝내주면 된다. contract 인터페이슥 { function 함수다(매개변수) public returns (uint a, uint b); } 이렇게 인터페이스가 정의 되면 다른 컨트랙트에서 가져다가 사용할 수 있다. contract 멸치컨트랙트 { 인터페이슥 인터컨트랙트; 인터컨트랙트.함수다(매개매개); } 크립토좀비에서 사용하고있는 형태에 의하면 나를 가리키고 있는 주소값을 다른 주소값으로 변경할 수도 있나보다. contract 멸치컨트랙트 { address 남의주소 = 0xabc... 인터페이.. 2022. 2. 12.