Gitcoin is GDPR complaint. Learn more in
Gitcoin's Terms & Conditions.
Check out the Issue Explorer
Looking to fund some work? You can submit a new Funded Issue here.
Edit the .py file mentioned further below that will run if/then loop statements while generating random mnemonics until a valid palindromic one is found. Additional reference:
1) generate a valid mnemonic randomly using the tool (and note the values of bit position 8,9,10 & 11, which are the last four bits of the first word or first group of 11-bits from the left)
2) put the words into reverse order, then translate them back into groups of 11 bits,
3) SHA256 hash the first 128 bits (not 132) as a bytearray and compute the 4-bit checksum,
4) check if the checksum matches the leftover 4 bits from prior step which should match the last four bits of the first group noted in step 1. If they match, a mnemonic is palindromic and should be valid both as a little endian and big endian format. If no match, the program should loop back and repeat steps 1-4.
The file to use as a basis for this experiment is: https://github.com/hatgit/BIP39_mnemonic_creation_light_python/blob/master/Palindromic_Mnemonic_experiment.py
Example of steps that didn't lead to a palindromic mnemonic and should loop over again:
Initial entropy plus checksum:
11-bit groups (note the last 4 bits of first group):
['0110100**0111**', '01101110010', '11110100010', '01110011111', '01100010111', '11010110110', '10111011011', '01101100011', '11100000010', '11001100010', '00010111011', '11101010110']
Index values of words:
[839, 882, 1954, 927, 791, 1718, 1499, 867, 1794, 1634, 187, 1878]
happy hour violin initial glass strategy rocket hockey theory slush blast turn
Putting the above mnemonic into reverse:
turn blast slush theory hockey rocket strategy glass initial violin hour happy
Extract first 128 bits and compute checksum:
checksum didn't match:
['11101010110', '00010111011', '11001100010', '11100000010', '01101100011', '10111011011', '11010110110', '01100010111', '01110011111', '11110100010', '01101110010', '01101001100'] <— checksum here of 1100 would have had to been **0111**, in order for the mnemonic to have been palindromic (not its entropy) where last word would have been "happy" and not "hat".
[1878, 187, 1634, 1794, 867, 1499, 1718, 791, 927, 1954, 882, 844]
turn blast slush theory hockey rocket strategy glass initial violin hour hat
Repeat all steps until a match is found.