Pages:
Author

Topic: NFTs in the Bitcoin blockchain - Ordinal Theory - page 29. (Read 9532 times)

legendary
Activity: 2380
Merit: 17063
Fully fledged Merit Cycler - Golden Feather 22-23
I definetly want to play with this.
I have some basi questions like: is there an official, or rather a de facto marketplace for ordinals?
If I wan tot buy an NFT on the ETH blockchain, I go to opensea.io: is there an equivalent market for the bitcoin blockchain?
legendary
Activity: 1512
Merit: 7340
Farewell, Leo
To be honest, switching to scriptless or a heavily restricted scripting language, seems unrealistic for Bitcoin.
Removing Script from Bitcoin is like redoing Bitcoin. It's a matter of tradeoffs from that point on. Would a heavily restricted language do more good than bad? I don't know, I only know that you don't do such experiments in a world's reserve currency.

I'm curious how this wasn't an issue before in colored coins.
legendary
Activity: 990
Merit: 1108
tromp wrote something about in their own forum. I believe point 1 and 2 both hold true for Monero as well, not sure about #3 and 4.

I think Grin is about the most spam proof chain there is. Where spam is shorthand for inscribed arbitrary data. This is because
  • Grin is scriptless. So there’s no scripts in which to embed data.
  • Grin has no addresses. So you can’t embed data in a pretend address. (you can in other hybrid MW chains like Litecoin).
  • Kernels only allow a few bytes of arbitrary data in past lock heights. If you spread such data over many kernels of one tx, then finding them among a block’s sorted kernels is a challenge.
  • Outputs only allow some arbitrary data in the rangeproofs, much of which is only retrievable by the owner. Since I don’t understand BPs in detail, someone else will need to say how many bytes could be made publicly visible. It will in any case be a small percentage of the BP size of 674 bytes. And it suffers the same challenge of finding a tx’s outputs among a block’s sorted ones. Finally, it will disappear from most full nodes once the output is spent.

While Monero indeed lacks scripts, 2 doesn't hold for Monero as I noted before:

Is that so? https://monerodocs.org/ Only monetary transactions are possible. Technically possible.
Besides the 32-byte tx_extra field you can also put arbitrary data into each output stealth address (making it unspendable as a side effect).

Monero has no time locks, so 3 is irrelevant. Monero does have bulletproofs, so you could store a few bytes there, but unlike Grin, Monero keeps the bulletproofs ordered with the transaction, so it doesn't pose the challenge that Grin does to recover them.

The biggest spam threat to Monero is embedding data in fake addresses of many outputs while aggregating the corresponding rangeproofs into one. That would allow over 90% spam...
hero member
Activity: 924
Merit: 5943
not your keys, not your coins!
I like to solve problems with science & technology, if I can. In this case, we can look at what Monero or Grin are doing and maybe learn something from them.
Sure. What do Monero and Grin do to mitigate this attack?
tromp wrote something about in their own forum. I believe point 1 and 2 both hold true for Monero as well, not sure about #3 and 4.

It is also a moral question, though.
I can make a stand morally. Just as I'm not liable for the economic activity of the rest of the users, some of which is illegal, I don't feel guilty of incidentally distributing illegal content as well. I don't consider myself responsible for that. I don't sell it, I don't stream it, I don't even know it exists. I'm also of the opinion that when you're trying to do good things by means of censorship, the bad moral value of censorship triumphs the good intentions.
I see. I'd agree with the 'I do not even know it exists' since before Ordinals. Embedding data in transactions, addresses, whatever, was always considered a rare, hacky solution that only few users could and would pull off & there was no incentive for doing so. Now, things changed.
I'm not advocating for censorship, but generally restricting the ability to upload arbitrary data, without interfering (censoring) with payments at all.

Also: why should I commit a crime for someone else just because they pay me?
That's not a moral concern, but a legal. And I'm still curious how you can prevent the inclusion of illegal content without preventing the inclusion of any content that is valid but just non-standard.
To be honest, switching to scriptless or a heavily restricted scripting language, seems unrealistic for Bitcoin. So I'm not sure how to implement it; just saying that it is technically possible, because others are already doing it.

My point is there are far less people willing do that. As for protection against such attack, one possible option is dynamic blocksize and neutral fee which implemented on Monero[1]. Another option is modifying behavior on old version of Bitcoin-Qt which determine free transaction based on coin age, expect it's implemented on protocol level.

[1] https://monero.stackexchange.com/a/4567
[2] https://en.bitcoin.it/wiki/Miner_fees#Priority_transactions
That's true. So attacking Bitcoin through NFTs is much more probable and much riskier than through the attack I presented. Which makes it much more important to protect against it...? Or not?
legendary
Activity: 2870
Merit: 7490
Crypto Swap Exchange
But unlike creating an NFT/Inscription, loop of sending Bitcoin between 2 address won't make you any money.
Debatable. Some billionaire could execute this attack by the impression that it'll ruin Bitcoin's image.

That's possible, but it doesn't change such attack won't make you any money. Although it's different case if that billionaire got paid or think running Bitcoin image would make people move to their centralized coin or their service.

Another method to mitigate such attack is making TX which push data (using Taproot OP_FALSE OP_IF OP_PUSH) higher than X bytes become non-standard. It's already discussed by some Bitcoin Core contributor on early February[1]
Sure, you can configure your node to accept whatever it wants, but that won't stop you from Ordinal fans who'll pay miners include their transactions that pay more. I'm questioning if it even does anything if there's real demand for it.

That's true, but it'd discourage some people since it'll be more expensive and take more time (e.g. only some pool offer such service and copy-paste raw signed transaction to miner's website).

Miners shouldn't follow non-standardness, but pure profit.

But on other hand, including non-standard transaction would bring additional complexity to their software which might not be worth it. For example, there's very few pool willing to include transaction created with uncompressed segwit address.

What if I decide to write a script and spend a few BTC to just send transactions between 2 wallets of mine at 1000sat/vB and render Bitcoin unusable (without paying more than 1000sat/vB to send a transaction)?
But unlike creating an NFT/Inscription, loop of sending Bitcoin between 2 address won't make you any money.
So? Sure, I would waste my money doing that, but render Bitcoin basically useless. There are certainly people with such a goal in mind with enough money to do it. I suggest that we look into protecting against attacks, instead of shrugging them off, just because they follow Bitcoin protocol.

My point is there are far less people willing do that. As for protection against such attack, one possible option is dynamic blocksize and neutral fee which implemented on Monero[1]. Another option is modifying behavior on old version of Bitcoin-Qt which determine free transaction based on coin age, expect it's implemented on protocol level.

[1] https://monero.stackexchange.com/a/4567
[2] https://en.bitcoin.it/wiki/Miner_fees#Priority_transactions
legendary
Activity: 1512
Merit: 7340
Farewell, Leo
If everything is standard, then there is nothing you can standardize, because there is a huge risk that it is currently used by someone, and after network upgrade, that person will lose those coins.
Correct, but if someone wants a non-standard transaction to get confirmed, and pays for it, I'm quite sure the miner will not think of the future soft forks. Maybe he should, maybe he shouldn't. I'm only saying he should prioritize profit.

Again, the same question: if something bad has been done, should we continue allowing it? In this context: should the protocol change to prevent abuse of the system?
Yes, but it depends on what manner you'll prevent the abuse.

I like to solve problems with science & technology, if I can. In this case, we can look at what Monero or Grin are doing and maybe learn something from them.
Sure. What do Monero and Grin do to mitigate this attack?

It is also a moral question, though.
I can make a stand morally. Just as I'm not liable for the economic activity of the rest of the users, some of which is illegal, I don't feel guilty of incidentally distributing illegal content as well. I don't consider myself responsible for that. I don't sell it, I don't stream it, I don't even know it exists. I'm also of the opinion that when you're trying to do good things by means of censorship, the bad moral value of censorship triumphs the good intentions.

Also: why should I commit a crime for someone else just because they pay me?
That's not a moral concern, but a legal. And I'm still curious how you can prevent the inclusion of illegal content without preventing the inclusion of any content that is valid but just non-standard.
legendary
Activity: 2898
Merit: 1823
I'm blaming the miners. Seems that they will benefit the most from this whether it hurts bitcoin or doesn't. They'd be fully aware of the potential pitfalls too.

We can't and shouldn't demand for miners to control the type of data stored on-chain / to censor anything. It is their job to just mine blocks and nothing more or less than that.
Also, blaming anyone doesn't help us right now. We should think about solutions, instead.


It's not just "we can't" blame the miners, it's very stupid to suggest that they are "blamable". Everything that's making everything stick together stems from the miners being continued to be incentiviized by the network. As long as the block rewards are enough, as long as there are users willing to over-pay in network fees, the miners will be there to include ANY transaction into the blocks. If a miner decides not to include a transaction, it's another miner's gain. That's good for the network, but what it's also doing is it's neutering Bitcoin from a network for Hard Money that could weaken political strongholds, to a network cloud storage of dick pics and fart sounds.
legendary
Activity: 3472
Merit: 10611
And now, if you allow any non-standard scripts, then it will effectively stop such upgrades, because then it will be a choice between activating some new soft-fork, and potentially invalidating a lot of existing outputs, or looking for a more complex way to introduce new features.
That should never be a concern, definitely not enough to discourage such an upgrade because anybody who goes out of their way to create such outputs should already be well aware of the consequences of doing so (anyone can spend before soft-fork and nobody may spend after it).
hero member
Activity: 924
Merit: 5943
not your keys, not your coins!
I don't think we have a protection against that, either. Much harder problem than here, since those would be 'legitimate' regular transactions.
My point is that if protocol defines "legitimacy", Ordinals and millions-in-fees transactions are legitimate. If someone pays for the damage, it's acceptable.
Again, the same question: if something bad has been done, should we continue allowing it? In this context: should the protocol change to prevent abuse of the system?

Just saying that there are ways to attack Bitcoin and if there are easy mitigations that still allow us to have full freedom in its usage as a payment system, they should be considered.
What's the best method we have to mitigate from these attacks? My best guess is to educate and convince users that Ordinals are nonsense. We definitely can't prevent an attacker from executing this, though.
I like to solve problems with science & technology, if I can. In this case, we can look at what Monero or Grin are doing and maybe learn something from them.

My main issue is storing and distributing other people's data, to be honest. If a random person hands me a hard drive with copyrighted movies and asks me to put that data on my webserver, I will kindly decline.
As I said, I don't have much to provide in the legislative part.
It is also a moral question, though. If you believe it is not trivial to legally determine whether storing and distributing illegal digital material, maybe ask yourself if you are fine storing and distributing it. You know what we are talking about.
Also: why should I commit a crime for someone else just because they pay me? (if we can agree that there is data that is 1000% guaranteed to be criminal to store & distribute)

What if I decide to write a script and spend a few BTC to just send transactions between 2 wallets of mine at 1000sat/vB and render Bitcoin unusable (without paying more than 1000sat/vB to send a transaction)?
But unlike creating an NFT/Inscription, loop of sending Bitcoin between 2 address won't make you any money.
So? Sure, I would waste my money doing that, but render Bitcoin basically useless. There are certainly people with such a goal in mind with enough money to do it. I suggest that we look into protecting against attacks, instead of shrugging them off, just because they follow Bitcoin protocol.
copper member
Activity: 821
Merit: 1992
Currently, if you have "OP_2 " as a Segwit address, it can be spent in any way you want. So, you can have that output, and use anything as your input, it will be non-standard, but valid in a block. For example, there is bc1zqyqs3juw9m address. It has "52020101" Script.

Imagine that it will be widely used, so users will create "OP_2 " outputs, and then spend it with any witness they want, for example they include a huge witness with some NFT. What then?

Then, imagine that some proposal will be discussed. For example, there could be some FutureScript, where after "OP_2", there will be the number, representing some index in some extension tree. What then? Then it would mean that the owner of bc1zqyqs3juw9m can no longer spend those coins under new soft-forked rules, it has to be a valid input for 257th output of the extension tree.

The same was true in Taproot: if you had "OP_1 " before activation, you could use any input, and move those coins. But now, after "OP_1", it is required to put a valid 256-bit x-value for a public key, and create a Schnorr signature, or reveal another public key, and push matching TapScript data.

And now, if you allow any non-standard scripts, then it will effectively stop such upgrades, because then it will be a choice between activating some new soft-fork, and potentially invalidating a lot of existing outputs, or looking for a more complex way to introduce new features. Then, you cannot simply assume that non-standard scripts are not used. If many nodes will allow those transactions, then you have to assume that someone could make a timelocked transaction with such output. Or, there could be a pair of transactions, one creating this output, and another one spending it, and by invalidating this in a new soft-fork, you will invalidate those off-chain transactions, that are currently valid.

Because each soft-fork is about making currently valid things invalid in a new version. As long as you know what is standard, you can pick something non-standard, and standardize it. If everything is standard, then there is nothing you can standardize, because there is a huge risk that it is currently used by someone, and after network upgrade, that person will lose those coins.
legendary
Activity: 1512
Merit: 7340
Farewell, Leo
For example, if miners will start including Segwit v2 spending transactions, even if the meaning is not defined, then it will be impossible to reliably introduce those addresses if needed, because they will be massively used in the wild
Could you please elaborate further? I don't understand with a first sight how can this be a problem.
copper member
Activity: 821
Merit: 1992
Quote
Miners shouldn't follow non-standardness, but pure profit.
Ignoring standardness can break upgradeability. For example, if miners will start including Segwit v2 spending transactions, even if the meaning is not defined, then it will be impossible to reliably introduce those addresses if needed, because they will be massively used in the wild, and then creating a soft-fork with some strict definition of what is spendable, and what is not, could invalidate timelocked transactions.
legendary
Activity: 1512
Merit: 7340
Farewell, Leo
Why there is a need to make those mistakes on the mainnet, and not on some testnet, or a separate chain, designed specifically for that purpose?
Address them, not me.

But unlike creating an NFT/Inscription, loop of sending Bitcoin between 2 address won't make you any money.
Debatable. Some billionaire could execute this attack by the impression that it'll ruin Bitcoin's image.

Another method to mitigate such attack is making TX which push data (using Taproot OP_FALSE OP_IF OP_PUSH) higher than X bytes become non-standard. It's already discussed by some Bitcoin Core contributor on early February[1]
Sure, you can configure your node to accept whatever it wants, but that won't stop you from Ordinal fans who'll pay miners include their transactions that pay more. I'm questioning if it even does anything if there's real demand for it. Miners shouldn't follow non-standardness, but pure profit.
legendary
Activity: 2870
Merit: 7490
Crypto Swap Exchange
What if I decide to write a script and spend a few BTC to just send transactions between 2 wallets of mine at 1000sat/vB and render Bitcoin unusable (without paying more than 1000sat/vB to send a transaction)?
What do you suggest to happen in that scenario? Censor those?
I don't think we have a protection against that, either. Much harder problem than here, since those would be 'legitimate' regular transactions.

But unlike creating an NFT/Inscription, loop of sending Bitcoin between 2 address won't make you any money.

Just saying that there are ways to attack Bitcoin and if there are easy mitigations that still allow us to have full freedom in its usage as a payment system, they should be considered.
What's the best method we have to mitigate from these attacks? My best guess is to educate and convince users that Ordinals are nonsense. We definitely can't prevent an attacker from executing this, though.

They would disagree if they want their own data become immutable or hearing people making profit by selling Ordinal's NFT. Another method to mitigate such attack is making TX which push data (using Taproot OP_FALSE OP_IF OP_PUSH) higher than X bytes become non-standard. It's already discussed by some Bitcoin Core contributor on early February[1].

[1] https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-February/021435.html
copper member
Activity: 821
Merit: 1992
Quote
Freedom is not worth having if it does not include the freedom to make mistakes.
Why there is a need to make those mistakes on the mainnet, and not on some testnet, or a separate chain, designed specifically for that purpose? If someone need NFTs on-chain, then a separate chain can handle it. If there is a need for Proof of Work protection, then it could be Merge Mined with Bitcoin, and then transactions from separate chain could use SPV proofs into Bitcoin transaction.
legendary
Activity: 1512
Merit: 7340
Farewell, Leo
I don't think we have a protection against that, either. Much harder problem than here, since those would be 'legitimate' regular transactions.
My point is that if protocol defines "legitimacy", Ordinals and millions-in-fees transactions are legitimate. If someone pays for the damage, it's acceptable.

Just saying that there are ways to attack Bitcoin and if there are easy mitigations that still allow us to have full freedom in its usage as a payment system, they should be considered.
What's the best method we have to mitigate from these attacks? My best guess is to educate and convince users that Ordinals are nonsense. We definitely can't prevent an attacker from executing this, though.

My main issue is storing and distributing other people's data, to be honest. If a random person hands me a hard drive with copyrighted movies and asks me to put that data on my webserver, I will kindly decline.
As I said, I don't have much to provide in the legislative part.

That's like blowing up your car engine, removing it and putting a few dogs in the front to pull the car. It may get you to your destination, but it's sure as hell not the best nor the intended way. And you still damaged the car in the process.
"Freedom is not worth having if it does not include the freedom to make mistakes." — Mahatma Gandhi.  Smiley
hero member
Activity: 924
Merit: 5943
not your keys, not your coins!
Is that so? https://monerodocs.org/ Only monetary transactions are possible. Technically possible.

Monero allows embedding of arbitrary data (aka spam), though only a small fraction of transaction size.

Besides the 32-byte tx_extra field you can also put arbitrary data into each output stealth address (making it unspendable as a side effect).
Since each output must be accompanied by a rangeproof of 416 bytes for Bulletproof++, this amounts to about 7% of spam, but this percentage would increase if you aggregate all the rangeproofs of many outputs into one that's only logarithmically bigger.

The most spam resistant chain is probably Grin, allowing only a few percent of spam [1].

[1] https://forum.grin.mw/t/ordinals-on-grin/10336
Sure; then I will correct myself: possible, but much less data per tx is possible, making it less suited as a means of data storage and discouraging abuse of a P2P electronic cash system as cloud storage.

Good to hear that Grin is suited even worse for Ordinals! Wink That again proves how you often get (more or less) 'transactions only' for free when you work on on-chain privacy [1], which I also stated in this or the other thread, earlier. And that it is possible to discourage misuse of a cryptocurrency without censoring individual transactions.

[1] https://bitcointalksearch.org/topic/megathread-bitcoin-layer-1-privacy-concepts-ideas-research-discussion-5410526

What if I decide to write a script and spend a few BTC to just send transactions between 2 wallets of mine at 1000sat/vB and render Bitcoin unusable (without paying more than 1000sat/vB to send a transaction)?
What do you suggest to happen in that scenario? Censor those?
I don't think we have a protection against that, either. Much harder problem than here, since those would be 'legitimate' regular transactions.
Just saying that there are ways to attack Bitcoin and if there are easy mitigations that still allow us to have full freedom in its usage as a payment system, they should be considered.

I think we should try to secure Bitcoin against attacks of any kind, if they are objectively harming the blockchain and potentially put it at risk legally (arbitrary data storage...).
They don't harm it objectively. They just take up space and some argue that doesn't help on adoption (which I don't completely agree with, as they do portrait bitcoin in some dumb manner). But in the end, they do pay for those transactions, and since they're completely valid, they deserve a place there.
My main issue is storing and distributing other people's data, to be honest. If a random person hands me a hard drive with copyrighted movies and asks me to put that data on my webserver, I will kindly decline.

It's actually not. The purpose is p2p electronic payments.
And, apparently, some use NFTs for payments[1], which I agree is a dumb method, but there it is. NFT is money; for dumb people, but it is.
That's like blowing up your car engine, removing it and putting a few dogs in the front to pull the car. It may get you to your destination, but it's sure as hell not the best nor the intended way. And you still damaged the car in the process.

Satoshi is no God, though, no matter how some see Bitcoin as a religion. Free market defines Bitcoin, not Satoshi. I think it's pretty obvious that it's a freedom network.
Freedom payment network. Small syntactic difference, big semantic difference. I don't think I need to elaborate why.
legendary
Activity: 990
Merit: 1108
Is that so? https://monerodocs.org/ Only monetary transactions are possible. Technically possible.

Monero allows embedding of arbitrary data (aka spam), though only a small fraction of transaction size.

Besides the 32-byte tx_extra field you can also put arbitrary data into each output stealth address (making it unspendable as a side effect).
Since each output must be accompanied by a rangeproof of 416 bytes for Bulletproof++, this amounts to about 7% of spam, but this percentage would increase by a lot if you aggregate all the rangeproofs of many outputs into one that's only logarithmically bigger.

The most spam resistant chain is probably Grin, allowing only a few bytes of spam [1].

[1] https://forum.grin.mw/t/ordinals-on-grin/10336/2
legendary
Activity: 1512
Merit: 7340
Farewell, Leo
I just don't see why they can't buy themselves a landfill and store their trash there (or a garden, if they insist on storing trash in the wrong location), instead of paying someone to store it in that person's back yard.
I neither recognize reasons to tossing coins to fountains, paying astronomical amounts in fees, using legacy etc., but I'm not going to force them do it in my way. If someone's dumb, I'm going to respect that.  Tongue

What if I decide to write a script and spend a few BTC to just send transactions between 2 wallets of mine at 1000sat/vB and render Bitcoin unusable (without paying more than 1000sat/vB to send a transaction)?
What do you suggest to happen in that scenario? Censor those?

I think we should try to secure Bitcoin against attacks of any kind, if they are objectively harming the blockchain and potentially put it at risk legally (arbitrary data storage...).
They don't harm it objectively. They just take up space and some argue that doesn't help on adoption (which I don't completely agree with, as they do portrait bitcoin in some dumb manner). But in the end, they do pay for those transactions, and since they're completely valid, they deserve a place there.

It's actually not. The purpose is p2p electronic payments.
And, apparently, some use NFTs for payments[1], which I agree is a dumb method, but there it is. NFT is money; for dumb people, but it is.

Fun fact: There is 1 mention of the word 'free' and 0 mentions of the word 'freedom' in that paper. It is obvious that Bitcoin is 'freedom money' through the way it was designed, but I just find it funny how it's been spun into 'freedom network', 'it is all about freedom' or similar terms, when they have not even been used by Satoshi.
Satoshi is no God, though, no matter how some see Bitcoin as a religion. Free market defines Bitcoin, not Satoshi. I think it's pretty obvious that it's a freedom network.

[1] https://oveit.com/blog/2022/10/28/using-nfts-as-payment-tools/
hero member
Activity: 924
Merit: 5943
not your keys, not your coins!
I personally believe people should be allowed to spend their money on whatever they like, too, as long as they are not spending their money to (figuratively) throw trash into my back yard.
What's trash for you isn't necessarily for everyone else. As long as they pay for their "trash", I don't have a problem.
I just don't see why they can't buy themselves a landfill and store their trash there (or a garden, if they insist on storing trash in the wrong location), instead of paying someone to store it in that person's back yard.

The network can handle any amount of trash as long as the sender pays for it. Again, I'm not in favor of absolute freedom, but of the freedom to spend your money in whatever manner you want.
What if I decide to write a script and spend a few BTC to just send transactions between 2 wallets of mine at 1000sat/vB and render Bitcoin unusable (without paying more than 1000sat/vB to send a transaction)?
I think we should try to secure Bitcoin against attacks of any kind, if they are objectively harming the blockchain and potentially put it at risk legally (arbitrary data storage...).

The original purpose is, in my opinion, subjective
It's actually not. The purpose is p2p electronic payments.

Is that so? https://monerodocs.org/ Only monetary transactions are possible. Technically possible.
I don't understand what's this. Monero documentation? How's that related?
It shows you can technically have a cryptocurrency that only allows payments.

As for the storing and distribution of illegal data: I'm not a lawyer, so I can't make a point.
We can ask in Legal section maybe. Grin To reduce emotional responses, we could focus on copyrighted material. Not NFTs, but legitimately protected digital materials like certain movies or pictures. What if someone pays an astronomical amount of money to store a full movie on the Blockchain using Ordinals or some other system. We will all become illegal owners and distributors of the movie. I'd assume that laws are quite clear about that.
Pages:
Jump to: