Explanation
솔리디티는 이더리움 가상 머신(Ethereum Virtual Machine)에서 스마트 계약(smart contract)을 작성할 수 있는 정적 프로그래밍 언어입니다. 이 글은 그 첫번째 글로 솔리디티의 데이터 타입 중 간단한 몇가지를 정리해보려 합니다.
이글을 작성한 시점에서 솔리디티의 마지막 버전인 '0.4.24' 버전을 기준으로 작성되었고 글에 포함되어 있는 테스트 코드들은 Remix(http://remix.ethereum.org/)를 통해 직접 테스트 해볼 수 있습니다.
보다 자세하고 정확한 정보는 솔리디티 도큐먼트를 확인하시면 좋을 것 같습니다.
링크 : http://solidity.readthedocs.io/en/v0.4.24/
0. Remix
직접 코드를 작성하고 테스트할 수 있도록 아주 간단하게 리믹스를 사용합니다.
링크 : http://remix.ethereum.org/

에디터란에 해당하는 코드를 작성합니다.

오른쪽에 'Start to compile' 버튼을 선택하여 솔리디티를 컴파일합니다.

'Environment' 를 'Javascript VM' 으로 설정한 후 'Deploy' 선택, 아래쪽에 나타나는 함수의 (ex. get, set..) 들을 선택, 확인합니다.
1. 불리언(Boolean)
bool foo = true;
bool doo = false;
'foo' 와 'doo' 는 Boolean 타입의 변수로 true 또는 false 의 값을 가질 수 있습니다.
pragma solidity ^0.4.24;
contract BooleanTest {
bool foo;
function setBoolean(bool boolData) public {
foo = boolData;
}
function getBoolean() public view returns (bool) {
return foo;
}
}
2. 정수
부호가 있는 `int`, 부호가 없는 `uint`, 정수 타입으로 8비트 단위로 256비트까지 허용하는 타입입니다.
int8, int16, ... int256, 비트 단위를 표기하지 않으면 256을 의미합니다.
int = int256
pragma solidity ^0.4.24;
contract UintTest {
uint8 foo = 2;
function getUint() public view returns (uint8) {
return foo;
}
}
3. 고정 소수점 수
`fixed`, `ufixed` 여기에서의 앞의 u는 정수 타입과 같이 부호가 있고 없고를 나타내며, 자세한 표현식은 `fixedMxN` 으로
여기에서 `M`은 8비트 단위를 그리고 `N`은 소수점 자리수를 나타냅니다.
하지만 v0.4.24 기준으로 아직 완전히 지원하지 않습니다.
4. 주소
`address`는 이름처럼 이더리움의 주소 값의 크기인 20바이트의 크기를 가집니다. 주소는 balance, transfer, send, call, callcode, delegatecall 의 멤버(Members)를 가지고 있습니다.
위 멤버들은 해당 주소의 이더를 확인하거나 전송하는 등의 일을 합니다. 이 부분은 후의 쳅터에서 자세히 적어보려합니다.
5. 고정된 크기의 바이트 배열
bytes1, bytes2, ... bytes32, byte 는 bytes1를 의미합니다.
`[]`로 index 접근이 가능하며, 읽기만 가능합니다.
bytes2 test = 'ab';
test[1] //a
test[2] //b
test[1] = 'cc' //error
pragma solidity ^0.4.24;
contract FixedByteArray {
bytes2 arr2 = 'ab';
function getFixedByteArray(uint8 idx) public view returns(bytes1) {
return arr2[idx];
}
function setFixedByteArray(bytes2 newData) public {
arr2 = newData;
}
}



