Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

updated simplified masternode entry to 13.0 #41

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions DashSync/Categories/NSData+Bitcoin.h
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,9 @@ size_t chacha20Poly1305AEADDecrypt(void *_Nullable out, size_t outLen, const voi
- (UInt128)UInt128AtOffset:(NSUInteger)offset;
- (UInt160)UInt160AtOffset:(NSUInteger)offset;
- (UInt256)UInt256AtOffset:(NSUInteger)offset;
- (UInt384)UInt384AtOffset:(NSUInteger)offset;
- (UInt512)UInt512AtOffset:(NSUInteger)offset;
- (UInt768)UInt768AtOffset:(NSUInteger)offset;
- (UInt128)UInt128;
- (UInt160)UInt160;
- (UInt256)UInt256;
Expand Down
17 changes: 17 additions & 0 deletions DashSync/Categories/NSData+Bitcoin.m
Original file line number Diff line number Diff line change
Expand Up @@ -1127,18 +1127,35 @@ - (UInt256)UInt256
return *(UInt256 *)(self.bytes);
}

- (UInt384)UInt384AtOffset:(NSUInteger)offset
{
if (self.length < offset + sizeof(UInt384)) return UINT384_ZERO;
return *(UInt384 *)(self.bytes + offset);
}

- (UInt384)UInt384
{
if (self.length < sizeof(UInt384)) return UINT384_ZERO;
return *(UInt384 *)(self.bytes);
}

- (UInt512)UInt512AtOffset:(NSUInteger)offset
{
if (self.length < offset + sizeof(UInt512)) return UINT512_ZERO;
return *(UInt512 *)(self.bytes + offset);
}

- (UInt512)UInt512
{
if (self.length < sizeof(UInt512)) return UINT512_ZERO;
return *(UInt512 *)(self.bytes);
}

- (UInt768)UInt768AtOffset:(NSUInteger)offset
{
if (self.length < offset + sizeof(UInt768)) return UINT768_ZERO;
return *(UInt768 *)(self.bytes + offset);
}

- (UInt768)UInt768
{
Expand Down
3 changes: 3 additions & 0 deletions DashSync/Categories/NSMutableData+Dash.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ CF_IMPLICIT_BRIDGING_DISABLED
- (void)appendUInt128:(UInt128)i;
- (void)appendUInt160:(UInt160)i;
- (void)appendUInt256:(UInt256)i;
- (void)appendUInt384:(UInt384)i;
- (void)appendUInt512:(UInt512)i;
- (void)appendUInt768:(UInt768)i;
- (void)appendVarInt:(uint64_t)i;
- (void)appendString:(NSString *)s;

Expand Down
16 changes: 16 additions & 0 deletions DashSync/Categories/NSMutableData+Dash.m
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,22 @@ - (void)appendUInt256:(UInt256)i
[self appendBytes:&i length:sizeof(i)];
}

- (void)appendUInt384:(UInt384)i
{
[self appendBytes:&i length:sizeof(i)];
}

- (void)appendUInt512:(UInt512)i
{
[self appendBytes:&i length:sizeof(i)];
}

- (void)appendUInt768:(UInt768)i
{
[self appendBytes:&i length:sizeof(i)];
}



- (void)appendVarInt:(uint64_t)i
{
Expand Down
10 changes: 8 additions & 2 deletions DashSync/DashSync.xcdatamodeld/DashSync 1.xcdatamodel/contents
Original file line number Diff line number Diff line change
Expand Up @@ -169,9 +169,10 @@
<entity name="DSSimplifiedMasternodeEntryEntity" representedClassName="DSSimplifiedMasternodeEntryEntity" syncable="YES">
<attribute name="address" optional="YES" attributeType="Integer 32" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
<attribute name="claimed" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
<attribute name="confirmedHash" optional="YES" attributeType="Binary" syncable="YES"/>
<attribute name="isValid" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
<attribute name="keyIDOperator" optional="YES" attributeType="Binary" syncable="YES"/>
<attribute name="keyIDVoting" optional="YES" attributeType="Binary" syncable="YES"/>
<attribute name="operatorBLSPublicKey" optional="YES" attributeType="Binary" syncable="YES"/>
<attribute name="port" optional="YES" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
<attribute name="providerRegistrationTransactionHash" optional="YES" attributeType="Binary" syncable="YES"/>
<attribute name="simplifiedMasternodeEntryHash" optional="YES" attributeType="Binary" syncable="YES"/>
Expand All @@ -190,6 +191,11 @@
<index value="chain"/>
<index value="simplifiedMasternodeEntryHash"/>
</compoundIndex>
<compoundIndex>
<index value="chain"/>
<index value="providerRegistrationTransactionHash"/>
<index value="confirmedHash"/>
</compoundIndex>
</compoundIndexes>
</entity>
<entity name="DSSpecialTransactionEntity" representedClassName="DSSpecialTransactionEntity" parentEntity="DSTransactionEntity" syncable="YES">
Expand Down Expand Up @@ -264,7 +270,7 @@
<element name="DSMerkleBlockEntity" positionX="-1531.69921875" positionY="-232.9921875" width="128" height="225"/>
<element name="DSPeerEntity" positionX="-1676.0546875" positionY="54.0078125" width="128" height="195"/>
<element name="DSShapeshiftEntity" positionX="-946.375" positionY="817.2578125" width="128" height="225"/>
<element name="DSSimplifiedMasternodeEntryEntity" positionX="-1511.95703125" positionY="276.51953125" width="128" height="195"/>
<element name="DSSimplifiedMasternodeEntryEntity" positionX="-1511.95703125" positionY="276.51953125" width="128" height="210"/>
<element name="DSSpecialTransactionEntity" positionX="-1145.90625" positionY="1134.63671875" width="128" height="60"/>
<element name="DSSporkEntity" positionX="-1631.40625" positionY="479.12890625" width="128" height="120"/>
<element name="DSSporkHashEntity" positionX="-1438.984375" positionY="509.0234375" width="128" height="90"/>
Expand Down
7 changes: 4 additions & 3 deletions DashSync/Models/DSSimplifiedMasternodeEntry.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@
@interface DSSimplifiedMasternodeEntry : NSObject

@property(nonatomic,readonly) UInt256 providerRegistrationTransactionHash;
@property(nonatomic,readonly) UInt256 confirmedHash;
@property(nonatomic,readonly) UInt128 address;
@property(nonatomic,readonly) uint16_t port;
@property(nonatomic,readonly) UInt160 keyIDOperator;
@property(nonatomic,readonly) UInt384 operatorBLSPublicKey;
@property(nonatomic,readonly) UInt160 keyIDVoting;
@property(nonatomic,readonly) BOOL isValid;
@property(nonatomic,readonly) UInt256 simplifiedMasternodeEntryHash;
Expand All @@ -26,8 +27,8 @@

+(instancetype)simplifiedMasternodeEntryWithData:(NSData*)data onChain:(DSChain*)chain;

+(instancetype)simplifiedMasternodeEntryWithProviderRegistrationTransactionHash:(UInt256)providerRegistrationTransactionHash address:(UInt128)address port:(uint16_t)port keyIDOperator:(UInt160)keyIDOperator keyIDVoting:(UInt160)keyIDVoting isValid:(BOOL)isValid onChain:(DSChain*)chain;
+(instancetype)simplifiedMasternodeEntryWithProviderRegistrationTransactionHash:(UInt256)providerRegistrationTransactionHash confirmedHash:(UInt256)confirmedHash address:(UInt128)address port:(uint16_t)port operatorBLSPublicKey:(UInt384)operatorBLSPublicKey keyIDVoting:(UInt160)keyIDVoting isValid:(BOOL)isValid onChain:(DSChain*)chain;

+(instancetype)simplifiedMasternodeEntryWithProviderRegistrationTransactionHash:(UInt256)providerRegistrationTransactionHash address:(UInt128)address port:(uint16_t)port keyIDOperator:(UInt160)keyIDOperator keyIDVoting:(UInt160)keyIDVoting isValid:(BOOL)isValid simplifiedMasternodeEntryHash:(UInt256)simplifiedMasternodeEntryHash onChain:(DSChain*)chain;
+(instancetype)simplifiedMasternodeEntryWithProviderRegistrationTransactionHash:(UInt256)providerRegistrationTransactionHash confirmedHash:(UInt256)confirmedHash address:(UInt128)address port:(uint16_t)port operatorBLSPublicKey:(UInt384)operatorBLSPublicKey keyIDVoting:(UInt160)keyIDVoting isValid:(BOOL)isValid simplifiedMasternodeEntryHash:(UInt256)simplifiedMasternodeEntryHash onChain:(DSChain*)chain;

@end
25 changes: 16 additions & 9 deletions DashSync/Models/DSSimplifiedMasternodeEntry.m
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@
@interface DSSimplifiedMasternodeEntry()

@property(nonatomic,assign) UInt256 providerRegistrationTransactionHash;
@property(nonatomic,assign) UInt256 confirmedHash;
@property(nonatomic,assign) UInt256 simplifiedMasternodeEntryHash;
@property(nonatomic,assign) UInt128 address;
@property(nonatomic,assign) uint16_t port;
@property(nonatomic,assign) UInt160 keyIDOperator;
@property(nonatomic,assign) UInt384 operatorBLSPublicKey;
@property(nonatomic,assign) UInt160 keyIDVoting;
@property(nonatomic,assign) BOOL isValid;
@property(nonatomic,strong) DSChain * chain;
Expand All @@ -30,10 +31,11 @@ @implementation DSSimplifiedMasternodeEntry
-(NSData*)payloadData {
NSMutableData * hashImportantData = [NSMutableData data];
[hashImportantData appendUInt256:self.providerRegistrationTransactionHash];
[hashImportantData appendUInt256:self.confirmedHash];
[hashImportantData appendUInt128:self.address];
[hashImportantData appendUInt16:CFSwapInt16HostToBig(self.port)];

[hashImportantData appendUInt160:self.keyIDOperator];
[hashImportantData appendUInt384:self.operatorBLSPublicKey];
[hashImportantData appendUInt160:self.keyIDVoting];
[hashImportantData appendUInt8:self.isValid];
return [hashImportantData copy];
Expand All @@ -47,17 +49,18 @@ +(instancetype)simplifiedMasternodeEntryWithData:(NSData*)data onChain:(DSChain*
return [[self alloc] initWithMessage:data onChain:chain];
}

+(instancetype)simplifiedMasternodeEntryWithProviderRegistrationTransactionHash:(UInt256)providerRegistrationTransactionHash address:(UInt128)address port:(uint16_t)port keyIDOperator:(UInt160)keyIDOperator keyIDVoting:(UInt160)keyIDVoting isValid:(BOOL)isValid onChain:(DSChain*)chain {
return [self simplifiedMasternodeEntryWithProviderRegistrationTransactionHash:providerRegistrationTransactionHash address:address port:port keyIDOperator:keyIDOperator keyIDVoting:keyIDVoting isValid:isValid simplifiedMasternodeEntryHash:UINT256_ZERO onChain:chain];
+(instancetype)simplifiedMasternodeEntryWithProviderRegistrationTransactionHash:(UInt256)providerRegistrationTransactionHash confirmedHash:(UInt256)confirmedHash address:(UInt128)address port:(uint16_t)port operatorBLSPublicKey:(UInt384)operatorBLSPublicKey keyIDVoting:(UInt160)keyIDVoting isValid:(BOOL)isValid onChain:(DSChain*)chain {
return [self simplifiedMasternodeEntryWithProviderRegistrationTransactionHash:providerRegistrationTransactionHash confirmedHash:confirmedHash address:address port:port operatorBLSPublicKey:operatorBLSPublicKey keyIDVoting:keyIDVoting isValid:isValid simplifiedMasternodeEntryHash:UINT256_ZERO onChain:chain];
}

+(instancetype)simplifiedMasternodeEntryWithProviderRegistrationTransactionHash:(UInt256)providerRegistrationTransactionHash address:(UInt128)address port:(uint16_t)port keyIDOperator:(UInt160)keyIDOperator keyIDVoting:(UInt160)keyIDVoting isValid:(BOOL)isValid simplifiedMasternodeEntryHash:(UInt256)simplifiedMasternodeEntryHash onChain:(DSChain*)chain {
+(instancetype)simplifiedMasternodeEntryWithProviderRegistrationTransactionHash:(UInt256)providerRegistrationTransactionHash confirmedHash:(UInt256)confirmedHash address:(UInt128)address port:(uint16_t)port operatorBLSPublicKey:(UInt384)operatorBLSPublicKey keyIDVoting:(UInt160)keyIDVoting isValid:(BOOL)isValid simplifiedMasternodeEntryHash:(UInt256)simplifiedMasternodeEntryHash onChain:(DSChain*)chain {
DSSimplifiedMasternodeEntry * simplifiedMasternodeEntry = [[DSSimplifiedMasternodeEntry alloc] init];
simplifiedMasternodeEntry.providerRegistrationTransactionHash = providerRegistrationTransactionHash;
simplifiedMasternodeEntry.confirmedHash = confirmedHash;
simplifiedMasternodeEntry.address = address;
simplifiedMasternodeEntry.port = port;
simplifiedMasternodeEntry.keyIDVoting = keyIDVoting;
simplifiedMasternodeEntry.keyIDOperator = keyIDOperator;
simplifiedMasternodeEntry.operatorBLSPublicKey = operatorBLSPublicKey;
simplifiedMasternodeEntry.isValid = isValid;
simplifiedMasternodeEntry.simplifiedMasternodeEntryHash = !uint256_is_zero(simplifiedMasternodeEntryHash)?simplifiedMasternodeEntryHash:[simplifiedMasternodeEntry calculateSimplifiedMasternodeEntryHash];
simplifiedMasternodeEntry.chain = chain;
Expand All @@ -72,6 +75,10 @@ -(instancetype)initWithMessage:(NSData*)message onChain:(DSChain*)chain {
self.providerRegistrationTransactionHash = [message UInt256AtOffset:offset];
offset += 32;

if (length - offset < 32) return nil;
self.confirmedHash = [message UInt256AtOffset:offset];
offset += 32;

if (length - offset < 16) return nil;
self.address = [message UInt128AtOffset:offset];
offset += 16;
Expand All @@ -80,9 +87,9 @@ -(instancetype)initWithMessage:(NSData*)message onChain:(DSChain*)chain {
self.port = CFSwapInt16HostToBig([message UInt16AtOffset:offset]);
offset += 2;

if (length - offset < 20) return nil;
self.keyIDOperator = [message UInt160AtOffset:offset];
offset += 20;
if (length - offset < 48) return nil;
self.operatorBLSPublicKey = [message UInt384AtOffset:offset];
offset += 48;

if (length - offset < 20) return nil;
self.keyIDVoting = [message UInt160AtOffset:offset];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,18 @@ - (void)updateAttributesFromSimplifiedMasternodeEntry:(DSSimplifiedMasternodeEnt
self.address = CFSwapInt32BigToHost(simplifiedMasternodeEntry.address.u32[3]);
self.port = simplifiedMasternodeEntry.port;
self.keyIDVoting = [NSData dataWithUInt160:simplifiedMasternodeEntry.keyIDVoting];
self.keyIDOperator = [NSData dataWithUInt160:simplifiedMasternodeEntry.keyIDOperator];
self.operatorBLSPublicKey = [NSData dataWithUInt384:simplifiedMasternodeEntry.operatorBLSPublicKey];
self.isValid = simplifiedMasternodeEntry.isValid;
self.simplifiedMasternodeEntryHash = [NSData dataWithUInt256:simplifiedMasternodeEntry.simplifiedMasternodeEntryHash];
}

- (void)setAttributesFromSimplifiedMasternodeEntry:(DSSimplifiedMasternodeEntry *)simplifiedMasternodeEntry onChain:(DSChainEntity*)chainEntity {
self.providerRegistrationTransactionHash = [NSData dataWithUInt256:simplifiedMasternodeEntry.providerRegistrationTransactionHash];
self.confirmedHash = [NSData dataWithUInt256:simplifiedMasternodeEntry.confirmedHash];
self.address = CFSwapInt32BigToHost(simplifiedMasternodeEntry.address.u32[3]);
self.port = simplifiedMasternodeEntry.port;
self.keyIDVoting = [NSData dataWithUInt160:simplifiedMasternodeEntry.keyIDVoting];
self.keyIDOperator = [NSData dataWithUInt160:simplifiedMasternodeEntry.keyIDOperator];
self.operatorBLSPublicKey = [NSData dataWithUInt384:simplifiedMasternodeEntry.operatorBLSPublicKey];
self.isValid = simplifiedMasternodeEntry.isValid;
self.simplifiedMasternodeEntryHash = [NSData dataWithUInt256:simplifiedMasternodeEntry.simplifiedMasternodeEntryHash];
if (!chainEntity) {
Expand Down Expand Up @@ -60,7 +61,7 @@ + (DSSimplifiedMasternodeEntryEntity*)simplifiedMasternodeEntryForHash:(NSData*)

- (DSSimplifiedMasternodeEntry*)simplifiedMasternodeEntry {
UInt128 address = { .u32 = { 0, 0, CFSwapInt32HostToBig(0xffff), CFSwapInt32HostToBig(self.address) } };
DSSimplifiedMasternodeEntry * simplifiedMasternodeEntry = [DSSimplifiedMasternodeEntry simplifiedMasternodeEntryWithProviderRegistrationTransactionHash:[self.providerRegistrationTransactionHash UInt256AtOffset:0] address:address port:self.port keyIDOperator:[self.keyIDOperator UInt160AtOffset:0] keyIDVoting:[self.keyIDVoting UInt160AtOffset:0] isValid:self.isValid simplifiedMasternodeEntryHash:[self.simplifiedMasternodeEntryHash UInt256AtOffset:0] onChain:self.chain.chain];
DSSimplifiedMasternodeEntry * simplifiedMasternodeEntry = [DSSimplifiedMasternodeEntry simplifiedMasternodeEntryWithProviderRegistrationTransactionHash:[self.providerRegistrationTransactionHash UInt256] confirmedHash:[self.confirmedHash UInt256] address:address port:self.port operatorBLSPublicKey:[self.operatorBLSPublicKey UInt384] keyIDVoting:[self.keyIDVoting UInt160AtOffset:0] isValid:self.isValid simplifiedMasternodeEntryHash:[self.simplifiedMasternodeEntryHash UInt256AtOffset:0] onChain:self.chain.chain];
return simplifiedMasternodeEntry;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,11 @@ NS_ASSUME_NONNULL_BEGIN
+ (NSFetchRequest<DSSimplifiedMasternodeEntryEntity *> *)fetchRequest;

@property (nullable, nonatomic, retain) NSData *providerRegistrationTransactionHash;
@property (nullable, nonatomic, retain) NSData *confirmedHash;
@property (nonatomic, assign) uint32_t address;
@property (nonatomic, assign) uint16_t port;
@property (nonatomic, assign) BOOL claimed;
@property (nullable, nonatomic, retain) NSData *keyIDOperator;
@property (nullable, nonatomic, retain) NSData *operatorBLSPublicKey;
@property (nullable, nonatomic, retain) NSData *keyIDVoting;
@property (nonatomic, assign) Boolean isValid;
@property (nullable, nonatomic, retain) NSData *simplifiedMasternodeEntryHash;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@ @implementation DSSimplifiedMasternodeEntryEntity (CoreDataProperties)
}

@dynamic providerRegistrationTransactionHash;
@dynamic confirmedHash;
@dynamic address;
@dynamic port;
@dynamic keyIDOperator;
@dynamic operatorBLSPublicKey;
@dynamic keyIDVoting;
@dynamic isValid;
@dynamic simplifiedMasternodeEntryHash;
Expand Down