Skip to content

Commit 0f5a913

Browse files
authored
fix: SPV Regtest/Devnet support (#227)
* fix: SPV Regtest support * Fixup devnet too
1 parent 70c5f04 commit 0f5a913

File tree

3 files changed

+33
-24
lines changed

3 files changed

+33
-24
lines changed

dash/src/blockdata/constants.rs

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,9 @@ fn dash_genesis_tx() -> Transaction {
8181

8282
// Inputs
8383
// Using raw script bytes to avoid push_slice issues
84+
// Message: "Wired 09/Jan/2014 The Grand Experiment Goes Live: Overstock.com Is Now Accepting Bitcoins"
8485
let in_script = script::ScriptBuf::from(hex!(
85-
"04ffff001d01044c5957697265642030392f4a616e2f32303134205468652047726e64204578706572696d656e7420476f6573204c6976653a204f76657273746f636b2e636f6d204973204e6f7720416363657074696e6720426974636f696e73"
86+
"04ffff001d01044c5957697265642030392f4a616e2f3230313420546865204772616e64204578706572696d656e7420476f6573204c6976653a204f76657273746f636b2e636f6d204973204e6f7720416363657074696e6720426974636f696e73"
8687
).to_vec());
8788
ret.input.push(TxIn {
8889
previous_output: OutPoint::null(),
@@ -155,9 +156,9 @@ pub fn genesis_block(network: Network) -> Block {
155156
version: block::Version::ONE,
156157
prev_blockhash: Hash::all_zeros(),
157158
merkle_root,
158-
time: 1598918400,
159-
bits: CompactTarget::from_consensus(0x1e0377ae),
160-
nonce: 52613770,
159+
time: 1417713337,
160+
bits: CompactTarget::from_consensus(0x207fffff),
161+
nonce: 1096447,
161162
},
162163
txdata,
163164
}
@@ -170,9 +171,9 @@ pub fn genesis_block(network: Network) -> Block {
170171
version: block::Version::ONE,
171172
prev_blockhash: Hash::all_zeros(),
172173
merkle_root,
173-
time: 1296688602,
174+
time: 1417713337,
174175
bits: CompactTarget::from_consensus(0x207fffff),
175-
nonce: 2,
176+
nonce: 1096447,
176177
},
177178
txdata,
178179
}
@@ -199,7 +200,7 @@ mod test {
199200
assert_eq!(
200201
genesis_tx.input[0].script_sig.as_bytes(),
201202
&hex!(
202-
"04ffff001d01044c5957697265642030392f4a616e2f32303134205468652047726e64204578706572696d656e7420476f6573204c6976653a204f76657273746f636b2e636f6d204973204e6f7720416363657074696e6720426974636f696e73"
203+
"04ffff001d01044c5957697265642030392f4a616e2f3230313420546865204772616e64204578706572696d656e7420476f6573204c6976653a204f76657273746f636b2e636f6d204973204e6f7720416363657074696e6720426974636f696e73"
203204
)
204205
);
205206

@@ -267,12 +268,12 @@ mod test {
267268
genesis_block.header.merkle_root.to_string(),
268269
"e0028eb9648db56b1ac77cf090b99048a8007e2bb64b68f092c03c7f56a662c7"
269270
);
270-
assert_eq!(genesis_block.header.time, 1598918400);
271-
assert_eq!(genesis_block.header.bits, CompactTarget::from_consensus(0x1e0377ae));
272-
assert_eq!(genesis_block.header.nonce, 52613770);
271+
assert_eq!(genesis_block.header.time, 1417713337);
272+
assert_eq!(genesis_block.header.bits, CompactTarget::from_consensus(0x207fffff));
273+
assert_eq!(genesis_block.header.nonce, 1096447);
273274
assert_eq!(
274275
genesis_block.header.block_hash().to_string(),
275-
"4e5f930c5d73a8792fa681ba8c5eaf74aa63974a5b1f598dd508029aee70167b"
276+
"000008ca1832a4baf228eb1553c03d3a2c8e02399550dd6ea8d65cec3ef23d2e"
276277
);
277278
}
278279

@@ -283,14 +284,14 @@ mod test {
283284
assert_eq!(genesis_block.header.prev_blockhash, Hash::all_zeros());
284285
assert_eq!(
285286
genesis_block.header.merkle_root.to_string(),
286-
"babeaa0bf3af03c0f12d94da95c7f28168be22087a16fb207e7abda4ae654ee3"
287+
"e0028eb9648db56b1ac77cf090b99048a8007e2bb64b68f092c03c7f56a662c7"
287288
);
288-
assert_eq!(genesis_block.header.time, 1296688602);
289+
assert_eq!(genesis_block.header.time, 1417713337);
289290
assert_eq!(genesis_block.header.bits, CompactTarget::from_consensus(0x207fffff));
290-
assert_eq!(genesis_block.header.nonce, 2);
291+
assert_eq!(genesis_block.header.nonce, 1096447);
291292
assert_eq!(
292293
genesis_block.header.block_hash().to_string(),
293-
"53b3ed3030781ac19e4852d9c58f2804574f9866f3f7f69131eeb13f449f8007"
294+
"000008ca1832a4baf228eb1553c03d3a2c8e02399550dd6ea8d65cec3ef23d2e"
294295
);
295296
}
296297
}

key-wallet/src/account/account_type.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ impl AccountType {
260260
Network::Dash => {
261261
Ok(DerivationPath::from(crate::dip9::IDENTITY_REGISTRATION_PATH_MAINNET))
262262
}
263-
Network::Testnet => {
263+
Network::Testnet | Network::Devnet | Network::Regtest => {
264264
Ok(DerivationPath::from(crate::dip9::IDENTITY_REGISTRATION_PATH_TESTNET))
265265
}
266266
_ => Err(crate::error::Error::InvalidNetwork),
@@ -272,7 +272,9 @@ impl AccountType {
272272
// Base path with registration index - actual key index added when deriving
273273
let base_path = match network {
274274
Network::Dash => crate::dip9::IDENTITY_TOPUP_PATH_MAINNET,
275-
Network::Testnet => crate::dip9::IDENTITY_TOPUP_PATH_TESTNET,
275+
Network::Testnet | Network::Devnet | Network::Regtest => {
276+
crate::dip9::IDENTITY_TOPUP_PATH_TESTNET
277+
}
276278
_ => return Err(crate::error::Error::InvalidNetwork),
277279
};
278280
let mut path = DerivationPath::from(base_path);
@@ -288,7 +290,7 @@ impl AccountType {
288290
Network::Dash => {
289291
Ok(DerivationPath::from(crate::dip9::IDENTITY_TOPUP_PATH_MAINNET))
290292
}
291-
Network::Testnet => {
293+
Network::Testnet | Network::Devnet | Network::Regtest => {
292294
Ok(DerivationPath::from(crate::dip9::IDENTITY_TOPUP_PATH_TESTNET))
293295
}
294296
_ => Err(crate::error::Error::InvalidNetwork),
@@ -300,7 +302,7 @@ impl AccountType {
300302
Network::Dash => {
301303
Ok(DerivationPath::from(crate::dip9::IDENTITY_INVITATION_PATH_MAINNET))
302304
}
303-
Network::Testnet => {
305+
Network::Testnet | Network::Devnet | Network::Regtest => {
304306
Ok(DerivationPath::from(crate::dip9::IDENTITY_INVITATION_PATH_TESTNET))
305307
}
306308
_ => Err(crate::error::Error::InvalidNetwork),
@@ -354,7 +356,7 @@ impl AccountType {
354356
// Base DashPay root + account 0' + user_id/friend_id (non-hardened per DIP-14/DIP-15)
355357
let mut path = match network {
356358
Network::Dash => DerivationPath::from(crate::dip9::DASHPAY_ROOT_PATH_MAINNET),
357-
Network::Testnet => {
359+
Network::Testnet | Network::Devnet | Network::Regtest => {
358360
DerivationPath::from(crate::dip9::DASHPAY_ROOT_PATH_TESTNET)
359361
}
360362
_ => return Err(crate::error::Error::InvalidNetwork),
@@ -376,7 +378,7 @@ impl AccountType {
376378
// Base DashPay root + account 0' + friend_id/user_id (non-hardened per DIP-14/DIP-15)
377379
let mut path = match network {
378380
Network::Dash => DerivationPath::from(crate::dip9::DASHPAY_ROOT_PATH_MAINNET),
379-
Network::Testnet => {
381+
Network::Testnet | Network::Devnet | Network::Regtest => {
380382
DerivationPath::from(crate::dip9::DASHPAY_ROOT_PATH_TESTNET)
381383
}
382384
_ => return Err(crate::error::Error::InvalidNetwork),

key-wallet/src/derivation.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,9 @@ impl HDWallet {
9999
pub fn bip44_account(&self, account: u32) -> Result<ExtendedPrivKey> {
100100
let path = match self.master_key.network {
101101
crate::Network::Dash => crate::dip9::DASH_BIP44_PATH_MAINNET,
102-
crate::Network::Testnet => crate::dip9::DASH_BIP44_PATH_TESTNET,
102+
Network::Testnet | Network::Devnet | Network::Regtest => {
103+
crate::dip9::DASH_BIP44_PATH_TESTNET
104+
}
103105
_ => return Err(Error::InvalidNetwork),
104106
};
105107

@@ -116,7 +118,9 @@ impl HDWallet {
116118
pub fn coinjoin_account(&self, account: u32) -> Result<ExtendedPrivKey> {
117119
let path = match self.master_key.network {
118120
crate::Network::Dash => crate::dip9::COINJOIN_PATH_MAINNET,
119-
crate::Network::Testnet => crate::dip9::COINJOIN_PATH_TESTNET,
121+
Network::Testnet | Network::Devnet | Network::Regtest => {
122+
crate::dip9::COINJOIN_PATH_TESTNET
123+
}
120124
_ => return Err(Error::InvalidNetwork),
121125
};
122126

@@ -137,7 +141,9 @@ impl HDWallet {
137141
) -> Result<ExtendedPrivKey> {
138142
let path = match self.master_key.network {
139143
crate::Network::Dash => crate::dip9::IDENTITY_AUTHENTICATION_PATH_MAINNET,
140-
crate::Network::Testnet => crate::dip9::IDENTITY_AUTHENTICATION_PATH_TESTNET,
144+
Network::Testnet | Network::Devnet | Network::Regtest => {
145+
crate::dip9::IDENTITY_AUTHENTICATION_PATH_TESTNET
146+
}
141147
_ => return Err(Error::InvalidNetwork),
142148
};
143149

0 commit comments

Comments
 (0)