public async Task <bool> Append(DocumentId documentId, BlkBase blkBase, CancellationToken token) { BlockChain?blockChain = (await Get(documentId, token))?.ToBlockChain(); if (blockChain == null) { return(false); } switch (blkBase) { case BlkTransaction blkTransaction: blockChain.Add(blkTransaction, blkTransaction.PrincipalId); break; case BlkCode blkCode: blockChain.Add(blkCode, blkCode.PrincipalId); break; default: throw new ArgumentException($"Unknown type={blkBase.GetType().Name}"); } blockChain = await Sign(blockChain, token); await Set(documentId, blockChain.ToBlockChainModel(), token); return(true); }
public static void VerifyBase(this BlkBase subject) { subject.VerifyNotNull(nameof(subject)); subject.PrincipalId.VerifyNotEmpty(nameof(subject.PrincipalId)); subject.Properties.VerifyNotNull(nameof(subject.Properties)); }