이더리움 레슨 3 정리
컨트랙트를 배포하고 나면 변하지 않는다. (수정과 업데이트가 불가능)
배포한 최초의 코드는 블록체인에 영구적으로 존재
따라서 DApp의 일부를 수정할 수 있도록 함수를 만드는 것이 합리적
컨트랙트를 소유 가능하게 만드는 것
생성자 : function Ownable()
함수 제어자 : modifier onlyOnwer()
- 다른 함수들에 대한 접근을 제어자
- 함수 실행 전의 요구사항 충족 여부를 확인
- 오직 컨트랙트의 소유자만 해당 함수를 실행할 수 있도록 제한 가능
- 제어 하는 함수를 실항하기전에 함수 제어자 실행
- _; 부분에 제어 하는 함수 실행
- require 체크?
가스
- DApp의 함수를 실행할 때마다 "가스"라고 불리는 화폐를 지불
- 이더를 이용해 가스를 구매
- 각각의 연산에 소모되는 가스 비용(gas cost)가 있다.
# 사이드 체인과 이더리움 메인넷?
- 구조체 안에서는 가능한 작은 크기의 정수 타입을 쓰는 것이 좋다 (압축)
- 동일한 데이터 타입은 하나로 묶어놓는 것이 좋다.
시간 단위
- now 라는 키워드 제공
- days, seconds 등 다양한 편의 요소 제공
보안
- public과 external 함수를 검사
view 함수는 가스를 소모하지 않는다. -> 블록체인 상 아무 것도 수정하지 않기 때문
storage는 비싸다 -> 블록체인에 영구적으로 기록되기 때문
메모리에 배열선언 (storage의 배열을 직접 업데이트하는 것보다 저렴)
function getArray() external pure returns(uint[]) {
uint[] memory values = new uint[](3); // 반드시 길이 인수와 함꼐 생성
values.push(1); values.push(2); values.push(3);
return values;
}