반응형
솔리디티에서는 스트링을 비교하는 방법이 불가능하다.
따라서 우리는 두 스트링을 해쉬로 변환하여 비교하는 방법을 사용해보고자 한다.
해쉬에 이용될 함수는 keccak256함수이다.
해당하는 string A를 keccak256으로 해싱해주고 나머지 string B를 keccak256으로 해싱하여 서로를 비교하는 과정을 만들어보자.
아래 코드는 log 스트링이 왔을 때 아직 어떠한 데이터도 tranlog에 담겨있던 적이 없었다면 tranlog에 tran_data를 넣어주는 코드이다.
이때 require를 통해 스트링 비교를 해싱으로 해주고 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | pragma solidity ^0.4.8; contract TransactionLOGNG{ mapping (uint => mapping (uint => string)) public tranlog; event getLog(string _log, bytes32 _kec); function setTransaction(uint _user_id, uint _project_id, string _tran_data) public{ string log = tranlog[_user_id][_project_id]; getLog(log, keccak256(log)); require(keccak256(log) == keccak256("")); tranlog[_user_id][_project_id] = _tran_data; } function getTransaction(uint _user_id, uint _project_id) public constant returns (string tran_data) { return (tranlog[_user_id][_project_id]); } } | cs |
반응형
'Applied > Blockchain' 카테고리의 다른 글
이더리움 계층(이더리움 플랫폼 구성) (2) | 2018.06.06 |
---|---|
이더리움 백서 요약본 (0) | 2018.05.17 |
Solidity를 이용한 존재 증명 계약 (0) | 2018.05.15 |
Solidity 회원관리 예제 (0) | 2018.05.14 |
Solidity 블랙리스트 구현 (0) | 2018.05.05 |