개요 - Arduino 의 메모리와 PROGMEM, F() macro 와의 상관관계를 알아본다. 참고링크 - 아두이노 메모리: http://playground.arduino.cc/Learning/Memory - PROGMEM and F() macro: https://www.arduino.cc/reference/en/language/variables/utilities/progmem/ - F() macro QnA: https://forum.arduino.cc/index.php?topic=110307.0 아두이노의 메모리 아두이노 보드의 MCU (예를 들어 ATmega168) 에는 세 종류의 메모리가 있다. 1) Flash memory: 프로그램 (=아두이노 스케치)이 저장되는 곳. 아두이노 IDE로 업로드할..
개요 * 일단 돌아가게만 구현한 것이라, 코드에 민망한 부분이 있을 수 있음. * 전체 코드 gist: https://gist.github.com/nicewook/214e1fca4a9f3783129bff91b7320c2a 1. Arduino 와 Ethernet Shield 를 이용하여 TCP Client 를 구현하고 2. 대기하다가 TCP Server 의 명령 (OPCode)을 받으면 특정 동작을 수행한다. 덧붙여 1. Arduino Ethernet 의 IP 를 할당하는 방법을 알아보고 2. Hercules SETUP utility 를 통해 TCP 송수신을 테스트 해본다. 준비물 - Arduino UNO - Arduino Ethernet Shield W5100 - SPI 를 이용해 UNO와 통신 (Pin..
개요 채굴 난이도에 대해서 다시 한 번, 정리해보고 실제 비트코인 블록의 값들에서 다음 채굴 난이도를 계산해보자. * 계산값과 정답이 일치하진 않았다. 실제 구현코드 또는 큰 숫자들의 연산을 처리한 웹페이지의 정확도 등의 문제가 아닐까 싶음 채굴 난이도에 대한 요약정리 비트코인 블록 540277 에 있는 난이도 정보를 보자. - 링크: https://www.blockchain.com/en/btc/block-height/540277 - Difficulty 는 6,727,225,469,722.53 - Bits 는 388618029 = 0x1729D72D - Difficulty 는 가장 쉬운 난이도 (=Genesis 블록의 난이도) 의 몇 배나 어려운가를 의미한다. 6,727,225,469,722.53 배나 ..
개요 비트코인의 채굴 난이도는 이전 채굴 시간을 참고하여 10분보다 빠르면 난이도를 높이고, 10분보다 늦으면 난이도를 올린다고 알고 있다. 우선 난이도의 개념을 이해해보고, 정확한 난이도 결정 알고리즘을 알아보자. 참고링크 - https://en.bitcoin.it/wiki/Difficulty 결론부터 간단히 채굴을 하는 각각의 노드가 (네트워크로 연결된 다른 노드와는 상관없이) 자신이 가지고 있는 블록체인의 기존 블록들에서 얻은 정보를 바탕으로 다음에 채굴할 블록의 난이도를 계산해낸다. 조금만 더 긴 결론 - 결론은 아래 내용을 다 따라 읽은다음, 다시 정리하듯 읽으면 도움이 될듯 하다. 1) 비트코인은 난이도 (difficulty)인 실수값 (float)를 자신만의 방식으로 블록에 명시한다. 2) ..
개요 개인적으로 궁금한 부분에 대하여 찾아보았음 10분정도의 거래를 블록으로 만든다는데, 그리고, 한 블록의 크기는 최대 1 MB 라는데 과연 채굴할 다음 블록은 어떻게 결정될까? 참고링크 - https://bitcoin.stackexchange.com/questions/43894/who-decides-that-the-new-block-is-ready-to-hash 결론부터 간단히 1) 어떤 한 블록이 채굴되는 시간은 대략 10분 정도가 걸린다. 2) 그러면, 채굴할 거래로 선정되지 않았던 거래들과, 채굴되는 동안 발생한 신규거래가 쌓인다. 3) 채굴이 10분쯤에 끝나면, 채굴자들은 채굴되지 않고 쌓인 거래들을 블록으로 만들어 채굴하기 시작한다. 좀더 살펴보기 1) 채굴자들은 각자 알아서 자유롭게 거래를..
개요 비트코인의 한 블록, 그중에서 해시를 생성하는 입력 데이터 80 바이트에는 timestamp 가 들어있습니다. timestamp 에 대해 좀더 들여다보려 합니다. 참고링크: https://en.bitcoin.it/wiki/Block_timestamp Timestamp 알아보기 Unix time Unix time 이란 1970년 1월 1일 0시 0분 0초 (UTC) 로부터 몇 초나 지난것인지를 표현한 것이다. 위 그림의 경우 타임스탬프가 358B0553 이니 이만큼의 초가 지난 시간이라는 것이다. 실제 날짜로 변환해보면 아래와 같이 1998년 6월 20일로 나..
개요 시리얼로 custom protocol 을 정의하고 hex 값을 전송해보자. 결과부터 말하자면 (TL;DR) - 패킷을 char array 로 정의하고 값을 넣은 다음에 - 만약 char sendPacket[10]; 이라 정의하였다면 - Serial.write(sendPacket, sizeof(sendPacket)); 이라고 보내면 된다. Serial.print와 Serial.write 참고링크 및 이미지 캡처 출처: https://goo.gl/be69UG Serial.print 는 ASCII 를 시리얼포트로 내보내고 Serial.write 는 Byte 를 시리얼 포트로 내보낸다. protocol 정의 간단히 아래와 같은 프로토콜을 정의해보았음. 구분 STX OP Code Length Sensor 1..
SHA-256 씨리이즈 1. SHA-256 Hash Algorithm 2. SHA-256 프로세스 정리 3. SHA-256 By Hand - Message Expansion Function 4. SHA-256 By Hand - Round Function 5. SHA-256 Bitcoin - 참고링크: http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html - 채굴과정 상세설명 링크: http://www.righto.com/2014/02/bitcoin-mining-hard-way-algorithms.html 결론부터 (TL;DR) - 비트코인의 한 블록에서 80 바이트 만큼의 정보를 추출해내서, double SHA-256 을 먹인 값..
SHA-256 씨리이즈 1. SHA-256 Hash Algorithm 2. SHA-256 프로세스 정리 3. SHA-256 By Hand - Message Expansion Function 4. SHA-256 By Hand - Round Function 5. SHA-256 Bitcoin * 사용된 이미지들의 출처: https://www.cs.rit.edu/~ark/lectures/onewayhash/onewayhash.shtml 전체 흐름 복습 이제 핵심이랄 수 있는 Round Function 에 들어가기 전에 전체 흐름을 흝어보고, Round Function 의 위치를 알아보자. 1) SHA-256 을 먹이고 싶은 메시지 M 이 있다. 2) Padding - 메시지 M 에 1 하나 붙이고 0을 쭈욱 단..
SHA-256 씨리이즈 1. SHA-256 Hash Algorithm 2. SHA-256 프로세스 정리 3. SHA-256 By Hand - Message Expansion Function 4. SHA-256 By Hand - Round Function 5. SHA-256 Bitcoin * 사용된 이미지들의 출처: https://www.cs.rit.edu/~ark/lectures/onewayhash/onewayhash.shtml 잡담 MEXP (Message Expansion Function) 는 생략하고 Round Function 만 할까 했는데MEXP 도 별도로 언급하고, 손으로 (정확히는 구글시트에 기입) 계산해보려 한다.- 지식의 저주가 마음에 걸려서 (= 난 이미 알고 있으니, 요건 쉽겠지 했다..
- Total
- Today
- Yesterday
- 인텔리제이
- 잡학툰
- Bug
- agile
- bun
- API
- 체호프
- OpenAI
- websocket
- clean agile
- notion
- 독서
- github
- folklore
- 오블완
- golang
- ChatGPT
- 2023
- 클린 애자일
- 독서후기
- go
- 2024년
- strange
- 영화
- solid
- 엉클 밥
- 노션
- 티스토리챌린지
- intellij
- Gin
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |