• Bastian Köcher's avatar
    Make it possible to calculate the storage root as often as you want (#7714) · ce97b6e5
    Bastian Köcher authored
    * Make it possible to calculate the storage as often as you want
    
    So, until now each Substrate based blockchain has calculated the storage
    root once, at the end of the block. Now there is Frontier that wants to
    calculate some intermediate storage root. However this failed on block
    import. The problem with that was the extrinsics root. When building the
    block we stored `Default::default()` as extrinsics root, because yeah,
    we don't know the extrinsics root before finishing the block. At the end
    this extrinsics root was then calculated. But on block import we passed
    the already known extrinsics root. This was no problem, as we removed
    this value at the end of the block. However when you all the storage
    root in between, that changes the storage root between block building
    and block import.
    
    This pr changes this behavior. It removes the `ExtrinsicsRoot` storage
    entry and also doesn't pass it anymore to `System::initialize`. By doing
    it, we remove the difference in the storage and fix the storage root mismatch.
    
    * Fix bug with incorrectly calculating the extrinscs root
    
    * Review feedback
    ce97b6e5