public void Size_Get() { var test = new FullNodeCapability() { StartHeight = 1 }; test.Size.Should().Be(5); test = new FullNodeCapability(2); test.Size.Should().Be(5); }
public void DeserializeAndSerialize() { var test = new FullNodeCapability() { StartHeight = uint.MaxValue }; var buffer = test.ToArray(); using var br = new BinaryReader(new MemoryStream(buffer)); var clone = (FullNodeCapability)NodeCapability.DeserializeFrom(br); Assert.AreEqual(test.StartHeight, clone.StartHeight); }
private void OnVersionPayload(VersionPayload version) { Version = version; FullNodeCapability capability = (FullNodeCapability)version.Capabilities.FirstOrDefault(p => p.Type == NodeCapabilityType.FullNode); IsFullNode = capability != null; if (IsFullNode) { LastBlockIndex = capability.StartHeight; } if (version.Nonce == LocalNode.Nonce || version.Magic != ProtocolSettings.Default.Magic) { Disconnect(true); return; } if (LocalNode.Singleton.RemoteNodes.Values.Where(p => p != this).Any(p => p.Remote.Address.Equals(Remote.Address) && p.Version?.Nonce == version.Nonce)) { Disconnect(true); return; } SendMessage(Message.Create(MessageCommand.Verack)); }