static StandardTokenHolder AddStandardTokenAccountHolder(StandardTokenComputedTable computedTable,
                                                             StandardTokenHolder?holder, string address)
    {
        if (holder is not null)
        {
            return(holder);
        }

        holder = new StandardTokenHolder {
            Address = address
        };
        computedTable.TokenHolders.Add(holder);

        return(holder);
    }
Ejemplo n.º 2
0
    public void UpdateContractFromTransactionLog(CirrusContractTable contractTransaction,
                                                 StandardTokenComputedTable computedTable)
    {
        string fromAddress = (string)contractTransaction.Logs.Single().Log.Data["from"];
        string toAddress   = (string)contractTransaction.Logs.Single().Log.Data["to"];
        long   amount      = (long)contractTransaction.Logs.Single().Log.Data["amount"];

        var fromHolder = computedTable.TokenHolders.Single(_ => _.Address == fromAddress);

        fromHolder.Amount -= amount;

        var toHolder = computedTable.TokenHolders.SingleOrDefault(_ => _.Address == toAddress);

        if (toHolder is null)
        {
            toHolder = new StandardTokenHolder {
                Address = toAddress
            };
            computedTable.TokenHolders.Add(toHolder);
        }

        toHolder.Amount += amount;
    }