user105219: The goal of bitcoin is to serve as p2p electronic cash. But it still needs a 3rd party (miners) to approve/authorize/record/track/store transactions. The difference is this authority is decentralized and distributed.
Why is it not a complete p2p (like gold, fiat cash) electronic cash? Is it not possible to create such system with cryptography? If yes what are the difficulties?

user208: The existing answer is very good, but I think it does not answer this part of your question:

Is it not possible to create such system with cryptography? If yes what are the difficulties?

Indeed, because the problem isn't one related to cryptography, but physics.
Imagine, in a hypothetical miner-less P2P currency system with all the properties you hope for, that one person creates two transactions that spend the same money twice. The system needs something or someone to determine which of these is accepted, and which one isn't. My understanding of what you're asking for is that it isn't someone - instead, there should be some global, fair, mechanism that makes this determination.
The obvious criterion to use is time: the first of the two wins. Unfortunately, and counter to many people's intuition, there is no such thing as a objective global ordering of events in a distributed system.
Say someone creates two conflicting but otherwise legal transactions (where each individually would be valid if the other was absent), and sends this transaction to two nodes in the network, one in Australia, and one in North America, simultaneously. It's surprising, but these two peers literally have no way to determine which of them saw the transaction first, due to the fact that communication between them takes a non-zero amount of time. The Australia one will think it was first, and the North America one will think it was first, and nothing one can tell the other to prove them wrong. In short: each machine has its own local clock, and order events as they see it, but there is no global clock.
Thus, time cannot be used to determine which of two conflicting transactions is valid. Perhaps another mechanism can, but it's hard to imagine what that would be.

user13866: 
it still needs a 3rd party (miners) to approve/authorize/record/track/store transactions

Role of miners vs other participants
In the beginning miners were not a third-party, every wallet owner was also a miner, all peers performed the same roles.
Nowadays mining has become a separate activity but miners do not really have any special control over the bitcoin network. They have a specialized role but I believe their influence over consensus rules carries the same weight as ordinary wallet nodes. Its just that a mining business deploys a lot more nodes than the average wallet owner does. In any peer-to-peer system, even a completely homogenous one, one person or organisation could deploy a large number of nodes.
approve/authorize/record/track/store transactions
approval
All nodes approve transactions, if all ordinary wallets disapprove of blocks from a miner then that miner loses money.
authorisation
There is no authorisation in the Bitcoin network protocols or consensus rules so far as I know.
The only action similar to authorisation is the P2P process of proving ownership of private keys in order to prove the right to spend the outputs of a transaction. Every wallet does this.
Recording transactions
Miners are responsible for recording transactions in the blockchain. So they do have a special role here. Bitcoin relies on no single organisation having more than 50% of the total available hashing power.
Tracking transactions
All full-nodes track transactions (i.e. keep local records of transactions in blockchain blocks as well as maintain an in-memory pool of unconfirmed transactions). Miners have no special role here.
Storing transactions
All full-nodes store a complete list of transactions from which blocks of fully-spent transactions are optionally pruned. Miners have no special role here.


Why is it not a complete p2p (like gold, fiat cash) electronic cash?

Gold is not P2P in the modern world. Generally people who buy and sell gold directly do so in the form of coins or ingots - the production of coins and ingots is performed by a limited number of businesses not by the buyers and sellers. Often it is governments that mint gold coins. Often governments regulate the gold market. Gold assayers are often relied on by buyers.
Fiat cash is not P2P. Banknotes and coins are typically created by governments, not by buyers and sellers. The amount of fiat cash in circulation is typically managed by governments. Inflation rates are set at the whim of politicians.

105219: <p>The goal of bitcoin is to serve as p2p electronic cash. But it still needs a 3rd party (miners) to approve/authorize/record/track/store transactions. The difference is this authority is decentralized and distributed.</p>

<p>Why is it not a complete p2p (like gold, fiat cash) electronic cash? Is it not possible to create such system with cryptography? If yes what are the difficulties?</p>
 208: <p>The existing answer is very good, but I think it does not answer this part of your question:</p>

<blockquote>
  <p>Is it not possible to create such system with cryptography? If yes what are the difficulties?</p>
</blockquote>

<p>Indeed, because the problem isn't one related to cryptography, but physics.</p>

<p>Imagine, in a hypothetical miner-less P2P currency system with all the properties you hope for, that one person creates two transactions that spend the same money twice. The system needs something or someone to determine which of these is accepted, and which one isn't. My understanding of what you're asking for is that it isn't someone - instead, there should be some global, fair, mechanism that makes this determination.</p>

<p>The obvious criterion to use is time: the first of the two wins. Unfortunately, and counter to many people's intuition, there is no such thing as a objective global ordering of events in a distributed system.</p>

<p>Say someone creates two conflicting but otherwise legal transactions (where each individually would be valid if the other was absent), and sends this transaction to two nodes in the network, one in Australia, and one in North America, simultaneously. It's surprising, but these two peers literally have no way to determine which of them saw the transaction first, due to the fact that communication between them takes a non-zero amount of time. The Australia one will think it was first, and the North America one will think it was first, and nothing one can tell the other to prove them wrong. In short: each machine has its own local clock, and order events as they see it, but there is no global clock.</p>

<p>Thus, time cannot be used to determine which of two conflicting transactions is valid. Perhaps another mechanism can, but it's hard to imagine what that would be.</p>
 13866: <blockquote>
<p>it still needs a 3rd party (miners) to approve/authorize/record/track/store transactions</p>
</blockquote>
<h2>Role of miners vs other participants</h2>
<p>In the beginning miners were not a third-party, every wallet owner was also a miner, all peers performed the same roles.</p>
<p>Nowadays mining has become a separate activity but miners do not really have any special <em>control</em> over the bitcoin network. They have a specialized role but I believe their influence over consensus rules carries the same weight as ordinary wallet nodes. Its just that a mining business deploys a lot more nodes than the average wallet owner does. In any peer-to-peer system, even a completely homogenous one, one person or organisation could deploy a large number of nodes.</p>
<h2>approve/authorize/record/track/store transactions</h2>
<h3>approval</h3>
<p>All nodes approve transactions, if all ordinary wallets disapprove of blocks from a miner then that miner loses money.</p>
<h3>authorisation</h3>
<p>There is no authorisation in the Bitcoin network protocols or consensus rules so far as I know.</p>
<p>The only action similar to authorisation is the P2P process of proving ownership of private keys in order to prove the right to spend the outputs of a transaction. Every wallet does this.</p>
<h3>Recording transactions</h3>
<p>Miners are responsible for recording transactions in the blockchain. So they do have a special role here. Bitcoin relies on no single organisation having more than 50% of the total available hashing power.</p>
<h3>Tracking transactions</h3>
<p>All full-nodes track transactions (i.e. keep local records of transactions in blockchain blocks as well as maintain an in-memory pool of unconfirmed transactions). Miners have no special role here.</p>
<h3>Storing transactions</h3>
<p>All full-nodes store a complete list of transactions from which blocks of fully-spent transactions are optionally pruned. Miners have no special role here.</p>
<hr />
<blockquote>
<p>Why is it not a complete p2p (like gold, fiat cash) electronic cash?</p>
</blockquote>
<p>Gold is not P2P in the modern world. Generally people who buy and sell gold directly do so in the form of coins or ingots - the production of coins and ingots is performed by a limited number of businesses not by the buyers and sellers. Often it is governments that mint gold coins. Often governments regulate the gold market. Gold assayers are often relied on by buyers.</p>
<p>Fiat cash is not P2P. Banknotes and coins are typically created by governments, not by buyers and sellers. The amount of fiat cash in circulation is typically managed by governments. Inflation rates are set at the whim of politicians.</p>
