@@ -83,7 +83,7 @@ contract ServiceProviderRegistryFullTest is Test {
8383 minProvingPeriodInEpochs: 2880 , // 1 day in epochs (30 second blocks)
8484 location: "North America " ,
8585 paymentTokenAddress: IERC20 (address (0 )), // Payment in FIL
86- ipniPeerId: hex ""
86+ ipniPeerId: ""
8787 });
8888
8989 updatedPDPData = ServiceProviderRegistryStorage.PDPOffering ({
@@ -96,7 +96,7 @@ contract ServiceProviderRegistryFullTest is Test {
9696 minProvingPeriodInEpochs: 1440 , // 12 hours in epochs
9797 location: "Europe " ,
9898 paymentTokenAddress: IERC20 (address (0 )), // Payment in FIL
99- ipniPeerId: hex ""
99+ ipniPeerId: ""
100100 });
101101
102102 // Encode PDP data
@@ -1807,11 +1807,12 @@ contract ServiceProviderRegistryFullTest is Test {
18071807 assertEq (clearedTier, "" , "Tier key should be cleared after update " );
18081808 }
18091809
1810+ // ========== IPNI Peer ID Validation Tests ==========
18101811 // ========== IPNI Peer ID Validation Tests ==========
18111812
18121813 function testRegisterWithEmptyIpniPeerId () public {
18131814 ServiceProviderRegistryStorage.PDPOffering memory validPDP = defaultPDPData;
1814- validPDP.ipniPeerId = hex "" ;
1815+ validPDP.ipniPeerId = "" ;
18151816 bytes memory encodedPDP = abi.encode (validPDP);
18161817 string [] memory emptyKeys = new string [](0 );
18171818 string [] memory emptyValues = new string [](0 );
@@ -1830,14 +1831,13 @@ contract ServiceProviderRegistryFullTest is Test {
18301831
18311832 // Verify it was stored correctly
18321833 (ServiceProviderRegistryStorage.PDPOffering memory stored ,,) = registry.getPDPService (providerId);
1833- assertEq (stored.ipniPeerId.length , 0 , "Empty IPNI peer ID should be stored " );
1834+ assertEq (bytes ( stored.ipniPeerId) .length , 0 , "Empty IPNI peer ID should be stored " );
18341835 }
18351836
18361837 function testRegisterWithMaxLengthIpniPeerId () public {
1837- bytes memory maxPeerId = new bytes (128 );
1838- for (uint256 i = 0 ; i < 128 ; i++ ) {
1839- maxPeerId[i] = 0xFF ;
1840- }
1838+ // Create a 256-character string (max length for CIDv1 base32)
1839+ string memory maxPeerId = "bafzbeiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " ;
1840+ require (bytes (maxPeerId).length == 256 , "Test string should be exactly 256 chars " );
18411841
18421842 ServiceProviderRegistryStorage.PDPOffering memory validPDP = defaultPDPData;
18431843 validPDP.ipniPeerId = maxPeerId;
@@ -1855,19 +1855,18 @@ contract ServiceProviderRegistryFullTest is Test {
18551855 emptyKeys,
18561856 emptyValues
18571857 );
1858- assertEq (providerId, 1 , "Should succeed with 128-byte ipniPeerId " );
1858+ assertEq (providerId, 1 , "Should succeed with 256-char ipniPeerId " );
18591859
18601860 // Verify it was stored correctly
18611861 (ServiceProviderRegistryStorage.PDPOffering memory stored ,,) = registry.getPDPService (providerId);
1862- assertEq (stored.ipniPeerId.length , 128 , "128-byte IPNI peer ID should be stored " );
1862+ assertEq (bytes ( stored.ipniPeerId) .length , 256 , "256-char IPNI peer ID should be stored " );
18631863 assertEq (stored.ipniPeerId, maxPeerId, "IPNI peer ID should match " );
18641864 }
18651865
18661866 function testRegisterWithTooLongIpniPeerId () public {
1867- bytes memory longPeerId = new bytes (129 );
1868- for (uint256 i = 0 ; i < 129 ; i++ ) {
1869- longPeerId[i] = 0xFF ;
1870- }
1867+ // Create a 257-character string (exceeds max)
1868+ string memory longPeerId = "bafzbeiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " ;
1869+ require (bytes (longPeerId).length == 257 , "Test string should be exactly 257 chars " );
18711870
18721871 ServiceProviderRegistryStorage.PDPOffering memory invalidPDP = defaultPDPData;
18731872 invalidPDP.ipniPeerId = longPeerId;
@@ -1889,9 +1888,8 @@ contract ServiceProviderRegistryFullTest is Test {
18891888 }
18901889
18911890 function testRegisterWithRealisticIpniPeerId () public {
1892- // Typical libp2p peer ID is ~38 bytes (multihash of public key)
1893- // Format: 0x1220<32-byte sha256 hash> for a total of 34 bytes
1894- bytes memory realisticPeerId = hex "12205f8bb7e5e0e8e5f8e5e0e8e5f8e5e0e8e5f8e5e0e8e5f8e5e0e8e5f8abcdef01 " ;
1891+ // Typical CIDv0 peer ID (base58btc) - 46 characters
1892+ string memory realisticPeerId = "QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N " ;
18951893
18961894 ServiceProviderRegistryStorage.PDPOffering memory validPDP = defaultPDPData;
18971895 validPDP.ipniPeerId = realisticPeerId;
@@ -1913,7 +1911,7 @@ contract ServiceProviderRegistryFullTest is Test {
19131911 // Verify it was stored correctly
19141912 (ServiceProviderRegistryStorage.PDPOffering memory stored ,,) = registry.getPDPService (providerId);
19151913 assertEq (stored.ipniPeerId, realisticPeerId, "IPNI peer ID should be stored correctly " );
1916- assertEq (stored.ipniPeerId.length , 34 , "Realistic IPNI peer ID should be 34 bytes " );
1914+ assertEq (bytes ( stored.ipniPeerId) .length , 46 , "Realistic IPNI peer ID should be 46 chars " );
19171915 }
19181916
19191917 function testUpdateIpniPeerId () public {
@@ -1934,10 +1932,10 @@ contract ServiceProviderRegistryFullTest is Test {
19341932
19351933 // Verify initial state
19361934 (ServiceProviderRegistryStorage.PDPOffering memory initialStored ,,) = registry.getPDPService (providerId);
1937- assertEq (initialStored.ipniPeerId.length , 0 , "Initial IPNI peer ID should be empty " );
1935+ assertEq (bytes ( initialStored.ipniPeerId) .length , 0 , "Initial IPNI peer ID should be empty " );
19381936
1939- // Update with a peer ID
1940- bytes memory newPeerId = hex " 12205f8bb7e5e0e8e5f8e5e0e8e5f8e5e0e8e5f8e5e0e8e5f8e5e0e8e5f8abcdef01 " ;
1937+ // Update with a peer ID (CIDv1 base32)
1938+ string memory newPeerId = " bafzbeic5w7yp4ha4g5dppc7wf4ha4g5dppc7wf4ha4g5d " ;
19411939 ServiceProviderRegistryStorage.PDPOffering memory updatedData = updatedPDPData;
19421940 updatedData.ipniPeerId = newPeerId;
19431941 bytes memory encodedUpdatedData = abi.encode (updatedData);
@@ -1948,7 +1946,7 @@ contract ServiceProviderRegistryFullTest is Test {
19481946 // Verify update
19491947 (ServiceProviderRegistryStorage.PDPOffering memory updatedStored ,,) = registry.getPDPService (providerId);
19501948 assertEq (updatedStored.ipniPeerId, newPeerId, "IPNI peer ID should be updated " );
1951- assertEq (updatedStored.ipniPeerId.length , 34 , "Updated IPNI peer ID should be 34 bytes " );
1949+ assertEq (bytes ( updatedStored.ipniPeerId) .length , 46 , "Updated IPNI peer ID should be 46 chars " );
19521950 }
19531951
19541952 function testUpdateWithTooLongIpniPeerId () public {
@@ -1967,11 +1965,8 @@ contract ServiceProviderRegistryFullTest is Test {
19671965 emptyValues
19681966 );
19691967
1970- // Try to update with too long peer ID
1971- bytes memory longPeerId = new bytes (129 );
1972- for (uint256 i = 0 ; i < 129 ; i++ ) {
1973- longPeerId[i] = 0xAB ;
1974- }
1968+ // Try to update with too long peer ID (257 chars)
1969+ string memory longPeerId = "bafzbeiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " ;
19751970
19761971 ServiceProviderRegistryStorage.PDPOffering memory invalidData = updatedPDPData;
19771972 invalidData.ipniPeerId = longPeerId;
0 commit comments