Loading presentation…
Opening in Keynote for Mac...
Your browser isn’t fully supported.
For the best Keynote for iCloud experience, use a supported browser.
Learn More
Cancel
Continue
Pool and R
egistries
collator_pool
:
address[int128]
Phase 3
Shard 1
C1
C2
Main Chain
Shard 100
Period 2
Period 3
B10
B11
B12
B13
B14
B15
B16
B17
state root
Sharding
Manager
Contract
C1’
SHARD_COUNT
shards
Collation
(1) Proposing
by
Proposers
collecting
transactions
(blobs)
into
collations
(2) Collating
by
Collators
a.
chaining
collations
b.
ag
reeing on the
canonical chain
Ethereum Sharding Phase 1
1. Two Layers and Three Processes
Collation Header
shard_id
: uint256
the shard ID of the shard
; the
most signifi cant byte is a “network ID”
and t
he least signifi cant byte goes from
0
to
SHA
R
D_COUNT - 1
period
:
uint256
the period number in which this collation expects to be included
parent_hash
: bytes32
the hash of the parent collation
chunk_root
: bytes32
t
he root of the chunks tree which identifi es a collation body. Execution engines can authenticate blobs with Merkle paths to the chunks root
proposer_address
:
address
address
of the collation proposer
proposer_bid
:
uint256
the reward
from the proposer to the eligible collator for a winning proposal
proposer_
signature
:
bytes
the
proposer’s signature as part of a proposal
Collation Body
collation_body
:
bytes
32-byte chunks serialising a list of blobs
2. Sharding Manager Contract (SMC)
The contract on the main chain that manages collation trees and registries.
PERIOD_LENGTH
:= 5
block times
3. Collation Structure
4. Blobs and Chunks
chunk root
chunk 1
chunk 2
chunk 3
chunk 4
blob 1
blob 2
blob i
...
blob
A byte-aligned piece of data delimited
and ordered within a collation.
chunk 1
chunk 2
chunk j
...
chunk
A 32-byte-aligned collation chunk of
size 32 bytes,
used to delimit and
serialise blobs.
chunk tree
T
he full binary Merkle tree with leaves
the chunks of a collation body.
Merklelise
Encode
P
hase 1 does not include any state execution layer. This will be introduced in phase
3
.
proposer_registry
:
public({
deregistered: int128,
balances: address,
}[
address
])
the eligible
collator
with the right to extend the
collation tree of
a given shard in
the current period
the proposers
propos
e
collation headers to
the
eligible collator
c
ollator shuffling
p
seudo-randomly
sampled at
every period
COLLATION_SIZE
:= 2 ** 20
2018-03-1
6
GitHub: @
justindrake
, @vbuterin, and @hwwhww
(3) Executing
by
Executors
Phase 1
a.
processing transactions
b.
executing cont
r
act code
c.
computing state