(In short, allowing all unicode characters makes this trivially easy... HN gets rid of some of the unicode weirdness though so I had to put it on Pastebin. I assume this matches the 'load bearing' criteria as I only use variable width spaces rather than additional characters.)
Not putting it on the blockchain though because I don't hate the planet.
> I assume this matches the 'load bearing' criteria as I only use variable width spaces
I think you might be stretching the rules slightly with that stuff.
Using "medium mathematical space" (U205F) instead of an ascii space seems pretty clearly to be using a special character for the purpose of manipulating the hash.
I'd much rather amulets be created not by messing with invisible codepoint differences, but rather by making more typographically distinct entries and picking out ones that are correct.
When I saw "generated", I thought "have a thesaurus suggest word swaps", not "manipulate invisible unicode characters"
Adding data to a blockchain doesn't use extra energy... As in, probably in the order of posting it to HN. The next block will be mined whether or not your amulet is in it.
More likely however is that the code you used to generate this amulet was worse for the environment.
Competing for the oversubscribed resource of space in the next block does drive up the price, though, which in the end also drives up the mining reward and ultimately energy use.
#!/bin/bash
COUNT=1
while true ; do
COUNT=$((COUNT+1))
SHA=`echo "I adopted $COUNT puppies." | sha256sum | egrep 8888`
if [ "$SHA" != "" ] ; then
echo "$SHA I adopted $COUNT puppies."
fi
done
Sample output:
4f3e14ded07eda16a7fb57c42aebf1f97ef67acba4980bf472a8e188887c7726 - I adopted 6484 puppies.
57c3e9fd05f06a705206d38888b317b5eb596d35c6f308b909a440e2c8e391c8 - I adopted 6627 puppies.
4624f6bb4c7d3d8328888495c1422a1891b609b81abda3ff4d70bedd1c4f6cdd - I adopted 12631 puppies.
9c0be05548139888804d3799ad5729ea424b0487487a6b18803f1aa5746c1904 - I adopted 15663 puppies.
c60fc3f97f62ee07665325e235faa05fefc445aee7d356a9d81f58888c475147 - I adopted 15861 puppies.
Bonus points if the number of puppies adopted is a palindromic prime. [1]
Having to write 40k submissions to find one with 6 8s more than qualifies as rare to my mind.
Automatically incrementing a string might satisfy the requirements, but for an artistic project it's not what I'd base the metrics on, and indeed I don't think the author did.
This concept is philosophically interesting, because an infinitely-powerful deity could compose text with a hash value of all 8's, and anyone could verify that it was authored by someone with more computing power than the universe.
The fact that this is possible, but hasn't happened, may imply that we have never received a message from such an entity.
There was a religious apologetics claim, widely presented and debated in the 1990s, that there were statistical anomalies in the Torah to show that it was really written by God: https://en.wikipedia.org/wiki/Bible_code
However, the measurement technique was somewhat underdetermined, which is a problem akin to p-hacking (as you could look for many possible anomalies and only publish the ones that you successfully find).
> anyone could verify that it was authored by someone with more computing power than the universe
I never thought of this that way, but that's an excellent way to put it! (Although you also need to assume that the hash is extremely strongly preimage-resistant, which we don't have good mathematical techniques to prove today.)
One challenge for this: what is the canonical text encoding and canonicalization, and what is the canonical hash function?
Well, if I were God, I would just define a canonical encoding and hash function as part of the message. Mathematicians would study the algorithm over the years, but never find any flaws.
Isn't that cheating though? By controlling the hash function you can alter the function itself until your message will meet the requirements, even though someone later on would find it impossible to compute a new message that meets the same?
Presumably, God could foresee the cryptographic flaws of any algorithm, and could therefore design a simpler secure hash function than any human. In this case, "secure" means that there exists no algorithm to compute a preimage faster than brute force.
This would be a "nothing up my sleeve" function, in contrast to something like https://en.wikipedia.org/wiki/Dual_EC_DRBG that cryptographers would identify as sketchy.
Hypothetical question: What is the Kolmogorov complexity of a secure 256-bit hash function?
Hence God must have computational power greater than a Turing machine, at least if he wants to prove His hash function minimises Kolmogorov complexity.
For a rough upper bound, there are some examples at [0], which could be less than 100 characters of C (once golfed).
Yeah, my idea makes more sense if you omit the 64-byte limit; then the input can be an entire book.
For an ideal hash function, every output maps to an infinite number of inputs. I don't know if SHA-256 has that property, but God could just define the simplest ideal hash function and let people cryptanalyze it.
You have 2^256 possible hash values and 2^(8*64) = 2^512 different 64 character strings. So for each hash value (including the "only 8s" one) there are, on average, 2^256 64 char strings mapping to that value.
Therefore (but also trivially) a random 64 character string (or any string) has a 1/2^256 chance of having all 8s in its hash. Since English has about 1 bit of information per character, there are only about 2^64 different non-gibberish 64 char strings. The odds that there exists any English phrase with an all 8 hash are 1/2^192 (i.e. zero).
Standard English text is around 1 bit of entropy per character, but it doesn't mean you can only write 2^64 non-gibberish text in 64 characters. For example, there are around 40k eight letter words, way more than 256. The entropy is so low because we keep using the same words, but we don't have to. We can also use abbreviations, invent proper nouns, and we don't even have to limit ourselves to English or even a single language.
"犬 in French is chien, that one is Klign jr" is perfectly valid.
I don't know if all 8s is possible, UTF-8 is quite wasteful for that purpose. Maybe we could take advantage of kanji. I don't know enough about Japanese, and even less Chinese, but it looks like you could make a proper noun by mashing any kanji together, including the obscure ones, and it will be usable and pronounceable. Maybe not pretty, but valid.
Edit: And as a last resort, we could cheat with "password: }8pHgaQ^?7ic'6KIO!uDXQnhL3(6hcfZmRYnGUw1Pz`c?y@D"
> For example, there are around 40k eight letter words, way more than 256. The entropy is so low because we keep using the same words, but we don't have to.
Correct, but that low entropy is what distinguishes
from (sampled from random Wikipedia article titles)
Alabama Christopher List Park Girlfriend Manor crucifera
or
I saw your dad outside of Walmart yesterday.
from (5th word of 2nd section of random Wikipedia articles)
gospel Rich existed school and for Deputy he
> We can also use abbreviations, invent proper nouns,
Sure, make it 1.1 bits per character (the 1 bit is not a precise number anyway). That doesn't change anything about the orders of magnitude involved.
> we don't even have to limit ourselves to English or even a single language.
I tried to look for entropy of Chinese writing, and I've only found an upper bound of 3.8 bits per (UTF8) byte. That makes it still unlikely but at least conceivable that there is an all-8 amulet made of 64 bytes of Chinese text.
> UTF-8 is quite wasteful for that purpose.
Right, but as far as I understand that's the constraint.
> And as a last resort, we could cheat with "password: }8pHgaQ^?7ic'6KIO!uDXQnhL3(6hcfZmRYnGUw1Pz`c?y@D"
Yes, but that's not interesting from either an art nor from a computer science point of view.
But how many of those strings consist entirely of sensical prose?
Even in a string of just 4 letters, out of c500,000 combinations only c5k are a valid word. The longer the string, the smaller % of random letter combinations will happen to be valid prose.
...and with a preimage attack, something that even MD4 --- for which collisions can easily be generated with hand calculation --- resists to this day. I'm reasonably confident that if the three-letter-agencies know of such attacks, or general techniques for doing so, they would be very quiet about it.
Yes. Or even that someone reinvented computing. Or contact from an alien race. Are all more plausible than a deity. For a proof of God I would require something without in which it really is the most likely explanation, like a face appearing on a piece of toast
This script [0] takes any amulet and adds various combinations of unicode white space to the end to create a rarer version without visually changing the original. It definitely goes against the spirit of white space being "load bearing", but was fun to make anyway.
If you accept the questionable premise that the people that write short summaries used in IMDB are writing poetry, then the summary of "Road Trip" (tt7328966):
Two friends set out on a road trip but one of them has a few questions he needs answered.
It didn't play for me, but this is fantastic and brings me back to the 90's / early 00's era of web design with midis and sound effects. I miss that web.
Music and sound effects add to the mood and aesthetic of presentation. It's not so strange, either. TikTok leans on it heavily and people are loving it.
So 10 8's is mythic. That's only 2^40 (probably less since the 8's dont have to be in a specific position in the hash). Based on https://gist.github.com/epixoip/a83d38f412b4737e99bbef804a27... you should be able to bruteforce a mythic amulet in 48 seconds with a high end gpu from 2016.
I wrote a CUDA kernel to look for some. My 3080 managed 3 billion/second including population counting the 8s. After 48 seconds it had spat out three 10-eights and one 11-eights amulet:
Here are some excellent hex digits: 251d5b059cefc6f3
Can you please share how you got the 2^40 number? I've been trying to think of how to figure out the odds of these.
Odds of 4 hex 8's in a row given a 4 digit string is (1/16)^4.
Odds of 4 hex 8's in a row given a 5 digit string is
number of ways to arrange 8s in the first 4 digits (1) times 16 possible 5th digits plus number of ways to arrange 8s in the last 4 digits (1) times 16 possible 1st digits, all divided by the number of possible arrangements (16^5)
I did 10 8's (mythic!) at the beggining of the hash (2^4)^10 = 2^40.
I didnt account they could start at any position, so the actual number is probably
(64-10)/2^40 ≈ 1 / 2^35
We should also subtract strings longer than 10 that were double counted. However i think the probability of such things is negligible relative to 2^35.
If instead we were doing 4 8's i think it would be:
(64-4)/((2^4)^4) = 60/2^16 ≈ 2^10
I've always been bad at calc probabilities so i may have messed this up.
> Odds of 4 hex 8's in a row given a 5 digit string is number of ways to arrange 8s in the first 4 digits (1) times 16 possible 5th digits plus number of ways to arrange 8s in the last 4 digits (1) times 16 possible 1st digits, all divided by the number of possible arrangements (16^5)
You're double counting "88888". But then again so am i.
1T is a huge overcompensation. If you take Ethereum's estimated daily carbon output and divide it by its daily gas units (the unit by which computation is measured) and assign responsiblity that way, minting an Amulet consumes about 20KG CO2 emissions. Transferring one, about half that.
How come the amulet "Winter evening, a leaf, a blue sky above." renders beyond mythic on their scratchpad (https://text.bargains/scratchpad/), yet it doesn't on the command line?
echo "Winter evening, a leaf, a blue sky above." | sha256sum
c0d26be133a1570239f4af2582b15fc8b91d64d64bcd99fdb584e5e3f477840d
12-eights for "microns turnabouts Como migraines": 9a7e6f41875b444851cb19f018cea83e6565762d88888888888813ac47d39ce7
Although I'm also a fan of "Georgetown surfboarded rips nodding", which hashes to the very pleasant 01234567894a7924a0a568c01ae2f48f93921fc9b4437d7866db3be132411b08
This one is incredible! I've minted it so nobody else can grab it. If you have an Ethereum account, let me know your address so I can transfer it to you.
It would be nice if it only considered alphanumerics. Downside: punctuation can mean a lot in poetry. Upside: people might make punctuation less meaningful just to have more strings to try.
> Hello Hackernews, This is one. Whats so tough?
47d751f8964d717320b888888b81db0a8a35e79f528549f0e9dba13e0e4d6c4c
(In short, allowing all unicode characters makes this trivially easy... HN gets rid of some of the unicode weirdness though so I had to put it on Pastebin. I assume this matches the 'load bearing' criteria as I only use variable width spaces rather than additional characters.)
Not putting it on the blockchain though because I don't hate the planet.