Content pfp
Content
@
https://warpcast.com/~/channel/daos
0 reply
0 recast
0 reaction

trainface pfp
trainface
@trainface
At @decent and Fractal, we're building tools and products necessary for onchain orgs to govern and operate. In a convo with @shutter’s DAO 0x36 community members, the topic of "proposal length" was brought up. How can we know the exact time a proposal will expire?
1 reply
1 recast
2 reactions

trainface pfp
trainface
@trainface
Unfortunately, when tracking time with blocks, it's impossible to know. But we can make some assumptions. 👇
1 reply
0 recast
0 reaction

trainface pfp
trainface
@trainface
In most onchain governance systems, concepts of "time" are denominated in blocks. "Hey!", you may be saying, "since Ethereum switched to PoS, blocks are exactly 12 seconds long!" It's a bit more complicated than this in practice.
1 reply
0 recast
0 reaction

trainface pfp
trainface
@trainface
It’s true that Fractal (and many other onchain governance systems) use block numbers to determine when things happen. Specifically, block numbers in the execution layer, where we’re operating. Smart contracts only have access to execution layer blocks, not consensus layer blocks.
1 reply
0 recast
0 reaction

trainface pfp
trainface
@trainface
History lesson: Execution Layer (EL) is where PoW used to exist. Block 0 was on Jul 15 2015. Currently at block ~19.26m. Consensus Layer (CL) is where PoS now lives. Block ("slot") 0 was on Dec 1 2020. Currently at block ~ 8.46m. Both sets of block numbers are marching on.
1 reply
0 recast
0 reaction

trainface pfp
trainface
@trainface
With Ethereum’s switch to PoS, *consensus layer* blocks happen every 12 seconds. If a proposer doesn’t create a block in time (block 100, for example), that block is missed, but the count goes on. The next proposer is working on block 101, not the missed 100.
1 reply
0 recast
0 reaction

trainface pfp
trainface
@trainface
On the execution layer, block numbers are different. When the consensus layer creates a new block, it associated the *next* execution layer block with it. Execution layer blocks, therefore, are *never skipped*.
1 reply
0 recast
0 reaction

trainface pfp
trainface
@trainface
Example: CL: 200 (proposed), EL: 1000 CL: 201 (proposed), EL: 1001 CL: 202 (missed), EL: n/a CL: 203 (proposed), EL: 1002
1 reply
0 recast
0 reaction