You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.3 KiB
66 lines
2.3 KiB
/**
|
|
* Script to find the correct derivation path for User Zero's DID
|
|
*
|
|
* User Zero DID: did:ethr:0x0000694B58C2cC69658993A90D3840C560f2F51F
|
|
* Target address: 0x0000694B58C2cC69658993A90D3840C560f2F51F
|
|
*/
|
|
|
|
import { HDNodeWallet, Mnemonic } from 'ethers';
|
|
|
|
const seedPhrase = "rigid shrug mobile smart veteran half all pond toilet brave review universe ship congress found yard skate elite apology jar uniform subway slender luggage";
|
|
const targetAddress = "0x0000694B58C2cC69658993A90D3840C560f2F51F".toLowerCase();
|
|
|
|
console.log('Target address:', targetAddress);
|
|
console.log('Searching for matching derivation path...\n');
|
|
|
|
const mnemonic = Mnemonic.fromPhrase(seedPhrase);
|
|
let found = false;
|
|
|
|
// Try standard Ethereum derivation paths
|
|
for (let account = 0; account < 50; account++) {
|
|
try {
|
|
const path = `m/44'/60'/0'/0/${account}`;
|
|
const wallet = HDNodeWallet.fromPhrase(mnemonic.phrase, path);
|
|
const address = wallet.address.toLowerCase();
|
|
|
|
if (address === targetAddress) {
|
|
console.log(`✅✅✅ MATCH FOUND: ${path}`);
|
|
console.log('Address:', wallet.address);
|
|
console.log('Private key (hex, no 0x prefix):', wallet.privateKey.slice(2));
|
|
console.log('\nUse this path in generateEndorserJWT():');
|
|
console.log(`const wallet = HDNodeWallet.fromPhrase(mnemonic.phrase, "${path}");`);
|
|
found = true;
|
|
break;
|
|
}
|
|
|
|
if (account < 10) {
|
|
console.log(`Path ${path}: ${address}`);
|
|
}
|
|
} catch (e) {
|
|
console.error(`Error with path m/44'/60'/0'/0/${account}:`, e.message);
|
|
}
|
|
}
|
|
|
|
// Also try default path (no account index specified)
|
|
if (!found) {
|
|
try {
|
|
const wallet = HDNodeWallet.fromMnemonic(mnemonic);
|
|
const address = wallet.address.toLowerCase();
|
|
console.log(`\nDefault path (fromMnemonic): ${address}`);
|
|
if (address === targetAddress) {
|
|
console.log('✅✅✅ MATCH FOUND: Default path (fromMnemonic)');
|
|
found = true;
|
|
}
|
|
} catch (e) {
|
|
console.error('Error with default path:', e.message);
|
|
}
|
|
}
|
|
|
|
if (!found) {
|
|
console.log('\n❌ No match found in first 50 account indices');
|
|
console.log('Possible causes:');
|
|
console.log('1. Different derivation path (not m/44\'/60\'/0\'/0/X)');
|
|
console.log('2. Wrong seed phrase');
|
|
console.log('3. User Zero registered with different key source');
|
|
}
|
|
|
|
|