블록체인 스터디 [9주차]

개발새발·2021년 7월 12일
0

블록체인 스터디

목록 보기
5/25

블록체인 스터디 [9주차]

진작에 끝내야 했던 Cryptozombies 솔리디티 문법 lesson3를 끝냈다. lesson3는 내용이 꽤 많았다. 핵심적인 내용만 요약하자면 다음과 같다 :

  • 이더리움에 컨트랙트를 한번 배포하고 나면, 수정하거나 삭제할 수 없다. 때문에 DApp의 중요한 일부를 수정할 수 있도록 하는 함수를 만들어 놓는 것이 일반적이다. 그 방법은 컨트랙트를 소유 가능하게 만드는 것이다. (OpenZeppelin의 Ownable 컨트랙트)
  • 함수 제어자 : 함수처럼 보이지만 function 키워드 대신 modifier 키워드를 사용하고 함수를 호출하듯이 직접 호출할 수 없다. 대신에 함수 정의부 끝에 해당 함수의 작동 방식을 바꾸도록 제어자의 이름을 붙일 수 있다. 함수 제어자는 인수를 받을 수 있다.

  • 솔리디티에서는 사용자들이 누군가가 만든 DApp의 함수를 실할할 때마다 Gas라고 불리는 화폐를 지불해야 한다.

  • 시간 단위 (Time units) : 솔리디티는 시간을 다룰 수 있는 단위게를 기본적으로 제공한다.

  • 구조체를 인수로 전달하기 : private 또는 internal 함수에 인수로서 구조체의 storage 포인터를 전달할 수 있다.

  • 보안을 점검하는 좋은 방법은 모든 publicexternal함수를 검사하고, 사용자들이 그 함수들을 남용할 수 있는 방법을 직접 생각해보는 것이다. 남용을 막기 위한 가장 쉬운 방법은 함수를 internal로 만드는 것이다.

  • view함수는 사용자에 의해 외부에서 호출되었을 때 가스를 전혀 소모하지 않는다. 이건 view함수가 블록체인 상에서 실제로 어떤 것도 수정하지 않기 때문이다. 데이터를 읽기만 한다.

  • 솔리디티에서 비싼 연산 중 하나는 바로 storage를 쓰는 것이다. 비용을 최소화하기 위해 진짜 필요한 경우가 아니면 storage에 데이터를 쓰지 않는 것이 좋다.

  • storage에 아무것도 쓰지 않고도 함수 안에 새로운 배열을 만들려면 memory키워드를 쓰면 된다. 이 배열은 함수가 끝날 때까지만 존재할 것이고, 이는 storage의 배열을 직접 업데이트하는 것보다 가스 소모 측면에서 훨씬 저렴하다. 외부에서 호출된느 view함수라면 무료다.

 

밑에 링크를 걸어놓은 블로그에 좀 더 자세한 내용들을 기록해두었다.

https://velog.io/@dogfootbirdfoot/Cryptozombies-lesson3

profile
블록체인 개발 어때요

0개의 댓글