예제 #1
0
    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);
    }
예제 #2
0
파일: BlkBase.cs 프로젝트: khooversoft/Spin
 public static void VerifyBase(this BlkBase subject)
 {
     subject.VerifyNotNull(nameof(subject));
     subject.PrincipalId.VerifyNotEmpty(nameof(subject.PrincipalId));
     subject.Properties.VerifyNotNull(nameof(subject.Properties));
 }