Example #1
0
            public static NeblioTransaction ParseJson(string tx)
            {
                if (!string.IsNullOrEmpty(tx))
                {
                    JObject           obj      = JObject.Parse(tx);
                    NeblioTransaction neblioTx = new NeblioTransaction(Neblio.NeblioConsensusFactory.Instance);
                    DeserializeFromJson(obj, ref neblioTx);

                    return(neblioTx);
                }
                else
                {
                    return(null);
                }
            }
Example #2
0
            private static void DeserializeFromJson(JObject json, ref NeblioTransaction tx)
            {
                tx.Version = json.Value <uint>("version");
                //tx.Time = json.Value<uint>("time");
                var tm = json.Value <double>("time");

                tx.Time     = Convert.ToUInt32(tm / 1000);
                tx.LockTime = json.Value <uint>("locktime");
                tx.Hex      = json.Value <string>("hex");
                var vin = json.Value <JArray>("vin");

                for (int i = 0; i < vin.Count; i++)
                {
                    var jsonIn = (JObject)vin[i];
                    var txin   = new TxIn();
                    var script = jsonIn.Value <JObject>("scriptSig");
                    if (script != null)
                    {
                        txin.ScriptSig    = new Script(Encoders.Hex.DecodeData(script.Value <string>("hex")));
                        txin.PrevOut.Hash = uint256.Parse(jsonIn.Value <string>("txid"));
                        txin.PrevOut.N    = jsonIn.Value <uint>("vout");
                    }
                    else
                    {
                        txin.ScriptSig = new Script(Encoders.Hex.DecodeData(jsonIn.Value <string>("coinbase")));
                    }
                    txin.Sequence = jsonIn.Value <uint>("sequence");

                    tx.Inputs.Add(txin);
                }

                var vout = json.Value <JArray>("vout");

                for (int i = 0; i < vout.Count; i++)
                {
                    var jsonOut = (JObject)vout[i];
                    var txout   = new TxOut()
                    {
                        Value = Money.Coins(jsonOut.Value <decimal>("value") / 100000000)
                    };
                    tx.Outputs.Add(txout);

                    var script = jsonOut.Value <JObject>("scriptPubKey");
                    txout.ScriptPubKey = new Script(Encoders.Hex.DecodeData(script.Value <string>("hex")));
                }
            }