对于加密货币的新手来说,可能最难的就是搞清楚比特币的价值和原理。首先大家应该清楚的是,比特币就是一种数字代币,并且这种代币是没有实际的资产作为支撑的,其中挖矿的概念也是很多投资者不理解的。其实大家可以想象一下我们日常使用的货币,一般都是由一些中心化的机构来支配的,而比特币与日常的货币差别明显,毕竟他们的原理就是不同的。很多投资者比较好奇的问题是,比特币的交易数据是存在哪里的?下面就让币圈子小编为大家介绍一下吧。
比特币通过区块链表和Merkle Tree存储交易数据,区块链和Merkle Tree都带有哈希指针,这使得并不是所有节点都需要保存所有区块,而只要保存最近区块的root hash即可。
实际上,比特币中的节点分为轻节点和全节点。轻节点只是记录block header中的root hash的节点,比如,我们安装在智能手机中的比特币钱包就属于轻节点应用,而全节点是包含这个区块中发生的所有交易信息的。
那么,在校验过程中,又涉及了一个叫做Merkle Proof的部分。上图中的tx就代表着交易信息,它是保存在底层的区块中的,它与h(1)、h(9)、h(13)等用绿色标示的哈希指针共同构成了一个Merkle Proof。当轻节点收到这笔交易的Merkle Proof之后,就可以通过tx计算出h(0),计算出h(0)之后,又可以通过h(0)、h(1)计算出h(8)…以此类推,最终也可以计算出一个root hash。这时,就可以拿着这个计算出来的root hash和之前保存在本地的root hash比较一下,如果一致,说明这笔交易实际发生没有经过篡改并且已经写在被校验的区块中了。
如果还不是很好理解的话,我们还可以简单地粗略地这么来看。我们就把整个Merkle Tree当作block bady,他负责保存具体的交易列表,而轻节点就可以当成block header,它只负责保存root hash,用于监督Merkle Tree。
比特币记账采取的是工作量证明法,也就是让记账的人去解一道运算量很大数学题,谁能够最先解出来,就用谁的账本,同时谁也就获得了比特币的奖励,这个解数学题的过程就叫做挖矿,所以挖矿比拼的就是矿机C P U的运算能力。
具体要解怎样的数学题呢?这个数学题是要计算一个哈希函数,即输入一个x求得一个y,哈希函数具有正算容易反算难的特点,也就是说得知x可以计算出y值,但得知y值无法反推出x值。
哈希函数有很多种,比特币采用的是由美国国家安全局发明的sha256算法,即对任意一个字符串进行运算后,都会得到一个256位的二进制数,如sha256(“apple”)=100110……,不论这个字符串是一篇文章还是一部电影,都是输出一个256位的二进制数。
具体到比特币的记账上,就是要对新的区块进行两次sha256运算,得到一个256位的二进制哈希值。
哈希值=sha256[sha256(区块信息)],并要求该哈希值的前n位都是0。
一般一个区块信息会包含四大部分息:前块头部、账单信息、时间、随机数。
由于前块头部、账单信息、时间是已知量,所以解这道数学题的关键就是去不断的尝试随机数,使得哈希值前n位都是0,n越大,哈希值越难算,随机数越难找。
此时所有计算这道数学题的人就是矿工,电脑就是矿机,计算过程就是挖矿。第一个找到对应的随机数使得哈希值前n位都是0的人就有了打包权,以他的账本为准,从而获得奖励。
希望币圈的新手都能够通过上面的文章了解比特币交易数据存在哪里。其实就目前的情况来说,不管是公链还是联盟链,所有的区块链它的数据都是存储在少数有意愿和有能力运行整个数据库的人那里的。比特币是没有自己的中心化数据库的,但是因为一些应用场景的限制以及一些历史遗留的问题,所以现在还处于一个区块链与中心化的服务器共存的状态,未来还需要逐步的迭代,最终要替换掉所有的中心化的机器。但根据摩尔定律,存储设备的容量是会增加,价格也会降低的,并且未来的网速会越来越快,因此大家也不必担心数据是否太大。