概述:
比特币(Bitcoin,缩写BTC)是一种总量恒定2100万的数字货币,具有去中心化、匿名性等特性。向地球另一端转账比特币,就像发送电子邮件一样简单,低成本,无任何限制。比特币因此被用于跨境贸易、支付、汇款等领域。
比特币的使用:
比特币的交易中,没有钱包,只有交易账单,整个比特币系统就是一大堆交易账单。
简化举例:
账单1 从A转到B转了XXX比特币
账单2 从B转到C和D转了XXX比特币
账单3 从C转到E转了XXX比特币
公钥与私钥:
非对称加密中,每个人都有两个密钥——“公钥”和“私钥”。“公钥”是公开的,并且只能用匹配的“私钥”解开。
简化举例:
随机生成两个质数“173,881”,拼成一个6位私钥“173881”,公钥则由这两个私钥相乘生成,即公钥(=173*881)=152413。网络上其他人可见公钥“152413”,而不能由公钥简单地推出私钥“173,881”。从而实现“公钥公开,但只能由匹配的私钥打开”这一准则。
比特币系统让每个参与交易的人,先随机产生一个字符串,作为自己的唯一的“私钥”。然后会通过“私钥”生成对应的唯一“公钥”。生成后,“公钥”在比特币网络上公开给每个人,而“私钥”你要自己藏好,不能让别人知道。这样,我们很容易就能实现下面的功能:当别人用你的“公钥”锁定一个数据(锁定一定数量的比特币)时,只有拥有“私钥”的人(也就是你)才可能解锁这个数据。
简化举例一个账单结构:
FROM(谁发送的,包括两部分)
Previous tx: 你要花的这笔钱的那个账单的公钥(可以是多个),也就是说,你花的任何一笔钱都应该有人转给你过,需要出示那个账单的公钥
scriptSig: 你对这笔交易的签名,简单地说,就是使用你的私钥来解锁被你的公钥锁定的比特币
TO(谁接受,包括两部分)
Value: 要发多少
scriptPubKey: 对方的公钥(可以是多个),让对方的公钥锁定这些比特币,只有他能用自己的私钥解开来使用。
因为你花的任何一笔钱都应该有人转给你过,所以他人可以通过追踪之前的交易信息来保证你有足够的剩余比特币。
比特币用户在电脑上运行比特币客户端软件,这样的电脑称为一个节点。当这笔交易“公钥”“私钥”验证完成,确定无误后,节点把这个交易信息广播给周围的节点,一传十十传百,直到所有节点都收到这笔交易。
不同于银行的“中心记账”模式,这就做到了“去中心化”账本,每个人都有完整的交易账单,而不需要在某个中心进行登记来维持交易资金的同步性。
“挖矿”——比特币的生产过程:
在了解挖矿之前,我们需要先了解比特币系统的“区块链”。
比特币系统在进行交易信息存储的时候,会将一条条交易信息分组打包存储,这个包就是我们常说的区块(Block),基本上每个区块可以容纳近千条交易。区块与区块之间,会通过每个区块的特征参数(Hash)连接起来,每个区块都记录了前一个区块的特征参数,形成了一种链式的存储结构,即“区块链”。
区块的发明,使用户不必要一条一条去比对本地客户端是否拥有完整的交易信息,而只需要比对是否拥有完整正确的区块链即可。
Hash函数与Hash值:
“Hash函数”的作用是将一大段文字内容,按照一定的规则输出为一个定长的摘要信息,这个摘要信息即“Hash值”。这个“Hash值”只与原来的文字有关,即一模一样的文字的“Hash值”是一样的,但只要文字稍做修改,“Hash值”就会变化。
每一个区块包含:上一个区块的Hash值,一堆交易信息,一个叫做Nonce的变量(简单来说,用于改变生成的Hash值)。一个区块的Hash值,可以简单理解为对上面三项“内容”通过一个复杂的数学问题求出的一个Hash值。
Hash值保证了每组区块中的交易信息不会被轻易改变,因为交易信心的变动必然导致此区块的Hash值改变,进而使此区块后面的区块的Hash值验证错误。而想要改变后续所有区块的Hash值来篡改交易信息,绝非易事,因为Hash值要符合一定的要求。
为保证有节点打包比特币交易信息,比特币系统规则规定:打包交易的节点将获得比特币作为酬劳:
A、打包奖励的一部分来自交易创建者支付的交易手续费(每KB交易大小100~1000聪手续费)。
B、另一部分来自初始2100万个比特币的分发,最开始奖励是每个区块50比特币,之后每经过21万个区块(约4年时间)奖励将减半一次,直到2140年左右区块奖励不足1聪为止,此时区块奖励总和为2100万比特币,这才是“比特币总量为2100万”的由来。
打包奖励的存在,使得有大量节点想打包交易。为保证区块链的唯一性,比特币规则规定:节点做Hash运算,并检查运算结果从第一位开始是否有足够多连续的0(可以简单理解为一次扔256个硬币,然后看从第一个硬币开始是否有足够多的连续硬币正面)。获得打包权的唯一诀窍是提高每秒扔硬币的次数,一个每秒能扔100亿次硬币(做100亿次哈希计算)的节点,抢到打包权的概率是每秒扔1亿次硬币节点的100倍。
Hash运算问题的难度由比特币网络自动调整,使之实现平均每小时解决约6个区块的Hash运算。节点大量进行Hash计算需要计算机设备,并消耗大量电力,这个过程在本质上和金矿挖矿很相似(通过挖矿设备,消耗能源换取黄金)。比特币总量恒定,产量越来越少的产生方式也和黄金很相似,因此人们形象地将比特币抢打包权的过程称为“挖矿”。
比特币的特性:
1. 使用区域链技术来去中心化。
2. 算法本身可以确保无法通过大量制造比特币来人为操控币值。
3. 基于密码学的设计可以使比特币只能被真实的拥有者转移或支付。
4. 匿名性,免监管,免税。
5. 比特币较山寨币的优势:由于比特币算法是完全开源的,谁都可以下载到源码,修改些参数,重新编译下,就能创造一种新的p2p货币。但这些山寨货币很脆弱,极易遭到51%攻击。任何个人或组织,只要控制一种p2p货币网络51%的运算能力,就可以随意操纵交易、币值,这会对p2p货币构成毁灭性打击。很多山寨币,就是死在了这一环节上。而比特币网络已经足够健壮,想要控制比特币网络51%的运算力,所需要的cpu/gpu数量将是一个天文数字。
6. 通缩特性:比特币的发行机制决定了它的货币总量增长速度将远低于社会财富的增长速度。比特币经济体中,以比特币定价的商品价格将会持续下跌。
7. 智能合约:中本聪在比特币中加入了脚本系统,通过脚本系统可广播 “满足什么条件后,A账号转账1比特币给B账号”。这使得比特币成为了一种可编程的货币,可以在货币的基础上实现分布式合同,或称为智能合约。所谓的智能合约是一套以编程形式定义的合同,无需人为介入即可自动执行。智能合约能操纵真实世界的资产,当一个预先编好的条件被触发时,智能合约执行相应的合同条款,以此实现“可编程的经济”,例如去中心化的股票、保险、赌博等等功能,并在物联网、供应链等领域得到广泛应用。可编程的经济将能显著解决经济运行中的透明和可信问题,降低社会运行成本。
个人观点:
贝壳,因广泛认可并且数量有限而成为最早的通用货币。比特币是与之相似的,因人为规定,生产难度大而数量有限,近期火爆的交易市场证明比特币正被越来越多的人认可。
之前我认为,货币,如当今的纸币,是一定需要黄金等实物作储备物来支撑的。但实际上,货币的本质是所有者相互之间的约定,比特币模拟的是比纸币更早的黄金,贝壳这种更本质的货币。比特币,在数字世界找到了祖先的“贝壳”。
“去中心化”的思想乃是比特币发明的初衷,对抗现代货币的中央发行权,抗议发行者对资金的监视,追求货币领域的自由平等,尝试以比特币来制衡法定货币。但也正由于“去中心化”带来的交易隐蔽性,不可监管性,比特币价格波动剧烈,违法分子趁虚而入,美好的愿望很可能给好事者以可乘之机。
我认为,普及比特币的原理以冷却燥热市场,加强监管机制来维持比特币自身稳定性,是比特币为长期发展所应做出的努力。毕竟世上从来没有绝对的自由。