__What Are Addresses on Blockchains?__
In the
early days of Bitcoin, it was possible to send payments
to an IP-address like 104.25.248.32 (which is blockgeeks.com). This was
planned to be a convenient method to use Bitcoins without dealing with unhandy public keys and addresses.
However, after the Bitcoin developers realized that this way of sending coins
could be subject to serious man- in-the-middle-attacks, the option was disabled
and did never come back.

__The Public Key: Where the Blockchain Address Generation begins__
After
Pay to IP had been abandoned in Bitcoin, P2PKH
became the new standard format for Bitcoin addresses.

It
looks like this:

**1K31KZXjcochXpRhjH9g5MxFFTHPi2zEXb**

A
standard P2PKH address has something like 34 signs and starts with a 1.

P2PKH
is the abbreviation of “Pay To Public Key Hash.” This means that you pay to a
hash of a public key.

__Examples of cryptographic hash functions__- MD 5: It produces a 128-bit hash.
Collision resistance was broken after ~2^21 hashes.
- SHA 1: Produces a 160-bit hash.
Collision resistance broke after ~2^61 hashes.
- SHA 256: Produces a 256-bit hash.
This is currently being used by Bitcoin.
- Keccak-256: Produces a 256-bit
hash and is currently used by Ethereum.

__So what is hashing?__
In simple terms, hashing means taking an input string of any
length and giving out an output of a fixed length.

In the context of cryptocurrencies like Bitcoin, the
transactions are taken as an input and run through a hashing algorithm (Bitcoin uses SHA-256) which gives an output of a fixed
length.

As you can see, in the case of SHA-256,
no matter how big or small your input is, the output will always have a fixed
256-bits length.

This becomes critical when you are dealing with a huge amount
of data and transactions. So basically, instead of remembering the input data
which could be huge, you can just remember the hash and keep track.

__Various properties of hashing functions and how they get implemented in the blockchain.__
A cryptographic hash function is a special class of hash
functions which has various properties making it ideal for cryptography.

There are certain properties that a cryptographic hash function needs to have
in order to be considered secure.

1.

**Deterministic -**This means that no matter how many times you parse through a particular input through a hash function you will always get the same result.
2.

**Quick Computation -**The hash function should be capable of returning the hash of an input quickly. If the process isn’t fast enough then the system, simply won’t be efficient.
3.

**Pre-Image Resistance -**What pre-image resistance states is that given H(A) it is infeasible to determine A, where A is the input and H(A) is the output hash.
Suppose
you are rolling a dice and the output is the hash of the number that comes up
from the dice. How will you be able to determine what the original number was?
It’s simple all that you have to do is to find out the hashes of all numbers
from 1-6 and compare. Since hash functions are deterministic, the hash of a
particular input will always be the same, so you can simply compare the hashes
and find out the original input.

But
this only works when the given amount of data is very less. What happens when
you have a huge amount of data? Suppose you are dealing with a 128-bit hash.
The only method that you have to find the original input is by using the “brute-force method”.
Brute-force method basically means that you have to pick up a random input,
hash it and then compare the output with the target hash and repeat until you
find a match.

So,
while it is possible to break pre-image resistance via brute force method, it
takes so long that it doesn’t matter.

**4.**

**Small Changes in The Input Changes the Hash-**Even if you make a small change in your input, the changes that will be reflected in the hash will be huge.

**5.**

**Collision Resistant -**Given two different inputs A and B where H(A) and H(B) are their respective hashes, it is infeasible for H(A) to be equal to H(B)

## 0 comments:

## Post a Comment