본문 바로가기

분류 전체보기30

[번역] Istanbul Byzantine Fault Tolerance (EIP-650) Istanbul Byzantine Fault Tolerance ** EIP에 제안된 초기 IBFT 관련 내용입니다(즉, 1.0 버전) ** 원문 용어 Validator: 블록 검증 참여자 Proposer: 합의 라운드에서 블록을 제안하도록 선택된 블록 검증 참여자 Round: 합의 라운드. 라운드는 제안자가 블록 제안을 생성하는 것으로 시작하여 블록 commitment 또는 라운드 변경으로 끝납니다. Proposal: 합의 처리가 진행 중인 새로운 블록 생성 제안입니다. Sequence: 제안의 시퀀스 번호. 시퀀스 번호는 이전의 모든 시퀀스 번호보다 커야 합니다. 현재 제안된 각 블록의 높이는 해당 블록과 관련된 시퀀스 번호입니다. Backlog: 향후 합의 메시지를 보관하는 저장소입니다. Round .. 2023. 3. 28.
[이더리움 코어] Connection 이더리움 클라이언트 중 하나인 go-ethereum은 주변 노드를 찾는 통신(discovery)에는 UDP, 실제 노드와 연결한 뒤 통신은 TCP를 사용한다. 윗 레이어의 코드를 보다보면 Peer라는 구조체를 통해 주변 노드와 메세지를 주고 받지만, TCP를 사용한다면 어디선가 다른 노드로부터의 연결 요청을 accept 해주는(Passive OPEN) 코드가 있을 것이고, 여기서 받은 net.Conn을 Peer 구조체로 래핑하는 코드가 있을 것이다. 오늘은 여기에 대해서 알아본다. 먼저, accept를 해주는 코드가 시작 지점이기 때문에 해당 부분부터 로직을 따라가보자. p2p/server.go -> func (srv *Server) listenLoop() 재밌는 점은 TCP 연결 요청에 대한 rate .. 2023. 3. 21.
[번역] An O(1) algorithm for implementing the LFU cache eviction scheme An O(1) algorithm for implementing the LFU cache eviction scheme Prof. Ketan Shah, Anirban Mitra, Dhruv Matani August 16, 2010 원문 (참고): Go 구현 Abstract 캐시 제거 알고리즘은 애플리케이션에서 사용하는 데이터를 캐싱하여 실행 속도를 높이기 위해 캐시를 사용하는 운영 체제, 데이터베이스 및 기타 시스템에서 널리 사용됩니다. 다음과 같은 많은 정책이 있습니다. MRU(가장 최근 사용), MFU(가장 자주 사용), LRU(가장 최근 사용), LFU(가장 적게 사용) 등 다양한 정책이 있으며, 각각 장단점이 있으므로 특정 시나리오에 따라 사용됩니다. 지금까지 가장 널리 사용되는 알고리즘은 O(1)의.. 2023. 3. 11.
[번역] TIME_WAIT Coping with the TCP TIME-WAIT state on busy Linux servers Vincent Bernat 2014. 2. 25. The license CC BY-NC-SA 3.0 원문 Linux 4.12 이후에는 더 이상 존재하지 않는 net.ipv4.tcp_tw_recycle 을 활성화하지 마세요. 대부분의 경우 TIME_WAIT 소켓은 무해합니다. 그렇지 않은 경우 권장 솔루션에 대한 요약으로 이동하세요. Linux 커널 문서는 net.ipv4.tcp_tw_recycle 및 net.ipv4.tcp_tw_reuse의 기능에 대해 그다지 도움이 되지 않습니다. 이러한 문서 부족으로 인해 수많은 튜닝 가이드에서 이 두 설정을 모두 1로 설정하여 TIME-WAIT 상태의 항목 수를 .. 2023. 3. 6.
이더스캔 분석 2 - 트랜잭션 Overview 페이지 이더스캔 분석 1 -블록 페이지 지난 시간에는 블록 페이지에 대한 분석을 했었다. 이번에는 트랜잭션 페이지에 있는 데이터들을 살펴보려 한다. 블록 페이지와는 다르게 트랜잭션 페이지는 여러 페이지로 나누어져 있다. 크게 Overview, Internal Txs, Logs, State, Comments로 나눌 수 있는데 오늘은 Overview 페이지를 다룬다. 먼저 바로 채워줄 수 있는 필드를 알기 위해 ethclient에서 해당 트랜잭션 데이터를 가져와보자. { "type": "0x2", "nonce": "0x17e", "gasPrice": null, "maxPriorityFeePerGas": "0x1c03a180", "maxFeePerGas": "0x4f0238e10", "gas": "0x44eea", .. 2023. 3. 5.
[신화] 프로크루스테스 다마스테스는 그리스 신화에 등장하는 도적이다. 그는 다른 도적과는 달리, 지나가는 나그네들에게 극진한 대접을 했다고 한다. 그의 집에는 두 개의 침대가 있었다고 하는데 하나는 크기가 큰 침대이고, 하나는 크기가 작은 침대였다. 그는 키가 큰 손님은 크기가 작은 침대에 재우는데 침대에서 삐져나온 부분을 잘라 죽음에 이르게 했고, 키가 작은 손님은 크기가 큰 침대에 눕혀 침대에 크기에 맞을 때 까지 사람을 늘려 죽음에 이르게 했다고 한다. 이런 기행때문에 그에게는 '잡아 늘이는 자', 또는 '두드려서 펴는 자' 라는 뜻의 프로크루스테스라는 별명이 붙었다. 그의 최후 또한 흥미로운데, 그는 테세우스에게도 똑같은 방법으로 살인을 하려다가 본인이 행하던 방법으로 죽음에 이르게 된다. 자신의 기준에 딱 맞지 않고,.. 2023. 3. 2.