<p>One of the standardness rules (relay rules) in Bitcoin Core is that the scriptSig must contain only operations that push data to the stack. Since you have actual opcodes that do non-push things, this transaction is non-standard so your node is not accepting it.</p>

<p>On regtest, you can disable standardness checks by adding <code>-acceptnonstdtxn</code> to your startup command.</p>

CC BY-SA 4.0
2020-01-17T08:35:41.473Z
Thanks for reply. The similar transaction (with same procedure) works on testnet in the same node without use acceptnonstdtxn.
monkeyUser
CC BY-SA 4.0
2020-01-17T11:11:46.107Z
Tests (https://bitcoin.org/en/release/v0.19.0.1#miscellaneous-cli-changes)
The regression test chain enabled by the -regtest command line flag now requires transactions to not violate standard policy by default. This is the same default used for mainnet and makes it easier to test mainnet behavior on regtest. Note that the testnet still allows non-standard txs by default and that the policy can be locally adjusted with the -acceptnonstdtxn command line flag for both test chains. (#15891)
monkeyUser
CC BY-SA 4.0
2020-01-17T13:14:32.127Z
Yes, that is expected behavior. Testnet defaults to `-acceptnonstdtxn=1` while both mainnet and regtest default to `-acceptnonstdtxn=0`. On mainnet, this cannot be changed, but on regtest, it can.
Ava Chow
CC BY-SA 4.0
2020-01-16T16:54:31.887Z
2020-01-16T16:54:31.887Z
Ava Chow
<p>I create a transaction in regtest without send it, I have transaction data signed.
I modified a little bit the scriptSig in order to replicate transaction malleability, I add two operations (2 OP_DROP) and increase the scriptSig length from 6A to 6C.</p>

<p>this is my final result.</p>

<pre><code>0200000001b6a6018077d7e817c13074f4127a641a3225b44e56318ef61d2b746b0271e308000000006c527547304402205fa24c98406b9f18732a586a2d5a5cf8ed5e033afca89dda772963f87bff457d022020c796be2fd4c6c47733214293263e244828211a51f044872090e610d5e1e8820121024f29076388ac6ed18b281a149e88043be7e78f72e138f3498853d8918f7f5448ffffffff01606b042a010000001976a914f1edb261a91e7cb03737708d718b2c47b7aa5c8e88ac00000000
</code></pre>

<p>When I try to send rawtransaction I receive this message:</p>

<pre><code>error code: -26
error message:
scriptsig-not-pushonly (code 64).
</code></pre>

<p>I'm using bitcoin-core 0.19.0.1</p>

<transactions><regtest><transaction-malleability>
scriptsig-not-pushonly (code 64) during send transaction in regtest
monkeyUser
# scriptsig-not-pushonly (code 64) during send transaction in regtest

(Asked by: username_0 on 2020-01-16)

I create a transaction in regtest without send it, I have transaction data signed.
I modified a little bit the scriptSig in order to replicate transaction malleability, I add two operations (2 OP\_DROP) and increase the scriptSig length from 6A to 6C.

this is my final result.

```
0200000001b6a6018077d7e817c13074f4127a641a3225b44e56318ef61d2b746b0271e308000000006c527547304402205fa24c98406b9f18732a586a2d5a5cf8ed5e033afca89dda772963f87bff457d022020c796be2fd4c6c47733214293263e244828211a51f044872090e610d5e1e8820121024f29076388ac6ed18b281a149e88043be7e78f72e138f3498853d8918f7f5448ffffffff01606b042a010000001976a914f1edb261a91e7cb03737708d718b2c47b7aa5c8e88ac00000000

```

When I try to send rawtransaction I receive this message:

```
error code: -26
error message:
scriptsig-not-pushonly (code 64).

```

I'm using bitcoin-core 0.19.0.1

**Tags:** transactions, regtest, transaction-malleability


---

## 1 answers

### Answer by username_1 on 2020-01-16. Score: 0 | Accepted answer

One of the standardness rules (relay rules) in Bitcoin Core is that the scriptSig must contain only operations that push data to the stack. Since you have actual opcodes that do non-push things, this transaction is non-standard so your node is not accepting it.

On regtest, you can disable standardness checks by adding `-acceptnonstdtxn` to your startup command.

> **Comments:**
> **username_0**: Thanks for reply. The similar transaction (with same procedure) works on testnet in the same node without use acceptnonstdtxn.  
> **username_0**: Tests (https://bitcoin.org/en/release/v0.19.0.1#miscellaneous-cli-changes) The regression test chain enabled by the -regtest command line flag now requires transactions to not violate standard policy by default. This is the same default used for mainnet and makes it easier to test mainnet behavior on regtest. Note that the testnet still allows non-standard txs by default and that the policy can be locally adjusted with the -acceptnonstdtxn command line flag for both test chains. (#15891)  
> **username_1**: Yes, that is expected behavior. Testnet defaults to `-acceptnonstdtxn=1` while both mainnet and regtest default to `-acceptnonstdtxn=0`. On mainnet, this cannot be changed, but on regtest, it can.  

---

