// Copied from BlockChain<T>.SetStates(). private static void SetStates( Guid chainId, IStore store, IStateStore stateStore, Block <NCAction> block, IReadOnlyList <ActionEvaluation> actionEvaluations, bool buildStateReferences ) { IImmutableSet <Address> stateUpdatedAddresses = actionEvaluations .SelectMany(a => a.OutputStates.StateUpdatedAddresses) .ToImmutableHashSet(); IImmutableSet <(Address, Currency)> updatedFungibleAssets = actionEvaluations .SelectMany(a => a.OutputStates.UpdatedFungibleAssets .SelectMany(kv => kv.Value.Select(c => (kv.Key, c)))) .ToImmutableHashSet(); if (!stateStore.ContainsStateRoot(block.StateRootHash)) { HashDigest <SHA256>?prevStateRootHash = store.GetStateRootHash(block.PreviousHash); var totalDelta = GetTotalDelta(actionEvaluations, ToStateKey, ToFungibleAssetKey); stateStore.Commit(prevStateRootHash, totalDelta); } }