크립토 좀비 - 1 : 좀비 공장 만들기
https://cryptozombies.io/ko/course
위 사이트의 내용을 요약하였습니다.
1. 컨트랙트 선언
- 솔리디티의 버전 선언
pragma solidity ^0.4.19;
- 컨트랙트의 선언
contract HelloWorld {
}
2. 상태 변수 & 정수
2.1 상태변수
: 컨트랙트 저장소에 영구적으로 저장된다.(= 이더리움 블록체인에 기록)
- 부호 없는 정수 (uint = uint256)
: 값이 음수가 아니어야 한다는 뜻
: 부호 있는 정수는 int를 사용한다
3. 수학 연산
: + - * / % ** 를 지원한다.
4. 구조체
: 서로 다른 자료형들을 묶어서 사용 가능
struct Zombie {
string name;
uint dna;
}
- string은 문자열 정의에 사용
5. 배열
5.1 정적 배열과 동적 배열
: []숫자의 유무에 따라 나뉜다.
5.2 구조체도 배열 사용이 가능하다.
5.3 Public 배열
: 배열을 위해 getter(해당 필드의 값을 리턴)메소드를 자동으로 생성한다.
Person[] public people;
: 다만 이 경우 해당 필드에 쓸수는 없다. (setter X)
6. 함수 선언
function eatHamburgers(string _name, uint _amount) {
}
: 매개변수는 꼭 _를 앞에 붙여주자.
7. 구조체와 배열 활용하기
struct Person {
uint age;
string name;
}
Person[] public people;
// 1번
Person satoshi = Person(172, "Satoshi");
people.push(satoshi);
// 2번
people.push(Person(16, "Vitalik"));
: 위처럼 두 가지 방법으로 people 배열에 원소를 추가할 수 있다.
- array.push()는 queue처럼 원소를 배열의 끝에 추가한다.
8. Private, Public 함수
: java와 유사하게, public은 누구나 컨트랙트의 함수를 호출하고, 코드를 바꿀 수 있게 하여 보안에 취약하다.
: private는 컨트랙트 내의 함수들만이 이 함수를 호출할 수 있게 한다.
9. 함수 더 알아보기
- 함수 제어자
: view는 함수가 데이터를 보기만 하고 변경하지 않음을 의미한다.
: pure는 함수가 앱에서 어떤 데이터도 접근하지 않는 것을 의미한다.
View : 읽기 전용으로 함수를 실행하는데에 있어 데이터를 쓰거나 덮어쓰지 않고 읽기만 한다.
Pure : side effect(외부 값을 가져와서 그에 대해서 변경시키는 행위)가 전혀 없이, 오로지 그 함수의 parameter만을 이용해서 값을 return하는 함수이다
- solidity-by-example
10. Keccak256과 형 변환
10.1 keccak256란?
: 이더리움이 가지고 있는 내장 해시 함수로 난수를 생성한다.
: 1비트를 변경하면 출력값의 각 비트가 50% 확률로 변경되어, 쇄도 효과 때문에 상당한 변화가 일어난다.
( 작은 차이에도 그 값의 변화가 확연하게 차이가 난다)
10.2 형 변환
: 아래처럼 숫자에 자료형()을 씌우면 된다.
uint8 a = 5;
uint b = 6;
// a * b가 uint8이 아닌 uint를 반환하기 때문에 에러 메시지가 난다:
uint8 c = a * b;
// b를 uint8으로 형 변환해서 코드가 제대로 작동하도록 해야 한다:
uint8 c = a * uint8(b);
11. 이벤트
: 로그를 만들기 위하여 사용되는 고수준 객체
Author And Source
이 문제에 관하여(크립토 좀비 - 1 : 좀비 공장 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wrjang96/크립토-좀비-1-좀비-공장-만들기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)