<p>You probably would find it helpful to peruse the technical articles on the Bitcoin Wiki.  Here are some starting points based on your questions.</p>

<p><a href="https://en.bitcoin.it/wiki/Address" rel="nofollow">https://en.bitcoin.it/wiki/Address</a></p>

<p><a href="https://en.bitcoin.it/wiki/Transaction" rel="nofollow">https://en.bitcoin.it/wiki/Transaction</a></p>

<p><a href="https://en.bitcoin.it/wiki/Script" rel="nofollow">https://en.bitcoin.it/wiki/Script</a></p>

<p><a href="https://en.bitcoin.it/wiki/Network" rel="nofollow">https://en.bitcoin.it/wiki/Network</a></p>

<p><a href="https://en.bitcoin.it/wiki/Block" rel="nofollow">https://en.bitcoin.it/wiki/Block</a></p>

<p>One concept you did not mention but which is crucial to understanding how it works at a low level is the fact that transactions are verified by running Scripts (see link above).</p>

CC BY-SA 3.0
2013-10-14T11:26:52.317Z
BTW it seems you are pretty close to understanding it... not sure about the "randomness" or "some characters not included in the hash" though
RentFree
CC BY-SA 3.0
2013-10-14T12:13:38.260Z
I was reading a paper called CommitCoin http://eprint.iacr.org/2011/677.pdf - it refers to the ability to prove a commitment to a message by allowing the verifier to extract the secret key from two transactions - it does this using the same randomness twice in a transaction. I've been trying to find out where this 'randomness' is  in reality- but I can't seem to find it. The hash missing some characters I found at https://en.bitcoin.it/wiki/Address#What.27s_in_an_address i'll have a look at those links now, thank you rentfree for replying
Patrick
CC BY-SA 3.0
2013-10-14T12:29:26.890Z
using the same randomess & secret key in two seperate transactions******
Patrick
CC BY-SA 3.0
2013-10-15T11:04:47.427Z
@RentFree The ECDSA signature algorithm that Bitcoin uses requires a random number to be used in each signature. There are possible attacks if they are not random. Also, the Base58 encoding of the has of the public key doesn't use some characters, just as base 10 doesn't use `A` as a number, base 58 doesn't use `i` (because it's too easily confused with `1`).
David Schwartz
CC BY-SA 3.0
2013-10-14T11:18:15.583Z
2013-10-14T11:18:15.583Z
RentFree
<p>I've been reading about how BitCoin works for a few weeks now - and I'm trying to understand under-the-hood how the cryptography works. </p>

<p>So i'll explain what I know at the moment - and if someone could clear it up for me? Or provide links to papers that may explain it a bit better (I've read the original bitcoin.pdf, but it is a bit vague)</p>

<p>Scenario:</p>

<p>I have an address (pk, sk).</p>

<p>I have a previous transaction tx that contains 1 bitcoin.</p>

<p>I create a new address (pk', sk') that I want to send the bitcoin too.</p>

<p>I hash the new public key pk' with the previous transaction tx such that hash(pk', tx) = h1. </p>

<p>I sign the hashed transaction h1 using my secret key and some 'randomness' r. Sign"sk"(h1, r)</p>

<p>Then - this gets broadcasted and gets put inside a block by a Bitcoin miner? </p>

<hr>

<p>Also, if I was to send two 0.5 bitcoins to pk' I would do the following...</p>

<p>tx1 and tx2 are associated with 0.5 bitcoins. </p>

<p>I then hash tx1 and tx2 with the new public key pk' such that hash(tx1, pk') = h1 and hash(tx2, pk') = h2. </p>

<p>I then sign both of these hashes using the following function... Sign"sk"(h1, h2, r) or would it be Sign"sk"(h1,r), Sign"sk"(h2,r'). (different randomness for each signature)</p>

<hr>

<p>This may be a silly question.. but I have been finding it difficult to get some clarity on how it works. I also understand that some characters (such as i and 0) are not included in the hash - does this refer to base 58 ? </p>

<transactions><address><cryptography><signature><sending>
Step by Step - how does sending 1 bitcoin work?
Patrick
# Step by Step - how does sending 1 bitcoin work?

(Asked by: username_0 on 2013-10-14)

I've been reading about how BitCoin works for a few weeks now - and I'm trying to understand under-the-hood how the cryptography works.

So i'll explain what I know at the moment - and if someone could clear it up for me? Or provide links to papers that may explain it a bit better (I've read the original bitcoin.pdf, but it is a bit vague)

Scenario:

I have an address (pk, sk).

I have a previous transaction tx that contains 1 bitcoin.

I create a new address (pk', sk') that I want to send the bitcoin too.

I hash the new public key pk' with the previous transaction tx such that hash(pk', tx) = h1.

I sign the hashed transaction h1 using my secret key and some 'randomness' r. Sign"sk"(h1, r)

Then - this gets broadcasted and gets put inside a block by a Bitcoin miner?

---

Also, if I was to send two 0.5 bitcoins to pk' I would do the following...

tx1 and tx2 are associated with 0.5 bitcoins.

I then hash tx1 and tx2 with the new public key pk' such that hash(tx1, pk') = h1 and hash(tx2, pk') = h2.

I then sign both of these hashes using the following function... Sign"sk"(h1, h2, r) or would it be Sign"sk"(h1,r), Sign"sk"(h2,r'). (different randomness for each signature)

---

This may be a silly question.. but I have been finding it difficult to get some clarity on how it works. I also understand that some characters (such as i and 0) are not included in the hash - does this refer to base 58 ?

**Tags:** transactions, address, cryptography, signature, sending


---

## 1 answers

### Answer by username_1 on 2013-10-14. Score: 2

You probably would find it helpful to peruse the technical articles on the Bitcoin Wiki. Here are some starting points based on your questions.

<https://en.bitcoin.it/wiki/Address>

<https://en.bitcoin.it/wiki/Transaction>

<https://en.bitcoin.it/wiki/Script>

<https://en.bitcoin.it/wiki/Network>

<https://en.bitcoin.it/wiki/Block>

One concept you did not mention but which is crucial to understanding how it works at a low level is the fact that transactions are verified by running Scripts (see link above).

> **Comments:**
> **username_1**: BTW it seems you are pretty close to understanding it... not sure about the "randomness" or "some characters not included in the hash" though  
> **username_0**: I was reading a paper called CommitCoin http://eprint.iacr.org/2011/677.pdf - it refers to the ability to prove a commitment to a message by allowing the verifier to extract the secret key from two transactions - it does this using the same randomness twice in a transaction. I've been trying to find out where this 'randomness' is  in reality- but I can't seem to find it. The hash missing some characters I found at https://en.bitcoin.it/wiki/Address#What.27s_in_an_address i'll have a look at those links now, thank you username_1 for replying  
> **username_0**: using the same randomess & secret key in two seperate transactions******  
> **username_2**: @username_1 The ECDSA signature algorithm that Bitcoin uses requires a random number to be used in each signature. There are possible attacks if they are not random. Also, the Base58 encoding of the has of the public key doesn't use some characters, just as base 10 doesn't use `A` as a number, base 58 doesn't use `i` (because it's too easily confused with `1`).  

---

