solidity #1 솔리디티의 데이터 타입-1

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)

‘foo’ 와 ‘doo’ 는 Boolean 타입의 변수로 true 또는 false 의 값을 가질 수 있습니다.

2. 정수

부호가 있는 int, 부호가 없는 uint, 정수 타입으로 8비트 단위로 256비트까지 허용하는 타입입니다.
int8, int16, … int256, 비트 단위를 표기하지 않으면 256을 의미합니다.
int = int256

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 접근이 가능하며, 읽기만 가능합니다.

Leave a Reply

  1. sofkaints

    웹앱에서 본인인증을해야 캘린더 정보를 볼수 있는데
    퀵스타터는 실행하면 주는 url접속후 인증하고 뱉어내는 code를 입력해야 정보가 나옵니다.
    다른 유저가 이 기능을 쓰려면 어떻게 해야하죠?
    url을 클라한테 보내줘서 인증하게 해야하나요?

    간단히 말해 응용방법을 모르겠습니다 ㅠ

    • 안녕하세요, sofkaints님.
      실제로 서비스에서 사용하시려면 몇가지 수정이 필요할 것 같습니다. sofkaints님이 말씀하신 것처럼 구글 사용자 인증을 위해서 (문서상 변수)’authUrl’로 클라이언트에서 새로 페이지를 띄우거나 리다이렉션 시켜서 사용자가 인증절차를 걸칠 수 있게 해야 합니다. 그리고 인증이 완료되면 구글 API 프로젝트에서 사용자 인증에서 ‘승인된 리디렉션 URI’부분에 등록된 URI로 리다이렉션이 되는데 이때 스트링 파라미터로 ?code=… 라는 값이 함께 옵니다.
      ‘승인된 리디렉션 URI’에 등록된 URI의 로직에서는 스트링 파라미터로 code가 있는지 확인하고, 있다면 code를 이용해서 ‘getToken’ 하여 토큰을 만들어서 ‘storeToken’ 토큰을 등록하고 다음 이벤트 로직을 실행하면 됩니다.
      짧게 글로만 적으려니, 더 복잡하게 느껴지는거 같네요. 조금이나마 도움이 되었을지 모르겠습니다…
      댓글 감사합니다 :)

  2. 잘봤습니다!!

    글 정말 잘봤습니다 근데… 한대로 그대로 따라했는데
    Error: ENOENT: no such file or directory, mkdir

    이런오류가 계속 나네요.. 혹시 왜그런지 아세요 ?ㅠㅠ

    • 안녕하세요? 댓글 확인이 늦었네요.
      파일이나 디렉토리를 찾을 수 없다는 것으로 보아, 예제에서 디렉토리 파일을 읽어오는 부분.
      ‘ var TOKEN_DIR= ‘ 토큰을 저장할 디렉토리를 선언하는 부분이나
      ‘ client_secret.json ‘ 파일의 위치에서 문제가 생긴게 아닐까 싶습니다.
      ‘client_secret.json’ 파일을 올바른 디렉토리에 넣었는지, 또는 파일 디렉토리 경로를 수정하시거나
      생성하신 서버의 환경에 맞게 토큰을 저장할 디렉토리(‘TOKEN_DIR’)를 새로 지정하시면 되지 않을까 싶습니다.