Hey everyone,
I came across some bech32 Bitcoin addresses that have a weird pattern with a ton of "q" in them. Check out these examples:
bc1qmdtv5qqqqqp4qnz5ghlejq9evyuxgqqqqq9yj3zp2sydwcmqqqqq2j6wen
bc1qqyqzr7gyq5qqqqsq9smqqqqqyyqq6qqqqg6ffrepsrrvmgjspk7srnq0kp
bc1qd4sn6vpwxs6ngdf4qqsljpq9q5qqvqpvqyqqzqqcqqwqqqqrmy5q505e7m
And then there are these bech32 addresses that look different (so probably for something else):
bc1q9scnqtpn9sejcdza05qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq5wx2ys
bc1q9scjcvpvxykrqtpn9s6jcvf39sc46lgqqqqqqqqqqqqqqqqqqqqqlcyp97
Seems like those might be burn addresses linked to certain protocols using Bitcoin. Anyone know which protocol is behind these addresses? A link to some docs about their structure would be super helpful.
Appreciate it!
What's up with all the "q" in some bech32 Bitcoin addresses?
3 replies 484 views
Somebody is probably using this abusive method to inject data into the blockchain. If you look at the transactions that introduced these addresses into the database (instead of the addresses individually) you get a better idea of what is happening. It is a clearly abusive method creating multiple outputs with similar structure.
For example this one: https://mempool.space/tx/e8b00ef950db37b33e3618516afc82710bdef17c3861bb5fb92174ee8556ec57
The first "fake"/burn address after the OP_RETURN contains 0x504e47 which is PNG if converted to UTF8. So it's possible that this is some silly pixel someone injected into the blockchain.
Thanks for the answer. Which address are you referring to after the OP_RETURN, is it
bc1qqpfgj5zwguxs5xs2qqqqqr2ffpz9yqqqqqqsqqqqqyqsxqqqqqjsma5wzf
When I convert it to hex, I do not find the sequence 0x504e47.
Most likely, I am not converting it correctly.
Here is the code I am using.
import bech32
addr = "bc1qqpfgj5zwguxs5xs2qqqqqr2ffpz9yqqqqqqsqqqqqyqsxqqqqqjsma5wzf"
# decode to obtain a list of integers between 0 and 31
b = bech32.bech32_decode(addr)[1]
# convert from 5 bits to 8 bits encoding
decoded_data = bech32.convertbits(b, 5, 8, False)
# create a hex string based on the previous byte array
hex_string = "".join(f"{byte:02x}" for byte in decoded_data)
can you help me?
Thanks.
Yes.
In the link above, if you click on the Details button below the Diagram it will break the tx down to its components which is also decoding the address. It's a quick way of finding 0x504e47.
Try using the decode method instead of bech32_decode when you want to decode an address that should solve the problem. It handles things better like removing the first 5-bits which is the witness version (convertbits(b[1:], 5, 8, False))
https://github.com/sipa/bech32/blob/master/ref/python/segwit_addr.py#L114
Related topics
- Erlay seems to have some issues here’s a better proposal for a bitcoin protocol without invites 3
- Ways to earn some sats by contributing to bitcoin core development 5
- Bitcoin Core displaying coins (UTXOs) in a new tab 13
- Are you in favor of BIP-110? Let's get a Bitcoin poll going. 0
- Exploring the Potential and Challenges of a Kardashev-Scale Bitcoin Network 3
- What can I do to fix this Bitcoin Core error? 8