FrozenThroneGuy
Member

Offline
Activity: 72
Merit: 43
|
 |
April 09, 2025, 09:03:56 PM |
|
Puzzle 69 is the last puzzle for software developer. Next puzzles will be for embedded engineers with hi-end FPGA and people with a huge amount of money for ASIC prototyping. But it is really difficult to develop asic crystal with secp256k1 logic.
|
|
|
|
|
Denevron
Newbie
Offline
Activity: 121
Merit: 0
|
 |
April 09, 2025, 09:20:35 PM |
|
Could you please convert the following Python code to C++ using the libraries in Mutagen? In this code, I am creating a 69-bit binary, but 32 to 35 of them are 1's and 1's can come in a row at most 6 times. This python speed is very low. I think i can search faster with sha256_avx2 and ripemd160_avx2. However, I don't know C++ and I couldn't figure out how to integrate the codes in the mutagen.
Replace the code in the mutagen to be like this #include <random>
thread_local std::mt19937_64 rng(std::random_device{}());
void RandomXor(Int* currentKey, int bit_length, int flip_count) { alignas(32) uint64_t flipMasks[4] = {0};
// Generate random positions and set bits in batches for (int i = 0; i < flip_count; ) { // Generate 4 random positions at once uint64_t rand_positions[4]; for (int j = 0; j < 4 && i < flip_count; j++, i++) { rand_positions[j] = rng() % bit_length; int word = rand_positions[j] / 64; int bit = rand_positions[j] % 64; flipMasks[word] ^= (1ULL << bit); } }
// Apply XOR in one AVX2 operation __m256i keyVec = _mm256_loadu_si256((__m256i*)currentKey->bits64); __m256i maskVec = _mm256_loadu_si256((__m256i*)flipMasks); __m256i result = _mm256_xor_si256(keyVec, maskVec); _mm256_storeu_si256((__m256i*)currentKey->bits64, result);
// Clear masks to zero for next iteration memset(flipMasks, 0, sizeof(flipMasks)); }
void worker(Secp256K1* secp, int bit_length, int flip_count, int threadId, AVXCounter start, AVXCounter end) { const int fullBatchSize = 2 * POINTS_BATCH_SIZE; alignas(32) uint8_t localPubKeys[HASH_BATCH_SIZE][33]; alignas(32) uint8_t localHashResults[HASH_BATCH_SIZE][20]; alignas(32) int pointIndices[HASH_BATCH_SIZE];
__m256i target16 = _mm256_loadu_si256(reinterpret_cast<const __m256i*>(TARGET_HASH160_RAW.data()));
alignas(32) Point plusPoints[POINTS_BATCH_SIZE]; alignas(32) Point minusPoints[POINTS_BATCH_SIZE];
for (int i = 0; i < POINTS_BATCH_SIZE; i++) { Int tmp; tmp.SetInt32(i); plusPoints[i] = secp->ComputePublicKey(&tmp); minusPoints[i] = plusPoints[i]; minusPoints[i].y.ModNeg(); }
alignas(32) Int deltaX[POINTS_BATCH_SIZE]; IntGroup modGroup(POINTS_BATCH_SIZE); alignas(32) Int pointBatchX[fullBatchSize]; alignas(32) Int pointBatchY[fullBatchSize];
CombinationGenerator gen(bit_length, flip_count); gen.unrank(start.load());
AVXCounter count; count.store(start.load());
uint64_t actual_work_done = 0; auto last_report = chrono::high_resolution_clock::now();
while (!stop_event.load() && count < end) { Int currentKey; currentKey.Set(&BASE_KEY); RandomXor(¤tKey, bit_length, flip_count);
string keyStr = currentKey.GetBase16(); keyStr = string(64 - keyStr.length(), '0') + keyStr;
#pragma omp critical { g_threadPrivateKeys[threadId] = keyStr; } No other random implementation will work properly (beyond Puzzle 64); it must be either 128-bit or 256-bit. ======================================= =========== SOLUTION FOUND ============ ======================================= Private key: 0x1A96CA8D8 Checked 10920739 combinations Bit flips: 15 Time: 2.86 seconds (00:00:02) Speed: 31.35 Mkeys/s Solution saved to puzzle_33_solution.txt Solved puzzle 33 in 2 seconds with this random code. well, mutation of random number of bits, interesting idea) let's say you chose to change from 8 to 20 and it randomly drives you this piece of bits)
|
|
|
|
|
|
nomachine
|
 |
April 09, 2025, 09:41:50 PM |
|
well, mutation of random number of bits, interesting idea) let's say you chose to change from 8 to 20 and it randomly drives you this piece of bits)
It is possible to create various variations. You can generate four different XOR masks at once to be bit-flipped using AVX2.
|
BTC: bc1qdwnxr7s08xwelpjy3cc52rrxg63xsmagv50fa8
|
|
|
|
kTimesG
|
 |
April 09, 2025, 09:46:19 PM |
|
You guys are aware that XOR-ing some key with some whatever bits, produced in whatever way, is basically the same thing as using some whatever bits as the key, right? That's like, bit logic 101 knowledge.
The "benefit" is that you also have to do a totally useless extra operation to simply get a random number. You're all getting drunk with cold water.
|
Off the grid, training pigeons to broadcast signed messages.
|
|
|
btc11235
Jr. Member
Offline
Activity: 35
Merit: 1
|
 |
April 09, 2025, 10:18:33 PM |
|
Puzzle 69 is the last puzzle for software developer. Next puzzles will be for embedded engineers with hi-end FPGA and people with a huge amount of money for ASIC prototyping. But it is really difficult to develop asic crystal with secp256k1 logic.
You guys are aware that XOR-ing some key with some whatever bits, produced in whatever way, is basically the same thing as using some whatever bits as the key, right? That's like, bit logic 101 knowledge.
The "benefit" is that you also have to do a totally useless extra operation to simply get a random number. You're all getting drunk with cold water.
Half the people here are doing their best to come up with creative ways of gaining any edge, no matter how small, over the otherwise nearly insurmountable odds these puzzles present; and the other half seem to be here just to shit on them and generally be as depressing and defeatist as possible  Personally, I'm having much more fun learning and expanding my horizons in the first group 
|
|
|
|
|
Denevron
Newbie
Offline
Activity: 121
Merit: 0
|
 |
April 09, 2025, 10:31:45 PM Last edit: April 10, 2025, 01:19:20 AM by Denevron |
|
well, mutation of random number of bits, interesting idea) let's say you chose to change from 8 to 20 and it randomly drives you this piece of bits)
It is possible to create various variations. You can generate four different XOR masks at once to be bit-flipped using AVX2. I mean, I'll enter it as a range, when starting the program we now do -f 8 (for example), and there, for example, -f 8:10 was set, and flips (they are done randomly between 8 and 10 bits, they can change 8 in the iteration, and another 9, and so on 
|
|
|
|
|
papiro08
Newbie
Offline
Activity: 15
Merit: 0
|
 |
April 10, 2025, 12:44:58 AM |
|
a partial match of 6 bytes is useless in puzzle 135? 
|
|
|
|
|
|
|
Bram24732
Member

Offline
Activity: 322
Merit: 28
|
 |
April 10, 2025, 04:20:31 AM |
|
Half the people here are doing their best to come up with creative ways of gaining any edge, no matter how small, over the otherwise nearly insurmountable odds these puzzles present; and the other half seem to be here just to shit on them and generally be as depressing and defeatist as possible  Personally, I'm having much more fun learning and expanding my horizons in the first group  Personally, I’m just fact checking those ideas with basic math. Some people can’t do that (and that’s ok not everyone has an PhD) and I would really hate that they spend money based on a phoney theory on the internet. That’s why I call the BS when I see it. If there is a theory which has merit I’ll be the first one to praise it and implement it to win 69 faster.
|
I solved 67 and 68 using custom software distributing the load across ~25k GPUs. 4090 stocks speeds : ~8.1Bkeys/sec. Don’t challenge me technically if you know shit about fuck, I’ll ignore you. Same goes if all you can do is LLM reply.
|
|
|
fantom06
Jr. Member
Offline
Activity: 49
Merit: 1
|
 |
April 10, 2025, 05:45:07 AM |
|
Guys, let's solve puzzles not using a GPU, but using a python script and a couple of CPU processors in 15 minutes.
How do you imagine this?) The only acceleration would occur if you wrote the .so extensions for ripemd160_avx2 and sha256_avx2 and used them for hashing in Python. And everything else related to EC. However, the CPU can't handle more than 8M keys per core—that's the maximum I've achieved in C++. Dead end. Hi Error: Puzzle number must be between 20 and 68 help me figure it out. I launch mutagen and an error appears I downloaded the new version today
|
|
|
|
|
FrozenThroneGuy
Member

Offline
Activity: 72
Merit: 43
|
 |
April 10, 2025, 05:57:45 AM |
|
Half the people here are doing their best to come up with creative ways of gaining any edge, no matter how small, over the otherwise nearly insurmountable odds these puzzles present; and the other half seem to be here just to shit on them and generally be as depressing and defeatist as possible  Personally, I'm having much more fun learning and expanding my horizons in the first group  Personally, I’m just fact checking those ideas with basic math. Some people can’t do that (and that’s ok not everyone has an PhD) and I would really hate that they spend money based on a phoney theory on the internet. That’s why I call the BS when I see it. If there is a theory which has merit I’ll be the first one to praise it and implement it to win 69 faster. My opinion not about your idea. Puzzles higher than 69 - it is a question about money or hardware like FPGA, AISC. Have anybody from here tried to switch c++ to verilog via HLS? Or maybe have a few experience into VERILOG? High level FPGA like Virtex UltraScale+ can boost our speed from gkeys/s to petakeys
|
|
|
|
|
Bram24732
Member

Offline
Activity: 322
Merit: 28
|
 |
April 10, 2025, 06:05:59 AM |
|
Half the people here are doing their best to come up with creative ways of gaining any edge, no matter how small, over the otherwise nearly insurmountable odds these puzzles present; and the other half seem to be here just to shit on them and generally be as depressing and defeatist as possible  Personally, I'm having much more fun learning and expanding my horizons in the first group  Personally, I’m just fact checking those ideas with basic math. Some people can’t do that (and that’s ok not everyone has an PhD) and I would really hate that they spend money based on a phoney theory on the internet. That’s why I call the BS when I see it. If there is a theory which has merit I’ll be the first one to praise it and implement it to win 69 faster. My opinion not about your idea. Puzzles higher than 69 - it is a question about money or hardware like FPGA, AISC. Have anybody from here tried to switch c++ to verilog via HLS? Or maybe have a few experience into VERILOG? High level FPGA like Virtex UltraScale+ can boost our speed from gkeys/s to petakeys I have a VHDL version of secp256k1 I did for fun back then. It produces good results but never ran it on an actual chip. But that's not the issue. Even if you had a 10x boost per watt versus a GPU, you would still need to find a way to scale. GPUs are everywhere, FPGAs, not so much.
|
I solved 67 and 68 using custom software distributing the load across ~25k GPUs. 4090 stocks speeds : ~8.1Bkeys/sec. Don’t challenge me technically if you know shit about fuck, I’ll ignore you. Same goes if all you can do is LLM reply.
|
|
|
fantom06
Jr. Member
Offline
Activity: 49
Merit: 1
|
 |
April 10, 2025, 06:31:13 AM |
|
 Where to rent CPU ? Is there a link to this program?
|
|
|
|
|
fantom06
Jr. Member
Offline
Activity: 49
Merit: 1
|
 |
April 10, 2025, 06:41:04 AM |
|
Kowala @Kowala24731 ** Announcement ** The Kowala team will start working on BTC69 April 10th. Funding round 1 is ongoing, restricted to BTC67 and BTC68 participants. If there is room for extra capital (i.e the cap of 400k USD is not reached by April 10th) we will open funding to external parties. Expected time to resolution : 2 to 4 months. We are letting the world know so that people considering taking part in this brute force competition can decide to participate or not knowing all the facts. We estimate competition’s odds of success to be sub 1%.
Not a profitable investment, for a chance of less than 1%  Everyone has their own risk/reward ratio. What matters is that people know all the facts. I would also like to participate, if possible. I think that if everyone launches their video card, then together we would have been able to solve the puzzles long ago. The only question is: "how to implement it so that the reward is divided properly?" Especially since + 100 is almost impossible to solve alone. Together we would all willingly help each other! Isn't that right?
|
|
|
|
|
fantom06
Jr. Member
Offline
Activity: 49
Merit: 1
|
 |
April 10, 2025, 06:50:53 AM |
|
Half the people here are doing their best to come up with creative ways of gaining any edge, no matter how small, over the otherwise nearly insurmountable odds these puzzles present; and the other half seem to be here just to shit on them and generally be as depressing and defeatist as possible  Personally, I'm having much more fun learning and expanding my horizons in the first group  Personally, I’m just fact checking those ideas with basic math. Some people can’t do that (and that’s ok not everyone has an PhD) and I would really hate that they spend money based on a phoney theory on the internet. That’s why I call the BS when I see it. If there is a theory which has merit I’ll be the first one to praise it and implement it to win 69 faster. My opinion not about your idea. Puzzles higher than 69 - it is a question about money or hardware like FPGA, AISC. Have anybody from here tried to switch c++ to verilog via HLS? Or maybe have a few experience into VERILOG? High level FPGA like Virtex UltraScale+ can boost our speed from gkeys/s to petakeys I have a VHDL version of secp256k1 I did for fun back then. It produces good results but never ran it on an actual chip. But that's not the issue. Even if you had a 10x boost per watt versus a GPU, you would still need to find a way to scale. GPUs are everywhere, FPGAs, not so much. I have a theory too I guess it will be somewhere from 15321b520000000000 to 1fdffd9fd0000000000 search continues
|
|
|
|
|
FrozenThroneGuy
Member

Offline
Activity: 72
Merit: 43
|
 |
April 10, 2025, 07:03:01 AM |
|
Half the people here are doing their best to come up with creative ways of gaining any edge, no matter how small, over the otherwise nearly insurmountable odds these puzzles present; and the other half seem to be here just to shit on them and generally be as depressing and defeatist as possible  Personally, I'm having much more fun learning and expanding my horizons in the first group  Personally, I’m just fact checking those ideas with basic math. Some people can’t do that (and that’s ok not everyone has an PhD) and I would really hate that they spend money based on a phoney theory on the internet. That’s why I call the BS when I see it. If there is a theory which has merit I’ll be the first one to praise it and implement it to win 69 faster. My opinion not about your idea. Puzzles higher than 69 - it is a question about money or hardware like FPGA, AISC. Have anybody from here tried to switch c++ to verilog via HLS? Or maybe have a few experience into VERILOG? High level FPGA like Virtex UltraScale+ can boost our speed from gkeys/s to petakeys I have a VHDL version of secp256k1 I did for fun back then. It produces good results but never ran it on an actual chip. But that's not the issue. Even if you had a 10x boost per watt versus a GPU, you would still need to find a way to scale. GPUs are everywhere, FPGAs, not so much. Bram, is it possible to give my your work (VHDL SECP256k1)? I will try to update it. Right now I am doing GPU Cyclone version, it has hashing and comparing to target hash160, on rtx 4060 it has 4.3 Ghash/s, that faster than bitcrack, vanity, etc.
|
|
|
|
|
|
nomachine
|
 |
April 10, 2025, 07:11:26 AM |
|
I launch mutagen and an error appears I downloaded the new version today
Try again now.
|
BTC: bc1qdwnxr7s08xwelpjy3cc52rrxg63xsmagv50fa8
|
|
|
fantom06
Jr. Member
Offline
Activity: 49
Merit: 1
|
 |
April 10, 2025, 07:24:26 AM |
|
I launch mutagen and an error appears I downloaded the new version today
Try again now. how to run to make from mutagen.cpp in puzzle_solver
|
|
|
|
|
|
nomachine
|
 |
April 10, 2025, 07:34:46 AM |
|
how to run to make from mutagen.cpp in puzzle_solver
Compile using make. Rename mutagen to puzzle_solver (or puzzle_solver.exe), or update the Makefile by changing the line to: TARGET = puzzle_solver
|
BTC: bc1qdwnxr7s08xwelpjy3cc52rrxg63xsmagv50fa8
|
|
|
Akito S. M. Hosana
Jr. Member
Offline
Activity: 420
Merit: 8
|
 |
April 10, 2025, 07:41:44 AM |
|
how to run to make from mutagen.cpp in puzzle_solver
Compile using make. Rename mutagen to puzzle_solver (or puzzle_solver.exe), or update the Makefile by changing the line to: TARGET = puzzle_solver Can you add Rick Astley's Never Gonna Give You Up to play when the puzzle is solved 
|
|
|
|
|
|