https://cryptozombies.io/ko/course/
구조체 – 여러 자료형의 집합 느낌
배열 – 동적 배열,
- 구조체 배열 생성 가능
- public 배열
- array.push() 로 배열 추가
함수 - public, private, (internal, external) internal은 private이랑 비슷한데 상속은 접근 가능
- view(read o, write x), pure(read x)
Event – 약간 영수증 알림장 느낌? 근데 아직까진 왜 사용하는지 모르겠음
- 찾아보면 프론트엔드와의 소통을 위해 로그 기록을 위해
apping – 파이썬의 dict 느낌?
Msg.sender – 현재 함수 호출한 사람 주소
Require – 반복문에서 if break 같은 느낌
Storage vs memory – storage는 주소 복사, memory는 단순 내용 복사
- 주소 복사는 내용 변경 시 같이 적용 (빨간색 화살표)
- 단순 내용 복사는 변경 시 적용 x (빨간색 상자)
인터페이스 – 카테고리 같은 느낌, 몸체는 정의하지 않고 뼈대만 설정해주는 역할(abstract)
다수의 반환값은 (,,c) = , (a,b,c) = 등으로 처리하면 됨
컨트랙트는 배포하면 변경불가 (블록체인 안에 존재, 코드가 보존됨)
누구도 변경 못하기에 보안성이 높다. 문제는 나조차도 변경못함
따라서 변경해야 할 곳이 있다면 이를 수정 가능하도록 해놓아야 함
근데 아무나 할 수 있게끔 하면 안되니까 ownable 컨트랙트 이용
가스의 개념 등장 -> 최대한 효율적으로 짤 필요가 있음
함수제어자는 인수도 전달 받을 수 있음, olderThan(age, Id)
View 함수는 가스 소모 x -> read만 하기 때문에, 만약 이 view함수를 다른 함수에서 호출 할 때에는 다른 함수와 트랜잭션을 생성하기에 가스 소모
Storage vs memory 2탄
– memory는 함수 끝날 때까지만 존재, 따라서 저렴
- 만약 view 함수로 호출된다면 무료
뭔가 솔리디티는 보안성은 좋지만, 유지 보수 면에서는 많은 노력을 필요로 한다
또한 코드의 최적화보다는 비용의 최적화에 더 강조를 두고 있는 느낌
한번 짤 때 제대로 짜자
프로그래머의 능력이 유저의 비용 지불 측면과 직관적으로 연결 되어 있음
어렵다..