각 챕터는 크립토좀비의 레슨과 챕터와 일치하게 작성했습니당
챕터 1-2. 컨트랙트
실습 시작
pragma solidity //1. 여기에 솔리디티 버전 적기
//2. 여기에 컨트랙트 생성
챕터 1-3. 상태 변수 & 정수
상태 변수
: 컨트랙트 저장소에 영구적으로 저장
uint
: 부호 없는 정수, 값이 음수가 아니어야 한다
int
: 부호 있는 정수, 음, 양수 모두 가능
string
: 임의의 길이를 가진 UTF-8 데이터
챕터 1-4. 수학 연산
solidity의 수학연산은 대부분의 프로그래밍 언어의 수학 연산과 동일
덧셈 : x + y
뺄셈 : x - y,
곱셈 : x * y
나눗셈 : x / y
나머지 연산 : x%y ( x를 y로 나눈 값의 나머지 )
지수 연산 : x^y ( x의 y승 )
챕터 1-5. 구조체
구조체를 통해 여러 특성을 가진, 보다 복잡한 자료형을 생성
ex)
struct Person {
uint age;
string name;
}
챕터 1-6. 배열
어떤 것의 모음집이 필요할 때 사용
정적 배열
고정 길이의 배열
ex)
// 2개의 원소를 담을 수 있는 고정 길이의 배열
uint[2] fixedArray;
// 또다른 고정 배열으로 5개의 스트링을 담을 수 있다
string[5] stringArray;
동적 배열
고정된 크기가 없으며 계속 크기가 커질 수 있다
ex)
Person[] people; // 동적 배열로, 원소를 계속 추가할 수 있다
챕터 1-7. 함수 선언
함수 선언
ex)
function eatHamburgers(string _name, uint _amount) {
...
}
함수 호출
ex)
eatHamburgers("vitalik", 100);
** 함수 인자명을 언더스코어(_)로 시작해서 전역 변수와 구별하는 것이 관례 (의무는 아님) **
챕터 1-8 구조체와 배열 활용하기
** 구조체를 활용하여 새로운 구조체 Person를 생성하고 people 배열에 추가하는 방법 알아보기 **
ex) Person 구조체
struct Person {
uint age;
string name;
...
}
//parson구조체의 가변배열 형의 public 제한자를 가진 객체 people 만들기
Person[] public people;
// 새로운 객체 생성
Person satoshi = Person(172, "Satoshi");
// 생성 객체를 미리 만든 배열에 추가
people.push(satoshi);
// 위의 두줄을 한줄로 나타내기 ( push()함수 사용 )
people.push(Person(16, "Vitalik"));
** array.push()는 무언가를 배열의 끝에 추가해서 모든 원소가 순서를 유지하도록 한다 **
챕터 1-9. Private / Public 함수
solidity에서 함수는 기본적으로 public으로 선언
즉, 누구나 (혹은 다른 어느 컨트랙트가)
public으로 선언된 컨트랙트의 함수를 호출하고 코드를 실행할 수 있다는 의미
public으로 선언된 컨트랙트는 외부 공격에 취약
때문에, 기본적으로 함수를 private으로 선언하고, 공개할 함수만 public으로 선언하는 것이 바람직하다
ex)
uint[] numbers;
function _addToArray(uint _number) private {
numbers.push(_number);
}
위의 예시에서 볼 수 있듯,
private 키워드는 함수명 다음에 적는다
함수 인자명과 마찬가지로 private 함수명도 언더바(_)로 시작하는 것이 관례
'Language > Solidity' 카테고리의 다른 글
solidity 기본 문법 5. 상속, Interface, 다수 return 값 처리 with 크립토좀비 (0) | 2021.05.31 |
---|---|
solidity 기본 문법 4. 상속, Import, Storage, Memory with 크립토좀비 (0) | 2021.05.31 |
solidity 기본 문법 3. mapping, Msg.sender, require with 크립토좀비 (0) | 2021.05.31 |
solidity 기본 문법 2. return, view, pure, Keccak256, event with 크립토좀비 (0) | 2021.05.31 |