<blockquote>
<p>Before the creation and implementation of SegWit, when all running
nodes were non-segwit, if a miner had included an ACS transaction in
his own block and he had managed to mine it, would such a block be
accepted by others nodes?</p>
</blockquote>
<p>Yes.</p>
<blockquote>
<p>Before SegWit implementation, miners could include ACS transactions in
their blocks and all the other nodes should validate them. The fact
that it never happened is because all miners were “honest”.</p>
</blockquote>
<p>It has happened a number of times. For example tx <a href="https://www.blockchain.com/btc/tx/b38bb421d9a54c58ea331c4b4823dd498f1e42e25ac96d3db643308fcc70503e" rel="nofollow noreferrer">https://www.blockchain.com/btc/tx/b38bb421d9a54c58ea331c4b4823dd498f1e42e25ac96d3db643308fcc70503e</a> has two ACS outputs. Of course, <code>ANYONE</code> took them already to address 1AJaMSZDGaANx1wd9u83DTznCxkdrJiK8 :))))</p>
<p>In fact, clients do not verify the output scripts at all while verify blocks.</p>
<blockquote>
<p>What I’m trying to say is that, in the previous version of Bitcoin
(before SegWit), there was nothing to &quot;prohibit&quot; a miner from
spending/stealing someone else's funds.</p>
</blockquote>
<p>... only in case if the funds were sent to <code>ANYONE</code> :)))))</p>

CC BY-SA 4.0
2021-01-15T14:23:43.900Z
Thanks for the response! I was misunderstanding the concept of ACS. I thought that in the old Bitcoin, any tx was a ACS tx. What I mean, that any miner could redeem any UTXO and sent it to his own address. It looked like a bug of the protocol. Now, I understand that to use an "anyone-can-spend" input, this input came from the output of a previous tx where the sender intentionally sent to an "anyone-can-spend" address, and which has to be signed by the sender (unless the input came from another ACS, and so on).
user922921
CC BY-SA 4.0
2021-01-15T13:32:50.007Z
2021-01-15T13:58:38.453Z
2021-01-15T13:58:38.453Z
amaclin
<blockquote>
<p>there was nothing to &quot;prohibit&quot; a miner from spending/stealing someone else's funds</p>
</blockquote>
<p>That was never true, so far as I know, miners have never been able to spend other people's funds seen in normal transactions with the right spending scripts.</p>
<p>A more accurate description of the situation you describe is perhaps that there was nothing to prohibit people from freely leaving their money unprotected in a public place for any passerby to take.</p>

CC BY-SA 4.0
2021-01-15T14:28:16.103Z
"A more accurate description of the situation you describe is perhaps that there was nothing to prohibit people from freely leaving their money unprotected in a public place for any passerby to take." Yes, thanks! I was misunderstanding the concept of ACS tx. This sentence answers my doubts very precisely.
user922921
CC BY-SA 4.0
2021-01-15T14:14:10.123Z
2021-01-15T14:14:10.123Z
RedGrittyBrick
<p>Non-segwit nodes (legacy nodes) see segwit transactions as anyone-can-spend (ACS) transactions. It is clear that such a nodes can (and do) validate blocks containing ACS transactions, because the scripts they run are compatible with the original rules of Bitcoin (this is why SegWit is considered a soft fork). However, I see around the statement that a miner running a non-segwit node cannot include a ACS transaction in his own mining block, because, if he had managed to mine that block, segwits nodes would reject it because digital signatures were missing, resulting in an orphaned block.</p>
<p>Is it correct what I’m saying? If yes, let me consider the following scenario BEFORE the creation and implementation of SegWit on Bitcoin:</p>
<p>Before the creation and implementation of SegWit, when all running nodes were non-segwit, if a miner had included an ACS transaction in his own block and he had managed to mine it, would such a block be accepted by others nodes? I don't see the reason why such a block could be forbidden. From the point of view of the other nodes (which are all non-segwit), they see this new block a one containing ACS transactions, and like any other block nowadays, they should validate it.</p>
<p>What I’m trying to say is that, in the previous version of Bitcoin (before SegWit), there was nothing to &quot;prohibit&quot; a miner from spending/stealing someone else's funds. If the answer is that before SegWit nodes would never accept blocks containing ACS transactions, this means that SegWit is in fact a hard fork, because nowadays they do accept them.</p>
<p>Hence, I see the following three “scenarios”</p>
<ol>
<li>Before SegWit implementation, miners could include ACS transactions in their blocks and all the other nodes should validate them. The fact that it never happened is because all miners were “honest”.</li>
<li>Before SegWit, nodes did not validate blocks containing ACS transactions. But they do validate them now. This results in a HARD fork.</li>
<li>There is something that I’m missing or I’m misunderstanding.</li>
</ol>
<p>I hope the answer is number 3. I’ll appreciate if somebody could help me.</p>

<segregated-witness><blockchain-fork><soft-fork><spending><anyone-can-spend>
Were anyone-can-spend transactions valid before SegWit?
user922921
# Were anyone-can-spend transactions valid before SegWit?

(Asked by: username_0 on 2021-01-15)

Non-segwit nodes (legacy nodes) see segwit transactions as anyone-can-spend (ACS) transactions. It is clear that such a nodes can (and do) validate blocks containing ACS transactions, because the scripts they run are compatible with the original rules of Bitcoin (this is why SegWit is considered a soft fork). However, I see around the statement that a miner running a non-segwit node cannot include a ACS transaction in his own mining block, because, if he had managed to mine that block, segwits nodes would reject it because digital signatures were missing, resulting in an orphaned block.

Is it correct what I’m saying? If yes, let me consider the following scenario BEFORE the creation and implementation of SegWit on Bitcoin:

Before the creation and implementation of SegWit, when all running nodes were non-segwit, if a miner had included an ACS transaction in his own block and he had managed to mine it, would such a block be accepted by others nodes? I don't see the reason why such a block could be forbidden. From the point of view of the other nodes (which are all non-segwit), they see this new block a one containing ACS transactions, and like any other block nowadays, they should validate it.

What I’m trying to say is that, in the previous version of Bitcoin (before SegWit), there was nothing to "prohibit" a miner from spending/stealing someone else's funds. If the answer is that before SegWit nodes would never accept blocks containing ACS transactions, this means that SegWit is in fact a hard fork, because nowadays they do accept them.

Hence, I see the following three “scenarios”

1. Before SegWit implementation, miners could include ACS transactions in their blocks and all the other nodes should validate them. The fact that it never happened is because all miners were “honest”.
2. Before SegWit, nodes did not validate blocks containing ACS transactions. But they do validate them now. This results in a HARD fork.
3. There is something that I’m missing or I’m misunderstanding.

I hope the answer is number 3. I’ll appreciate if somebody could help me.

**Tags:** segregated-witness, blockchain-fork, soft-fork, spending, anyone-can-spend


---

## 2 answers

### Answer by username_1 on 2021-01-15. Score: 0 | Accepted answer

> Before the creation and implementation of SegWit, when all running
> nodes were non-segwit, if a miner had included an ACS transaction in
> his own block and he had managed to mine it, would such a block be
> accepted by others nodes?

Yes.

> Before SegWit implementation, miners could include ACS transactions in
> their blocks and all the other nodes should validate them. The fact
> that it never happened is because all miners were “honest”.

It has happened a number of times. For example tx <https://www.blockchain.com/btc/tx/b38bb421d9a54c58ea331c4b4823dd498f1e42e25ac96d3db643308fcc70503e> has two ACS outputs. Of course, `ANYONE` took them already to address 1AJaMSZDGaANx1wd9u83DTznCxkdrJiK8 :))))

In fact, clients do not verify the output scripts at all while verify blocks.

> What I’m trying to say is that, in the previous version of Bitcoin
> (before SegWit), there was nothing to "prohibit" a miner from
> spending/stealing someone else's funds.

... only in case if the funds were sent to `ANYONE` :)))))

> **Comments:**
> **username_0**: Thanks for the response! I was misunderstanding the concept of ACS. I thought that in the old Bitcoin, any tx was a ACS tx. What I mean, that any miner could redeem any UTXO and sent it to his own address. It looked like a bug of the protocol. Now, I understand that to use an "anyone-can-spend" input, this input came from the output of a previous tx where the sender intentionally sent to an "anyone-can-spend" address, and which has to be signed by the sender (unless the input came from another ACS, and so on).  

---

### Answer by username_2 on 2021-01-15. Score: 3

> there was nothing to "prohibit" a miner from spending/stealing someone else's funds

That was never true, so far as I know, miners have never been able to spend other people's funds seen in normal transactions with the right spending scripts.

A more accurate description of the situation you describe is perhaps that there was nothing to prohibit people from freely leaving their money unprotected in a public place for any passerby to take.

> **Comments:**
> **username_0**: "A more accurate description of the situation you describe is perhaps that there was nothing to prohibit people from freely leaving their money unprotected in a public place for any passerby to take." Yes, thanks! I was misunderstanding the concept of ACS tx. This sentence answers my doubts very precisely.  

---

