언어/Solidity

Solidity 기초 - 4 (구조체 압축)

나나콘 2022. 1. 23. 17:38

Solidity의 데이터 저장 단위

Solidity는 변수를 선언 시, 256비트의 저장 공간을 미리 잡아놓습니다.

즉, uint로 선언하는 것과 uint16으로 선언하는 것은 가스 비용을 줄이는데에 아무 영향이 없습니다.

 

구조체 압축

구조체 안에서의 변수 타입 선언은 가능한한 작은 크기의 타입을 사용하는 것이 좋습니다.

구조체도 256비트 단위를 맞춰 저장하려고 하지만, 내부에서 선언되는 타입들은 정렬이 가능하기 때문입니다.

C언어의 구조체 padding bit와 동일합니다.

struct NormalStruct {
  uint a; //256
  uint b; //256
  uint c; //256
}//768

struct MiniMe {
  uint32 a; //32
  uint32 b; //32
  uint c; //256
} //512

또한 동일한 데이터 타입은 하나로 묶어놓는 것이 좋습니다.

Solidity는 동일한 데이터 타입에 대해 저장 공간을 최소화 시켜줍니다.