private void Announce(BlockBroadcast tx, byte[] hash)
        {
            var node = AttachedNode;

            if (node != null && node.State == NodeState.HandShaked)
            {
                tx.State         = BroadcastState.Announced;
                tx.AnnouncedTime = DateTime.UtcNow;
                node.SendMessageAsync(tx.Block).ConfigureAwait(false);
            }
        }
        internal void BroadcastBlockCore(Types.Block block)
        {
            if (block == null)
            {
                throw new ArgumentNullException("block");
            }
            var tx = new BlockBroadcast();

            tx.Block = block;
            tx.State = BroadcastState.NotSent;
            var hash = GetHash(block);

            if (_HashToBlock.TryAdd(hash, tx))
            {
                Announce(tx, hash);
            }
        }