Guessti (OP)
Jr. Member
Offline
Activity: 91
Merit: 5
|
|
May 30, 2022, 01:48:40 PM |
|
I would like to send BTC and put a message in it. Can someone guide me?
Thanks.
|
|
|
|
pooya87
Legendary
Offline
Activity: 3584
Merit: 10909
|
|
May 30, 2022, 01:57:33 PM |
|
Bitcoin is a payment system and its blockchain is a place to store payment history not arbitrary messages.
Sadly bitcoin offers a solution to store such messages through an OP_RETURN output and the standard size limit for that is 80 bytes.
|
|
|
|
|
Guessti (OP)
Jr. Member
Offline
Activity: 91
Merit: 5
|
|
May 30, 2022, 02:21:25 PM |
|
Bitcoin is a payment system and its blockchain is a place to store payment history not arbitrary messages.
Sadly bitcoin offers a solution to store such messages through an OP_RETURN output and the standard size limit for that is 80 bytes.
Bitcoin isn't what "pooya87" says it is.
|
|
|
|
Lucius
Legendary
Offline
Activity: 3374
Merit: 6077
Crypto Swap Exchange🈺
|
|
May 30, 2022, 03:04:15 PM |
|
Bitcoin isn't what "pooya87" says it is. What is your definition of Bitcoin, is it perhaps a system for permanently storing messages on the blockchain? Maybe Satoshi made a mistake when he added the message " EThe Times 03/Jan/2009 Chancellor on brink of second bailout for banks" in Genesis block If we search the blockchain we can find really interesting messages, such as those about marriage propositions - I wonder if any of them resulted in marriage
|
|
|
|
BlackHatCoiner
Legendary
Offline
Activity: 1652
Merit: 8159
Bitcoin is a royal fork
|
|
May 30, 2022, 03:25:36 PM Merited by NeuroticFish (5), LoyceV (4), ABCbits (3), pooya87 (2), d5000 (1), DdmrDdmr (1), m2017 (1), n0nce (1), Rizzrack (1) |
|
I would like to send BTC and put a message in it. Can someone guide me? Which wallet do you use? In Electrum, enter OP_RETURN and, right after, your hexadecimally represented message. For example, this message: The Times 30/May/2022 Football's night of shame Hex: 5468652054696d65732033302f4d61792f3230323220466f6f7462616c6c2773206e69676874206f66207368616d65 Check the transaction, made in testnet, on a block explorer: d1cc92eb8af8e21f11177886a95ccda37c5236eafa170a446c031da6f8834a1d
|
|
|
|
LoyceV
Legendary
Offline
Activity: 3444
Merit: 17452
Thick-Skinned Gang Leader and Golden Feather 2021
|
|
May 30, 2022, 04:17:36 PM |
|
I would like to send BTC and put a message in it. Do you want the message to be visible to the receiver? That's going to be difficult. Or do you want the message (for instance a hash) to be stored forever, so you can for instance prove ownership of a certain document on a certain date? In Electrum, enter OP_RETURN and, right after, your hexadecimally represented message. That's a lot easier than I expected!
|
|
|
|
d5000
Legendary
Offline
Activity: 4046
Merit: 7322
Decentralization Maximalist
|
|
May 30, 2022, 06:16:13 PM |
|
What is your definition of Bitcoin, is it perhaps a system for permanently storing messages on the blockchain?
In theory yes, as a payment is also a simple message. A signed message allowing the transfer of a value from the owner of one key to the owner of another one (in the simplest form - more exactly: to the person able to provide a signature matching the public key hash, i.e. address). (I've once made a thought experiment: if Bitcoin was banned globally, one could replace the current payments with "human-readable" messages like "I want to thank the person X." or the like, with the public key hash encoded in that message. Would be perfectly possible although obviously we would need to change the tx format for efficiency. Of course that wouldn't impress the regulators much, but it's funny to think about it.) The Bitcoin blockchain obviously wouldn't work if there were only "non-payment messages", because there was no value attached, no miner would like to provide security for it. But even if there are only few payments and 90% non-payment messages it wouldn't be a problem, because of simple economics - storing only text messages in the Bitcoin blockchain would be way too expensive in the long term, and they would have to at least compete with miners wanting to sell their coins. So a "non-payment message spam attack" would probably not put bitcoin in danger as long as the fee market works (this is obviously an argument against BCH/BSV and other "big block" shitcoins, in BSV for example there was a weather app which spammed 96% of the blockchain space). About the original question: BlackHatCoiner's method with OP_RETURN is imo the way to go.
|
|
|
|
m2017
Legendary
Offline
Activity: 1946
Merit: 1388
keep walking, Johnnie
|
|
May 30, 2022, 06:33:10 PM |
|
I would like to send BTC and put a message in it. Can someone guide me? Which wallet do you use? In Electrum, enter OP_RETURN and, right after, your hexadecimally represented message. For example, this message: The Times 30/May/2022 Football's night of shame Hex: 5468652054696d65732033302f4d61792f3230323220466f6f7462616c6c2773206e69676874206f66207368616d65 On which wallets is it possible to write a bitcoin message? About Electrum I now know for sure, thanks to your post. Bitcoin Core may be too? Do I understand correctly that there is no such possibility on hardware wallets? Sadly bitcoin offers a solution to store such messages through an OP_RETURN output and the standard size limit for that is 80 bytes.
OK. And now, could you explain in a language that is understandable to the general public, how many characters can approximately contain these 80 bytes? Not all bitcoin lovers are tech savvy.
|
|
|
|
garlonicon
Copper Member
Legendary
Offline
Activity: 871
Merit: 2107
Pawns are the soul of chess
|
|
May 30, 2022, 06:42:55 PM |
|
Bitcoin Core may be too? If you use Bitcoin Core, then you can make any transaction. For example, you can send coins to "OP_DROP <pubkey> OP_CHECKSIG", then you can spend it by pushing "<signature> <message>". And then, you can push bigger things than 80 bytes (as far as I know, up to 520 bytes, but then you can use more tricks to go above that). Also, putting message as a witness is cheaper, because of Segwit. Do I understand correctly that there is no such possibility on hardware wallets? Technically, it is possible. Practically, it could require writing some software for them. And that's another reason why I avoid hardware wallets: they are too limited for me. how many characters can approximately contain these 80 bytes? That means 80 English characters. For other languages, it may be less, but probably between 2 and 4 bytes per character. Also, you can use Unicode to put "<burger><heart><smile><human>" as emoji, then it could make it shorter, because "burger" will take 6 bytes, but some icon would take at most 4 (unless you want to use a combination, for example a "hand" with a "skin tone one"). (I've once made a thought experiment: if Bitcoin was banned globally, one could replace the current payments with "human-readable" messages like "I want to thank the person X." or the like, with the public key hash encoded in that message. Would be perfectly possible although obviously we would need to change the tx format for efficiency. Of course that wouldn't impress the regulators much, but it's funny to think about it.) I also thought about that. But then, there is a bigger problem, because you need some way to implement mining. So, I can see two options: hashing each message separately, or implementing a hidden chain. I prefer the second, because then all hashes could be hidden as commitments. Then, the only option to stop that, would require banning all ways of encrypting anything (or pushing any random, non-explained data), which is hard to enforce.
|
|
|
|
baro77
|
|
May 30, 2022, 06:44:18 PM |
|
i think the know the use-case would be relevant to choose the way to store the message: OP_RETURN is for sure the cleanest/most elegant way, however it's prunable ( https://en.bitcoin.it/wiki/OP_RETURN)... so imho it should be evaluated if its presence guaranteed only in full nodes is ok or not
|
|
|
|
baro77
|
|
May 30, 2022, 06:54:06 PM |
|
I also thought about that. But then, there is a bigger problem, because you need some way to implement mining. So, I can see two options: hashing each message separately, or implementing a hidden chain. I prefer the second, because then all hashes could be hidden as commitments. Then, the only option to stop that, would require banning all ways of encrypting anything (or pushing any random, non-explained data), which is hard to enforce.
Could you elaborate a bit more about this idea? I'm not understanding neither of the two options...
|
|
|
|
garlonicon
Copper Member
Legendary
Offline
Activity: 871
Merit: 2107
Pawns are the soul of chess
|
|
May 30, 2022, 07:25:26 PM |
|
hashing each message separately You can mine a transaction. Then, it is equivalent of "hashing each message separately". Some example: 000000000fdf0c619cd8e0d512c7e2c0da5a5808e60f12f1e0d01522d2986a51. In this case, no blockchain is needed, but only miners can send valuable messages, most people can only send CPU-mined messages in this case. It is just a hashcash, you can use that as your antispam filter in e-mails. implementing a hidden chain You can hide all commitments of any arbitrary size in a single signature. Just use your r-value as a Taproot public key of your commitment. It can be very simple: you can just make any Taproot address, by using some random public key, and creating all of your commitments inside your TapScript. Then, you can put your 32 bytes in a signature, and by the act of making it, you can prove that you control the relation between your public key and your signature nonce. Later, it is technically possible to validate your commitment, just by taking r-value from your signature, and checking if some commitment can satisfy that public key. If it can, then your commitment is valid. Also, you can sort commitments in your TapScript tree, by putting all hashes for all leaves in ascending order. If everything is always sorted, then you can create an SPV proof, just to show that some spending path is not a part of your TapScript. Then, in your own network, you can reject unsorted commitments as invalid, in this way you can write conditions that would take two leaves, to prove that no commitment is between them.
|
|
|
|
pooya87
Legendary
Offline
Activity: 3584
Merit: 10909
|
|
May 31, 2022, 02:28:15 AM |
|
OK. And now, could you explain in a language that is understandable to the general public, how many characters can approximately contain these 80 bytes? Not all bitcoin lovers are tech savvy. To be fair if you want to use non-common features in bitcoin such as OP_RETURN you have to have some basic understanding of computers since there is no easy to use GUI to enter a text and click send! Even using Electrum requires first converting your text into base16.
|
|
|
|
NotATether
Legendary
Offline
Activity: 1736
Merit: 7290
In memory of o_e_l_e_o
|
|
May 31, 2022, 03:45:09 AM |
|
Sadly bitcoin offers a solution to store such messages through an OP_RETURN output and the standard size limit for that is 80 bytes.
OK. And now, could you explain in a language that is understandable to the general public, how many characters can approximately contain these 80 bytes? Not all bitcoin lovers are tech savvy. All english characters take up one byte. Some greek/cryllic as well as extended latin characters might take up two bytes if we us Unicode [specifically, the UTF-8 encoding]. That leaves 40 chars. Arabic and CJK are the worst offenders taking up mostly 2-3 bytes per character. That leaves somewhere between some 30ish characters to encode in there. Not a lot though. Bytes can be saved by encoding the message in gzip, or LZMA (.xz) format before inserting as hexadecimal.
|
|
|
|
nc50lc
Legendary
Offline
Activity: 2548
Merit: 6185
Self-proclaimed Genius
|
|
May 31, 2022, 04:12:09 AM |
|
I would like to send BTC and put a message in it. Can someone guide me? Which wallet do you use? In Electrum, enter OP_RETURN and, right after, your hexadecimally represented message. For example, this message: The missed most important step is to utilize " Pay to many". That way, he can 'send BTC' as one output and put the message in another, OP_RETURN alone will work in " normal send" but if he wants to include another output, it wont work. In " pay to many", the 'Pay to' field should be like this: OP_RETURN 555555555555555,0 BC1QRECEIVERSBITCOINADDRESS,0.001 ( no need to use 'Tools->Pay to many' if using the latest Electrum versions, just enter multiple lines) e.g.: e3da55f62afcb69a3908324bf6eaf310f48d9366d14c5f0fd19acd3da23af3aeSome screenshots:
|
|
|
|
LoyceV
Legendary
Offline
Activity: 3444
Merit: 17452
Thick-Skinned Gang Leader and Golden Feather 2021
|
|
May 31, 2022, 07:13:02 AM |
|
The missed most important step is to utilize "Pay to many". That way, he can 'send BTC' as one output and put the message in another Unless the receiver expects a message, I don't think it's very likely he'll notice the message. I don't check most of the transactions I receive in a block explorer. In " pay to many", the 'Pay to' field should be like this: OP_RETURN 555555555555555,0 Does this actually work with 0 sats?
|
|
|
|
BlackHatCoiner
Legendary
Offline
Activity: 1652
Merit: 8159
Bitcoin is a royal fork
|
|
May 31, 2022, 07:15:06 AM |
|
Does this actually work with 0 sats? Yes, because it doesn't take space in the UTXO set. OP_RETURN outputs are simply ignored.
|
|
|
|
nc50lc
Legendary
Offline
Activity: 2548
Merit: 6185
Self-proclaimed Genius
|
|
May 31, 2022, 08:45:05 AM |
|
Unless the receiver expects a message, I don't think it's very likely he'll notice the message. I don't check most of the transactions I receive in a block explorer. I just pointed out a correction to BlackHatCoiner's instruction to satisfy the OP's request. I'll leave the questions to OP to you guys. In " pay to many", the 'Pay to' field should be like this: OP_RETURN 555555555555555,0 Does this actually work with 0 sats? I've seen a couple of those transactions in mainnet but if you want to test it yourself, you can construct a transaction in Electrum ( using the instructions above) or Bitcoin Core using createrawtransaction with OP_RETURN output: {\"data\": \"555555555555555\"} w/o amount, don't forget the change. Sign it but don't broadcast since it will be a waste of satoshi, instead: Open Bitcoin Core's console and use the command testmempoolaccept '["RAW_TXN"]' to see if it can be accepted by your mempool.
|
|
|
|
vjudeu
|
|
May 31, 2022, 11:53:34 AM |
|
Sign it but don't broadcast since it will be a waste of satoshi Exactly, all people trying to use blockchain as their data storage, would pay for that. Except miners, because they collect transaction fees. But you can also use testnet as your data storage, those coins are considered worthless, so you can use your coins only to pay fees, and only to share your test cases publicly. Also, you can always use regtest to see if something is possible on mainnet or not.
|
|
|
|
|