Plasma - kukgini/blockchain GitHub Wiki
Abstract
Plasmaλ μ€λ§νΈ 컨νΈλ νΈμ μΈμΌν°λΈ λ° κ°μ μ€νμ μν΄ μ μ λ νλ μμν¬λ‘, μ΄λΉ μλΉλμ μν μ λ°μ΄νΈ (μ μ¬μ μΌλ‘ μμ μ΅)λ‘ νμ₯ κ°λ₯νμ¬ λΈλ‘ 체μΈμ΄ μ μΈκ³μ μΌλ‘ μλΉν μμ λΆμ°λ κΈμ΅ μ ν리μΌμ΄μ μ λν ν μ μκ²ν©λλ€. μ΄λ¬ν μ€λ§νΈ 컨νΈλ νΈλ νΈλμμ μν μ νμ μννκΈ° μν΄ κΆκ·Ήμ μΌλ‘ κΈ°λ³Έ λΈλ‘ μ²΄μΈ (μ : Ethereum)μ μμ‘΄νλ λ€νΈμν¬ νΈλμμ μμλ£λ₯Ό ν΅ν΄ μμ¨μ μΌλ‘ κ³μ μλνλλ‘ μ μΈλ©λλ€.
μ°λ¦¬λ λΆμ°λ μμ¨ μμ© νλ‘κ·Έλ¨μ΄ κΈμ΅ νλμ μ²λ¦¬ ν λΏλ§ μλλΌ μ€μ μ§μ€μ μλ² νμ λν λμμ λ§λ€ μμλ κΈλ‘λ² μꡬ λ°μ΄ν° μλΉμ€μ κ²½μ μ μΈμΌν°λΈλ₯Ό ꡬμΆνλλ‘ νμ₯ν μ μλ λ°©λ²μ μ μν©λλ€.
Plasmaλ λμμΈμ λ κ°μ§ μ£Όμ λΆλΆμΌλ‘ ꡬμ±λ©λλ€. λͺ¨λ λΈλ‘ μ²΄μΈ κ³μ°μ MapReduce ν¨μ μΈνΈλ‘ λ€μ μ±μ°λ κ²κ³Ό Nakamoto Consensus μΈμΌν°λΈκ° λΈλ‘μ λ°©ν΄νλ€λ μ¬μ€μ μ΄ν΄νμ¬ κΈ°μ‘΄ λΈλ‘ μ²΄μΈ μμ Proof-of-Stake ν ν° λ³Έλ©μ μννλ μ νμ λ°©λ² μμ² μ§μ.
μ΄ κ΅¬μ±μ μ£Ό λΈλ‘ 체μΈμμ μν μ νμ μ μ© ν μμλ μ¬κΈ° μ¦κ±°λ₯Ό μ¬μ©νμ¬ μ£Όμ λΈλ‘ 체μΈμμ νλͺ ν κ³μ½μ μμ±ν¨μΌλ‘μ¨ μ±μ·¨λ©λλ€. λΈλ‘ 체μΈμ νΈλ¦¬ κ³μΈ΅ κ΅¬μ‘°λ‘ κ΅¬μ±νκ³ κ°κ°μ κ°μ μ μΈ λΈλ‘ μ²΄μΈ νμ€ν 리λ₯Ό κ°μ§ κ°λ³ λΈλμΉ μ²΄μΈμΌλ‘ μ·¨κΈνκ³ Merkle μ¦λͺ μΌλ‘ μ»€λ° λ MapReducable κ³μ°μ μ²λ¦¬ν©λλ€. μμ₯ μνΈλ¦¬λ₯Ό μμ 체μΈμ μν΄ μ μ©λλ νμ λΈλ‘ 체μΈμΌλ‘ νλ μν¨μΌλ‘μ¨ μ λ’°κ° ββμ΅μν λ λ―Ώμ μμλ μ€μΌμΌμ κ°λ₯νκ² ν μ μμ΅λλ€ (λ£¨νΈ λΈλ‘ μ²΄μΈ κ°μ©μ± λ° μ νμ±μ κ°μ ).
λΉ κΈλ‘λ² λ°μ΄ν°μ κΈλ‘λ² μνμ λν κ°μ₯ ν° μ΄λ €μμ λ°μ΄ν° κ°μ©μ±κ³Ό μμ² μ§μ 곡격μ μ°¨λ¨νλ κ²μ λλ€. Plasmaλ μ€λ₯κ° λ°μν 체μΈμ μ κ±°νκ³ λ°μ΄ν°μ μ§μμ μΈ μ¬λ°λ₯Έ μ€νμ μ₯λ €νκ³ μν ν μμλ λ©μ»€λμ¦μ λ§λ€μ΄ μ΄λ¬ν λ¬Έμ λ₯Ό μνν©λλ€.
λ¨Έν¬ λΌμ΄μ¦ λ 컀미νΈλ¨ΌνΈ λ§μ΄ λΉ κ²°ν¨ μν λμ λ£¨νΈ λΈλ‘ μ²΄μΈ (μ¦, μν 리μ)μ μ£ΌκΈ°μ μΌλ‘ λΈλ‘λ μΊμ€ν λκΈ° λλ¬Έμ, μ΄κ²μ μμ²λκ² νμ₯ κ°λ₯νκ³ , μ λΉμ©μ νΈλμμ λ° κ³μ°μ νμ© ν μμλ€. Plasmaλ₯Ό μ¬μ©νλ©΄ μ§μμ μΌλ‘ λΆμ° λ μ ν리μΌμ΄μ μ λκ·λͺ¨λ‘ μ΄μ ν μ μμ΅λλ€.
Scalable Multi-Party Computation
μ°μ°μ μ€νμ Off-chain μμ νμ§λ§ κΆκ·Ήμ μΌλ‘λ On-chain μ μ λ°μ΄νΈ λλλ‘ νμ¬ μ΄λΉ μμμ΅κ°μ μ°μ°μ΄ κ°λ₯ν μμ€ν μ μ€κ³ νλ €λ λͺ©μ .
Plasma
SmartContract μ μ§ν©μ ν΅ν΄ νμ₯ κ°λ₯ν Plasma Chain μ λ§λ λ€. Root Chain (μ κ·Έλ¦Όμμλ Ethereum) μ λͺ¨λ μ°μ°μ μννλ λμ μ¬κΈ° νκ°μ΄ μμλμ§ μ¬λΆλ§μ νλ³νκ³ ν¨λν°λ₯Ό λΆκ³Όνλ€.
μ£Όμ μ»΄ν¬λνΈ
- μ°μ°μ μ§μμ μΌλ‘ μ μ§νλλ‘ μ λνλ λΉμ© ν¨μ¨μ μΈμΌν°λΈ κ³μΈ΅.
- νμ 체μΈμ νΈλ¦¬ νμμΌλ‘ μ λ ¬νλ ꡬ쑰.
- λμ νμ₯μ±μ μν΄ μν μ μ΄λ₯Ό μ¬κ΅¬μ±νλλΌλ νΈλ¦¬ ꡬ쑰μ νΈνμ±μ μ μ§νλ©΄μ μν μ μ΄μ μ¬κΈ° μ¦λͺ μ΄ κ°λ₯ν 맡-리λμ€ νλ μμν¬.
- κ°λ ₯ν Security λ₯Ό μ 곡νλ λ£¨νΈ μ²΄μΈ μ μμ‘΄νλ ν©μ λ©μ»€λμ¦.
- λ£¨νΈ μ²΄μΈμμ μ νν μν μ μ΄λ₯Ό 보μ₯νλ©΄μ λλ λ°°μΆ λΉμ©μ μ΅μννλ λΉνΈλ§΅-UTXO μ½μ ꡬ쑰.
Note: λ°μ΄ν° λ¬Έμ λλ κΈ°ν λΉμν΄ νλ μ΄νμ Exit λ₯Ό νμ©νλ κ²μ΄ Plasmaμ μ΄μμμ μ€μν μ€κ³ ν¬μΈνΈ μ€ νλμ λλ€.
The Plasma Blockchain, or Externalized Multiparty Channels
λ€μ€μ νν° (κ°κ°μ λͺ©μ μ κ°μ§ κ·Έλ£Ή) μ΄ κ·Έ μ°Έμ¬μλ€μ μνλ₯Ό 보κ΄νκ² νλ λ°©λ²κ³Ό νλ μμν¬λ₯Ό νλΌμ¦λ§ λΈλ‘μ²΄μΈ μ΄λΌκ³ μ°λ¦¬κ° λͺ νλ ΈλΌ.
We propose a method whereby multiparty off-chain channels can hold state on behalf of others. We call this framework a Plasma blockchain.
λΈλ‘μ λ΄μ©μ Plasma Chain μ 보κ΄νκ³ λΈλ‘ ν΄λλ§ λ£¨νΈ μ²΄μΈμ 보κ΄νλ€ (μΌμ μκ°/κΈ°μ€μΌλ‘ μ κΈ°μ μΈ λ°°μΉμμ ). λ§μ½ λ£¨νΈ μ²΄μΈμ μ μΆλ λ΄μ©μ μ¬κΈ° νκ°μ΄ μλ€λ κ²μ΄ μ¦λͺ λλ©΄ (λκ΅°κ° κ·Έκ²μ μ¦λͺ νλ νΈλ μ μ μ μ μΆνλ©΄) λΈλ‘μ λ‘€λ°±λκ³ λΈλ‘ μμ±μλ ν¨νΈν°λ₯Ό λ°κ² λλ€. λ€λμ νΈλ μ μ μ΄ νλμ ν΄μ¬λ‘ λ체λλ―λ‘ λ§€μ° ν¨μ¨μ μ΄κ² λλ€.
μ΅μ μ μν©μμλ νλκ° μ κΈ°κ³ λλ μΈμΆ (MassExit)μ λ°μμΌλ‘ time-value λ₯Ό μμ΄λ²λ¦¬κ² λλ€. (?)
μ°λ¦¬λ μ¬κΈ°λ λΉμν΄ μ₯μ λ₯Ό μ κ±°ν μ μλλ‘ μ¬κΈ°λ₯Ό μ¦λͺ νλ μ€λ§νΈ 컨νΈλ νΈ μΈνΈλ₯Ό λ§λ ¨ν΄ λμμ.
Enforcible Blockchains in Blockchains
Plasma Proof-of-Stake
λ¨μΌ μ΄μμμ μν Plasma 체μΈμ΄λΌλ ETH λ₯Ό λ΄λ³΄ν PoS λ‘ Validator μΈνΈλ₯Ό ν΅ν΄ μνλ₯Ό μ μ₯νλλ‘ κΆνλ€. λν PoS 컨μΌμ μ€ λ©μ»€λμ¦μ κΌ μ¨μ²΄μΈ μ€λ§νΈ 컨νΈλ νΈλ‘ νμλΌ.
Blockchains as MapReduce
A Description of Economic Incentives around Persistent Decentralized Autonomous Blockchains
Design Stack and Smart Contracts
Plasma λ μ μνκ² Finality μ λλ¬νλλ‘ μ€κ³λμ§λ μμλ€. (κ²°κ΅μλ RootChain μ λ°μμ΄ λμ΄μΌλ§ νλκΉ.)
Plasma is not designed to reach assured finality rapidly, even though transactions are confirmed in the child chains rapidly, it requires it to be finalized on the underlying root blockchain.
SmartContract κ΄μ μμλ FreeOptionProblem μ΄ μ΄μμ΄λ€. μμ μκ° μλͺ μ νμ§ μμ κ°λ₯μ±μ΄ μλλ° LightningNetwork μ ν΅ν΄ μ΄λ μ λ ν΄κ²° κ°λ₯νλ€. νλμ ν° κ±°λ λμ μμ κ±°λλ₯Ό λλμΌλ‘ μΌμΌν€λ LightningNetwork μ μ¬μ©νλ©΄ μ μ§μ μΈ μκΈ μ΄λμ΄ λλ―λ‘ FreeOptionProblem μ΄ μ΅μνλλ€.
PlasmaChain μμμ κ±°λκ³Όμ
- A κ°
A--10-->B
Transaction μμ± - A κ° Operator μκ² Transaction μ μΆ
- Operator κ° Parent Chain μ (μ¬κ·μ μΌλ‘ Root Chain μ) Commit
- A κ° B μκ² Transaction μ λ¬
- B κ° Root Chain μμ Commit μ¬λΆ νμΈ
- B κ° Transaction μ μλͺ (<-- μ΄ λΆλΆμμ B κ° FreeOption μ¦, μλͺ μ νμ§ μμ μ μμ)
μ΄ κ·Έλ¦Όκ³Ό κ°μ΄ PlasmaChain μμ LightningNetwork λ₯Ό ꡬμ±νμ¬ μκΈμ ν΅μΌλ‘ λκΈ°μ§ μκ³ μ μ§μ μΌλ‘ λκΈ°κ² λλ©΄ μλλ°©μ΄ All or Nothing μΌλ‘ κ±°λλ₯Ό μ ννκΈ°κ° νλ€μ΄ μ§.
Note: PlasmaCash λ‘λ μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ.
The Most Significant Problem in Sharding is Information
Shading μΌλ‘ λ°μ΄ν° μΈνΈκ° κ°λΌμ§λ©΄ κ°λ³ Shard μμ μ 보λ₯Ό κΊΌλ΄μ¬ μ μμΌλ―λ‘ μ¬κΈ° μ¦λͺ μ΄ λΆκ°λ₯ν΄μ§λ€.
With sharded data sets, there is a significant risk of individual shards to refuse to disclose information. It would thereby be impossible to produce fraud proofs.
μ΄λ₯Ό ν΄κ²°ν 3 κ°μ§ μ λ΅μ κ°μ§κ³ μμ
- λΈλ‘ μ νλ₯Ό μ₯λ €νλ μλ‘μ΄ PoS λ©μ»€λμ¦
- μ νν μΈμΆ μ¦λͺ μ΄ κ°λ₯ν λ§νΌ μΆ©λΆν μΈμΆ μ§μ° μκ°μ κ°λλ€.
- μ΄λ€ ParentChain μΌλ‘λ Transaction μ μ νν μ μλ ChildChain μ λ§λ λ€. (μ? κ·ΈλΌ νΈλ¦¬κ΅¬μ‘°κ° κΉ¨μ§κ±° κ°μλ°...)
Related Work
TrueBit
μ¬κΈ° μ¦λͺ κ³Όμ μ΄ TrueBit κ³Ό λ§€μ° μ μ¬νκ² μ€κ³λμ΄ μμΌλ©° TrueBit μ κ²°κ³Όλ¬Όμ΄ Plasma μ κ·Έλλ‘ μ μ©λ μ μμ κ²μ. (νΉν μν μ μ΄μ λ¨Έν΄ μ¦λͺ λΆλΆμμ).
μ΄λ₯Ό ν΅ν΄:
- λ°μ΄ν° κ°μ©μ± λ¬Έμ κ° μνλ κ²μ
- PlasmaChain μ Failure κ° λ λͺ νν 곡κ°λ κ²μ
Blockchain Sharding
νμ¬μ Sharding μ Plasma μ μ μ¬ν κΈ°μ κ³Ό λͺ©νλ₯Ό κ°μ§μ§. μ΄λ° ꡬμ±μ μμ λ μ΄μ΄μμ νΈνμ±μ κ°μ§ μ μλ€. RootChain μ Sharding μ΄ μ§μλλ©΄ Plasma λ λ λμ Scalability λ₯Ό μν΄ κ·Έ μμμ λμκ°κ±°λ λ€λ₯Έ μ₯μ λ€μ μ 곡ν μ μμ κ²μ΄λ€. (μ΄ λ§μ Sharding μ΄ μ§μλλ©΄ Plasma μ μμ΄λμ΄κ° ν‘μλ κ²μ΄λ λ§μ²λΌ 보μ...)
Federated Sidechains
Actor λ€μ΄ λ§€μ° μ μ§νκ² νλν΄μΌ νλ Feterated λ°©μκ³Ό λ¬λ¦¬ Plasma λ μ΄λ₯Ό κ°μ νμ§ μμΌλ―λ‘ FederatedPeggedSidechain κ³Όλ λ€λ₯΄λ€.
Merge-Mined Blockchain
Treechains
zk-SNARKs and zk-STARKs
zk-SNARKs/STARKs (λλ μ΄μ μ μ¬ν λΉ λνν μΆμ½ μ¦λͺ λ²)μ Plasma μ κΆμ₯λλ€.
zk-SNARKs/STARKs and other forms of non-interactive compact proofs is complimentary to Plasma.
μ΄λ₯Ό ν΅ν΄ λ¨Έν΄ μ°μ°κ³Ό ν¨κ» κ·Έμ λν μ¦λͺ μ΄ λΆμ΄ λ€λ μ μμ κ²μ. λν μμ κ·λͺ¨μ ChildChain μ λν μμ€ν μ 곡격μ μ€μΌ μ μμ κ²μ.
Cosmos/Tendermint
Cosmos λ Hub μ Zones λΌ λΆλ¦¬λ νμ λΈλ‘체μΈμ λ°°μΉνμ¬ λ§€μ° μ μ¬ν κ΅¬μ‘°μΈ κ²μ²λΌ 보μΈλ€. νμ§λ§, Plasma λ μ¬κΈ° μ¦λͺ μ΄λΌλ ꡬ쑰 μμμ λμνλ©° λ€μν 체μΈμ μμ©μ΄ κ°λ₯ν λ§νΌ μΆ©λΆν μΌλ°ν λμ΄ μλ λ°λ©΄, Cosmos λ Hub μ Zone λͺ¨λ 2/3 μ΄μμ μ μ§ν Validator κ° μλ€λ κ°μ νμ λμνλ€.
Polkadot
Lumino
Multiparty Off-Chain State
Fraud Proofs
λͺ¨λκ° 1-4μ λΈλ‘μ κ°μ§κ³ μκ³ Block 4 μμ μ¬κΈ° νκ°μ΄ μΌμ΄λ¬λ€κ³ κ°μ νλ©΄
λκ΅°κ° (μ¬κΈ°μλ Alice) Block 4 κ° μ¬κΈ°μμ μ¦λͺ
νλ νΈλμ μ
μ λ£¨νΈ μ²΄μΈμ μ μΆνλ€. Block 4 μ μμ±μλ μμΉν΄λ μκΈμ μκ² λκ³ νμ¬ μ΅μ λΈλ‘μ Block 3 κ° λλ€.
Deposits
μμΉ λ°©λ²μ RootChain μ λ§μ€ν° μ€λ§νΈ 컨νΈλ νΈμ μ§μ 보λ΄λ κ²μ΄λ€. λ§μ€ν° μ€λ§νΈ 컨νΈλ νΈ λ€μ μν μ μννλ€.
- μν 컀λ°λ€μ μΆμ
- μ¬κΈ° μ¦λͺ μ ν΅ν λΉμ μ νμμ ν¨λν°
- μμΉ / μΈμΆ μ²λ¦¬
Child Plasma Chain μ RootChain μ Full validator μ΄κ³ , λ€μ΄μ€λ νΈλ μ μ λ€μ Two-phase lock-in μΌλ‘ μ²λ¦¬λμ΄μΌ ν¨ (μμ μμ νΈλ μ μ μ²λ¦¬κ³Όμ μ κΈ°μ ν κ²κ³Ό κ°μ΄)
- ETH λ₯Ό RootChain μ PlasmaContract λ‘ λ³΄λ
- PlasmaChain μ λ€μ΄μ€λ νΈλ μ μ μ¦λͺ μ ν¬ν¨μν΄. - μμΉμμ μν΄μλ λ½μΈ νΈλ μ μ μμλ§ μ°μΌμ μκ² μ ννκ³ μ λλ‘ λ μΈμΆ μμ²μ μνλ€λ 쑰건과 ν¨κ».
- μμΉμλ PlasmaChain μ μμ±λ νΈλ μ μ μ μλͺ ν¨. - μ΄ κ³Όμ μ ν΅ν΄ μμΉμκ° μκΈ μΈμΆμ μν μΆ©λΆν μ 보λ₯Ό μ 곡 λ°μμμ΄ νμΈλ¨.
Block 3 μμ Alice κ° 1 ETH λ₯Ό μ»μλ€. κ·Έλ λ κ·Έ μκΈμ΄ λ£¨νΈ μ²΄μΈμμ μ 겨μκ³ PlasmaContrace μ κ³μ μ μμΉλμ΄ μλ κ²μ νμΈν μ μλ€. μμΉμ(Alice μκ² PlasmaChain μμ μκΈμ λκΈ΄ μ΄μ μμ μ)λ μΈμΆμμ²μ ν μ μμ§λ§ νμ λκΈ°κΉμ§ μλΉν μκ°μ κΈ°λ€λ €μΌ νλ€. μ΄ κΈ°κ°λμ μ무λ (νΉν Alice κ°) μ΄μλ₯Ό μ κΈ°νμ§ μμΌλ©΄ μκΈ μΈμΆμ μ μμ μΌλ‘ μνλλ€. (μ?)
Mass Withdrawals and Bitmapped State
State Transitions
Periodic Commitments to the Root Chain
Withdrawals
- λ¨μ μΈμΆ(Simple withdrawal) - κ°μ₯ ν΅μ¬μ μΈ μΈμΆ νλ‘μΈμ€
- λΉ λ₯Έ μΈμΆ(Fast Withdrawal) - μ μμ μΈ μν©μμ λ¨μ μΈμΆμ λ²κ±°λ‘μμ λκΈ° μν΄ μν λ―Ή μ€μ (StomicSwap) μ νμ©
- λλ μΈμΆ(Mass Withdrawal) - μ¬κΈ° λ°μμ μμ° λ³΄νΈλ₯Ό μν΄ νμ©λλ μΈμΆ νλ‘μΈμ€. νλͺ μ΄ λλ μΈμΆ νλ‘μΈμ€λ₯Ό κ°μνλ©΄ λ€λ₯Έ μ¬λλ€μ΄ μ¬κΈ° μ°Έμ¬ν μ μλ€.