
오드로이드로 개인서버 구축하기 #4 Let’s Encrypt 무료 SSL 인증서로 https 설정하기
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; } } |
웹앱에서 본인인증을해야 캘린더 정보를 볼수 있는데
퀵스타터는 실행하면 주는 url접속후 인증하고 뱉어내는 code를 입력해야 정보가 나옵니다.
다른 유저가 이 기능을 쓰려면 어떻게 해야하죠?
url을 클라한테 보내줘서 인증하게 해야하나요?
간단히 말해 응용방법을 모르겠습니다 ㅠ
안녕하세요, sofkaints님.
실제로 서비스에서 사용하시려면 몇가지 수정이 필요할 것 같습니다. sofkaints님이 말씀하신 것처럼 구글 사용자 인증을 위해서 (문서상 변수)’authUrl’로 클라이언트에서 새로 페이지를 띄우거나 리다이렉션 시켜서 사용자가 인증절차를 걸칠 수 있게 해야 합니다. 그리고 인증이 완료되면 구글 API 프로젝트에서 사용자 인증에서 ‘승인된 리디렉션 URI’부분에 등록된 URI로 리다이렉션이 되는데 이때 스트링 파라미터로 ?code=… 라는 값이 함께 옵니다.
‘승인된 리디렉션 URI’에 등록된 URI의 로직에서는 스트링 파라미터로 code가 있는지 확인하고, 있다면 code를 이용해서 ‘getToken’ 하여 토큰을 만들어서 ‘storeToken’ 토큰을 등록하고 다음 이벤트 로직을 실행하면 됩니다.
짧게 글로만 적으려니, 더 복잡하게 느껴지는거 같네요. 조금이나마 도움이 되었을지 모르겠습니다…
댓글 감사합니다 :)
글 정말 잘봤습니다 근데… 한대로 그대로 따라했는데
Error: ENOENT: no such file or directory, mkdir
이런오류가 계속 나네요.. 혹시 왜그런지 아세요 ?ㅠㅠ
안녕하세요? 댓글 확인이 늦었네요.
파일이나 디렉토리를 찾을 수 없다는 것으로 보아, 예제에서 디렉토리 파일을 읽어오는 부분.
‘ var TOKEN_DIR= ‘ 토큰을 저장할 디렉토리를 선언하는 부분이나
‘ client_secret.json ‘ 파일의 위치에서 문제가 생긴게 아닐까 싶습니다.
‘client_secret.json’ 파일을 올바른 디렉토리에 넣었는지, 또는 파일 디렉토리 경로를 수정하시거나
생성하신 서버의 환경에 맞게 토큰을 저장할 디렉토리(‘TOKEN_DIR’)를 새로 지정하시면 되지 않을까 싶습니다.