From 78044d7356bfd8a33a68f92385bac473234fe5f5 Mon Sep 17 00:00:00 2001 From: pauldelucia Date: Fri, 23 Aug 2024 18:01:06 +0700 Subject: [PATCH 1/4] feat: remove getIdentityIdsByKeyHashes and edit getIdentitiesByKeyHashes --- .../Networking/DSDAPIPlatformNetworkService.m | 87 ++++++++++++------- .../DSDAPIPlatformNetworkServiceProtocol.h | 26 ++---- 2 files changed, 62 insertions(+), 51 deletions(-) diff --git a/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkService.m b/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkService.m index eb061c47b..da679a3e6 100644 --- a/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkService.m +++ b/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkService.m @@ -450,27 +450,6 @@ - (void)loadBloomFilter:(NSString *)filter #pragma mark Layer 2 -- (id)fetchIdentityIdsByKeyHashes:(NSArray *)keyHashesArray - completionQueue:(dispatch_queue_t)completionQueue - success:(void (^)(NSArray *identityIds))success - failure:(void (^)(NSError *error))failure { - NSParameterAssert(keyHashesArray); - NSParameterAssert(completionQueue); - DSPlatformRequestLog(@"fetchIdentityIdsByKeyHashes %@", keyHashesArray); - GetIdentityIdsByPublicKeyHashesRequest *getIdentityIdsByPublicKeyHashesRequest = [[GetIdentityIdsByPublicKeyHashesRequest alloc] init]; - getIdentityIdsByPublicKeyHashesRequest.publicKeyHashesArray = [keyHashesArray mutableCopy]; - getIdentityIdsByPublicKeyHashesRequest.prove = DSPROVE_PLATFORM; - DSDAPIGRPCResponseHandler *responseHandler = [[DSDAPIGRPCResponseHandler alloc] initForGetIdentityIDsByPublicKeyHashesRequest:keyHashesArray withChain:self.chain requireProof:DSPROVE_PLATFORM]; - responseHandler.host = [NSString stringWithFormat:@"%@:%d", self.ipAddress, self.chain.standardDapiGRPCPort]; - responseHandler.dispatchQueue = self.grpcDispatchQueue; - responseHandler.completionQueue = completionQueue; - responseHandler.successHandler = success; - responseHandler.errorHandler = failure; - GRPCUnaryProtoCall *call = [self.gRPCClient getIdentityIdsByPublicKeyHashesWithMessage:getIdentityIdsByPublicKeyHashesRequest responseHandler:responseHandler callOptions:nil]; - [call start]; - return (id)call; -} - - (id)fetchIdentitiesByKeyHashes:(NSArray *)keyHashesArray completionQueue:(dispatch_queue_t)completionQueue success:(void (^)(NSArray *identityDictionaries))success @@ -478,18 +457,60 @@ - (void)loadBloomFilter:(NSString *)filter NSParameterAssert(keyHashesArray); NSParameterAssert(completionQueue); DSPlatformRequestLog(@"fetchIdentitiesByKeyHashes %@", keyHashesArray); - GetIdentitiesByPublicKeyHashesRequest *getIdentitiesByPublicKeyHashesRequest = [[GetIdentitiesByPublicKeyHashesRequest alloc] init]; - getIdentitiesByPublicKeyHashesRequest.publicKeyHashesArray = [keyHashesArray mutableCopy]; - getIdentitiesByPublicKeyHashesRequest.prove = DSPROVE_PLATFORM; - DSDAPIGRPCResponseHandler *responseHandler = [[DSDAPIGRPCResponseHandler alloc] initForGetIdentitiesByPublicKeyHashesRequest:keyHashesArray withChain:self.chain requireProof:DSPROVE_PLATFORM]; - responseHandler.host = [NSString stringWithFormat:@"%@:%d", self.ipAddress, self.chain.standardDapiGRPCPort]; - responseHandler.dispatchQueue = self.grpcDispatchQueue; - responseHandler.completionQueue = completionQueue; - responseHandler.successHandler = success; - responseHandler.errorHandler = failure; - GRPCUnaryProtoCall *call = [self.gRPCClient getIdentitiesByPublicKeyHashesWithMessage:getIdentitiesByPublicKeyHashesRequest responseHandler:responseHandler callOptions:nil]; - [call start]; - return (id)call; + + NSMutableArray *identityDictionaries = [NSMutableArray array]; + __block NSUInteger remainingRequests = keyHashesArray.count; + __block NSError *lastError = nil; + + for (NSData *keyHash in keyHashesArray) { + GetIdentityByPublicKeyHashRequest *getIdentityByPublicKeyHashRequest = [[GetIdentityByPublicKeyHashRequest alloc] init]; + getIdentityByPublicKeyHashRequest.publicKeyHash = keyHash; + getIdentityByPublicKeyHashRequest.prove = DSPROVE_PLATFORM; + + DSDAPIGRPCResponseHandler *responseHandler = [[DSDAPIGRPCResponseHandler alloc] initForGetIdentitiesByPublicKeyHashesRequest:@[keyHash] withChain:self.chain requireProof:DSPROVE_PLATFORM]; + responseHandler.host = [NSString stringWithFormat:@"%@:%d", self.ipAddress, self.chain.standardDapiGRPCPort]; + responseHandler.dispatchQueue = self.grpcDispatchQueue; + responseHandler.completionQueue = completionQueue; + + responseHandler.successHandler = ^(NSDictionary *responseDictionary) { + if (responseDictionary) { + @synchronized(identityDictionaries) { + [identityDictionaries addObject:responseDictionary]; + } + } + @synchronized(self) { + remainingRequests--; + if (remainingRequests == 0) { + if (lastError) { + if (failure) { + failure(lastError); + } + } else { + if (success) { + success([identityDictionaries copy]); + } + } + } + } + }; + + responseHandler.errorHandler = ^(NSError *error) { + lastError = error; + @synchronized(self) { + remainingRequests--; + if (remainingRequests == 0) { + if (failure) { + failure(error); + } + } + } + }; + + GRPCUnaryProtoCall *call = [self.gRPCClient getIdentityByPublicKeyHashWithMessage:getIdentityByPublicKeyHashRequest responseHandler:responseHandler callOptions:nil]; + [call start]; + } + + return nil; } - (id)fetchContractForId:(NSData *)contractId diff --git a/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkServiceProtocol.h b/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkServiceProtocol.h index ae5dc9118..ad67d2e08 100644 --- a/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkServiceProtocol.h +++ b/DashSync/shared/Models/DAPI/Networking/DSDAPIPlatformNetworkServiceProtocol.h @@ -487,31 +487,21 @@ Get a list of users after matching search criteria failure:(void (^)(NSError *error))failure; /** -Get a list of identities knowing only keys they possess +Get a list of identities corresponding to the provided key hashes. -@param keyHashesArray An array of hashes of keys -@param completionQueue The queue in which to return the result on -@param success A block object to be executed when the request operation finishes successfully -@param failure A block object to be executed when the request operation finishes unsuccessfully +This method makes individual requests for each key hash in the array and returns a list of identity dictionaries upon successful completion. If any request fails, the failure block is called. + +@param keyHashesArray An array of hashes of keys for which to fetch identities. +@param completionQueue The queue on which to execute the success or failure block. +@param success A block object to be executed when all requests finish successfully, providing an array of identity dictionaries. +@param failure A block object to be executed if any request fails, providing the error encountered. +@return Returns an object conforming to `DSDAPINetworkServiceRequest`, or `nil` if no request is made. */ - (id)fetchIdentitiesByKeyHashes:(NSArray *)keyHashesArray completionQueue:(dispatch_queue_t)completionQueue success:(void (^)(NSArray *identityDictionaries))success failure:(void (^)(NSError *error))failure; -/** -Get a list of identity Ids knowing only keys they possess - -@param keyHashesArray An array of hashes of keys -@param completionQueue The queue in which to return the result on -@param success A block object to be executed when the request operation finishes successfully -@param failure A block object to be executed when the request operation finishes unsuccessfully -*/ -- (id)fetchIdentityIdsByKeyHashes:(NSArray *)keyHashesArray - completionQueue:(dispatch_queue_t)completionQueue - success:(void (^)(NSArray *identityIds))success - failure:(void (^)(NSError *error))failure; - @end NS_ASSUME_NONNULL_END From b2930481dda93802842c71fee419e88312098779 Mon Sep 17 00:00:00 2001 From: pauldelucia Date: Sat, 24 Aug 2024 19:33:44 +0700 Subject: [PATCH 2/4] fix: address dpns contract changes --- .../Models/DAPI/DSPlatformDocumentsRequest.m | 8 +- .../Models/Identity/DSBlockchainIdentity.m | 2 +- DashSync/shared/dpns-contract.json | 97 ++++++++++++------- 3 files changed, 67 insertions(+), 40 deletions(-) diff --git a/DashSync/shared/Models/DAPI/DSPlatformDocumentsRequest.m b/DashSync/shared/Models/DAPI/DSPlatformDocumentsRequest.m index 1fde02804..5019d61fc 100644 --- a/DashSync/shared/Models/DAPI/DSPlatformDocumentsRequest.m +++ b/DashSync/shared/Models/DAPI/DSPlatformDocumentsRequest.m @@ -57,7 +57,7 @@ + (instancetype)dpnsRequestForUsername:(NSString *)username inDomain:(NSString * + (instancetype)dpnsRequestForUserId:(NSData *)userId { DSPlatformDocumentsRequest *platformDocumentsRequest = [[DSPlatformDocumentsRequest alloc] init]; - platformDocumentsRequest.pathPredicate = [NSPredicate predicateWithFormat:@"records.dashUniqueIdentityId == %@", userId]; + platformDocumentsRequest.pathPredicate = [NSPredicate predicateWithFormat:@"records.identity == %@", userId]; // why not path predicate and then predicate? platformDocumentsRequest.startAt = nil; platformDocumentsRequest.limit = 100; platformDocumentsRequest.queryType = DSPlatformQueryType_RangeOverIndex; @@ -115,7 +115,7 @@ + (instancetype)dashpayRequestForContactRequestsForSendingUserId:(NSData *)userI platformDocumentsRequest.startAtIncluded = false; platformDocumentsRequest.limit = 100; platformDocumentsRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"$createdAt" ascending:YES]]; - platformDocumentsRequest.queryType = DSPlatformQueryType_RangeOverValue; + platformDocumentsRequest.queryType = DSPlatformQueryType_RangeOverValue; // why not over index? platformDocumentsRequest.type = DSPlatformDocumentType_Document; platformDocumentsRequest.tableName = @"contactRequest"; platformDocumentsRequest.prove = DSPROVE_PLATFORM_SINDEXES; @@ -131,7 +131,7 @@ + (instancetype)dashpayRequestForContactRequestsForRecipientUserId:(NSData *)use platformDocumentsRequest.startAtIncluded = false; platformDocumentsRequest.limit = 100; platformDocumentsRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"$createdAt" ascending:YES]]; - platformDocumentsRequest.queryType = DSPlatformQueryType_RangeOverValue; + platformDocumentsRequest.queryType = DSPlatformQueryType_RangeOverValue; // why not over index? platformDocumentsRequest.type = DSPlatformDocumentType_Document; platformDocumentsRequest.tableName = @"contactRequest"; platformDocumentsRequest.prove = DSPROVE_PLATFORM_SINDEXES; @@ -140,7 +140,7 @@ + (instancetype)dashpayRequestForContactRequestsForRecipientUserId:(NSData *)use + (instancetype)dashpayRequestForContactRequestForSendingUserId:(NSData *)userId toRecipientUserId:(NSData *)toUserId { DSPlatformDocumentsRequest *platformDocumentsRequest = [[DSPlatformDocumentsRequest alloc] init]; - platformDocumentsRequest.pathPredicate = [NSPredicate predicateWithFormat:@"%K == %@ && toUserId == %@", @"$ownerId", userId, toUserId]; + platformDocumentsRequest.pathPredicate = [NSPredicate predicateWithFormat:@"%K == %@ && toUserId == %@", @"$ownerId", userId, toUserId]; // why not path predicate and predicate? platformDocumentsRequest.startAt = nil; platformDocumentsRequest.limit = 100; platformDocumentsRequest.type = DSPlatformDocumentType_Document; diff --git a/DashSync/shared/Models/Identity/DSBlockchainIdentity.m b/DashSync/shared/Models/Identity/DSBlockchainIdentity.m index f62ffd288..bfc7b862f 100644 --- a/DashSync/shared/Models/Identity/DSBlockchainIdentity.m +++ b/DashSync/shared/Models/Identity/DSBlockchainIdentity.m @@ -2197,7 +2197,7 @@ - (NSString *)dashpayDomainName { @"normalizedLabel": [username lowercaseString], @"normalizedParentDomainName": domain, @"preorderSalt": [self.usernameSalts objectForKey:usernameFullPath], - @"records": @{@"dashUniqueIdentityId": uint256_data(self.uniqueID)}, + @"records": @{@"identity": uint256_data(self.uniqueID)}, @"subdomainRules": @{@"allowSubdomains": @NO} }; DPDocument *document = [self.dpnsDocumentFactory documentOnTable:@"domain" withDataDictionary:dataDictionary usingEntropy:entropyData error:error]; diff --git a/DashSync/shared/dpns-contract.json b/DashSync/shared/dpns-contract.json index 81692dd88..b620bb79c 100644 --- a/DashSync/shared/dpns-contract.json +++ b/DashSync/shared/dpns-contract.json @@ -1,8 +1,14 @@ { "documents": { "domain": { + "documentsMutable": false, + "canBeDeleted": true, + "transferable": 1, + "tradeMode": 1, + "type": "object", "indices": [ { + "name": "parentNameAndLabel", "properties": [ { "normalizedParentDomainName": "asc" @@ -11,20 +17,24 @@ "normalizedLabel": "asc" } ], - "unique": true + "unique": true, + "contested": { + "fieldMatches": [ + { + "field": "normalizedLabel", + "regexPattern": "^[a-zA-Z01-]{3,19}$" + } + ], + "resolution": 0, + "description": "If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name" + } }, { + "name": "identityId", + "nullSearchable": false, "properties": [ { - "records.dashUniqueIdentityId": "asc" - } - ], - "unique": true - }, - { - "properties": [ - { - "records.dashAliasIdentityId": "asc" + "records.identity": "asc" } ] } @@ -32,58 +42,60 @@ "properties": { "label": { "type": "string", - "pattern": "^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])$", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$", "minLength": 3, "maxLength": 63, + "position": 0, "description": "Domain label. e.g. 'Bob'." }, "normalizedLabel": { "type": "string", - "pattern": "^((?!-)[a-z0-9-]{0,62}[a-z0-9])$", + "pattern": "^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$", "maxLength": 63, - "description": "Domain label in lowercase for case-insensitive uniqueness validation. e.g. 'bob'", - "$comment": "Must be equal to the label in lowercase. This property will be deprecated due to case insensitive indices" + "position": 1, + "description": "Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'", + "$comment": "Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"." + }, + "parentDomainName": { + "type": "string", + "pattern": "^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$", + "minLength": 0, + "maxLength": 63, + "position": 2, + "description": "A full parent domain name. e.g. 'dash'." }, "normalizedParentDomainName": { "type": "string", - "pattern": "^$|^((?!-)[a-z0-9-\\.]{0,189}[a-z0-9])$", + "pattern": "^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$", "minLength": 0, - "maxLength": 190, - "description": "A full parent domain name in lowercase for case-insensitive uniqueness validation. e.g. 'dash'", - "$comment": "Must either be equal to an existing domain or empty to create a top level domain. Only the data contract owner can create top level domains." + "maxLength": 63, + "position": 3, + "description": "A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'", + "$comment": "Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains." }, "preorderSalt": { "type": "array", "byteArray": true, "minItems": 32, "maxItems": 32, + "position": 4, "description": "Salt used in the preorder document" }, "records": { "type": "object", "properties": { - "dashUniqueIdentityId": { - "type": "array", - "byteArray": true, - "minItems": 32, - "maxItems": 32, - "contentMediaType": "application/x.dash.dpp.identifier", - "description": "Identity ID to be used to create the primary name the Identity", - "$comment": "Must be equal to the document owner" - }, - "dashAliasIdentityId": { + "identity": { "type": "array", "byteArray": true, "minItems": 32, "maxItems": 32, + "position": 1, "contentMediaType": "application/x.dash.dpp.identifier", - "description": "Identity ID to be used to create alias names for the Identity", - "$comment": "Must be equal to the document owner" + "description": "Identifier name record that refers to an Identity" } }, - "$comment": "Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`", "minProperties": 1, - "maxProperties": 1, + "position": 5, "additionalProperties": false }, "subdomainRules": { @@ -92,15 +104,22 @@ "allowSubdomains": { "type": "boolean", "description": "This option defines who can create subdomains: true - anyone; false - only the domain owner", - "$comment": "Only the domain owner is allowed to create subdomains for non top-level domains" + "$comment": "Only the domain owner is allowed to create subdomains for non top-level domains", + "position": 0 } }, + "position": 6, "description": "Subdomain rules allow domain owners to define rules for subdomains", "additionalProperties": false, - "required": ["allowSubdomains"] + "required": [ + "allowSubdomains" + ] } }, "required": [ + "$createdAt", + "$updatedAt", + "$transferredAt", "label", "normalizedLabel", "normalizedParentDomainName", @@ -108,12 +127,19 @@ "records", "subdomainRules" ], + "transient": [ + "preorderSalt" + ], "additionalProperties": false, "$comment": "In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted" }, "preorder": { + "documentsMutable": false, + "canBeDeleted": true, + "type": "object", "indices": [ { + "name": "saltedHash", "properties": [ { "saltedDomainHash": "asc" @@ -128,6 +154,7 @@ "byteArray": true, "minItems": 32, "maxItems": 32, + "position": 0, "description": "Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name" } }, @@ -138,4 +165,4 @@ "$comment": "Preorder documents are immutable: modification and deletion are restricted" } } -} +} \ No newline at end of file From 76d6899602043ae00b25348e26f4dae5e42d31c8 Mon Sep 17 00:00:00 2001 From: pauldelucia Date: Sat, 24 Aug 2024 19:38:57 +0700 Subject: [PATCH 3/4] fix: change misspelling serivce to service --- .../Models/Managers/Chain Managers/DSMasternodeManager.m | 6 +++--- .../shared/Models/Masternode/DSMasternodeListDiffService.m | 2 +- DashSync/shared/Models/Masternode/DSMasternodeListService.h | 6 +++--- DashSync/shared/Models/Masternode/DSMasternodeListService.m | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/DashSync/shared/Models/Managers/Chain Managers/DSMasternodeManager.m b/DashSync/shared/Models/Managers/Chain Managers/DSMasternodeManager.m index 92cf5bd40..d63a89b47 100644 --- a/DashSync/shared/Models/Managers/Chain Managers/DSMasternodeManager.m +++ b/DashSync/shared/Models/Managers/Chain Managers/DSMasternodeManager.m @@ -104,15 +104,15 @@ - (instancetype)initWithChain:(DSChain *)chain { #pragma mark - DSMasternodeListServiceDelegate -- (DSMasternodeList *__nullable)masternodeListSerivceDidRequestFileFromBlockHash:(DSMasternodeListService *)service blockHash:(UInt256)blockHash { +- (DSMasternodeList *__nullable)masternodeListServiceDidRequestFileFromBlockHash:(DSMasternodeListService *)service blockHash:(UInt256)blockHash { return [self processRequestFromFileForBlockHash:blockHash]; } -- (void)masternodeListSerivceExceededMaxFailuresForMasternodeList:(DSMasternodeListService *)service blockHash:(UInt256)blockHash { +- (void)masternodeListServiceExceededMaxFailuresForMasternodeList:(DSMasternodeListService *)service blockHash:(UInt256)blockHash { [self removeOutdatedMasternodeListsBeforeBlockHash:blockHash]; } -- (void)masternodeListSerivceEmptiedRetrievalQueue:(DSMasternodeListService *)service { +- (void)masternodeListServiceEmptiedRetrievalQueue:(DSMasternodeListService *)service { if (![self.masternodeListDiffService retrievalQueueCount]) { if (![self.quorumRotationService retrievalQueueCount]) [self removeOutdatedMasternodeListsBeforeBlockHash:self.store.lastQueriedBlockHash]; diff --git a/DashSync/shared/Models/Masternode/DSMasternodeListDiffService.m b/DashSync/shared/Models/Masternode/DSMasternodeListDiffService.m index 8bb336468..d4cc93789 100644 --- a/DashSync/shared/Models/Masternode/DSMasternodeListDiffService.m +++ b/DashSync/shared/Models/Masternode/DSMasternodeListDiffService.m @@ -30,7 +30,7 @@ - (void)composeMasternodeListRequest:(NSOrderedSet *)list { //there is the rare possibility we have the masternode list as a checkpoint, so lets first try that NSUInteger pos = [list indexOfObject:blockHashData]; UInt256 blockHash = blockHashData.UInt256; - DSMasternodeList *masternodeList = [self.delegate masternodeListSerivceDidRequestFileFromBlockHash:self blockHash:blockHash]; + DSMasternodeList *masternodeList = [self.delegate masternodeListServiceDidRequestFileFromBlockHash:self blockHash:blockHash]; if (masternodeList) { [self removeFromRetrievalQueue:blockHashData]; [self checkWaitingForQuorums]; diff --git a/DashSync/shared/Models/Masternode/DSMasternodeListService.h b/DashSync/shared/Models/Masternode/DSMasternodeListService.h index ae1c225f8..bb7c4de38 100644 --- a/DashSync/shared/Models/Masternode/DSMasternodeListService.h +++ b/DashSync/shared/Models/Masternode/DSMasternodeListService.h @@ -39,9 +39,9 @@ typedef NS_ENUM(NSUInteger, DSMasternodeListRequestMode) { @protocol DSMasternodeListServiceDelegate -- (DSMasternodeList *__nullable)masternodeListSerivceDidRequestFileFromBlockHash:(DSMasternodeListService *)service blockHash:(UInt256)blockHash; -- (void)masternodeListSerivceExceededMaxFailuresForMasternodeList:(DSMasternodeListService *)service blockHash:(UInt256)blockHash; -- (void)masternodeListSerivceEmptiedRetrievalQueue:(DSMasternodeListService *)service; +- (DSMasternodeList *__nullable)masternodeListServiceDidRequestFileFromBlockHash:(DSMasternodeListService *)service blockHash:(UInt256)blockHash; +- (void)masternodeListServiceExceededMaxFailuresForMasternodeList:(DSMasternodeListService *)service blockHash:(UInt256)blockHash; +- (void)masternodeListServiceEmptiedRetrievalQueue:(DSMasternodeListService *)service; @end diff --git a/DashSync/shared/Models/Masternode/DSMasternodeListService.m b/DashSync/shared/Models/Masternode/DSMasternodeListService.m index 3c8c15700..7c049949c 100644 --- a/DashSync/shared/Models/Masternode/DSMasternodeListService.m +++ b/DashSync/shared/Models/Masternode/DSMasternodeListService.m @@ -312,7 +312,7 @@ - (void)updateMasternodeRetrievalQueue { - (void)fetchMasternodeListsToRetrieve:(void (^)(NSOrderedSet *listsToRetrieve))completion { if (![self retrievalQueueCount]) { DSLog(@"[%@] No masternode lists in retrieval: %@", self.chain.name, self); - [self.delegate masternodeListSerivceEmptiedRetrievalQueue:self]; + [self.delegate masternodeListServiceEmptiedRetrievalQueue:self]; return; } if ([self.requestsInRetrieval count]) { @@ -385,7 +385,7 @@ - (void)issueWithMasternodeListFromPeer:(DSPeer *)peer { //no need to remove local masternodes [self cleanListsRetrievalQueue]; [self.store deleteAllOnChain]; - [self.delegate masternodeListSerivceExceededMaxFailuresForMasternodeList:self blockHash:self.currentMasternodeList.blockHash]; + [self.delegate masternodeListServiceExceededMaxFailuresForMasternodeList:self blockHash:self.currentMasternodeList.blockHash]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:CHAIN_FAULTY_DML_MASTERNODE_PEERS]; [self getRecentMasternodeList]; } else { From 545c440130ca0db9928d002315c4d53f83a23793 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Mon, 26 Aug 2024 17:28:04 +0700 Subject: [PATCH 4/4] removed DAPIGRPC --- DashSync.podspec | 1 - Example/DashSync.xcodeproj/project.pbxproj | 10 - Example/Podfile.lock | 667 +-------------------- Gemfile | 2 +- 4 files changed, 2 insertions(+), 678 deletions(-) diff --git a/DashSync.podspec b/DashSync.podspec index 98e8e450b..1dced5d7e 100644 --- a/DashSync.podspec +++ b/DashSync.podspec @@ -38,7 +38,6 @@ Pod::Spec.new do |s| s.dependency 'CocoaLumberjack', '3.7.2' s.ios.dependency 'DWAlertController', '0.2.1' s.dependency 'DSDynamicOptions', '0.1.2' - s.dependency 'DAPI-GRPC', '0.22.0-dev.8' s.dependency 'TinyCborObjc', '0.4.6' s.prefix_header_contents = '#import "DSEnvironment.h"' diff --git a/Example/DashSync.xcodeproj/project.pbxproj b/Example/DashSync.xcodeproj/project.pbxproj index c38885558..b87d8312c 100644 --- a/Example/DashSync.xcodeproj/project.pbxproj +++ b/Example/DashSync.xcodeproj/project.pbxproj @@ -2786,14 +2786,10 @@ inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-NetworkInfo/Pods-NetworkInfo-resources.sh", "${PODS_CONFIGURATION_BUILD_DIR}/DashSync-macOS/DashSync.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf-macOS/Protobuf_Privacy.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/gRPC-macOS/gRPCCertificates.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/DashSync.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Protobuf_Privacy.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/gRPCCertificates.bundle", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -2848,14 +2844,10 @@ inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-DashSync-DashSync_Example/Pods-DashSync-DashSync_Example-resources.sh", "${PODS_CONFIGURATION_BUILD_DIR}/DashSync-iOS/DashSync.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf-iOS/Protobuf_Privacy.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/gRPC-iOS/gRPCCertificates.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/DashSync.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Protobuf_Privacy.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/gRPCCertificates.bundle", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -3235,7 +3227,6 @@ "-l\"BoringSSL-GRPC-iOS\"", "-l\"CocoaImageHashing-iOS\"", "-l\"CocoaLumberjack-iOS\"", - "-l\"DAPI-GRPC-iOS\"", "-l\"DSDynamicOptions-iOS\"", "-l\"DWAlertController\"", "-l\"DashSync-iOS\"", @@ -3295,7 +3286,6 @@ "-l\"BoringSSL-GRPC-iOS\"", "-l\"CocoaImageHashing-iOS\"", "-l\"CocoaLumberjack-iOS\"", - "-l\"DAPI-GRPC-iOS\"", "-l\"DSDynamicOptions-iOS\"", "-l\"DWAlertController\"", "-l\"DashSync-iOS\"", diff --git a/Example/Podfile.lock b/Example/Podfile.lock index b0fb2e24d..27b0a3114 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,663 +1,18 @@ PODS: - - "!ProtoCompiler (3.21.5)": - - Protobuf (~> 3.0) - - "!ProtoCompiler-gRPCPlugin (1.49.0)": - - "!ProtoCompiler (= 3.21.5)" - - gRPC-ProtoRPC (= 1.49.0) - - abseil/algorithm/algorithm (1.20220623.0): - - abseil/base/config - - abseil/algorithm/container (1.20220623.0): - - abseil/algorithm/algorithm - - abseil/base/core_headers - - abseil/meta/type_traits - - abseil/base/atomic_hook (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/base/base (1.20220623.0): - - abseil/base/atomic_hook - - abseil/base/base_internal - - abseil/base/config - - abseil/base/core_headers - - abseil/base/dynamic_annotations - - abseil/base/log_severity - - abseil/base/raw_logging_internal - - abseil/base/spinlock_wait - - abseil/meta/type_traits - - abseil/base/base_internal (1.20220623.0): - - abseil/base/config - - abseil/meta/type_traits - - abseil/base/config (1.20220623.0) - - abseil/base/core_headers (1.20220623.0): - - abseil/base/config - - abseil/base/dynamic_annotations (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/base/endian (1.20220623.0): - - abseil/base/base - - abseil/base/config - - abseil/base/core_headers - - abseil/base/errno_saver (1.20220623.0): - - abseil/base/config - - abseil/base/fast_type_id (1.20220623.0): - - abseil/base/config - - abseil/base/log_severity (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/base/malloc_internal (1.20220623.0): - - abseil/base/base - - abseil/base/base_internal - - abseil/base/config - - abseil/base/core_headers - - abseil/base/dynamic_annotations - - abseil/base/raw_logging_internal - - abseil/base/prefetch (1.20220623.0): - - abseil/base/config - - abseil/base/raw_logging_internal (1.20220623.0): - - abseil/base/atomic_hook - - abseil/base/config - - abseil/base/core_headers - - abseil/base/errno_saver - - abseil/base/log_severity - - abseil/base/spinlock_wait (1.20220623.0): - - abseil/base/base_internal - - abseil/base/core_headers - - abseil/base/errno_saver - - abseil/base/strerror (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/base/errno_saver - - abseil/base/throw_delegate (1.20220623.0): - - abseil/base/config - - abseil/base/raw_logging_internal - - abseil/container/common (1.20220623.0): - - abseil/meta/type_traits - - abseil/types/optional - - abseil/container/compressed_tuple (1.20220623.0): - - abseil/utility/utility - - abseil/container/container_memory (1.20220623.0): - - abseil/base/config - - abseil/memory/memory - - abseil/meta/type_traits - - abseil/utility/utility - - abseil/container/fixed_array (1.20220623.0): - - abseil/algorithm/algorithm - - abseil/base/config - - abseil/base/core_headers - - abseil/base/dynamic_annotations - - abseil/base/throw_delegate - - abseil/container/compressed_tuple - - abseil/memory/memory - - abseil/container/flat_hash_map (1.20220623.0): - - abseil/algorithm/container - - abseil/base/core_headers - - abseil/container/container_memory - - abseil/container/hash_function_defaults - - abseil/container/raw_hash_map - - abseil/memory/memory - - abseil/container/flat_hash_set (1.20220623.0): - - abseil/algorithm/container - - abseil/base/core_headers - - abseil/container/container_memory - - abseil/container/hash_function_defaults - - abseil/container/raw_hash_set - - abseil/memory/memory - - abseil/container/hash_function_defaults (1.20220623.0): - - abseil/base/config - - abseil/hash/hash - - abseil/strings/cord - - abseil/strings/strings - - abseil/container/hash_policy_traits (1.20220623.0): - - abseil/meta/type_traits - - abseil/container/hashtable_debug_hooks (1.20220623.0): - - abseil/base/config - - abseil/container/hashtablez_sampler (1.20220623.0): - - abseil/base/base - - abseil/base/config - - abseil/base/core_headers - - abseil/debugging/stacktrace - - abseil/memory/memory - - abseil/profiling/exponential_biased - - abseil/profiling/sample_recorder - - abseil/synchronization/synchronization - - abseil/utility/utility - - abseil/container/inlined_vector (1.20220623.0): - - abseil/algorithm/algorithm - - abseil/base/core_headers - - abseil/base/throw_delegate - - abseil/container/inlined_vector_internal - - abseil/memory/memory - - abseil/container/inlined_vector_internal (1.20220623.0): - - abseil/base/core_headers - - abseil/container/compressed_tuple - - abseil/memory/memory - - abseil/meta/type_traits - - abseil/types/span - - abseil/container/layout (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/meta/type_traits - - abseil/strings/strings - - abseil/types/span - - abseil/utility/utility - - abseil/container/raw_hash_map (1.20220623.0): - - abseil/base/throw_delegate - - abseil/container/container_memory - - abseil/container/raw_hash_set - - abseil/container/raw_hash_set (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/base/endian - - abseil/base/prefetch - - abseil/container/common - - abseil/container/compressed_tuple - - abseil/container/container_memory - - abseil/container/hash_policy_traits - - abseil/container/hashtable_debug_hooks - - abseil/container/hashtablez_sampler - - abseil/memory/memory - - abseil/meta/type_traits - - abseil/numeric/bits - - abseil/utility/utility - - abseil/debugging/debugging_internal (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/base/dynamic_annotations - - abseil/base/errno_saver - - abseil/base/raw_logging_internal - - abseil/debugging/demangle_internal (1.20220623.0): - - abseil/base/base - - abseil/base/config - - abseil/base/core_headers - - abseil/debugging/stacktrace (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/debugging/debugging_internal - - abseil/debugging/symbolize (1.20220623.0): - - abseil/base/base - - abseil/base/config - - abseil/base/core_headers - - abseil/base/dynamic_annotations - - abseil/base/malloc_internal - - abseil/base/raw_logging_internal - - abseil/debugging/debugging_internal - - abseil/debugging/demangle_internal - - abseil/strings/strings - - abseil/functional/any_invocable (1.20220623.0): - - abseil/base/base_internal - - abseil/base/config - - abseil/base/core_headers - - abseil/meta/type_traits - - abseil/utility/utility - - abseil/functional/bind_front (1.20220623.0): - - abseil/base/base_internal - - abseil/container/compressed_tuple - - abseil/meta/type_traits - - abseil/utility/utility - - abseil/functional/function_ref (1.20220623.0): - - abseil/base/base_internal - - abseil/base/core_headers - - abseil/meta/type_traits - - abseil/hash/city (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/base/endian - - abseil/hash/hash (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/base/endian - - abseil/container/fixed_array - - abseil/functional/function_ref - - abseil/hash/city - - abseil/hash/low_level_hash - - abseil/meta/type_traits - - abseil/numeric/int128 - - abseil/strings/strings - - abseil/types/optional - - abseil/types/variant - - abseil/utility/utility - - abseil/hash/low_level_hash (1.20220623.0): - - abseil/base/config - - abseil/base/endian - - abseil/numeric/bits - - abseil/numeric/int128 - - abseil/memory/memory (1.20220623.0): - - abseil/base/core_headers - - abseil/meta/type_traits - - abseil/meta/type_traits (1.20220623.0): - - abseil/base/config - - abseil/numeric/bits (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/numeric/int128 (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/numeric/bits - - abseil/numeric/representation (1.20220623.0): - - abseil/base/config - - abseil/profiling/exponential_biased (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/profiling/sample_recorder (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/synchronization/synchronization - - abseil/time/time - - abseil/random/distributions (1.20220623.0): - - abseil/base/base_internal - - abseil/base/config - - abseil/base/core_headers - - abseil/meta/type_traits - - abseil/numeric/bits - - abseil/random/internal/distribution_caller - - abseil/random/internal/fast_uniform_bits - - abseil/random/internal/fastmath - - abseil/random/internal/generate_real - - abseil/random/internal/iostream_state_saver - - abseil/random/internal/traits - - abseil/random/internal/uniform_helper - - abseil/random/internal/wide_multiply - - abseil/strings/strings - - abseil/random/internal/distribution_caller (1.20220623.0): - - abseil/base/config - - abseil/base/fast_type_id - - abseil/utility/utility - - abseil/random/internal/fast_uniform_bits (1.20220623.0): - - abseil/base/config - - abseil/meta/type_traits - - abseil/random/internal/traits - - abseil/random/internal/fastmath (1.20220623.0): - - abseil/numeric/bits - - abseil/random/internal/generate_real (1.20220623.0): - - abseil/meta/type_traits - - abseil/numeric/bits - - abseil/random/internal/fastmath - - abseil/random/internal/traits - - abseil/random/internal/iostream_state_saver (1.20220623.0): - - abseil/meta/type_traits - - abseil/numeric/int128 - - abseil/random/internal/nonsecure_base (1.20220623.0): - - abseil/base/core_headers - - abseil/container/inlined_vector - - abseil/meta/type_traits - - abseil/random/internal/pool_urbg - - abseil/random/internal/salted_seed_seq - - abseil/random/internal/seed_material - - abseil/types/span - - abseil/random/internal/pcg_engine (1.20220623.0): - - abseil/base/config - - abseil/meta/type_traits - - abseil/numeric/bits - - abseil/numeric/int128 - - abseil/random/internal/fastmath - - abseil/random/internal/iostream_state_saver - - abseil/random/internal/platform (1.20220623.0): - - abseil/base/config - - abseil/random/internal/pool_urbg (1.20220623.0): - - abseil/base/base - - abseil/base/config - - abseil/base/core_headers - - abseil/base/endian - - abseil/base/raw_logging_internal - - abseil/random/internal/randen - - abseil/random/internal/seed_material - - abseil/random/internal/traits - - abseil/random/seed_gen_exception - - abseil/types/span - - abseil/random/internal/randen (1.20220623.0): - - abseil/base/raw_logging_internal - - abseil/random/internal/platform - - abseil/random/internal/randen_hwaes - - abseil/random/internal/randen_slow - - abseil/random/internal/randen_engine (1.20220623.0): - - abseil/base/endian - - abseil/meta/type_traits - - abseil/random/internal/iostream_state_saver - - abseil/random/internal/randen - - abseil/random/internal/randen_hwaes (1.20220623.0): - - abseil/base/config - - abseil/random/internal/platform - - abseil/random/internal/randen_hwaes_impl - - abseil/random/internal/randen_hwaes_impl (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/numeric/int128 - - abseil/random/internal/platform - - abseil/random/internal/randen_slow (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/base/endian - - abseil/numeric/int128 - - abseil/random/internal/platform - - abseil/random/internal/salted_seed_seq (1.20220623.0): - - abseil/container/inlined_vector - - abseil/meta/type_traits - - abseil/random/internal/seed_material - - abseil/types/optional - - abseil/types/span - - abseil/random/internal/seed_material (1.20220623.0): - - abseil/base/core_headers - - abseil/base/dynamic_annotations - - abseil/base/raw_logging_internal - - abseil/random/internal/fast_uniform_bits - - abseil/strings/strings - - abseil/types/optional - - abseil/types/span - - abseil/random/internal/traits (1.20220623.0): - - abseil/base/config - - abseil/numeric/bits - - abseil/numeric/int128 - - abseil/random/internal/uniform_helper (1.20220623.0): - - abseil/base/config - - abseil/meta/type_traits - - abseil/numeric/int128 - - abseil/random/internal/traits - - abseil/random/internal/wide_multiply (1.20220623.0): - - abseil/base/config - - abseil/numeric/bits - - abseil/numeric/int128 - - abseil/random/internal/traits - - abseil/random/random (1.20220623.0): - - abseil/random/distributions - - abseil/random/internal/nonsecure_base - - abseil/random/internal/pcg_engine - - abseil/random/internal/pool_urbg - - abseil/random/internal/randen_engine - - abseil/random/seed_sequences - - abseil/random/seed_gen_exception (1.20220623.0): - - abseil/base/config - - abseil/random/seed_sequences (1.20220623.0): - - abseil/base/config - - abseil/random/internal/pool_urbg - - abseil/random/internal/salted_seed_seq - - abseil/random/internal/seed_material - - abseil/random/seed_gen_exception - - abseil/types/span - - abseil/status/status (1.20220623.0): - - abseil/base/atomic_hook - - abseil/base/core_headers - - abseil/base/raw_logging_internal - - abseil/base/strerror - - abseil/container/inlined_vector - - abseil/debugging/stacktrace - - abseil/debugging/symbolize - - abseil/functional/function_ref - - abseil/strings/cord - - abseil/strings/str_format - - abseil/strings/strings - - abseil/types/optional - - abseil/status/statusor (1.20220623.0): - - abseil/base/base - - abseil/base/core_headers - - abseil/base/raw_logging_internal - - abseil/meta/type_traits - - abseil/status/status - - abseil/strings/strings - - abseil/types/variant - - abseil/utility/utility - - abseil/strings/cord (1.20220623.0): - - abseil/base/base - - abseil/base/config - - abseil/base/core_headers - - abseil/base/endian - - abseil/base/raw_logging_internal - - abseil/container/fixed_array - - abseil/container/inlined_vector - - abseil/functional/function_ref - - abseil/meta/type_traits - - abseil/numeric/bits - - abseil/strings/cord_internal - - abseil/strings/cordz_functions - - abseil/strings/cordz_info - - abseil/strings/cordz_statistics - - abseil/strings/cordz_update_scope - - abseil/strings/cordz_update_tracker - - abseil/strings/internal - - abseil/strings/str_format - - abseil/strings/strings - - abseil/types/optional - - abseil/types/span - - abseil/strings/cord_internal (1.20220623.0): - - abseil/base/base_internal - - abseil/base/config - - abseil/base/core_headers - - abseil/base/endian - - abseil/base/raw_logging_internal - - abseil/base/throw_delegate - - abseil/container/compressed_tuple - - abseil/container/inlined_vector - - abseil/container/layout - - abseil/functional/function_ref - - abseil/meta/type_traits - - abseil/strings/strings - - abseil/types/span - - abseil/strings/cordz_functions (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/base/raw_logging_internal - - abseil/profiling/exponential_biased - - abseil/strings/cordz_handle (1.20220623.0): - - abseil/base/base - - abseil/base/config - - abseil/base/raw_logging_internal - - abseil/synchronization/synchronization - - abseil/strings/cordz_info (1.20220623.0): - - abseil/base/base - - abseil/base/config - - abseil/base/core_headers - - abseil/base/raw_logging_internal - - abseil/container/inlined_vector - - abseil/debugging/stacktrace - - abseil/strings/cord_internal - - abseil/strings/cordz_functions - - abseil/strings/cordz_handle - - abseil/strings/cordz_statistics - - abseil/strings/cordz_update_tracker - - abseil/synchronization/synchronization - - abseil/types/span - - abseil/strings/cordz_statistics (1.20220623.0): - - abseil/base/config - - abseil/strings/cordz_update_tracker - - abseil/strings/cordz_update_scope (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/strings/cord_internal - - abseil/strings/cordz_info - - abseil/strings/cordz_update_tracker - - abseil/strings/cordz_update_tracker (1.20220623.0): - - abseil/base/config - - abseil/strings/internal (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/base/endian - - abseil/base/raw_logging_internal - - abseil/meta/type_traits - - abseil/strings/str_format (1.20220623.0): - - abseil/strings/str_format_internal - - abseil/strings/str_format_internal (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/functional/function_ref - - abseil/meta/type_traits - - abseil/numeric/bits - - abseil/numeric/int128 - - abseil/numeric/representation - - abseil/strings/strings - - abseil/types/optional - - abseil/types/span - - abseil/utility/utility - - abseil/strings/strings (1.20220623.0): - - abseil/base/base - - abseil/base/config - - abseil/base/core_headers - - abseil/base/endian - - abseil/base/raw_logging_internal - - abseil/base/throw_delegate - - abseil/memory/memory - - abseil/meta/type_traits - - abseil/numeric/bits - - abseil/numeric/int128 - - abseil/strings/internal - - abseil/synchronization/graphcycles_internal (1.20220623.0): - - abseil/base/base - - abseil/base/base_internal - - abseil/base/config - - abseil/base/core_headers - - abseil/base/malloc_internal - - abseil/base/raw_logging_internal - - abseil/synchronization/kernel_timeout_internal (1.20220623.0): - - abseil/base/core_headers - - abseil/base/raw_logging_internal - - abseil/time/time - - abseil/synchronization/synchronization (1.20220623.0): - - abseil/base/atomic_hook - - abseil/base/base - - abseil/base/base_internal - - abseil/base/config - - abseil/base/core_headers - - abseil/base/dynamic_annotations - - abseil/base/malloc_internal - - abseil/base/raw_logging_internal - - abseil/debugging/stacktrace - - abseil/debugging/symbolize - - abseil/synchronization/graphcycles_internal - - abseil/synchronization/kernel_timeout_internal - - abseil/time/time - - abseil/time/internal/cctz/civil_time (1.20220623.0): - - abseil/base/config - - abseil/time/internal/cctz/time_zone (1.20220623.0): - - abseil/base/config - - abseil/time/internal/cctz/civil_time - - abseil/time/time (1.20220623.0): - - abseil/base/base - - abseil/base/core_headers - - abseil/base/raw_logging_internal - - abseil/numeric/int128 - - abseil/strings/strings - - abseil/time/internal/cctz/civil_time - - abseil/time/internal/cctz/time_zone - - abseil/types/bad_optional_access (1.20220623.0): - - abseil/base/config - - abseil/base/raw_logging_internal - - abseil/types/bad_variant_access (1.20220623.0): - - abseil/base/config - - abseil/base/raw_logging_internal - - abseil/types/optional (1.20220623.0): - - abseil/base/base_internal - - abseil/base/config - - abseil/base/core_headers - - abseil/memory/memory - - abseil/meta/type_traits - - abseil/types/bad_optional_access - - abseil/utility/utility - - abseil/types/span (1.20220623.0): - - abseil/algorithm/algorithm - - abseil/base/core_headers - - abseil/base/throw_delegate - - abseil/meta/type_traits - - abseil/types/variant (1.20220623.0): - - abseil/base/base_internal - - abseil/base/config - - abseil/base/core_headers - - abseil/meta/type_traits - - abseil/types/bad_variant_access - - abseil/utility/utility - - abseil/utility/utility (1.20220623.0): - - abseil/base/base_internal - - abseil/base/config - - abseil/meta/type_traits - - BoringSSL-GRPC (0.0.24): - - BoringSSL-GRPC/Implementation (= 0.0.24) - - BoringSSL-GRPC/Interface (= 0.0.24) - - BoringSSL-GRPC/Implementation (0.0.24): - - BoringSSL-GRPC/Interface (= 0.0.24) - - BoringSSL-GRPC/Interface (0.0.24) - CocoaImageHashing (1.9.0) - CocoaLumberjack (3.7.2): - CocoaLumberjack/Core (= 3.7.2) - CocoaLumberjack/Core (3.7.2) - - DAPI-GRPC (0.22.0-dev.8): - - "!ProtoCompiler-gRPCPlugin (~> 1.0)" - - DAPI-GRPC/Messages (= 0.22.0-dev.8) - - DAPI-GRPC/Services (= 0.22.0-dev.8) - - DAPI-GRPC/Messages (0.22.0-dev.8): - - "!ProtoCompiler-gRPCPlugin (~> 1.0)" - - Protobuf - - DAPI-GRPC/Services (0.22.0-dev.8): - - "!ProtoCompiler-gRPCPlugin (~> 1.0)" - - DAPI-GRPC/Messages - - gRPC-ProtoRPC - DashSharedCore (0.4.16) - DashSync (0.1.0): - CocoaLumberjack (= 3.7.2) - - DAPI-GRPC (= 0.22.0-dev.8) - DashSharedCore (= 0.4.16) - DSDynamicOptions (= 0.1.2) - DWAlertController (= 0.2.1) - TinyCborObjc (= 0.4.6) - DSDynamicOptions (0.1.2) - DWAlertController (0.2.1) - - gRPC-Core (1.49.0): - - gRPC-Core/Implementation (= 1.49.0) - - gRPC-Core/Interface (= 1.49.0) - - gRPC-Core/Implementation (1.49.0): - - abseil/base/base (= 1.20220623.0) - - abseil/base/core_headers (= 1.20220623.0) - - abseil/container/flat_hash_map (= 1.20220623.0) - - abseil/container/flat_hash_set (= 1.20220623.0) - - abseil/container/inlined_vector (= 1.20220623.0) - - abseil/functional/any_invocable (= 1.20220623.0) - - abseil/functional/bind_front (= 1.20220623.0) - - abseil/functional/function_ref (= 1.20220623.0) - - abseil/hash/hash (= 1.20220623.0) - - abseil/memory/memory (= 1.20220623.0) - - abseil/meta/type_traits (= 1.20220623.0) - - abseil/random/random (= 1.20220623.0) - - abseil/status/status (= 1.20220623.0) - - abseil/status/statusor (= 1.20220623.0) - - abseil/strings/cord (= 1.20220623.0) - - abseil/strings/str_format (= 1.20220623.0) - - abseil/strings/strings (= 1.20220623.0) - - abseil/synchronization/synchronization (= 1.20220623.0) - - abseil/time/time (= 1.20220623.0) - - abseil/types/optional (= 1.20220623.0) - - abseil/types/span (= 1.20220623.0) - - abseil/types/variant (= 1.20220623.0) - - abseil/utility/utility (= 1.20220623.0) - - BoringSSL-GRPC (= 0.0.24) - - gRPC-Core/Interface (= 1.49.0) - - gRPC-Core/Interface (1.49.0) - - gRPC-ProtoRPC (1.49.0): - - gRPC-ProtoRPC/Legacy (= 1.49.0) - - gRPC-ProtoRPC/Legacy-Header (= 1.49.0) - - gRPC-ProtoRPC/Main (= 1.49.0) - - gRPC-ProtoRPC/Legacy (1.49.0): - - gRPC-ProtoRPC/Legacy-Header (= 1.49.0) - - gRPC-ProtoRPC/Main (= 1.49.0) - - gRPC-RxLibrary (= 1.49.0) - - gRPC/GRPCCore (= 1.49.0) - - Protobuf (~> 3.0) - - gRPC-ProtoRPC/Legacy-Header (1.49.0) - - gRPC-ProtoRPC/Main (1.49.0): - - gRPC-ProtoRPC/Legacy-Header (= 1.49.0) - - gRPC/Interface (= 1.49.0) - - Protobuf (~> 3.0) - - gRPC-RxLibrary (1.49.0): - - gRPC-RxLibrary/Implementation (= 1.49.0) - - gRPC-RxLibrary/Interface (= 1.49.0) - - gRPC-RxLibrary/Implementation (1.49.0): - - gRPC-RxLibrary/Interface - - gRPC-RxLibrary/Interface (1.49.0) - - gRPC/GRPCCore (1.49.0): - - gRPC-Core (= 1.49.0) - - gRPC-RxLibrary (= 1.49.0) - - gRPC/Interface (= 1.49.0) - - gRPC/Interface-Legacy (= 1.49.0) - - gRPC/Interface (1.49.0): - - gRPC/Interface-Legacy (= 1.49.0) - - gRPC/Interface-Legacy (1.49.0): - - gRPC-RxLibrary/Interface (= 1.49.0) - KVO-MVVM (0.5.1) - - Protobuf (3.27.2) - SDWebImage (5.14.3): - SDWebImage/Core (= 5.14.3) - SDWebImage/Core (5.14.3) @@ -673,21 +28,11 @@ DEPENDENCIES: SPEC REPOS: trunk: - - "!ProtoCompiler" - - "!ProtoCompiler-gRPCPlugin" - - abseil - - BoringSSL-GRPC - CocoaLumberjack - - DAPI-GRPC - DashSharedCore - DSDynamicOptions - DWAlertController - - gRPC - - gRPC-Core - - gRPC-ProtoRPC - - gRPC-RxLibrary - KVO-MVVM - - Protobuf - SDWebImage - tinycbor - TinyCborObjc @@ -705,23 +50,13 @@ CHECKOUT OPTIONS: :git: https://github.com/ameingast/cocoaimagehashing.git SPEC CHECKSUMS: - "!ProtoCompiler": e9c09244955a8565817aa59a4787b6bb849a63c6 - "!ProtoCompiler-gRPCPlugin": 755f0ee414a0d5f0028e0dcfe98c23bdbc3e6fa3 - abseil: 926fb7a82dc6d2b8e1f2ed7f3a718bce691d1e46 - BoringSSL-GRPC: 3175b25143e648463a56daeaaa499c6cb86dad33 CocoaImageHashing: 8656031d0899abe6c1c415827de43e9798189c53 CocoaLumberjack: b7e05132ff94f6ae4dfa9d5bce9141893a21d9da - DAPI-GRPC: 138d62523bbfe7e88a39896f1053c0bc12390d9f DashSharedCore: 81d3327cbea4103114b768eed4d36e742417b63b - DashSync: 5c4dea6e4ef83df33f23f85b7f2b97ef6843de87 + DashSync: dd9d652b73938fbef99137b3d60e12962ca915ea DSDynamicOptions: 347cc5d2c4e080eb3de6a86719ad3d861b82adfc DWAlertController: 5f4cd8adf90336331c054857f709f5f8d4b16a5b - gRPC: 64f36d689b2ecd99c4351f74e6f91347cdc65d9f - gRPC-Core: 3a9fdb5967d42211e875826f3f6fc163ea02c2a1 - gRPC-ProtoRPC: 1c223e0f1732bb8d0b9e9e0ea60cc0fe995b8e2d - gRPC-RxLibrary: 92327f150e11cf3b1c0f52e083944fd9f5cb5d1e KVO-MVVM: 4df3afd1f7ebcb69735458b85db59c4271ada7c6 - Protobuf: fb2c13674723f76ff6eede14f78847a776455fa2 SDWebImage: 9c36e66c8ce4620b41a7407698dda44211a96764 tinycbor: d4d71dddda1f8392fbb4249f63faf8552f327590 TinyCborObjc: 5204540fb90ff0c40fb22d408fa51bab79d78a80 diff --git a/Gemfile b/Gemfile index a289656a4..2af168f6e 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ source 'https://rubygems.org' gem 'rexml' -gem 'cocoapods', '>=1.11.3' +gem 'cocoapods', '>=1.15.2' gem 'xcpretty' # ethon is manually updated to avoid segmentation fault crashes on the M1. See https://github.com/CocoaPods/CocoaPods/issues/10446 gem 'ethon', '>=0.13.0'