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() })); }
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); }
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); } } }
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); } } }