(Summary) CTORμ΄ μ ν©ν μ΄μ 1. Block Validationμ λ³ν 1-1. λμ μ ν¨μ±κ²μ¬(concurrent validation)μ νμμ±1-2. λμ μ ν¨μ±κ²μ¬λ₯Ό μν λ³ν - OTI2. νΈλμμ
μ λ ¬ κ·μΉμ λ³ν2-1. TTOR(topological trasaction ordering rule) 2-2. CTOR(Canonical Transaction Ordering Rule)μΌλ‘μ λ³ν2-3. CTOR λμ
μ μ₯μ μ°Έμ¬μκ°μ μ§μ μ ν3. μ λ§κ°μμ±κ³Ό κΈ°μ μ λΆμ±(Reversibility and technical debt)4. bitcoin ABC μ½λμ λ³νsrc/validation.cpp : νΈλμμ
μ λ ¬μ μ£Όλ λ³νmining(src/mining.cpp)src/txmempool.cppReferences
Β
(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 κΈ°λ°μ μ¬μ μ μ λ ¬
- μμ : txidκ° μ²«λ²μ§Έ μμμ¬μΌνλ μ½μΈλ² μ΄μ€λ₯Ό μ μΈνκ³ μ¬μ μ μμλ‘ μ λ ¬λμ΄μμμ νμΈ κ°λ₯.
- "coinbase first, then ascending lexicographic order based on txid".
μ΄ νλν¬ν¬μ μν΄ μ μ λ νμ€ μ λ ¬(canonical ordering)μ μ¬μ μ μ λ ¬(dictionary ordering,lexicographic)μΌλ‘, 맨μμ μμΌνλ coinbasesλ₯Ό μ μΈνκ³ λ νΈλμμ
IDλ₯Ό κΈ°μ€μΌλ‘ μ λ ¬νλ€.
- Any Ordering Rule(AOR): μ λ ¬ μ νμ μμ λ(μ½μΈλ² μ΄μ€ μ μΈ) κ·μΉ
- (TTORβAOR) : μΈκ³Όμ μ λ ¬ κ·μΉ μ κ±° (removing the old causal rule.)
- (AOR β CTOR) : λͺ¨λ λΈλ‘μ νΈλμμ μ λ ¬ λ°©λ²μ κ³ μ νλ μλ‘μ΄ κ·μΉ μΆκ° (adding a new rule that fixes the ordering of all transactions in the block.)
AORμ μ€μ μ μ©λ κ²μ μλμ§λ§, TTORμμ CTORλ‘ μ ννκΈ° μν λ λ¨κ³μμ λνλλ€.
μ€μ λ‘λ 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λ‘μ λ³νμ μμ²μ€μ μ½λκ° λ³κ²½λμλ€.
λ€μμμ νμΈκ°λ₯ https://github.com/Bitcoin-ABC/bitcoin-abc/compare/4fd0b1ba61892f8f1f7af4e540169425531d3bbd...5e02f75dc9233dacbc073a7e8e78c240de8d7de9#files_bucket
μ΄ λ³νμ λλΆλΆμ λ€μν 리ν©ν°λ§, μ½λμ€νμΌ λ³ν λ±μΌλ‘ λνλλ€.
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
Β
Β