본문 바로가기

전체 글74

오디널스(Ordinals)와 인스크립션(Inscriptions) 오디널스(Ordinals)와 인스크립션(Inscriptions)오디널스 이론은 각 사토시에 고유 번호를 부여하고, 인스크립션은 비트코인 블록체인에 데이터를 영구 기록한다.2023년 1월, 비트코인 블록체인에 이미지 한 장이 새겨졌다. 작은 픽셀 아트였지만 커뮤니티를 격렬한 논쟁으로 몰아넣었다. 어떤 이는 르네상스라 환영했고, 어떤 이는 스팸이라 비난했다. 중심에 오디널스와 인스크립션이 있다.오디널스 이론Casey Rodarmor가 2023년 1월 공개한 체계다. 비트코인 프로토콜은 사토시를 구별하지 않는다(대체 가능성). 로다머는 채굴 순서에 따라 각 사토시에 0번부터 일련번호를 부여하고, 거래 시 선입선출(FIFO)로 번호를 추적하면 개별 식별이 가능하다는 것을 보여줬다.이 번호 부여는 프로토콜 내부에.. 2026. 11. 1.
비트코인 거버넌스(Bitcoin Governance) 비트코인 거버넌스비트코인에는 CEO도 이사회도 없다. 사토시는 2010년 말 사라졌고, 남겨진 것은 코드·백서·수만 개의 노드뿐. 누구도 규칙을 단독으로 바꿀 수 없다.그런데도 멀티시그, 세그윗, 슈노르 서명, 탭루트가 차례로 추가됐다. CEO 없이, 이사회 없이, 주주총회 없이 진화한다.이것이 어떻게 가능한가?BIP: 비트코인 개선 제안변경은 BIP(Bitcoin Improvement Proposal)라는 형식적 프로세스를 따른다. RFC나 PEP와 비슷한 구조. 생애주기초안(Draft): 누구나 작성 가능. 메일링 리스트와 GitHub에서 논의. 대부분 여기서 걸러진다.제안(Proposed): 기술적 논의와 참조 구현이 갖춰지면 진입.구현(Implementation): Bitcoin Core 등에 코.. 2026. 11. 1.
Chapter5. 데코레이터와 클린코드(상속보다 컴포지션) 데코레이터와 클린 코드상속보다 컴포지션(composition)상속(Inheritance)보다 컴포지션(Composition)을 선호하라.GOF의 디자인 패턴 책에서도 "클래스 상속보다는 컴포지션(Favor composition over class inheritance)"을 강조그리고 그 목적을 달성하는 도구로 데코레이터를 활용할 수 있다.순전히 구현상의 목적(메서드 재사용 등)으로 믹스인(Mixin) 클래스를 만들어 다중 상속을 사용하는 것은 가급적 피하는 것이 좋으며, 기존 도메인 객체를 손상시키지 않는 것이 훨씬 좋다. 문제 상황) 특정 프레임워크가 모든 속성에 resolve_ 접두어를 요구한다고 가정ex) resolve_customer_id, resolve_name, …우리가 가진 도메인 객체가 c.. 2026. 11. 1.
비트코인 기술(탭루트, Taproot) 탭루트 (Taproot)2021년 11월 14일, 블록 높이 709,632에서 탭루트가 활성화됐다.세그윗 이후 4년 만의 주요 업그레이드로, BIP 340(슈노르 서명), BIP 341(탭루트), BIP 342(탭스크립트)가 결합돼 프라이버시·효율성·프로그래밍 가능성을 한 단계 끌어올렸다.탭루트 이전의 문제기존 비트코인에서는 복잡한 조건(3-of-5 멀티시그 등)을 쓸 때 그 구조 전체가 블록체인에 드러났다.프라이버시: 멀티시그 여부, 참여자 수, 서명자 수가 공개됐다.비효율: 여러 서명을 포함해야 해서 데이터 크기가 커지고 수수료가 비싸졌다.단순 전송과 복잡한 컨트랙트가 외관상 달랐기 때문에 체인 분석이 용이했다.BIP 340: 슈노르 서명사토시는 특허 문제 때문에 ECDSA를 선택했다. 특허가 만료된.. 2026. 10. 29.
비트코인 기술(멤풀, Mempool) 멤풀이란내 비트코인 거래가 10분째 안 되는 이유지갑에서 전송 버튼을 누르면 트랜잭션은 즉시 블록에 기록되지 않는다. 전송 시점과 블록 포함 시점 사이에는 반드시 대기 구간이 있다. 이 공간이 멤풀(Mempool, Memory Pool) 이다.정의멤풀은 아직 블록에 포함되지 않은 미확인(unconfirmed) 트랜잭션들이 대기하는 임시 저장 공간이다. 비트코인 블록은 평균 10분마다 생성되므로, 그 사이에 발생한 트랜잭션은 멤풀에서 자기 차례를 기다린다. 채굴자가 다음 블록을 만들 때 멤풀에서 트랜잭션을 선택해 담는다.흐름은 다음과 같다.지갑 전송 → 네트워크 전파 → 멤풀 대기 → 채굴자 선택 → 블록 포함 → 확인 완료“하나의 멤풀”은 없다흔히 “비트코인 멤풀”이라고 단일한 장소처럼 말하지만, 실제로.. 2026. 10. 29.
Chapter5. 데코레이터 활용(어느 곳에서나 동작하는 데코레이터 만들기) 어느 곳에서나 동작하는 데코레이터 만들기함수에만 잘 동작하는 데코레이터가 아니라, 함수와 메서드 모두에서 잘 동작하는 범용 데코레이터를 만드는 방법을 알아보자데코레이터를 만들 때 보통 함수를 기준으로 먼저 설계한다. 예제)DBDriver 객체는 연결 문자열을 받아서 데이터베이스에 연결하고 DB 연산을 수행하는 객체이다. 메서드는 DB 정보 문자열을 받아서 DBDriver 인스턴스를 생성한다. 데코레이터는 이러한 변환을 자동화해 문자열을 받아 DBDriver를 생성하고 함수에 전달한다. 따라서마치 객체를 직접 받은 것처럼 가정할 수 있다. 이 데코레이터는 일반 함수에서는 잘 동작함def inject_db_driver(function): @wraps(function) def wrapped(dbs.. 2026. 10. 25.
비트코인 기술(세그윗 SegWit, 라이트닝 네트워크, UTXO) 세그윗(SegWit): 서명 분리로 확장하기세그윗(Segregated Witness)은 2017년 8월에 활성화된 비트코인 프로토콜 업그레이드트랜잭션에서 서명 데이터(witness)를 본문에서 분리해 블록의 실질적 용량을 늘린 기술비트코인 역사상 가장 격렬했던 거버넌스 논쟁인 블록사이즈 전쟁의 결과물블록사이즈 전쟁의 맥락 (2015–2017)1MB 블록 한도에 트랜잭션 수요가 근접하면서 확장성 문제가 핵심 쟁점이 됐다. 두 진영이 대립했다.빅 블록 진영: 블록 크기를 2MB·8MB 이상으로 직접 늘리는 하드 포크를 주장. 즉시 처리량을 늘릴 수 있다는 논리. 대형 채굴 풀과 일부 기업이 포함됐다.스몰 블록 진영: 블록 크기 증가가 노드 운영 비용을 높여 탈중앙화를 약화시킨다고 우려. 세그윗 같은 소프트 .. 2026. 10. 18.
Chapter5. 데코레이터 활용(흔한 실수 피하기 - 래핑된 원본 객체의 데이터 보존, 데코레이터 부작용 처리) 래핑된 원본 객체의 데이터 보존문제점: 원본 메타데이터 손실데코레이터를 함수에 적용하면 원본 함수가 wrapped라는 새로운 함수로 감싸지게 됨.이로 인해 원본 함수 이름, 문서(docstring), 어노테이션(annotations) 등 고유의 메타데이터가 손실되고 래퍼 함수의 정보로 덮어씌워짐.결과: 디버깅이 어려워지고, doctest 같은 단위 테스트 도구가 정상적으로 동작하지 않는 부작용이 발생.def trace_decorator(function): def wrapped(*args, **kwargs): logger.info("%s 실행", function.__qualname__) return function(*args, **kwargs) return wrapped.. 2026. 10. 18.
비트코인 기술(해시 함수 SHA-256, 난이도 조정, 머클 트리) 비트코인 기술해시 함수(SHA-256)비트코인을 한 줄로 줄이면 “해시 함수 위에 올린 돈”이다. 작업증명, 블록 연결, 머클 트리, 주소 생성, 거래 ID까지 전부 같은 함수에 의존한다.개념해시 함수는 임의 길이의 입력을 받아 고정 길이의 출력을 내는 함수.SHA-256은 어떤 데이터를 넣어도 256비트(64자리 16진수)를 반환한다. 1바이트 문자도, 1GB 영상도 같은 길이로 반환된다.📌 해시 함수가 암호학적으로 쓸모 있으려면 다음 성질이 필요함.결정성: 같은 입력은 항상 같은 출력을 만든다.산정 효율: 입력 → 해시 계산은 빠르다.역상 저항(Pre-image resistance): 해시값만 보고 원래 입력을 알아내는 것은 사실상 불가능하다.충돌 저항(Collision resistance): 서로.. 2026. 9. 27.