Exemplo n.º 1
0
        public IEnumerator GetBlock(UInt256 hash, Action <Block> callback)
        {
            return(ExecuteRequestRPC((response) =>
            {
                if (response == null || !response.HasNode("result"))
                {
                    callback(null);
                    return;
                }

                var result = response.GetString("result");

                var bytes = result.HexToBytes();

                using (var stream = new MemoryStream(bytes))
                {
                    using (var reader = new BinaryReader(stream))
                    {
                        var block = Block.Unserialize(reader);
                        callback(block);
                    }
                }
            },
                                     ErrorHandler, "getblock", new object[] { hash.ToString() }));
        }
Exemplo n.º 2
0
        public override List <Block> GetBlockRange(PBigInteger start, PBigInteger end)
        {
            List <Task <DataNode> > taskList  = new List <Task <DataNode> >();
            List <Block>            blockList = new List <Block>();

            for (var i = start; i < end; i++)
            {
                var      height     = i;
                object[] heightData = new object[] { (int)height };

                taskList.Add(
                    new Task <DataNode>(() =>
                {
                    return(QueryRPC("getblock", heightData, 1, true));
                })
                    );
            }

            foreach (var task in taskList)
            {
                task.Start();
            }

            Task.WaitAll(taskList.ToArray());

            foreach (var task in taskList)
            {
                var response = task.Result;

                if (response == null || !response.HasNode("result"))
                {
                    return(null);
                }

                var result = response.GetString("result");

                var bytes = result.HexToBytes();

                using (var stream = new MemoryStream(bytes))
                {
                    using (var reader = new BinaryReader(stream))
                    {
                        var block = Block.Unserialize(reader);
                        blockList.Add(block);
                    }
                }
            }

            return(blockList);
        }
Exemplo n.º 3
0
        public override Block GetBlock(UInt256 hash)
        {
            var response = QueryRPC("getblock", new object[] { hash.ToString() });

            if (response == null || !response.HasNode("result"))
            {
                return(null);
            }

            var result = response.GetString("result");

            var bytes = result.HexToBytes();

            using (var stream = new MemoryStream(bytes))
            {
                using (var reader = new BinaryReader(stream))
                {
                    var block = Block.Unserialize(reader);
                    return(block);
                }
            }
        }
Exemplo n.º 4
0
        public override Block GetBlock(BigInteger height)
        {
            object[] heightData = new object[] { (int)height };
            var      response   = QueryRPC("getblock", heightData, 1, true);

            if (response == null || !response.HasNode("result"))
            {
                return(null);
            }

            var result = response.GetString("result");

            var bytes = result.HexToBytes();

            using (var stream = new MemoryStream(bytes))
            {
                using (var reader = new BinaryReader(stream))
                {
                    var block = Block.Unserialize(reader);
                    return(block);
                }
            }
        }