[TIL] Part2 - DAY38 Solidity TEST1

박동우·2023년 5월 11일

블록체인 스쿨 3기

목록 보기
36/72

[TIL] 2023-05-11 DAY38


Solidity TEST1

GIT 주소 : https://github.com/dowoo303/SOLIDITY


오늘 배운것들

  1. 저번시간 복습
    1) mapping -> 시험연습
  2. 테스트 1

각종 팁

  1. 상태변수를 덜 쓸수록 가스비 낭비가 줄어든다.

회고

  1. 새로배운 개념들(mapping)의 활용법을 잘 모르고 있는 것 같다 -> 역할을 제대로 파악하기
  2. 시간 있을때 SEC, CFTC 관련 뉴스 쳐다보기.



💻 Solidity 코딩

✅ TEST 1

처음 문제를 보고 어떤 자료형을 써야되고 분류해야하는지 생각해야함.
1. 학생의 정보를 넣을 수 있는 구조체
2. 학생들의 정보를 모두 넣을 배열
3. mapping

  • mapping의 활용법
    배열(내용)을 검색해서 찾아야 할 때 사용한다.
    ex) 특정 학생의 이름을 입력했을 때 그 학생의 정보를 반환하는 함수 만들기

*보충반 조회 기능 - F 학점을 받은 학생들의 숫자와 그 전체 정보를 반환
4. 지역변수
5. new: 동적 변수를 일단 자릿수를 설정은 해주지만 나중에 변경도 가능하게 만들어준다.
6. revert: 오류가 났을 때 원 상태로 되돌리는 함수



✅ 문자열 비교하는법

keccak256

if (keccak256(bytes("string")) == keccak256(bytes("string))) { ... }
-> keccak256은 동적변수를 받을 수 없지만 bytes만은 가능하다.

🟥 코드

contract  String_Compare {
    // encodePacked
    function keccak1(string memory s1) public pure returns(bytes32) {
        return keccak256(abi.encodePacked(s1));
    }

    function keccak2(string memory s1) public pure returns(bytes32) {
        return keccak256(bytes(s1));
    }

    // 문자열 비교방법
    function compare1(string memory s1, string memory s2) public pure returns(bool) {
        return keccak256(bytes(s1)) == keccak256(bytes(s2));
    }

    // encodePacked 한 것도 자료형이 bytes임
    function compare2(string memory s1) public pure returns(bytes memory, bytes memory) {
        return (abi.encodePacked(s1), bytes(s1));
    }
}
profile
HELLO!

0개의 댓글