Programming, technology and life

[Ethereum] 상하이 업그레이드에서 무엇이 바뀔까?
Blockchain

[Ethereum] 상하이 업그레이드에서 무엇이 바뀔까?

[요약] 0. 상하이 업그레이드는 23년 3월 예정되어 있다 1. 머지 이전 업그레이드와 다르게 Execution 클라이언트와 Consensus 클라이언트 업그레이드가 동시에 이루어진다 2. 상하이 업그레이드에서 중요한 변경 두 가지는 EVM Object Format(EOF)과 비콘 체인 출금이다. 3. EOF는 EVM에 대한 변경으로 새로운 스마트 컨트랙트 포맷을 정의한다. 4. 비콘 체인 출금은 execution
13 min read
[Go] pprof를 사용해 profiling을 해보자(부제: 당신은 서버 이상 원인을 어떻게 찾으시나요?)
Go

[Go] pprof를 사용해 profiling을 해보자(부제: 당신은 서버 이상 원인을 어떻게 찾으시나요?)

[요약] 1. pprof는 go 어플리케이션을 profiling 해주는 도구이다. 2. go는 go tool에서 pprof를 기본적으로 지원해주기 때문에 쉽게 pprof를 이용할 수 있다. 3. graphviz를 통해 분석을 시각화해서 볼 수 있다. 4. cpu, 메모리, trace 등을 원하는 타겟, 기간에 설정해서 볼 수 있어 이상 원인 파악에 용이하다. pprof란? GitHub - google/pprof:
9 min read
[MEV-Boost] Censorship... wat do?
Blockchain

[MEV-Boost] Censorship... wat do?

이 글은 Jon Charbonneau의 Censorship... wat do? 를 요약 및 저의 생각 및 설명을 일부 추가한 글입니다. [요약] 1. MEV-Boost는 밸리데이터의 탈중앙화를 위해 플래시 봇이 만들었다. 2. 그러나 MEV-Boost는 릴레이어/빌더의 중앙화 문제를 낳았고, 이는 검열 저항성을 해치게 되었다. 3. MEV-Boost에서 검열은 약한 검열이기 때문에 시간이 지나면 검열 대상 트랜잭션도
20 min read
[SSL/TLS] 인증서가 보장해주는 신뢰는 어디까지인가
Web

[SSL/TLS] 인증서가 보장해주는 신뢰는 어디까지인가

[요약] 1. 인증서를 발급받은 서버는 Chain of trust를 통해 Root CA의 신뢰를 상속받을 수 있다. 그러나 인증서 종류에 따라 해당 서버를 신뢰할 수 있는 범위는 제한이 된다. 2. Self signed certificate는 자신이 CA가 되는 것이기 때문에 상속 받을 신뢰가 없다는 문제점이 있다. Self signed certificate는 클라이언트와 서버가 서로 알고 있을
10 min read
[Cosmwasm] Cosmwasm은 처음이지?(2) -  배포 및 실행하기
Blockchain

[Cosmwasm] Cosmwasm은 처음이지?(2) - 배포 및 실행하기

Cosmwasm은 처음이지?(1) - 구성요소 알아보기 와 이어지는 글입니다. [요약] * juno 테스트 네트워크 사용을 위해 juno 클라이언트 설치 및 Public RPC 설정을 진행한다. * rust optimzer를 통해 컴파일된 wasm 바이트 코드의 용량을 줄인다. * 컴파일된 바이트 코드를 배포해보고 init 트랜잭션을 보내본다. [목차] 1. juno 테스트 네트워크 사용 준비 2. cw20 배포 Juno
10 min read
[Cosmwasm] Cosmwasm은 처음이지?(1) -  구성요소 알아보기
Blockchain

[Cosmwasm] Cosmwasm은 처음이지?(1) - 구성요소 알아보기

개발 경험이 있으나 Rust에 익숙하지 않은 사람들을 대상으로 작성된 글입니다. [요약] * 보통 Cosmwasm 스마트 컨트랙트는 contract 모듈, msg 모듈, state 모듈로 이루어져 있다. * contract 모듈이 스마트 컨트랙트의 핵심 로직을 담당하며 나머지 두 모듈은 contract 모듈을 보조하는 역할이다. * contract 모듈은 무조건 instantiate(), execute(), query() 함수를 정의해야 하며 이 세 함수는 entry_
11 min read
[Linux] Slab 메모리 줄이기
Linux

[Linux] Slab 메모리 줄이기

[요약] 1. Slab은 커널 캐시이다. 2. Slab은 SReclaimable과 SUnreclaim으로 나뉜다. 현재 사용하냐, 안하냐 차이다. 3. drop cache를 하면 SReclaimable이 줄어든다. 4. shrink slab을 할 경우 SUnreclaim이 줄어든다. 단, docs에서 shrink slab은 실행 중인 어플리케이션에 영향을 미칠 수 있다고 나와있다. 5. 하지만 SUnreclaim은 커널이 kmalloc 후 release가 안된 것이라 프로세스를 죽인다고
8 min read
[Go] kv 파일 스토리지를 골라보자! (부제: LSM Tree와 B Tree)
Go

[Go] kv 파일 스토리지를 골라보자! (부제: LSM Tree와 B Tree)

[요약] 1. kv storage는 LSM tree로 구현된 것과 B tree로 구현된 것으로 나뉜다 2. LSM tree는 쓰기가 빠르고 B tree는 읽기가 빠르다 3. Go의 KV 파일 스토리지 구현체는 badger, pebble, bbolt가 있다 4. badger와 pebble은 동일 db에 read 프로세스와 write 프로세스가 접근하면 에러가 발생한다. bbolt는 행이 걸린다 이 글에서는 Key-Value
8 min read
[Go] Map 사용시 Read도 RLock을 해야하는 이유
Go

[Go] Map 사용시 Read도 RLock을 해야하는 이유

[요약] * Map에 여러 프로세스가 접근할 때 다른 key에 대해 write을 하더라도 리밸런스로 서로 영향을 미칠 수 있다. * Read시 다른 Key에 write을 하는 프로세스에 영향을 받을 수 있으니 key별로 lock을 걸지 말고 전체 Map에 대해 RLock, WLock을 걸어야 한다. 멀티 프로세스 혹은 여러 고루틴을 이용해 병렬 프로그래밍을 할 때 가장 골치가
5 min read