본문 바로가기

블록체인/크립토 좀비

(4)
[크립토 좀비] 레슨04/05 정리 Payable 웹에서 요청으로 암호화폐를 지불하거나 이체하는 것을 가능하게 하는 함수 제어자 난수 만들기 Oracle을 사용하지 않고 난수를 만드는 방법은 keccak256 해시 함수를 사용하는 것 // Generate a random number between 1 and 100: uint randNonce = 0; uint random = uint(keccak256(now, msg.sender, randNonce)) % 100; randNonce++; //randNonce 는 일회성이여야 하므로 한번 실행되면 값을 증가시킨다. uint random2 = uint(keccak256(now, msg.sender, randNonce)) % 100; //마지막 2자리만 사용하기 위함 이 방식은 안전하지 않기 ..
[크립토 좀비] 레슨 03 정리 컨트랙트의 불변성 : 스마트 컨트랙트는 한번 메인넷에 배포되면 영구적으로 존재한다. 외부 의존성: 문제가 생기면 변경이 가능할 수 있도록 setter를 설정해 외부에서 주입받도록 설계한다. Ownable 컨트랙트: 함수에 onlyOwner 제어자를 추가하면 컨트랙트 배포자만이 함수에 접근할 수 있도록 해주는 컨트랙트 해당 컨트랙트에 ownable 컨트랙트를 상속받아 onlyOwner 제어자를 사용한다. 예시 contract MyContract is Ownable { event LaughManiacally(string laughter); // 아래 `onlyOwner`의 사용 방법을 잘 보게: function likeABoss() external onlyOwner { LaughManiacally("Muah..
[크립토 좀비] 레슨02 정리 크립토 좀비의 솔리디티 버전은 0.4.19 이므로 현재 최신 버전과는 다른 점이 있을 수 있습니다. 솔리디티 공식문서 한국어 mapping 키와 밸류로 이루어진 집합체이다. 자료구조의 해시 테이블과 같다. 선언 mapping(uint => string) name; uint이 키 값이고 string이 밸류로 사용된다. 사용 예시 name[26] = "satoshi"; address 블록체인에서 사용자의 지갑 주소는 필수이다. address는 지갑 주소를 나타내는 자료형이다. 예시 address target = 0x0cE446255506E92DF41614C46F1d6df9Cc969183; msg.sender msg.sender는 컨트랙트를 호출한 사용자의 지갑 주소를 가리킨다. counts[msg.sende..
[크립토 좀비] 레슨 01 정리 크립토 좀비의 솔리디티 버전은 0.4.19 이므로 현재 최신버전과는 다른 점이 있을 수 있습니다. 솔리디티 공식문서 한국어 솔리디티 버전 명시 pragma solidity ^0.4.19; // 설치된 컴파일러와 다를시 에러 컨트랙트 선언 contract Example { } 상태 변수 선언 contract Example { uint sample = 10; } 부호 없는 정수 uint (unsigned int) uint == uint256 uint8, uint16, uint32 등이 있는데 숫자는 변수가 사용할 비트 수만큼 명시 일반적으로는 uint만 사용 연산 add : x + y sub : x -y mul : x * y div : x / y mod : x % y pow : x ** y 배열 선언 uin..