<p>This transaction actually does have a signature check. Instead of OP_CHECKSIG, it's OP_CHECMULTISIG as the script is a multisignature script. The script in this case is the redeemScript which is provided in the input itself. To see this OP_CHECKMULSITIG, you need to decode the redeemScript.</p>

<p>The redeemScript is:</p>

<pre><code>5141042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf51ae
</code></pre>

<p>Decoded, this redeemScript is:</p>

<pre><code>1 042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf 1 OP_CHECKMULTISIG
</code></pre>

<p>As you can see, this has an OP_CHECKMULTISIG in it which does do a signature check. OP_CHECKMULTISIG checks that <code>n</code> of the public keys listed provide a signature. <code>n</code> is the number that is at the beginning of the script. In this case, <code>n</code> is 1, and the public key is <code>042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf</code>. So this script is looking for a signature that corresponds to that public key.</p>

CC BY-SA 4.0
2018-12-20T09:58:46.147Z
I'm still don't get it. Ok, in input we can set op_checkmultisigsig and be sure that transaction can't be replaced. It's no requered for spending, right? What if some funds left with the same scriptpubkey (HASH160 [pubkey] EQUAL)? To spend inputs, we just need to provide data, which HASH160 will equal to e9c3dd0c07...e9c3dd0c07. So, we know that data from spending transaction (its 3045022100ad0...a2c34b79001) Where is my mistake?
Andrew
CC BY-SA 4.0
2018-12-20T19:54:22.663Z
The output script is a special type known as P2SH. You have to provide something in the input which hashes to that hash. But, that something itself is also a script and is interpreted too. So you must also meet the conditions of that script too. Since that script includes an OP_CHECKMULTISIG, you will need to provide signatures, and without the private keys, you can't do that.
Ava Chow
CC BY-SA 4.0
2018-12-19T01:19:13.503Z
2018-12-19T01:19:13.503Z
Ava Chow
<p>According to my previously asked question (<a href="https://bitcoin.stackexchange.com/questions/82967/p2sh-secure-spending-how/82983#82983">P2SH secure spending. How?</a>) creating transactions without signature checking is probably not secure.</p>

<p>Anyway, I see many transactions</p>

<p><code>(for ex.:40eee3ae1760e3a8532263678cdf64569e6ad06abc133af64f735e52562bccc8)</code> </p>

<p>with scriptpubkey like:
OP_HASH160 [pubkey] OP_EQUAL</p>

<p>With very similar to </p>

<pre><code>OP_SHA256 [hash] OP_EQUAL (from my prev. question)
</code></pre>

<p>And scriptsig doesnt have OP_CHECKSIG</p>

<pre><code>PUSHDATA(72)[3045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001] 

PUSHDATA(69)[5141042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf51ae]
</code></pre>

<p>I can't beleeve this transaction are insecure. But what the difference with this ones? </p>

<transactions><bitcoind><script>
Create simple and secure transaction without checksig?
Andrew
# Create simple and secure transaction without checksig?

(Asked by: username_0 on 2018-12-18)

According to my previously asked question ([P2SH secure spending. How?](https://bitcoin.stackexchange.com/questions/82967/p2sh-secure-spending-how/82983#82983)) creating transactions without signature checking is probably not secure.

Anyway, I see many transactions

`(for ex.:40eee3ae1760e3a8532263678cdf64569e6ad06abc133af64f735e52562bccc8)`

with scriptpubkey like:
OP\_HASH160 [pubkey] OP\_EQUAL

With very similar to

```
OP_SHA256 [hash] OP_EQUAL (from my prev. question)

```

And scriptsig doesnt have OP\_CHECKSIG

```
PUSHDATA(72)[3045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001] 

PUSHDATA(69)[5141042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf51ae]

```

I can't beleeve this transaction are insecure. But what the difference with this ones?

**Tags:** transactions, bitcoind, script


---

## 1 answers

### Answer by username_1 on 2018-12-19. Score: 3 | Accepted answer

This transaction actually does have a signature check. Instead of OP\_CHECKSIG, it's OP\_CHECMULTISIG as the script is a multisignature script. The script in this case is the redeemScript which is provided in the input itself. To see this OP\_CHECKMULSITIG, you need to decode the redeemScript.

The redeemScript is:

```
5141042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf51ae

```

Decoded, this redeemScript is:

```
1 042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf 1 OP_CHECKMULTISIG

```

As you can see, this has an OP\_CHECKMULTISIG in it which does do a signature check. OP\_CHECKMULTISIG checks that `n` of the public keys listed provide a signature. `n` is the number that is at the beginning of the script. In this case, `n` is 1, and the public key is `042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf`. So this script is looking for a signature that corresponds to that public key.

> **Comments:**
> **username_0**: I'm still don't get it. Ok, in input we can set op_checkmultisigsig and be sure that transaction can't be replaced. It's no requered for spending, right? What if some funds left with the same scriptpubkey (HASH160 [pubkey] EQUAL)? To spend inputs, we just need to provide data, which HASH160 will equal to e9c3dd0c07...e9c3dd0c07. So, we know that data from spending transaction (its 3045022100ad0...a2c34b79001) Where is my mistake?  
> **username_1**: The output script is a special type known as P2SH. You have to provide something in the input which hashes to that hash. But, that something itself is also a script and is interpreted too. So you must also meet the conditions of that script too. Since that script includes an OP_CHECKMULTISIG, you will need to provide signatures, and without the private keys, you can't do that.  

---

