@@ -54,7 +54,7 @@ class CDeterministicMNState
5454 CKeyID keyIDOwner;
5555 CBLSLazyPublicKey pubKeyOperator;
5656 CKeyID keyIDVoting;
57- std::shared_ptr<MnNetInfo > netInfo{MakeNetInfo ()};
57+ std::shared_ptr<NetInfoInterface > netInfo{MakeNetInfo ()};
5858 CScript scriptPayout;
5959 CScript scriptOperatorPayout;
6060
@@ -96,7 +96,7 @@ class CDeterministicMNState
9696 READWRITE (CBLSLazyPublicKeyVersionWrapper (const_cast <CBLSLazyPublicKey&>(obj.pubKeyOperator ), obj.nVersion == ProTxVersion::LegacyBLS));
9797 READWRITE (
9898 obj.keyIDVoting ,
99- obj.netInfo ,
99+ NetInfoSerWrapper ( const_cast <std::shared_ptr<NetInfoInterface>&>( obj.netInfo )) ,
100100 obj.scriptPayout ,
101101 obj.scriptOperatorPayout ,
102102 obj.platformNodeID ,
@@ -215,9 +215,17 @@ class CDeterministicMNStateDiff
215215 CDeterministicMNStateDiff (const CDeterministicMNState& a, const CDeterministicMNState& b)
216216 {
217217 boost::hana::for_each (members, [&](auto && member) {
218- if (member.get (a) != member.get (b)) {
219- member.get (state) = member.get (b);
220- fields |= member.mask ;
218+ using BaseType = std::decay_t <decltype (member)>;
219+ if constexpr (BaseType::mask == Field_netInfo) {
220+ if (!NetInfoInterface::IsEqual (member.get (a), member.get (b))) {
221+ member.get (state) = member.get (b);
222+ fields |= member.mask ;
223+ }
224+ } else {
225+ if (member.get (a) != member.get (b)) {
226+ member.get (state) = member.get (b);
227+ fields |= member.mask ;
228+ }
221229 }
222230 });
223231 if (fields & Field_pubKeyOperator) {
@@ -244,6 +252,10 @@ class CDeterministicMNStateDiff
244252 SER_READ (obj, read_pubkey = true );
245253 READWRITE (CBLSLazyPublicKeyVersionWrapper (const_cast <CBLSLazyPublicKey&>(obj.state .pubKeyOperator ), obj.state .nVersion == ProTxVersion::LegacyBLS));
246254 }
255+ } else if constexpr (BaseType::mask == Field_netInfo) {
256+ if (obj.fields & member.mask ) {
257+ READWRITE (NetInfoSerWrapper (const_cast <std::shared_ptr<NetInfoInterface>&>(obj.state .netInfo )));
258+ }
247259 } else {
248260 if (obj.fields & member.mask ) {
249261 READWRITE (member.get (obj.state ));
0 commit comments