<blockquote>
<p><strong>Public keys indicate your accounts</strong></p>
</blockquote>
<p>The Bitcoin network doesn't have accounts. The Bitcoin network keeps track of unspent coins. Every transaction consumes unspent coins as inputs, spending them, and creates new, different, unspent output coins. This can all be tracked in the list of transactions known as the Bitcoin blockchain - every full node maintains their own copy.</p>
<p>The Bitcoin-core software used to have a way of <em>internally</em> grouping by accounts but that feature was removed (and replaced by labels). These account identifiers were never part of the Bitcoin network.</p>
<p>Some businesses offer accounts but these accounts are outside the Bitcoin network and rely on the kind of trusted third parties that Bitcoin was designed to eliminate any need for.</p>
<hr />
<blockquote>
<p><strong>if everyone can access the signature, public key and the message(transcations), can't someone who don't have the private key use the same signature, message and publicKey to make same request as many times as he wants</strong>.</p>
</blockquote>
<p>Yes, but in the Bitcoin network, a transaction can only be added to the blockchain once. The same signed data implies spending the same unspent transaction outputs (UTXOs) and they can't be spent twice (every Bitcoin node checks this).</p>
<blockquote>
<p><strong>can't I use this same signature to send $15 as many times as I want from 04d4... to 0451...?</strong></p>
</blockquote>
<p>No, you cant spend a coin (UTXO) twice. All other Bitcoin nodes keep track of which TXOs are unspent.</p>
<hr />
<p>The data in your question is a kind of simplified/synthesized version of what is really in a transaction in the Bitcoin network. You may find the following links help get a better understanding of how things work</p>
<ul>
<li><a href="https://bitcoin.stackexchange.com/q/113631/13866">In what format does a block store the transaction data?</a></li>
</ul>
<p>Note that the transaction data has: No addresses. No accounts. No dollar amounts. No link between specific inputs (coins spent) and specific outputs (recipients). No encryption.</p>

CC BY-SA 4.0
2022-09-27T10:04:46.137Z
2022-09-27T10:38:13.973Z
2022-09-27T10:38:13.973Z
RedGrittyBrick
<p>I've just learned signatures and why they're used in blockchain.</p>
<p>As I understand there is a key pair that consist of one public key and one private key:</p>
<ul>
<li><p><strong>Private keys</strong> are used to <strong>sign</strong> a message(transactions), so you can prove that the one who made that transaction is really you.</p>
</li>
<li><p><strong>Public keys</strong> indicate your accounts and also are used to <strong>verify</strong> the signature that has been issued.</p>
</li>
</ul>
<p>So lets say there are two functions:</p>
<pre><code>sign(message, privateKey) = signature
verify(message, publicKey, signature) = True/False
</code></pre>
<p>What I don't understand in this context is, if everyone can access the signature, public key and the message(transcations), can't someone who don't have the private key use the same signature, message and publicKey to make same request as many times as he wants.</p>
<p>Let me give an example so the question can be understood better.</p>
<p><strong>Transaction Block</strong>
<a href="https://i.sstatic.net/CLrBo.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/CLrBo.png" alt="enter image description here" /></a></p>
<p>My question is, can't I use this same signature to send <strong>$15</strong> as many times as I want from <strong>04d4...</strong> to <strong>0451...</strong>? If yes, then yeah I can't create a different transaction since I don't   know the private key however I can still exploit this flaw and empty someone else's account.</p>
<p>By the way, I'm not planning to do such a thing, I'm just a cyber security student who is interested in security of blockchain technologies. :)</p>

<transactions><blockchain><security><block><signature>
Exploiting the use of signature?
BooRuleDie
# Exploiting the use of signature?

(Asked by: username_0 on 2022-09-27)

I've just learned signatures and why they're used in blockchain.

As I understand there is a key pair that consist of one public key and one private key:

* **Private keys** are used to **sign** a message(transactions), so you can prove that the one who made that transaction is really you.
* **Public keys** indicate your accounts and also are used to **verify** the signature that has been issued.

So lets say there are two functions:

```
sign(message, privateKey) = signature
verify(message, publicKey, signature) = True/False

```

What I don't understand in this context is, if everyone can access the signature, public key and the message(transcations), can't someone who don't have the private key use the same signature, message and publicKey to make same request as many times as he wants.

Let me give an example so the question can be understood better.

**Transaction Block**
[![enter image description here](https://i.sstatic.net/CLrBo.png)](https://i.sstatic.net/CLrBo.png)

My question is, can't I use this same signature to send **$15** as many times as I want from **04d4...** to **0451...**? If yes, then yeah I can't create a different transaction since I don't know the private key however I can still exploit this flaw and empty someone else's account.

By the way, I'm not planning to do such a thing, I'm just a cyber security student who is interested in security of blockchain technologies. :)

**Tags:** transactions, blockchain, security, block, signature


---

## 1 answers

### Answer by username_1 on 2022-09-27. Score: 2

> **Public keys indicate your accounts**

The Bitcoin network doesn't have accounts. The Bitcoin network keeps track of unspent coins. Every transaction consumes unspent coins as inputs, spending them, and creates new, different, unspent output coins. This can all be tracked in the list of transactions known as the Bitcoin blockchain - every full node maintains their own copy.

The Bitcoin-core software used to have a way of *internally* grouping by accounts but that feature was removed (and replaced by labels). These account identifiers were never part of the Bitcoin network.

Some businesses offer accounts but these accounts are outside the Bitcoin network and rely on the kind of trusted third parties that Bitcoin was designed to eliminate any need for.

---

> **if everyone can access the signature, public key and the message(transcations), can't someone who don't have the private key use the same signature, message and publicKey to make same request as many times as he wants**.

Yes, but in the Bitcoin network, a transaction can only be added to the blockchain once. The same signed data implies spending the same unspent transaction outputs (UTXOs) and they can't be spent twice (every Bitcoin node checks this).

> **can't I use this same signature to send $15 as many times as I want from 04d4... to 0451...?**

No, you cant spend a coin (UTXO) twice. All other Bitcoin nodes keep track of which TXOs are unspent.

---

The data in your question is a kind of simplified/synthesized version of what is really in a transaction in the Bitcoin network. You may find the following links help get a better understanding of how things work

* [In what format does a block store the transaction data?](https://bitcoin.stackexchange.com/q/113631/13866)

Note that the transaction data has: No addresses. No accounts. No dollar amounts. No link between specific inputs (coins spent) and specific outputs (recipients). No encryption.


---

