블록체인 TIL-8Week-56Day(일요일)

디오·2023년 5월 7일
1

개인공부

목록 보기
17/28

✅ 16진수, RLP, Endian

  • 3가지 모두 결국 데이터를 표현하는 방법.

  • 비트코인 및 이더리움의 데이터들이 익숙치 않는 구조로 표현되어 있는 경우가 많음.

  • 이를 해석하기 위해서는 표현법을 익힐 필요가 있음.

  • 데이터 표현법들 중 16진수, RLP, Endian을 익혀 데이터들을 해석할 수 있는 능력을 기르는 것이 목표.






🔸16진수

  • 우리에게 익숙한 10진수 (0,1,2,3,4,5,6,7,8,9)

    • 10이라는 숫자는 단일숫자가 아닌 1과 0의 조합
    • 10진수에서 가장 큰 숫자는 9
  • 컴퓨터에게 가장 익숙한 시스템은 2진수 (0,1)

    • 2진수에서 가장 큰 숫자는 1
  • n진수

    • 단일 숫자로 표현할 수 있는 방법은 0부터 n-1개가 된다.
      -(n이라는 숫자는 표현할 수 없다.






  • <10진수로 숫자를 표현할 때>

  • <2진수로 숫자를 표현할 때>

  • <16진수로 숫자를 표현할 때>

  • <16진수 숫자를 10진수로 표현할 때>

  • <5진수를 10진수로 바꾸기>

  • <10진수 16진수로 바꾸기>






🔸RLP (어떤 데이터가 들어올지 먼저 알려준다.)

  • Ascii code - 모든 문자를 16진수 숫자로 표현했다고 생각하면 된다.

  • 접두가 않붙음, 그냥 기본적인 Ascii code.

  • 0~55바이트 문자열.
    • ab -> 두글자 -> 128(0~55사이의 바이트를 의미)에 두글자이기 때문에 +2를 더해 130.
      • 그 뒤에 a,b를 붙여서 130,a,b가 됨.
    • 128을 16진수로 바꾸면 80, 80에 두글자를 붙이면 82.
      • 82에 a,b를 Ascii code로 바꾼 수 61,62로 바꾸고 82이와 합치면 826162오 완성.
    • 826162를 보게되면 처음 앞에 82인걸보면 80에 2가 더해졌으니 앞에 두자리를 보면 된다는걸 확인할 수 있고, 그러면 61,62를 확인하면 된다는걸 알 수 있다. 그리고 61,62를 Ascii code로 확인하면 a,b인것을 확인할 수 있다.
  • 위와같이 "bus"도 바꿀 수 있음.

  • 55바이트 이상 문자열.

    • 첫번째 이미지를 보면 총 130자리이고, 16진수로 표현하면 0x82가 나온다.

    • 0x82를 바이트 기준으로 보면 1자리이다.

    • b7은 기본 Prefix. 거기에 위에있던 자리수를 더해준다.

      • b7 + 0x01 (들어오는 문자열이 총 몇자리인지를 나타내는 자리수의 자리수.)
    • 그리고 들어오는 문자열(0x82)이 몇자리인지 보여준다. 그리고 그 다음에 원본 데이터가 나온다. 이를 정리하면 아래와 같다.

      • b7 + 0x01, 0x82 , a,b,c,d,....64
    • 여기서 b7 + 0x01, 0x82가 또 다른 형식의 Prefix임을 보여준다.

    • 이렇게 정리했을때 확인을 해보면 b7에 0x01을 더했기 때문에 b8, 그다음 0x82는 82, a,b,...64는 61,62... 임을 확인할 수 있다.

    • 즉, b7보다 높은 숫자가 들어오면 그만큼 몇바이트가 들어오는지 알 수 있고, 그것으로 자리수를 확인할 수 있다.

  • apple, banana는 각각 문자열.
  • apple은 5자리이기 때문에 128에 5를 더해줌.
  • 그럼 133이 오게되고, 그 위에 a,p,p,l,e가 위치하게 된다.
  • 마찬가지고 그 뒤에 바나나 6자리인 134가 오고, b,a,n,a,n,a가 위치한다.
  • 그런데 여기서 이 아이들 하나하나가 16진수로 표현이 된다.
    • (133,a,p,p,l,e,134,b,a,n,a,n,a)총 13자리가 되고, 이 13자리를 기본 Prefixing 192에 더해준다.
  • 그럼 205가 되는데 192를 보고 배열이라는것을 확인하고, 나머지 13을보고 그 뒤에있는 13자리가 배열에 관련된 데이터임을 확인할 수 있다.
    • 다음 133을 보면 128+5인것을 확인하고, 문자열로 5자리가 오는구나를 알 수 있다. 마찬가지고 134를 보고 128+6 즉, 문자열로 6자리가 오는것을 알 수 있다.
  • 그리고 이 아이들을 정리하면 cd(10진수로 바꾸면 205),85,a,p,p,l,e,86,b,a,n,a,n,a으로 바꿀 수 있고, Ascii code로 표현하면 위와같이 cd856170706c658662616e616e61로 표현할 수 있다.






🔸Endian

  • 우리가 평소에 보거나 쓰는 방식은 Big Endian 방식, 이렇게 평소에 쓰는 방식을 뒤집어 놓은건 Little Endian 방식.






✅ React 성현강사님 복습영상.

  • Chakra UI

  • Components

  • Props

  • 주간계획표 만들기

  • useState

  • Counter

  • React Dev Tools

  • 계산기 만들기

  • useEffect

  • 369 예제 만들기

  • Todo list 셋팅 및 읽어오기

    • Todo 생성.

    • Todo 완료처리.

    • Todo 삭제.

    • Todo 수정.

  • Web3란?

  • 메타마스크 지갑 로그인

  • NFT 스마트 컨트랙트 만들기

  • Web3.js 사용하기.






🌜하루를 마치며..

RLP는 좀 복잡하지만 생각보다 재밌는 것 같다. 그 데이터를 해석해내는 부분이 뭔가 퀴즈를 푸는것 같고 재밌다. 물론 내가 시간을 넉넉히 가지고 차분히 풀기때문일수도 있어서 수업에서 강사님이 물으시면 흥미를 잃을수도 있겠지만 현재로선 꽤 재밌는 것 같다😊

React는 복습영상으로 올라온 내용들을 보면서 공부를 했다.
아무래도 강의를 할때 코드치랴 내용들으랴 급급하게 따라가면서 공부했던 부분들이 많았어서 못듣고 지난간 내용이나 깊게 고민하거나 생각하지 못하고 지나갔던 내용들도 있었어서 도움이 많이 되었다. 특히 나는 기초가 부족한 사람이기 때문에 기초적인 부분을 계속 반복적으로 숙지하는게 무엇보다 중요하다고 생각한다. 코딩은 하면 할수록 기본이 정말 중요하다라는 생각을 한다. 물론 아직 그 기본을 잘 하지 못하고 있지만 계속 꾸준히 하다보면 할 수 있지 않을까라는 생각을 해본다.

내일부터 다시 한 주가 시작된다. 무언가를 배운다는게 설레기도 하고 두렵기도 한데 민서강사님께서 비전공자에 대한 말씀을 하셨던게 계속 머리속에 맴돈다..
당연한 이야기일수있고, 머리로 납득도 되지만 한편으로는 마음이 아프다.
좀 더 일찍 개발자에 길에 들어섰다면 지금보다는 나아졌을까?
지금와서 후회해봐야 의미가 없기에 지금에 충실하자고 다시 다짐해본다..
다음주도 열심히 해보자!

profile
개발자가 되어가는 개린이"

0개의 댓글