Skip to content

Commit f13316f

Browse files
committed
Rename MerkleHash -> MerkleTreeHasher
It's not an individual merkle hash, it's the logic used to hash layers and create proof hashes.
1 parent c994aa3 commit f13316f

File tree

8 files changed

+28
-28
lines changed

8 files changed

+28
-28
lines changed

src/MonoTorrent.Client/MonoTorrent.Client/Managers/DiskManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ public bool TryGetHashAndReset (PieceHash dest)
150150
if (BlockHashes.Length == 32)
151151
BlockHashes.Span.CopyTo (dest.V2Hash.Span);
152152
// Layer 0 corresponds to 16kB hashes.
153-
else if (!MerkleHash.TryHash (SHA256Hasher, BlockHashes.Span, 0, ReadOnlySpan<byte>.Empty, 0, BlockHashes.Span.Length / 32, dest.V2Hash.Span, out written) || written != dest.V2Hash.Length)
153+
else if (!MerkleTreeHasher.TryHash (SHA256Hasher, BlockHashes.Span, 0, ReadOnlySpan<byte>.Empty, 0, BlockHashes.Span.Length / 32, dest.V2Hash.Span, out written) || written != dest.V2Hash.Length)
154154
return false;
155155
}
156156

src/MonoTorrent.Client/MonoTorrent/MerkleTree.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public bool TryAppend (int baseLayer, int index, int length, ReadOnlySpan<byte>
9090

9191
Span<byte> computedHash = stackalloc byte[32];
9292
using var hasher = IncrementalHash.CreateHash (HashAlgorithmName.SHA256);
93-
if (!MerkleHash.TryHash (hasher, hashes, baseLayer, proofs, index, length, computedHash, out int written))
93+
if (!MerkleTreeHasher.TryHash (hasher, hashes, baseLayer, proofs, index, length, computedHash, out int written))
9494
return false;
9595
if (!ExpectedRoot.IsEmpty && !computedHash.SequenceEqual (ExpectedRoot.Span))
9696
return false;
@@ -124,7 +124,7 @@ public bool TryVerify ([NotNullWhen (true)] out ReadOnlyMerkleTree? verifiedMerk
124124
if (src.Length % 64 == 32) {
125125
hasher.AppendData (src.Span.Slice (src.Length - 32, 32));
126126
// Math.Pow(2, layer) == 1 << layer
127-
hasher.AppendData (MerkleHash.PaddingHashesByLayer[layer].Span);
127+
hasher.AppendData (MerkleTreeHasher.PaddingHashesByLayer[layer].Span);
128128
if (!hasher.TryGetHashAndReset (dest.Slice (dest.Length - 32, 32).Span, out written) || written != 32)
129129
return false;
130130
}

src/MonoTorrent.Client/MonoTorrent/MerkleHash.cs renamed to src/MonoTorrent.Client/MonoTorrent/MerkleTreeHasher.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434

3535
namespace MonoTorrent
3636
{
37-
static class MerkleHash
37+
static class MerkleTreeHasher
3838
{
3939
/// <summary>
4040
/// Layer 0 is 16kB, Layer 1 is 32kB, etc

src/MonoTorrent.Client/MonoTorrent/ReadOnlyMerkleTree.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public ReadOnlyMemory<byte> GetHash (int layer, int index)
8888
{
8989
var hashes = Layers[layer];
9090
if ((index * 32) >= hashes.Length)
91-
return MerkleHash.PaddingHashesByLayer[layer];
91+
return MerkleTreeHasher.PaddingHashesByLayer[layer];
9292
return hashes.Slice (index * 32, 32);
9393
}
9494

@@ -107,7 +107,7 @@ internal void CopyHashes (int layer, int index, Span<byte> dest)
107107

108108
// Now, copy in the padding hash until the buffer is full.
109109
while (dest.Length > 0) {
110-
MerkleHash.PaddingHashesByLayer[layer].Span.CopyTo (dest);
110+
MerkleTreeHasher.PaddingHashesByLayer[layer].Span.CopyTo (dest);
111111
dest = dest.Slice (32);
112112
}
113113
}

src/MonoTorrent.Client/MonoTorrent/TorrentCreator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ internal async Task<BEncodedDictionary> CreateAsync (string name, ITorrentFileSo
303303
if (merkleLayers.Count > 0) {
304304
var dict = new BEncodedDictionary ();
305305
foreach (var kvp in merkleLayers.Where (t => t.Key.StartPieceIndex != t.Key.EndPieceIndex)) {
306-
var rootHash = MerkleHash.Hash (kvp.Value.Span, BitOps.CeilLog2 (PieceLength / Constants.BlockSize));
306+
var rootHash = MerkleTreeHasher.Hash (kvp.Value.Span, BitOps.CeilLog2 (PieceLength / Constants.BlockSize));
307307
dict[BEncodedString.FromMemory (rootHash)] = BEncodedString.FromMemory (kvp.Value);
308308
}
309309

@@ -337,7 +337,7 @@ void AppendFileTree (ITorrentManagerFile key, ReadOnlyMemory<byte> value, BEncod
337337
fileTree = (BEncodedDictionary) inner;
338338
}
339339
if (value.Length > 32)
340-
value = MerkleHash.Hash (value.Span, BitOps.CeilLog2 (PieceLength / Constants.BlockSize));
340+
value = MerkleTreeHasher.Hash (value.Span, BitOps.CeilLog2 (PieceLength / Constants.BlockSize));
341341

342342
var fileData = new BEncodedDictionary {
343343
{"length", (BEncodedNumber) key.Length },

src/Tests/Tests.MonoTorrent.Client/MonoTorrent/MerkleLayersTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public void NotPieceLayer ()
7474
[Test]
7575
public void ValidLargestLayer ()
7676
{
77-
var paddingHash = MerkleHash.PaddingHashesByLayer[16];
77+
var paddingHash = MerkleTreeHasher.PaddingHashesByLayer[16];
7878

7979
// 3 million 16kB pieces... because why not?
8080
var layers = new MerkleTree (MerkleRoot.FromMemory (paddingHash), 16_384, 1 << 16);

src/Tests/Tests.MonoTorrent.Client/MonoTorrent/MerkleTests.cs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,46 +27,46 @@ ReadOnlyMerkleTree CreateMerkleTree (int pieceLength, MerkleRoot expectedRoot, R
2727
[Test]
2828
public void CreateTree_OneRootHash ([Values (1)] int hashes)
2929
{
30-
var expectedRoot = MerkleRoot.FromMemory (MerkleHash.PaddingHashesByLayer[1]);
31-
var leafHashes = Replicate (MerkleHash.PaddingHashesByLayer[0], hashes);
30+
var expectedRoot = MerkleRoot.FromMemory (MerkleTreeHasher.PaddingHashesByLayer[1]);
31+
var leafHashes = Replicate (MerkleTreeHasher.PaddingHashesByLayer[0], hashes);
3232

3333
Assert.Throws<ArgumentException> (() => CreateMerkleTree (Constants.BlockSize, expectedRoot, leafHashes.Span));
3434
}
3535

3636
[Test]
3737
public void CreateTree_2Hashes ([Values (2)] int hashes)
3838
{
39-
var expectedRoot = MerkleRoot.FromMemory (MerkleHash.PaddingHashesByLayer[BitOps.CeilLog2 (Constants.BlockSize * 2)]);
40-
var leafHashes = Replicate (MerkleHash.PaddingHashesByLayer[BitOps.CeilLog2 (Constants.BlockSize)], hashes);
39+
var expectedRoot = MerkleRoot.FromMemory (MerkleTreeHasher.PaddingHashesByLayer[BitOps.CeilLog2 (Constants.BlockSize * 2)]);
40+
var leafHashes = Replicate (MerkleTreeHasher.PaddingHashesByLayer[BitOps.CeilLog2 (Constants.BlockSize)], hashes);
4141

4242
var layers = CreateMerkleTree (Constants.BlockSize, expectedRoot, leafHashes.Span);
43-
Contains (layers, 0, MerkleHash.PaddingHashesByLayer[BitOps.CeilLog2 (Constants.BlockSize)], 2);
44-
Contains (layers, 1, MerkleHash.PaddingHashesByLayer[BitOps.CeilLog2 (Constants.BlockSize * 2)], 1);
43+
Contains (layers, 0, MerkleTreeHasher.PaddingHashesByLayer[BitOps.CeilLog2 (Constants.BlockSize)], 2);
44+
Contains (layers, 1, MerkleTreeHasher.PaddingHashesByLayer[BitOps.CeilLog2 (Constants.BlockSize * 2)], 1);
4545
}
4646

4747
[Test]
4848
public void CreateTree_4Hashes ([Values (3, 4)] int hashes)
4949
{
50-
var expectedRoot = MerkleRoot.FromMemory (MerkleHash.PaddingHashesByLayer[2]);
51-
var leafHashes = Replicate (MerkleHash.PaddingHashesByLayer[0], hashes);
50+
var expectedRoot = MerkleRoot.FromMemory (MerkleTreeHasher.PaddingHashesByLayer[2]);
51+
var leafHashes = Replicate (MerkleTreeHasher.PaddingHashesByLayer[0], hashes);
5252

5353
var layers = CreateMerkleTree (Constants.BlockSize, expectedRoot, leafHashes.Span);
54-
Contains (layers, 0, MerkleHash.PaddingHashesByLayer[0], 4);
55-
Contains (layers, 1, MerkleHash.PaddingHashesByLayer[1], 2);
56-
Contains (layers, 2, MerkleHash.PaddingHashesByLayer[2], 1);
54+
Contains (layers, 0, MerkleTreeHasher.PaddingHashesByLayer[0], 4);
55+
Contains (layers, 1, MerkleTreeHasher.PaddingHashesByLayer[1], 2);
56+
Contains (layers, 2, MerkleTreeHasher.PaddingHashesByLayer[2], 1);
5757
}
5858

5959
[Test]
6060
public void CreateTree_8Hashes ([Values (5, 6, 7, 8)] int hashes)
6161
{
62-
var expectedRoot = MerkleRoot.FromMemory (MerkleHash.PaddingHashesByLayer[3]);
63-
var leafHashes = Replicate (MerkleHash.PaddingHashesByLayer[0], hashes);
62+
var expectedRoot = MerkleRoot.FromMemory (MerkleTreeHasher.PaddingHashesByLayer[3]);
63+
var leafHashes = Replicate (MerkleTreeHasher.PaddingHashesByLayer[0], hashes);
6464

6565
var layers = CreateMerkleTree (Constants.BlockSize, expectedRoot, leafHashes.Span);
66-
Contains (layers, 0, MerkleHash.PaddingHashesByLayer[0], 8);
67-
Contains (layers, 1, MerkleHash.PaddingHashesByLayer[1], 4);
68-
Contains (layers, 2, MerkleHash.PaddingHashesByLayer[2], 2);
69-
Contains (layers, 3, MerkleHash.PaddingHashesByLayer[3], 1);
66+
Contains (layers, 0, MerkleTreeHasher.PaddingHashesByLayer[0], 8);
67+
Contains (layers, 1, MerkleTreeHasher.PaddingHashesByLayer[1], 4);
68+
Contains (layers, 2, MerkleTreeHasher.PaddingHashesByLayer[2], 2);
69+
Contains (layers, 3, MerkleTreeHasher.PaddingHashesByLayer[3], 1);
7070
}
7171

7272
[Test]

src/Tests/Tests.MonoTorrent.Client/MonoTorrent/PieceHashesTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public void V2Only_WithHugeFiles ()
8282
{
8383
int pieceSize = 16_384;
8484
int pieceCount = 1 << 16;
85-
var paddingHash = MerkleHash.PaddingHashesByLayer[BitOps.CeilLog2 (pieceCount)];
85+
var paddingHash = MerkleTreeHasher.PaddingHashesByLayer[BitOps.CeilLog2 (pieceCount)];
8686

8787
var layers = new MerkleTree (MerkleRoot.FromMemory (paddingHash), pieceSize, pieceCount);
8888
Assert.IsTrue (layers.TryVerify (out ReadOnlyMerkleTree verifiedLayers));
@@ -92,7 +92,7 @@ public void V2Only_WithHugeFiles ()
9292
};
9393

9494
var pieceHashesV2 = new PieceHashesV2 (Constants.BlockSize, files, new Dictionary<MerkleRoot, ReadOnlyMerkleTree> { { verifiedLayers.Root, verifiedLayers } } );
95-
Assert.IsTrue (MerkleHash.PaddingHashesByLayer[0].Span.SequenceEqual(pieceHashesV2.GetHash (pieceCount - 1).V2Hash.Span));
95+
Assert.IsTrue (MerkleTreeHasher.PaddingHashesByLayer[0].Span.SequenceEqual(pieceHashesV2.GetHash (pieceCount - 1).V2Hash.Span));
9696
}
9797
}
9898
}

0 commit comments

Comments
 (0)