コード例 #1
0
        public void getMintSNEO(string mongodbConnStr, string mongodbDatabase, string sneoAddr)
        {
            //db.tx.find({"vout.0.address":{$eq:"ASmnUjHydp5z2eDjUWnkHmQbtpm6TjMUPP"},"type":"InvocationTransaction"})
            string findFliter = "{'vout.0.address':{$eq:'" + sneoAddr + "'},'type':'InvocationTransaction'}";
            JArray result     = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter);

            foreach (JObject txOb in result)
            {
                int    blockindx = (int)txOb["blockindex"];
                JArray vins      = (JArray)txOb["vin"];
                string txid      = (string)txOb["txid"];
                JArray vouts     = (JArray)txOb["vout"];

                JObject valOb = (JObject)vouts[0];
                int     value = (int)valOb["value"];

                if (vins.Count > 0)
                {
                    //查出转入地址的交易
                    JObject vinOb = (JObject)vins[0];
                    txid = (string)vinOb["txid"];
                    int n = (int)vinOb["vout"];

                    findFliter = "{txid:'" + txid + "'}";
                    JArray array = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter);
                    if (array.Count > 0)
                    {
                        JObject txOb2 = (JObject)array[0];
                        vouts = (JArray)txOb2["vout"];
                        if (vouts.Count > 0)
                        {
                            //查出转入地址的交易
                            JObject voutOb = (JObject)vouts[n];
                            string  from   = (string)voutOb["address"];

                            if (!getMintSNEOByTxid(mongodbConnStr, mongodbDatabase, txid))
                            {
                                var            client        = new MongoClient(mongodbConnStr);
                                var            database      = client.GetDatabase(mongodbDatabase);
                                NEP55.MintSNEO mint          = new NEP55.MintSNEO(blockindx, txid, from, sneoAddr, value, GetBlockTime(mongodbConnStr, mongodbDatabase, blockindx));
                                var            collectionPro = database.GetCollection <NEP55.MintSNEO>("MintSNEO");
                                collectionPro.InsertOne(mint);
                            }
                        }
                    }
                }
            }
        }
コード例 #2
0
        private int getStartHeight(string mongodbConnStr, string mongodbDatabase, int refundVal, string addr)
        {
            //地址下面所有未使用的兑换记录
            JArray mints = getMintSNEOByAddr(mongodbConnStr, mongodbDatabase, addr);

            if (mints.Count == 0)
            {
                return(0);
            }

            //默认第一个就是开始高度
            JObject firstOb     = (JObject)mints[0];
            int     remainTotal = 0;

            Console.WriteLine("mintsneo size:" + mints.Count);
            //记录使用被匹配的兑换记录
            List <NEP5.MintSNEOTemp> temps = new List <NEP5.MintSNEOTemp>();

            foreach (JObject mint in mints)
            {
                int    remainVal  = (int)mint["remainVal"];
                string txid       = (string)mint["txid"];
                int    blockindex = (int)mint["blockindex"];

                remainTotal = remainTotal + remainVal;

                int result = remainTotal - refundVal;
                if (result <= 0)
                {
                    NEP5.MintSNEOTemp temp = new NEP5.MintSNEOTemp(addr, txid, 0);
                    temps.Add(temp);
                }
                else
                {
                    NEP5.MintSNEOTemp temp = new NEP5.MintSNEOTemp(addr, txid, result);
                    temps.Add(temp);
                    break;
                }
            }

            //更新MintSNEO记录
            foreach (NEP5.MintSNEOTemp temp in temps)
            {
                string txid      = temp.txid;
                int    remainVal = temp.remainVal;

                Console.WriteLine("txid:" + txid + "/remainVal:" + remainVal);
                var          client    = new MongoClient(mongodbConnStr);
                var          database  = client.GetDatabase(mongodbDatabase);
                var          coll      = database.GetCollection <BsonDocument>("MintSNEO");
                BsonDocument queryBson = BsonDocument.Parse("{from:'" + addr + "',txid:'" + txid + "'}");

                var collBson = database.GetCollection <NEP55.MintSNEO>("MintSNEO");
                List <NEP55.MintSNEO> query = collBson.Find(queryBson).ToList();

                NEP55.MintSNEO oper = query[0];
                oper.remainVal = remainVal;

                collBson.ReplaceOne(queryBson, oper);
            }

            return((int)firstOb["blockindex"]);
        }