"from Russia with love"
In 2011, a former Qiwi employee received 500,000 bitcoins through the company's self-service terminals.
According to Solonin, the activity was noticed by the security service - its employees found that in shops where there are no people, at night the terminals work under heavy load and constantly transmit information. After a three-month investigation, it turned out that the technical director of Qiwi had installed applications for mining bitcoins on the terminals and had already managed to get 500 thousand coins.
Solonin demanded the return of the mined bitcoins, since the resources of the company were used for their production, but the technical director filed a letter of resignation and left the company. According to the head of Qiwi, in fact, there was no damage to the company: "there is no direct loss, it did not cause damage - only to landlords who pay for electricity somewhere out there."
Qiwi representatives told vc.ru that the employee who mined bitcoins was a developer, and he was named the technical director for better understanding among the MACS audience. At the same time, he could not use the mined cryptocurrency.
According to our information, these bitcoins were lost.
Qiwi Press Office
***
ripemd160
there is an opinion that to find all bitcoin, it is enough to run 160 bits of space (ripemd160 160 bit bin, 0123456789abcdef 16, hex 40 length)
an interesting point is that 256-bit space acts as a seed and collisions are obtained 2^256/2^160 = 2^96
the space of the puzzle is smaller and he also takes his numbers.
pz64 base58 <> hash160 converter
from base58 import b58encode
def get_address_from_ripemd160(ripemd_hash):
# steps from https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses
h3 = ripemd_hash
h4 = '00' + h3
h5 = sha256(bytes.fromhex(h4)).hexdigest()
h6 = sha256(bytes.fromhex(h5)).hexdigest()
h7 = h6[0:8]
h8 = h4 + h7
h9 = b58encode(bytes.fromhex(h8))
return h9.decode('ascii')
hash = '3ee4133d991f52fdf6a25c9834e0745ac74248a4' #returns 1F3sAm6ZtwLAUnj7d38pGFxtP3RVEvtsbV
print(get_address_from_ripemd160(hash))
#cat base58.txt | python3 address_to_hash160.py > hex.txt
import sys
from bit.base58 import b58decode_check
from bit.utils import bytes_to_hex
def address_to_hash160(address):
address_bytes = b58decode_check(address)
address_hash160 = bytes_to_hex(address_bytes)[2:]
return address_hash160
print(address_to_hash160("16jY7qLJnxb7CHZyqBP8qca9d51gAjyXQN"))
#for line in sys.stdin:
#print (address_to_hash160(line.rstrip()))
pz 64 16jY7qLJnxb7CHZyqBP8qca9d51gAjyXQN hash160 3ee4133d991f52fdf6a25c9834e0745ac74248a4
how uniform is the hash160 mixing?
for example, we will take in steps of 256 and look at what steps the symbols (hex 40) will fall out in space
3ee4133d991f52fdf6a25c9834e0745ac74248a4
first "3" second "e" third again "e" 4th "4" etc...
an increase in the number of permutations with an increase in the number of characters
16^1 16
16^2 256
16^3 4096
16^4 65536
16^5 1048576
16^6 16777216
16^7 268435456
16^8 4294967296
16^9 68719476736
16^10 1099511627776
16^11 17592186044416
16^12 281474976710656
16^13 4503599627370496
16^14 72057594037927936
16^15 1152921504606846976
16^16 18446744073709551616
16^17 295147905179352825856
16^18 4722366482869645213696
16^19 75557863725914323419136
16^20 1208925819614629174706176
16^21 19342813113834066795298816
16^22 309485009821345068724781056
...
16^36 22300745198530623141535718272648361505980416
16^37 356811923176489970264571492362373784095686656
16^38 5708990770823839524233143877797980545530986496
16^39 91343852333181432387730302044767688728495783936
16^40 1461501637330902918203684832716283019655932542976
if we write all the dropped characters when stepping through at 256 steps (from 0 to 2^256 or 2^63-2^64)
then each of the 16 characters will fall out according to their hash mixing
something like
0 [2, 62, 90, 102, 124, 154, 182, 199, 209, 214, 232, 237, 246]
1 [10, 26, 46, 47, 92, 93, 117, 125, 151, 153, 155, 161, 179, 189, 205, 241]
2 [27, 31, 36, 57, 64, 87, 91, 103, 104, 122, 123, 132, 140, 141, 219, 223, 229, 240, 252]
3 [11, 20, 39, 44, 85, 108, 134, 142, 145, 158, 176, 186, 188, 212, 215, 220, 245]
4 [5, 17, 25, 67, 100, 111, 113, 118, 127, 135, 147, 194, 239]
5 [7, 13, 23, 77, 159, 187, 192, 197, 203, 226, 251]
6 [16, 19, 54, 60, 65, 66, 79, 116, 143, 162, 167, 191, 201, 211, 230, 238, 243]
7 [1, 3, 6, 14, 40, 78, 89, 128, 144, 170, 173, 177, 196, 221]
8 [21, 30, 70, 75, 80, 84, 98, 109, 119, 121, 171, 185, 190, 217, 218, 222, 225, 228, 255]
9 [8, 15, 35, 38, 42, 72, 74, 83, 107, 126, 163, 178, 180, 183, 193, 207, 249]
a [22, 59, 81, 112, 146, 150, 156, 160, 169, 198, 202, 231, 233, 235]
b [9, 33, 52, 58, 86, 94, 114, 115, 157, 227, 234, 244]
c [4, 24, 41, 43, 55, 61, 68, 71, 73, 82, 88, 96, 129, 152, 166, 168, 175, 181, 204, 206, 216, 248]
d [12, 28, 29, 45, 48, 51, 63, 95, 99, 105, 130, 131, 139, 195, 213, 224, 236]
e [34, 37, 56, 76, 97, 101, 110, 133, 136, 137, 149, 164, 165, 174, 184, 210, 242, 247]
f [18, 32, 49, 50, 53, 69, 106, 120, 138, 148, 172, 200, 208, 250, 253, 254]
0 [16, 18, 23, 27, 73, 99, 116, 129, 136, 140, 142, 158, 161, 182, 185, 186, 196, 199, 201, 212, 222, 252]
1 [26, 34, 53, 69, 75, 85, 91, 104, 123, 132, 148, 153, 171, 183, 191, 218, 221, 236, 237]
2 [14, 40, 42, 62, 71, 76, 84, 102, 124, 127, 155, 168, 205, 220, 227]
3 [61, 78, 100, 125, 164, 172, 181, 192, 228, 241, 247]
4 [4, 9, 47, 50, 58, 89, 90, 96, 106, 120, 152, 154, 189, 202, 211, 229, 233]
5 [1, 44, 83, 88, 112, 144, 146, 151, 175, 176, 197]
6 [2, 8, 11, 46, 48, 82, 108, 114, 119, 137, 143, 147, 193, 203, 223, 255]
7 [5, 13, 29, 37, 39, 56, 65, 66, 77, 86, 111, 130, 195, 206]
8 [10, 20, 38, 41, 52, 60, 87, 101, 117, 131, 145, 162, 194, 208, 210, 231, 235, 250]
9 [30, 33, 49, 59, 68, 72, 94, 105, 115, 126, 149, 163, 166, 167, 204, 207, 216]
a [22, 45, 57, 64, 95, 98, 128, 134, 141, 184, 190, 198, 213, 234, 239, 243]
b [19, 55, 63, 79, 92, 103, 110, 133, 165, 173, 188, 209, 226, 238, 245, 248]
c [32, 35, 70, 74, 80, 121, 139, 157, 160, 170, 177, 178, 217, 224, 230, 232, 246]
d [3, 7, 12, 25, 43, 51, 107, 122, 138, 150, 156, 174, 179, 244, 249, 251, 253]
e [24, 28, 67, 97, 109, 113, 118, 159, 180, 187, 215, 219]
f [6, 15, 17, 21, 31, 36, 54, 81, 93, 135, 169, 200, 214, 225, 240, 242, 254]
200
as you can see in step 200, the first and second symbols of the hash160 match "f", "f" the question is whether it makes sense to try to find some regularity in this distribution by collecting statistics
for example, after a certain number of popping out of all numbers, repetitions should begin are there any cycles here. and how to keep statistics hash drop-down sets for each individual character (for the first character out of 40 for the second out of 40, etc.) here 1 step means the distribution from 1 to 256 between 16 characters. the next step they mix and so on once they start repeating (both individual numbers and all sets, there is not a linear distribution of 16 for each of the 256 steps but so)
in the example above, where two "f", "f" matched 200, similarly the entire hash160 hex 40key should match.