[소소한 개발 일지] SwiftUI 기반 macOS 애플리케이션의 타이틀바 영역에 커스텀 뷰 추가하기
solidity #1 솔리디티의 데이터 타입-1
2018-05-30
Explanation
솔리디티는 이더리움 가상 머신(Ethereum Virtual Machine)에서 스마트 계약(smart contract)을 작성할 수 있는 정적 프로그래밍 언어입니다. 이 글은 그 첫번째 글로 솔리디티의 데이터 타입 중 간단한 몇가지를 정리해보려 합니다.
이글을 작성한 시점에서 솔리디티의 마지막 버전인 ‘0.4.24’ 버전을 기준으로 작성되었고 글에 포함되어 있는 테스트 코드들은 Remix(http://remix.ethereum.org/)를 통해 직접 테스트 해볼 수 있습니다.
보다 자세하고 정확한 정보는 솔리디티 도큐먼트를 확인하시면 좋을 것 같습니다.
링크 : http://solidity.readthedocs.io/en/v0.4.24/
직접 코드를 작성하고 테스트할 수 있도록 아주 간단하게 리믹스를 사용합니다.
링크 : http://remix.ethereum.org/
에디터란에 해당하는 코드를 작성합니다.
오른쪽에 ‘Start to compile’ 버튼을 선택하여 솔리디티를 컴파일합니다.
‘Environment’ 를 ‘Javascript VM’ 으로 설정한 후 ‘Deploy’ 선택, 아래쪽에 나타나는 함수의 (ex. get, set..) 들을 선택, 확인합니다.
1 2 |
bool foo = true; bool doo = false; |
‘foo’ 와 ‘doo’ 는 Boolean 타입의 변수로 true 또는 false 의 값을 가질 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 |
pragma solidity ^0.4.24; contract BooleanTest { bool foo; function setBoolean(bool boolData) public { foo = boolData; } function getBoolean() public view returns (bool) { return foo; } } |
부호가 있는 int
, 부호가 없는 uint
, 정수 타입으로 8비트 단위로 256비트까지 허용하는 타입입니다.
int8, int16, … int256, 비트 단위를 표기하지 않으면 256을 의미합니다.
int = int256
1 2 3 4 5 6 7 8 |
pragma solidity ^0.4.24; contract UintTest { uint8 foo = 2; function getUint() public view returns (uint8) { return foo; } } |
fixed
, ufixed
여기에서의 앞의 u는 정수 타입과 같이 부호가 있고 없고를 나타내며, 자세한 표현식은 fixedMxN
으로
여기에서 M
은 8비트 단위를 그리고 N
은 소수점 자리수를 나타냅니다.
하지만 v0.4.24 기준으로 아직 완전히 지원하지 않습니다.
address
는 이름처럼 이더리움의 주소 값의 크기인 20바이트의 크기를 가집니다. 주소는 balance, transfer, send, call, callcode, delegatecall 의 멤버(Members)를 가지고 있습니다.
위 멤버들은 해당 주소의 이더를 확인하거나 전송하는 등의 일을 합니다. 이 부분은 후의 쳅터에서 자세히 적어보려합니다.
bytes1, bytes2, … bytes32, byte 는 bytes1를 의미합니다.
[]
로 index 접근이 가능하며, 읽기만 가능합니다.
1 2 3 4 |
bytes2 test = 'ab'; test[1] //a test[2] //b test[1] = 'cc' //error |
1 2 3 4 5 6 7 8 9 10 11 |
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; } } |