Transaction Ordering Rule
πŸ”œ

Transaction Ordering Rule

tags
Tech
Updated Time
Dec 1, 2024 03:50 AM
Published
Nov 6, 2022 02:57 AM
Created Date
Feb 27, 2019
Font
slug
AI-generated
Date
author
obsidian-url
tableKey
Description
Social Image
category
BlockchainTech
ν‚€μ›Œλ“œ
Β 

(Summary) CTOR이 μ ν•©ν•œ 이유

  • Block emission is more efficient (블둝 λ°°μΆœμ‹œ 더 효율적)
  • Block propagation is more efficient (블둝 μ „νŒŒμ‹œ 더 효율적)
  • Software implementations are simplified (μ†Œν”„νŠΈμ›¨μ–΄ κ΅¬ν˜„μ˜ λ‹¨μˆœν™”)
  • Proofs of transaction inclusion are improved (νŠΈλžœμž­μ…˜ 포함 증λͺ…이 ν–₯상됨)
  • Opt-in locality between participants becomes possible (μ°Έμ—¬μž κ°„μ˜ μ§€μ—­ 선택이 κ°€λŠ₯해짐)
  • Potential attack vectors are mitigated (잠재적인 곡격 경둜의 μ™„ν™”)
Β 
νŠΈλžœμž­μ…˜ μ •λ ¬ κ·œμΉ™μ— λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜κΈ° μœ„ν•΄, λΉ„νŠΈμ½”μΈ μΊμ‹œμ—μ„œμ˜ 두 κ°€μ§€ 변화에 λŒ€ν•΄ 닀룬닀.
  • Block Validation
  • Transaction Ordering
Β 
Topology ordering : μœ„μƒμ •λ ¬, λ°©ν–₯κ·Έλž˜ν”„λ‘œ ν‘œν˜„κ°€λŠ₯, dependencyκ°€ μžˆμ–΄ μˆœμ„œκ°€ μ‘΄μž¬ν•¨.

1. Block Validation의 λ³€ν™”

Block validation μ—μ„œλŠ” νŠΈλžœμž­μ…˜μ˜ μœ νš¨ν•œ μˆœμ„œλ₯Ό 확인(UTXO 순차적으둜 μ—…λ°μ΄νŠΈν•˜λ©΄μ„œ νŠΈλžœμž­μ…˜μ„ μ •λ ¬)ν•˜κ²Œ 되고, 이 κ³Όμ •μ—μ„œ 이쀑 μ§€μΆœμ΄ κ°μ§€λ˜κ³  λ¬΄νš¨ν™”λœλ‹€.
νŠΈλžœμž­μ…˜ ν•˜λ‚˜μ”© λ°˜λ³΅ν•˜μ—¬ μ²˜λ¦¬ν•˜λŠ” 것인데, μ†ŒλΉ„λœ 좜λ ₯을 μ œκ±°ν•˜κ³ , μƒˆ 좜λ ₯을 μΆ”κ°€ν•œλ‹€. μ΄λŸ¬ν•œ κ°„λ‹¨ν•œ 접근은 μ •ν™•ν•œ ν† ν΄λ‘œμ§€ μˆœμ„œλ₯Ό ν•„μš”λ‘œ ν•˜κ³ , κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ μ‹€νŒ¨ν•˜λ―€λ‘œ TTORμž„μ„ μžλ™μœΌλ‘œ κ²€μ¦ν•˜κ²Œ λœλ‹€.
κΈ°μ‘΄(ν‘œμ€€) : Serial block processing
for tx in transactions: remove_utxos(tx.inputs) add_utxos(tx.outputs)
ν˜„μž¬λŠ” 이런 변경사항(좔가와 제거)을 μ¦‰μ‹œ μ μš©ν•˜μ§€ μ•ŠμœΌλ©°, 컀밋에 μ €μž₯λœλ‹€λŠ” 점을 μœ μ˜ν•΄μ•Όν•œλ‹€. 검증이 μ™„λ£Œλœ 후에, 컀밋은 μΌκ΄„μ μœΌλ‘œ UTXO λ°μ΄ν„°λ² μ΄μŠ€μ— μ μš©λœλ‹€.
Β 

1-1. λ™μ‹œ μœ νš¨μ„±κ²€μ‚¬(concurrent validation)의 ν•„μš”μ„±

이 μœ νš¨μ„±κ²€μ‚¬ 과정은 λΈ”λ‘ν…œν”Œλ¦Ώ 생성 μ‹œκ°„μ˜ μ•½ 70 νΌμ„ΌνŠΈλ₯Ό μ°¨μ§€ν•œλ‹€.
λ§Œμ•½ 병렬 μ²˜λ¦¬κ°€ κ°€λŠ₯ν•˜λ‹€λ©΄, 예λ₯Ό λ“€μ–΄ μœ„μ˜ μ½”λ“œλ₯Ό multiple workerκ°€ μ²˜λ¦¬ν•œλ‹€κ³  ν• λ•Œ μ–΄λ–€ worker μ²˜λ¦¬ν•˜λ €λ˜ UTXOκ°€ 아직 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, λ‹€λ₯Έ workerκ°€ κ·Έ utxoλ₯Ό 생성할 λ•ŒκΉŒμ§€ μž‘μ—…μ„ μΌμ‹œμ μœΌλ‘œ μ€‘μ§€ν•œλ‹€.
λ”°λΌμ„œ 이 μ½”λ“œλ₯Ό λ³‘λ ¬λ‘œ μ²˜λ¦¬ν•  경우, λ¬Έμ œκ°€ μ‘΄μž¬ν•œλ‹€.
  • TTOR이 μ •ν™•ν•˜κ²Œ 되고 μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” 좔가적인 μ½”λ“œκ°€ ν•„μš”ν•˜κ²Œ λœλ‹€. β†’ TTOR은 λ™μ‹œ μœ νš¨μ„±κ²€μ‚¬μ— λ°©ν•΄κ°€λœλ‹€.
  • μ΅œμ•…μ˜ 경우 ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œλ§Œμ΄ ν™œμ„±ν™”λœλ‹€.(쒅속 νŠΈλžœμž­μ…˜λ“€μ΄ 길게 μ—°κ²°λœ 블둝일 경우)
Β 

1-2. λ™μ‹œ μœ νš¨μ„±κ²€μ‚¬λ₯Ό μœ„ν•œ λ³€ν™” - OTI

ν•˜μ§€λ§Œ λ‘κ°œμ˜ 반볡문으둜 λ‚˜λˆ„μ–΄, μˆœμ„œμ™€ μƒκ΄€μ—†λŠ” λ°©μ‹μœΌλ‘œ UTXOλ₯Ό μ—…λ°μ΄νŠΈ ν•˜λŠ”κ²ƒμ΄ κ°€λŠ₯ν•˜λ‹€. 이것은 outputs-then-inputs(OTI) μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ μ•Œλ €μ Έ μžˆλ‹€.
Β 
λ³€κ²½ : outputs-then-inputs(OTI)
μœ νš¨ν•œ λΈ”λ‘μ—μ„œ utxoλ₯Ό μ—…λ°μ΄νŠΈ(μ œκ±°ν•˜κ±°λ‚˜ μΆ”κ°€)ν•  λ•Œ, 두 개의 반볡문으둜 λ‚˜λˆ„μ–΄ μ²˜λ¦¬ν•¨
  • νŠΈλžœμž­μ…˜μ˜ μˆœμ„œμ™€ 관계없이 처리 κ°€λŠ₯해짐.
  • ν•˜λ‚˜ λŒ€μ‹  두 개의 λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•˜μ—¬λ„ μ„±λŠ₯이 νŠΉλ³„νžˆ 더 λ‚˜λΉ μ§€μ§€ μ•ŠμŒ.
  • O(log2(n))λ₯Ό μ „μ†‘ν•˜λŠ” μ •λ ¬λœ μ„ΈνŠΈλ₯Ό μœ μ§€
  • embarrassingly parallel: 병렬 μž‘μ—…κ°„μ— μ˜μ‚¬μ†Œν†΅μ΄λ‚˜ 결과에 λŒ€ν•œ μ˜μ‘΄μ„±μ΄ μ—†μŒ
for tx in transactions: add_utxos(tx.outputs) for tx in transactions: remove_utxos(tx.inputs)
λΉ„νŠΈμ½”μΈ ABC의 Jonathan Toomin와 ElectrumX에 μ˜ν•œ λ²€μΉ˜λ§ˆν¬λŠ”, OTI의 두 개의 λ£¨ν”„λ‘œ μΈν•œ 퍼포먼슀 νŽ˜λ„ν‹°λŠ” λ¬΄μ‹œν•΄λ„λ (negligible) μ •λ„μž„μ„ 보여쀀닀.
Β 

2. νŠΈλžœμž­μ…˜ μ •λ ¬ κ·œμΉ™μ˜ λ³€ν™”

Β 

2-1. TTOR(topological trasaction ordering rule)

기쑴의 νŠΈλžœμž­μ…˜ μ •λ ¬ κ·œμΉ™(Transaction Ordering Rule)
λΉ„νŠΈμ½”μΈ λ‚΄μ˜ νŠΈλžœμž­μ…˜μ€ λ‹€μ–‘ν•œ λ°©λ²•μœΌλ‘œ μ •λ ¬ κ°€λŠ₯ν•˜μ§€λ§Œ, λ§Œμ•½ 같은 블둝 내에 ν¬ν•¨λœ UTXOλ₯Ό μ†ŒλΉ„ν•˜λ €λŠ” 경우, λ°˜λ“œμ‹œ ν•΄λ‹Ή UTXOκ°€ μˆœμ„œμƒ λ¨Όμ €μ—¬μ•Ό ν•œλ‹€.(같은 λΈ”λ‘λ‚΄μ—μ„œ μƒμ„±λœ utxoλ₯Ό λΈ”λ‘λ‚΄μ—μ„œ μ†ŒλΉ„ν•˜λŠ”κ²½μš°λŠ” 극히 μ κΈ°λŠ”ν•˜μ§€λ§Œ.) λ•Œλ¬Έμ— κΈ°μ‘΄μ—λŠ” νŠΈλžœμž­μ…˜μ— λŒ€ν•΄ λΆ€λΆ„ μ •λ ¬(partial ordering)이 μ»¨μ„Όμ„œμŠ€ 룰둜 μ‚¬μš©λ˜μ—ˆλ‹€. (parent tx 뒀에 child txκ°€ μ˜€λŠ” 식)
Β 

2-2. CTOR(Canonical Transaction Ordering Rule)으둜의 λ³€ν™”

  • ν‘œμ€€ μ •λ ¬ κ·œμΉ™μ„ κ°–κ²Œλ¨ (canonical:ν‘œμ€€μ˜)
    • λΉ„νŠΈμ½”μΈ μΊμ‹œλŠ” 2018λ…„ 11μ›” ν•˜λ“œν¬ν¬ λ•Œ CTOR(Canonical Transaction Ordering Rule)으둜 λ³€κ²½.
      λͺ¨λ“  블둝 λ‚΄μ˜ νŠΈλžœμž­μ…˜μ˜ μˆœμ„œκ°€ κ³ μ •λ˜μ–΄ 였직 ν•˜λ‚˜μ˜ μœ νš¨ν•œ ordering rule을 κ°€μ§€λ©°, 이후 이 μ •λ ¬ κ·œμΉ™μ„ λ²—μ–΄λ‚˜λŠ” 블둝은 λ¬΄νš¨ν•œ κ²ƒμœΌλ‘œ κ°„μ£Όλœλ‹€.
  • txid 기반의 사전식 μ •λ ¬
    • 이 ν•˜λ“œν¬ν¬μ— μ˜ν•΄ μ„ μ •λœ ν‘œμ€€ μ •λ ¬(canonical ordering)은 사전식 μ •λ ¬(dictionary ordering,lexicographic)으둜, λ§¨μ•žμ— μ™€μ•Όν•˜λŠ” coinbasesλ₯Ό μ œμ™Έν•˜κ³ λŠ” νŠΈλžœμž­μ…˜ IDλ₯Ό κΈ°μ€€μœΌλ‘œ μ •λ ¬ν•œλ‹€.
    • μ˜ˆμ‹œ : txidκ°€ 첫번째 μˆœμ„œμ—¬μ•Όν•˜λŠ” μ½”μΈλ² μ΄μŠ€λ₯Ό μ œμ™Έν•˜κ³  사전식 μˆœμ„œλ‘œ μ •λ ¬λ˜μ–΄μžˆμŒμ„ 확인 κ°€λŠ₯.
    • "coinbase first, then ascending lexicographic order based on txid".
  • Any Ordering Rule(AOR): μ •λ ¬ μ œν•œμ„ μ—†μ• λŠ”(μ½”μΈλ² μ΄μŠ€ μ œμ™Έ) κ·œμΉ™
    • AOR은 μ‹€μ œ 적용된 것은 μ•„λ‹ˆμ§€λ§Œ, TTORμ—μ„œ CTOR둜 μ „ν™˜ν•˜κΈ° μœ„ν•œ 두 λ‹¨κ³„μ—μ„œ λ‚˜νƒ€λ‚œλ‹€.
      1. (TTORβ†’AOR) : 인과적 μ •λ ¬ κ·œμΉ™ 제거 (removing the old causal rule.)
      1. (AOR β†’ CTOR) : λͺ¨λ“  λΈ”λ‘μ˜ νŠΈλžœμž­μ…˜ μ •λ ¬ 방법을 κ³ μ •ν•˜λŠ” μƒˆλ‘œμš΄ κ·œμΉ™ μΆ”κ°€ (adding a new rule that fixes the ordering of all transactions in the block.)
      μ‹€μ œλ‘œλŠ” one step μ΄λ‚˜, λ‹€λ₯Έ μš”μ†Œλ“€μ΄ 이 변화에 영ν–₯을 λ°›λŠ” 방식을 λͺ…ν™•ν•˜κ²Œ ν•˜κΈ°μœ„ν•΄ 두 λ‹¨κ³„λ‘œ λ‚˜λˆ„μ–΄μ„œ μ„€λͺ…ν•  수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄, 1λ‹¨κ³„κΉŒμ§€λ§Œ μ§„ν–‰λœ AORμƒνƒœλŠ” CTORμΆ”κ°€ μ „μ΄μ§€λ§Œ, OTIμ•Œκ³ λ¦¬μ¦˜μ„ μΆ”κ°€ν•˜μ—¬ μœ νš¨μ„± κ²€μ‚¬μ˜ λ³‘λ ¬μ²˜λ¦¬κ°€ κ°€λŠ₯ν•œ μƒνƒœλ₯Ό μ˜λ―Έν•œλ‹€.
Β 

2-3. CTOR λ„μž…μ˜ μž₯점

  • CTOR은 TTOR보닀 κ΅¬ν˜„μ΄ κ°„λ‹¨ν•˜λ‹€.(νŠΉμ • μˆœμ„œλ₯Ό ν™•μΈν•˜λŠ” 것보닀, μœ νš¨ν•œ μˆœμ„œκ°€ μ‘΄μž¬ν•œλ‹€λŠ” 것을 증λͺ…ν•˜λŠ” 것이 더 쉽닀.)
  • 블둝 ν…œν”Œλ¦Ώ 생성 μ‹œκ°„μ΄ 쀄어든닀.(κ³Όκ±°μ—λŠ” λ§ˆμ΄λ„ˆκ°€ νŠΈλžœμž­μ…˜μ˜ μœ νš¨ν•œ μˆœμ„œλ₯Ό ν™•μΈν•˜λŠ” CPFPμ½”λ“œκ°€ 블둝 ν…œν”Œλ¦Ώ 생성 μ‹œκ°„μ˜ μ•½ 70νΌμ„ΌνŠΈλ₯Ό μ°¨μ§€ν–ˆμœΌλ―€λ‘œ, 블둝 ν…œν”Œλ¦Ώ 생성 μ‹œκ°„μ΄ 쀄어듀 것이닀.)
  • 블둝 μ „νŒŒ(Block propagation) 과정이 맀우 μ‰¬μ›Œμ§„λ‹€.
    • λΈ”λ‘μ „νŒŒμ—μ„œ 슀트레슀 ν…ŒμŠ€νŠΈ λ™μ•ˆ 20mbμ΄μƒμ˜ 큰 λΈ”λ‘μ—μ„œλŠ” λ„€νŠΈμ›Œν¬λ₯Ό 톡해 μ „νŒŒλ˜κΈ°μœ„ν•΄ λͺ‡λΆ„이 걸릴것이고, μ „νŒŒ 지연은 λ§ˆμ΄λ‹ μΈμ„Όν‹°λΈŒμ™€ 경제λ₯Ό λ³΅μž‘ν•˜κ²Œ ν•˜λŠ” 고아블둝λ₯ μ˜ μ¦κ°€λ‘œ 이어진닀.
    • 데이터 λͺ¨λΈμ„ μ§‘ν•©(μˆœμ„œ 정보가 ν•„μš” μ—†μŒ)으둜 κ°„μ†Œν™”ν•¨μœΌλ‘œμ¨ set reconciliation이라 ν†΅μΉ­λ˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ„ λΈ”λ‘μ²΄μΈμœΌλ‘œ κ°€μ Έμ˜¨λ‹€. 이둜써 효율적인 블둝 μ „νŒŒλ₯Ό μ μš©ν•  수 있게 λœλ‹€.(예 : Graphene) μ΄λŸ¬ν•œ κ²°κ³ΌλŠ” μ°Έκ°€μžκ°€ λŒ€μ—­ν­ μš©λŸ‰μ„ μ΅œλŒ€ν•œ ν™œμš©ν•˜κ³  μƒˆλ‘œμš΄ 블둝을 λ°©μΆœν•˜κΈ° 전에 κ°€λŠ₯ν•œ ν•œ λ§Žμ€ 정보λ₯Ό μ „νŒŒ ν•  수 있기 λ•Œλ¬Έμ— μ€‘μš”ν•˜λ‹€.
    • Grapheneμ—μ„œ TTOR을 μœ μ§€ν•˜λ©΄μ„œ μ •λ ¬ μ •λ³΄μ˜ 크기λ₯Ό 쀄이렀면, μ±„κ΅΄μžλŠ” νŠΈλžœμž­μ…˜ μ •λ ¬ 방법을 canonical ordering으둜 μ„ νƒν•΄μ•Όν•˜λ©°, graphene ν”„λ‘œν† μ½œμ€ ν•˜λ“œμ½”λ”©λ˜μ–΄ 이런 μ’…λ₯˜μ˜ μˆœμ„œκ°€ 1 byte둜 전솑될 수 μžˆλ‹€. κ·ΈλŸ¬λ‚˜ graphene이 μˆœμ„œλ₯Ό κ°μ§€ν•˜κ³  μž¬κ΅¬μ„± ν•  수 μžˆμ–΄μ•Ό ν•˜λ―€λ‘œ μƒλ‹Ήν•œ 기술적 뢀담을 λ”ν•œλ‹€. μˆœμ„œλ₯Ό μž¬κ΅¬μ„±ν•˜λŠ” μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜μ΄ 효율적으둜 병렬화 κ°€λŠ₯ν•  κ²ƒμΈμ§€λŠ” λΆ„λͺ…ν•˜μ§€ μ•Šλ‹€.
    • CTOR의 μ μš©μ€ 이 λͺ¨λ“  κ²ƒμ—μ„œ μ‰¬μš΄ ν•΄κ²°λ°©μ•ˆμ΄λ‹€. 였직 ν•˜λ‚˜μ˜ μˆœμ„œλ§Œ μ‘΄μž¬ν•˜λ―€λ‘œ μˆœμ„œ 정보가 ν•„μš” μ—†λ‹€. λ˜ν•œ ν† ν΄λ‘œμ§€ 정렬보닀 비ꡐ정렬을 톡해 λ³‘λ ¬μ μœΌλ‘œ λ³΅κ΅¬λ˜κΈ°κ°€ 더 μ’‹λ‹€. graphene의 μ½”λ“œλ² μ΄μŠ€λ₯Ό λ‹¨μˆœν™”ν•˜λ©°, λ‹€μ–‘ν•œ μ •λ ¬ 인코딩 지원을 κ³ λ €ν•  ν•„μš”μ„±μ„ μ œκ±°ν•˜κ³ , λ©”μ»€λ‹ˆμ¦˜ μ΅œμ ν™”μ— 집쀑할 수 μžˆλ‹€.
  • 전체 블둝을 μ²˜λ¦¬ν•˜μ§€ μ•Šκ³  νŠΈλžœμž­μ…˜μ„ μ°Ύμ•˜λŠ”μ§€ μ—¬λΆ€λ₯Ό 식별 ν•  μˆ˜μžˆλŠ” κ°€λŠ₯성을 μ œκ³΅ν•œλ‹€. 체인이 μ—†λŠ” μ†Œν”„νŠΈμ›¨μ–΄μΌ 경우 μœ μš©ν•˜λ‹€.
  • non-deterministic block validation time as attack vector(곡격 λ²‘ν„°μ˜ 비결정적 λΈ”λ‘κ²€μ¦μ‹œκ°„)에 λŒ€μ²˜κ°€ κ°€λŠ₯ν•΄μ§„λ‹€.
    • μ•…μ˜μ μΈ λ§ˆμ΄λ„ˆκ°€ 블둝을 κ²Œμ‹œν• λ•Œ 검증이 느린 νŠΈλžœμž­μ…˜ μˆœμ„œλ₯Ό μ‚¬μš©ν•˜λŠ” 곡격 κ°€λŠ₯성을 μ œκ±°ν•œλ‹€.
  • μ°Έμ—¬μžκ°„μ˜ μ§€μ—­ 선택이 κ°€λŠ₯ν•΄μ§„λ‹€. (μ•„λž˜ 확인)
  • 블둝 μœ νš¨μ„± κ²€μ‚¬μ—μ„œ 쀑간 μƒνƒœμ— λŒ€ν•΄ κ±±μ •ν•  ν•„μš” μ—†λ‹€. CTOR은 블둝 검증을 μ™„λ²½ν•˜κ²Œ λ³‘λ ¬μœΌλ‘œ 보μž₯ν•œλ‹€.
    • μ΄λ”λ¦¬μ›€μ˜ ν™•μž₯성은 λ§Žμ€ 쀑간 단계λ₯Ό κ°–λŠ” 어렀움을 κ²ͺλŠ”λ‹€. λͺ¨λ“  νŠΈλžœμž­μ…˜ λ§ˆλ‹€ λΆ€λΆ„μ μœΌλ‘œ μƒνƒœλ₯Ό μ €μž₯ν•˜μ—¬, embarrassingly parallel을 λΆˆκ°€λŠ₯ν•˜κ²Œ ν•œλ‹€.
    • β†’ 사싀 embarrassingly parallel은 CTOR ν•˜λ“œν¬ν¬ 없이 OTI λ§ŒμœΌλ‘œλ„ κ°€λŠ₯ν•˜μ§€λ§Œ CTOR의 μ μš©μ€ 미래λ₯Ό μœ„ν•œ 것이닀. (μ•„λž˜ 확인)
      Β 

μ°Έμ—¬μžκ°„μ˜ μ§€μ—­ 선택

CTORλŠ” Bitcoin μ°Έκ°€μžλ“€μ—κ²Œ μƒˆλ‘œμš΄ μˆ˜μ€€μ˜ μ œμ–΄ κΈ°λŠ₯을 제곡. μ£Όμ†Œκ°€ μ•„λ‹Œ νŠΈλžœμž­μ…˜ μ‹λ³„μžμ— μ΄ˆμ μ„ λ‘μ—ˆμ§€λ§Œ vanity ν•΄μ‹œμ™€ λΉ„μŠ·ν•œ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‚¬μš©ν•˜μ—¬ μ§€λΆˆμžκ°€ 거래λ₯Ό ν•œ 블둝 내에 λ‘œμ»¬ν™” ν•  수 μžˆλ‹€. The idea is similar to the timestamping geolocation as done in Ansible, practical faster-than-light secure 0-conf transactions for Bitcoin, Joannes Vermorel, April 2018
Β 
κ°€μ΄λ“œ 라인이 μ„€μ •λ˜μ—ˆλ‹€κ³  κ°€μ • ν•  λ•Œ, κ°€κΉŒμš΄ μ°Έκ°€μžλŠ” 블둝 λ‚΄μ—μ„œ μ§€μ •λœ μ‹λ³„μž λ²”μœ„ λ‚΄μ—μ„œ 각각의 νŠΈλžœμž­μ…˜μ„ ν•¨κ»˜ κ΅­ν•œ μ‹œν‚€λ„λ‘ κ²°μ •ν•  수 μžˆλ‹€.
이 속성은 Bitcoin의 νŠΉμ • μ‚¬μš© 사둀에 λŒ€ν•΄ 처리 ν•  데이터 λ²”μœ„λ₯Ό λͺ‡ λ°° 정도 μ€„μ΄λŠ” μ‹€μš©μ μΈ κ°€λŠ₯성을 제곡. 큰 블둝 체인을 μ²˜λ¦¬ν•˜λŠ” 것은 큰 데이터 문제λ₯Ό ν•΄κ²°ν•  수 μ—†μ§€λ§Œ CTORλŠ” "μž‘μ€"데이터 μ†”λ£¨μ…˜μ—λ³΄λ‹€ μ ν•©ν•˜λ„λ‘ν•¨μœΌλ‘œμ¨ 유슀 μΌ€μ΄μŠ€λ₯Ό ν™•μž₯ν•˜κΈ° μœ„ν•΄ μƒνƒœκ³„μ— μ—¬μœ λ₯Ό μ œκ³΅ν•œλ‹€.
malleability 적듀이 λ‘œμ»¬λΌμ΄μ œμ΄μ…˜ μŠ€ν‚€λ§ˆμ— ν˜Όλž€μ„ μ•ΌκΈ° ν•  λͺ©μ μœΌλ‘œ νŠΈλžœμž­μ…˜ μ‹λ³„μžλ₯Ό μ•…μ˜μ μœΌλ‘œ μ‘°μž‘ ν•  수 있기 λ•Œλ¬Έ. 이 λ¬Έμ œμ— λŒ€ν•œ 해결책은 MalFixμ œμ•ˆ 으둜 이미 μ•Œλ €μ Έ μžˆλ‹€.
MalFixκ°€ Bitcoin ν•©μ˜ κ·œμΉ™μ˜ μΌλΆ€κ°€λ˜μ§€ μ•Šλ”λΌλ„ Bitcoin μƒνƒœκ³„μ˜ λ§Žμ€ 유λͺ… actor듀은 0-conf 이쀑 μ§€μΆœ 곡격에 λŒ€μ‘ν•˜λ €λŠ” μ˜λ„λ₯Ό ν‘œλͺ…ν–ˆμŒ. 이런 같은 actor듀은 0-conf 곡격과 근본적으둜 μœ μ‚¬ν•œ counter malleability 곡격 에도 λŒ€μ‘ν•  κ²ƒμœΌλ‘œ μ˜ˆμƒλœλ‹€.

3. 전망

TTOR의 μ œκ±°λŠ”(AOR) λ‹€λ₯Έ μ†Œν”„νŠΈμ›¨μ–΄μ˜ μ—…λ°μ΄νŠΈμ—λ„ 영ν–₯을 λ―ΈμΉ˜λ―€λ‘œ (μ–΄λ–€μˆœμ„œλ‘œ νŠΈλžœμž­μ…˜μ„ μ²˜λ¦¬ν•΄μ•Όν•˜λŠ”μ§€ 자체적으둜 좔가해야함) ν˜Όλž€μŠ€λŸ¬μš΄ λΆ€λΆ„μ΄μ§€λ§Œ, μ΄λŸ¬ν•œ 변경은 μž‘μ€ 변화이며, λ™μ‹œμ„±μ„ λ„μž…ν•˜κΈ° μ‰¬μš΄ ν˜•νƒœλ‘œ λ³€ν™˜λœλ‹€.
TTOR을 μ œκ±°ν•œ ν›„μ—λŠ”, CTOR을 μΆ”κ°€ν•˜λŠ”κ²ƒμ€ μ•„μ£Ό μ‚¬μ†Œν•œ 변화이고, λ‹€λ₯Έ μ†Œν”„νŠΈμ›¨μ–΄μ—λŠ” 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠλŠ”λ‹€.
  • κ°€κΉŒμš΄ μž₯래 : 블둝검증을 μœ„ν•œ μ„±λŠ₯ 차이λ₯Ό λ³΄μ—¬μ£Όμ§€λŠ” μ•Šμ„ κ²ƒμ΄λ‚˜(ν˜„μž¬ λΈ”λ‘μœ νš¨μ„± κ²€μ‚¬λŠ” bitcoin cash의 μ œν•œ μš”μ†Œκ°€ μ•„λ‹ˆλ―€λ‘œ), graphene ν”„λ‘œν† μ½œμ„ κ°„λ‹¨ν•˜κ³  μ¦‰κ°μ μœΌλ‘œ ν–₯상 μ‹œν‚¬ 수 μžˆλ‹€. μ΄λŠ” (블둝 μ „νŒŒ)μŠ€μΌ€μΌλ§ 병λͺ©ν˜„상에 영ν–₯을 λ―ΈμΉœλ‹€.
  • 쀑기적 : λ™μ‹œμ²˜λ¦¬λ‘œ μ „ν™˜ν•˜λ €λŠ” μ†Œν”„νŠΈμ›¨μ–΄λŠ” OTI와 같은 μž„μ˜ μˆœμ„œ μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜λ €κ³  ν•  것이닀. λ™μ‹œ μœ νš¨μ„± κ²€μ‚¬μ—μ„œ μˆœμ„œ μ§€μ • κ·œμΉ™μ„ μ μš©ν•˜κΈ° μœ„ν•΄ 일뢀 μ½”λ“œ μΆ”κ°€κ°€ ν•„μš”ν•  수 μžˆμ§€λ§Œ, TTOR/ AOR / CTOR의 μ„±λŠ₯μ°¨μ΄λŠ” μ—¬μ „νžˆ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • μž₯기적 : 이것을 μ‹ κ²½ μ“°κΈ°μ—λŠ” λ„ˆλ¬΄ 이λ₯΄μ§€λ§Œ, sharded UTXO λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ°€μ§„ 전체 λ…Έλ“œμ—λŠ” CTORκ°€ 이점을 λ³΄μ—¬μ€„μˆ˜ μžˆλ‹€.
    • λΉ„νŠΈμ½”μΈ μΊμ‹œ λΈ”λ‘μ˜ 크기가 μ»€μ§€λ©΄μ„œ, μ–Έμ  κ°€λŠ” 샀딩을 ν¬ν•¨ν•œ κ³ κΈ‰ μ„œλ²„ μ•„ν‚€ν…μ²˜λ‘œμ˜ ν™•μž₯이 ν•„μš”ν•  것이닀. 이 규λͺ¨μ—μ„œλŠ” TTOR이 λ„μ›€λ˜μ§€ μ•Šμ„κ²ƒμ΄λ©°, CTOR은 μ„±λŠ₯ μ΅œμ ν™”λ‘œ μ΄μ–΄μ§ˆμˆ˜λ„, μ•„λ‹μˆ˜λ„ 있으며, 더 λ‚˜μ€ νŠΈλž™μž­μ…˜ μ •λ ¬ 방식이 λ°œκ²¬λ˜μ–΄ 적용 될 μˆ˜λ„ μžˆλ‹€.
Β 

κ°€μ—­μ„±κ³Ό 기술적 뢀채(Reversibility and technical debt)

κ·Έλ ‡λ‹€λ©΄, λ‚˜μ€‘μ— CTOR둜 λ³€κ²½ν•œ 것을 μ·¨μ†Œν•˜λŠ”κ²ƒμ΄ κ°€λŠ₯ν• κΉŒ?
TTOR의 제거(1단계인 AOR μƒνƒœ) κΉŒμ§€λ§Œ μ μš©ν•  경우, ν‘œμ€€ serial processing algorithm의 μ‚¬μš©μ„ 영ꡬ적으둜 λ°°μ œν•˜λ©°, OTI둜 λ³€κ²½λœλ‹€. κ³Όκ±° 블둝을 κ²€ν† ν•˜λŠ” 블둝 μœ νš¨μ„± κ²€μ‚¬μž(block validator)와 블둝 탐색기(block explorer)λŠ” ν‘œμ€€ 방법을 영ꡬ적으둜 μ‚¬μš©ν• μˆ˜ μ—†μ§€λ§Œ OTIλŠ” 효율적이고, 병렬적이기 λ•Œλ¬Έμ—, 이것은 μ‹€μ œλ‘œ λ¬Έμ œκ°€ λ˜μ§€ μ•ŠλŠ”λ‹€.
μƒˆλ‘œμš΄ 블둝을 λ‹€λ£¨λŠ” λͺ¨λ“  경우, λ‚˜μ€‘μ— μ •λ ¬ 방법을 변경해도 λ¬Έμ œλ˜μ§€ μ•ŠλŠ”λ‹€. μ΄λŸ¬ν•œ 변경은 μƒˆλ‘œμš΄ λΈ”λ‘λ§Œ ν¬ν•¨ν•˜κΈ° λ•Œλ¬Έμ—, μž₯기적인 기술 뢀채λ₯Ό μ¦κ°€μ‹œν‚€μ§€ μ•Šμ„κ²ƒμ΄λ‹€. κ³Όκ±°λΈ”λ‘μ˜ μœ νš¨μ„±κ²€μ¦μ„ μœ„ν•΄ 였래된 블둝(λͺ‡λ‹¬ 이상)은 μ •λ ¬ μš”κ±΄μ΄ μ—†λ‹€κ³  μ†ŒκΈ‰μ μœΌλ‘œ μ„ μ–Έν• μˆ˜λ„ μžˆλ‹€.

4. bitcoin ABC μ½”λ“œμ˜ λ³€ν™”

ver 0.17.1 μ—μ„œ 0.1.18.1둜의 변화에 μˆ˜μ²œμ€„μ˜ μ½”λ“œκ°€ λ³€κ²½λ˜μ—ˆλ‹€.
이 λ³€ν™”μ˜ λŒ€λΆ€λΆ„μ€ λ‹€μ–‘ν•œ λ¦¬νŒ©ν„°λ§, μ½”λ“œμŠ€νƒ€μΌ λ³€ν™” λ“±μœΌλ‘œ λ‚˜νƒ€λ‚œλ‹€.
11μ›” ν•˜λ“œν¬ν¬μ˜ ν™œμ„±ν™”(activation)λ₯Ό λ‹€λ£¨λŠ” μ½”λ“œ λΉ„νŠΈλŠ” "MagneticAnomaly"둜 검색 κ°€λŠ₯
λ³€μˆ˜ magneticanomalyactivationtime 은 μƒˆλ‘œμš΄ κ·œμΉ™μ΄ ν™œμ„±ν™”λ˜λŠ” μ‹œκ°„μ„ μ„€μ •ν•œλ‹€.
Β 

src/validation.cpp : νŠΈλžœμž­μ…˜ μ •λ ¬μ˜ 주된 λ³€ν™”

  • ConnectBlock ν•¨μˆ˜
    • 이전엔 ν•˜λ‚˜μ˜ loopλ₯Ό 가짐: 각 νŠΈλžœμž­μ…˜μ„ μˆœμ„œλŒ€λ‘œ μ²˜λ¦¬ν•˜κ³  μ†ŒλΉ„λœ νŠΈλžœμž­μ…˜ 좜λ ₯을 μ‚­μ œ, μƒˆλ‘œμš΄ νŠΈλžœμž­μ…˜μ„ μΆ”κ°€ν•˜λŠ” 반볡문, TTOR과만 ν˜Έν™˜
    • ν•˜λ“œν¬ν¬μ΄ν›„ : 2개의 loop OTI μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜λ©°, μ •λ ¬ 쑰건이 μ—†λ‹€.
  • ApplyBlockUndo ν•¨μˆ˜ : κ³ μ•„ 블둝을 μ·¨μ†Œν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” ν•¨μˆ˜
    • μ–΄λ–€ μˆœμ„œλ‘œλ“  μ •λ ¬ν•˜λ©° μž‘μ—…ν•˜λ„λ‘ λ³€κ²½
  • ContextualCheckBlock ν•¨μˆ˜
    • direct check on sorting order을 ν¬ν•¨ν•˜κ²Œ λ˜μ—ˆλ‹€. (CTOR을 μ‹œν–‰ν•˜λŠ” μœ μΌν•œ μ½”λ“œ)

mining(src/mining.cpp)

  • CreateNewBlock ν•¨μˆ˜λŠ” νŠΈλžœμž­μ…˜μ„ CTOR에 따라 μ •λ ¬ν•œλ‹€.

src/txmempool.cpp

  • κ³ μ•„ 블둝이 λ˜μ—ˆμ„λ•Œ, ν•΄λ‹Ή λΈ”λ‘μ˜ νŠΈλžœμž­μ…˜μ€ addForBlock ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ mempool둜 λŒμ•„κ°„λ‹€.
Β 

References

Β 

Β 
관심 주제λ₯Ό μ„ νƒν•΄μ£Όμ„Έμš”. μ„ νƒν•˜μ§€ μ•ŠμœΌλ©΄ λͺ¨λ“  글을 κ΅¬λ…ν•©λ‹ˆλ‹€.