比特币 订阅
比特币(Bitcoin)的概念最初由中本聪在2008年11月1日提出,并于2009年1月3日正式诞生 [1]  。根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的虚拟的加密数字货币。点对点的传输意味着一个去中心化的支付系统。与所有的货币不同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。P2P的去中心化特性与算法本身可以确保无法通过大量制造比特币来人为操控币值。基于密码学的设计可以使比特币只能被真实的拥有者转移或支付。这同样确保了货币所有权与流通交易的匿名性。比特币与其他虚拟货币最大的不同,是其总数量非常有限,具有极强的稀缺性。2017年12月17日,比特币达到历史最高价19850美元。2020年7月27日,比特币再次突破1万美元关口 [2]  。 展开全文
比特币(Bitcoin)的概念最初由中本聪在2008年11月1日提出,并于2009年1月3日正式诞生 [1]  。根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的虚拟的加密数字货币。点对点的传输意味着一个去中心化的支付系统。与所有的货币不同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。P2P的去中心化特性与算法本身可以确保无法通过大量制造比特币来人为操控币值。基于密码学的设计可以使比特币只能被真实的拥有者转移或支付。这同样确保了货币所有权与流通交易的匿名性。比特币与其他虚拟货币最大的不同,是其总数量非常有限,具有极强的稀缺性。2017年12月17日,比特币达到历史最高价19850美元。2020年7月27日,比特币再次突破1万美元关口 [2]  。
信息
创始人
中本聪
诞生时间
2009年1月3日
外文名
Bitcoin
缩    写
BTC
总    量
2100万个 [3]
种    类
加密数字货币
中文名
比特币
最小单位
“聪”(satoshi),1聪=0.00000001BTC [4]
流通平台
网络
比特币发展历程
比特币(2张) 2008年爆发全球金融危机,2008年11月1日,一个自称中本聪(Satoshi Nakamoto)的人在P2P foundation网站上发布了比特币白皮书《比特币:一种点对点的电子现金系统》 [5]  ,陈述了他对电子货币的新设想——比特币就此面世。2009年1月3日,比特币创世区块诞生。和法定货币相比,比特币没有一个集中的发行方,而是由网络节点的计算生成,谁都有可能参与制造比特币,而且可以全世界流通,可以在任意一台接入互联网的电脑上买卖,不管身处何方,任何人都可以挖掘、购买、出售或收取比特币,并且在交易过程中外人无法辨认用户身份信息。2009年1月5日,不受央行和任何金融机构控制的比特币诞生。比特币是一种数字货币,由计算机生成的一串串复杂代码组成,新比特币通过预设的程序制造。每当比特币进入主流媒体的视野时,主流媒体总会请一些主流经济学家分析一下比特币。早先,这些分析总是集中在比特币是不是骗局。而现如今的分析总是集中在比特币能否成为未来的主流货币。而这其中争论的焦点又往往集中在比特币的通缩特性上。 [6]  不少比特币玩家是被比特币的不能随意增发所吸引的。和比特币玩家的态度截然相反,经济学家们对比特币2100万固定总量的态度两极分化。凯恩斯学派的经济学家们认为政府应该积极调控货币总量,用货币政策的松紧来为经济适时的加油或者刹车。因此,他们认为比特币固定总量货币牺牲了可调控性,而且更糟糕的是将不可避免地导致通货紧缩,进而伤害整体经济。奥地利学派经济学家们的观点却截然相反,他们认为政府对货币的干预越少越好,货币总量的固定导致的通缩并没什么大不了的,甚至是社会进步的标志。比特币网络通过“挖矿”来生成新的比特币。所谓“挖矿”实质上是用计算机解决一项复杂的数学问题,来保证比特币网络分布式记账系统的一致性。比特币网络会自动调整数学问题的难度,让整个网络约每10分钟得到一个合格答案。随后比特币网络会新生成一定量的比特币作为区块奖励,奖励获得答案的人。 [5]  2009年比特币诞生的时候,区块奖励是50个比特币。诞生10分钟后,第一批50个比特币生成了,而此时的货币总量就是50。随后比特币就以约每10分钟50个的速度增长。当总量达到1050万时(2100万的50%),区块奖励减半为25个。当总量达到1575万(新产出525万,即1050的50%)时,区块奖励再减半为12.5个。该货币系统曾在4年内只有不超过1050万个,之后的总数量将被永久限制在约2100万个。 [3]  比特币是一种虚拟货币,数量有限,但是可以用来套现:可以兑换成大多数国家的货币。你可以使用比特币购买一些虚拟的物品,比如网络游戏当中的衣服、帽子、装备等,只要有人接受,你也可以使用比特币购买现实生活当中的物品。2014年2月25日,“比特币中国”的比特币开盘价格为3562.41元,截至下午4点40分,价格已下跌至3185元,跌幅逾10%。根据该平台的历史行情数据显示,在2014年1月27日,1比特币还能兑换5032元人民币。这意味着,该平台上不到一个月,比特币价格已下跌了36.7%。2014年9月9日,美国电商巨头eBay宣布,该公司旗下支付处理子公司Braintree将开始接受比特币支付。该公司已与比特币交易平台Coinbase达成合作,开始接受这种相对较新的支付手段。虽然eBay市场交易平台和PayPal业务还不接受比特币支付,但旅行房屋租赁社区Airbnb和租车服务Uber等Braintree客户将可开始接受这种虚拟货币。Braintree的主要业务是面向企业提供支付处理软件,该公司在2013年被eBay以大约8亿美元的价格收购。2017年1月22日晚间,火币网、比特币中国与OKCoin币行相继在各自官网发布公告称,为进一步抑制投机,防止价格剧烈波动,各平台将于2017年1月24日中午12:00起开始收取交易服务费,服务费按成交金额的0.2%固定费率收取,且主动成交和被动成交费率一致。 [7]  5月5日,OKCoin币行网的最新数据显示,比特币的价格刚刚再度刷新历史,截止发稿前最高触及9222元人民币高位。1月24日中午12:00起,中国三大比特币平台正式开始收取交易费。9月4日,央行等七部委发公告称中国禁止虚拟货币交易。2017年12月17日,比特币达到历史最高价19850美元。2018年11月25日,比特币跌破4000美元大关,后稳定在3000多美元。 [8]  11月19日,加密货币恢复跌势,比特币自2017年10月以来首次下探5000美元大关,原因是之前BCH出现硬分叉,且监管部门对首次代币发行(ICO)加强了审查。 [8]  11月21日凌晨4点半,coinbase平台比特币报价跌破4100美元,创下了13个月以来的新低。2019年4月,比特币再次突破5000美元大关,创年内新高。 [9]  5月12日,比特币近八个月来首次突破7000美元。 [10]  2019年5月14日,据coinmarketcap报价显示,比特币站上8000美元,24小时内上涨14.68%。 [11]  2019年6月22日 ,比特币价格突破10000美元大关。比特币价格在10200左右震荡,24小时涨幅近7%。 [12]  6月26日,比特币价格一举突破12000美元,创下自去年1月来近17个月高点。 [13]  6月27日早间,比特币价格一度接近14000美元,再创年内新高。 [14]  2020年2月10日,比特币突破了一万美元。据交易数据,比特币的价格涨幅突破3%,自去年10月26日以来首次突破一万美元的心理界限。 [15]  2020年3月12日,据加密货币交易平台Bitstamp数据显示,19点44分,比特币最低价格已跌至5731美元。 [16]  2020年5月8日,比特币突破10000美元关口,创下2月份以来的新高。 [17]  2020年5月10日早上8点开始,比特币单价在半小时内从9500美元价位瞬间下跌了上千美元,最低价格跌破8200美元,最高价差超1400美元。 [18]  2020年7月26日下午6点,比特币短时极速拉升,最高触及10150.15USDT,日内最大涨幅超过4%,这是2020年6月2日以来首次突破1万美元关口。 [2] 
收起全文
精华内容
参与话题
问答
  • 比特币原理详解

    万次阅读 多人点赞 2019-10-29 11:12:13
    一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用...

    一、什么是比特币

    比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。

    二、问题引入

     假设现有4个人分别称之为ABCD,他们之间发起了3个交易,A转给B10个比特币,B转给C5个比特币,C转给D2个比特币。如果是传统的记账方式,这些交易会记录在银行的系统中,这些信息由银行来记录,我们相信银行不会随意添加、删除或修改一条交易记录,我们也不会关注到底有哪些交易,我们只关注自己的账户余额。而比特币的记账方式为ABCD每个人保存了这样一份账本,账本上记录了上述交易内容,如果每个人账本实时的一致,ABCD就不再需要银行。
            比特币是这样做的,每当有人发起一笔交易,他就要将一笔交易广播至全网,由全网中的某一个人,把一段时间内的交易打包好记录到一个区块上,再按照顺序把这些区块,一个一个的链接在一起,进而形成了一个链条,这就是所谓的区块链。

     

    那么问题来了

    1、我凭什么要参与这个系统,我为什么要动用自己的计算机资源来存储这些信息呢?

    2、以谁的记录为准呢?比如上面的账单顺序,A用户可能是这个顺序,但是B可能顺序不一样,甚至可能B根本就没有接收到C给D转账的这个消息。

    3、比特币如果做到支付功能,保证该是谁的钱就是谁的钱,而且只有其所有者才能花。

    4、如何防伪、防篡改以及双重支付,防伪是验证每条交易的真的是某人发出的,比如B可能杜撰一条消息,说某某给我转了一笔钱,这就是一个假消息,或者B说我给某人转了多少钱,但是实际上他并没有这么多钱,又怎么办。防篡改指的是B可能想从区块链上把自己曾经转给某人钱的记录删掉,这样他的余额就会增加。双重支付是指,B只有10比特币,他同时向C和D转10个比特币,造成双重花费。

    三、为什么要记账?

    因为记账有奖励,记账有手续费的收益,而且打包区块的人有系统奖励,奖励方案是,每十分钟生成一个区块,每生成一个区块会奖励一定数量的比特币,最开始是50个BTC,过4年会奖励25个BTC,再过4年再减少一半,以此类推。这样比特币的产生会越来越少,越来越趋近于一个最大值,计算公式是:50×6×24×365×4×(1+1/2+1/4+1/8+…)≈2100万,其中最初奖励50个比特币,每小时有6个区块,每天24小时,每年365天,前四年是如此,之后每四年减半。

    此外,记账奖励还有每笔交易的小额手续费,每个交易发起都会附带一定的手续费,这些手续费是给记账的矿工的。

    四、以谁为准?

    各个节点通过工作量证明机制来争夺记账权,他们计算一个很复杂的数学题,第一个计算出来的节点就是下一个区块的产生者。这个数学题很难,难到没有一个人能同过脑子算出来,它是基于概率的方法,矿工必须通过遍历、猜测和尝试的办法才能解开这个未知数。那么这个数学难题到底是什么呢?下面详细介绍。

    4.1哈希函数

    哈希函数又称为数字摘要或散列函数,它的特点是输入一个字符串,可以生成另外一个字符串,但是如果输入不同,输出的字符串就一定不同,而且通过输出的字符串,不能反推出输入。举个简单的例子,对1-100内的数模10,可以认为是一种哈希方法,比如98%10=8,66%10=6,98和66是输入,模10是哈希函数,8和6是输出,在这个模型中,通过6和8无法推断输入是66和98,因为还可能是56和88等,当然因为这个例子比较简单,所以会出现哈希碰撞,即66和56的结果都是6,输出的结果相同。一个优秀的哈希函数,可以做到输出一定不同,哈希碰撞的概率几乎为0。常见的哈希函数有很多,比如MD系列和SHA系列等,比特币采用的SHA256算法,即输入一个字符串,输出一个256位的二进制数。下面是程序运行的结果。

    通过程序结果可以看出,输入的源信息不同,得到的结果也不同(为了方便,结果用64位16进制表示),即使是orange多了一个句号,也会产生截然不同的结果。同时,通过输出的十六进制字符串,也无法倒推出输入。对于比特币,只要了解SHA256的功能即可,如果感兴趣可以深入了解SHA256的具体算法。需要SHA256的C++源码留言邮箱或私信。

    4.2挖矿原理

    首先介绍一下比特币每个区块的数据结构,每个区块由区块头和区块体两部分组成。

    区块体中包含了矿工搜集的若干交易信息,图中假设有8个交易被收录在区块中,所有的交易生成一颗默克尔树,默克尔树是一种数据结构,它将叶子节点两两哈希,生成上一层节点,上层节点再哈希,生成上一层,直到最后生成一个树根,称之为默克尔树根,只有树根保留在区块头中,这样可以节省区块头的空间,也便于交易的验证。

    区块头中包含父区块的哈希,版本号,当前时间戳,难度值,随机数和上面提到的默克尔树根。

     

     

    假设区块链已经链接到了某个块,有ABCD四个节点已经搜集了前十分钟内全网中的一些交易信息,他们选出其中约4k条交易,打包好,生成默克尔树根,将区块头中的信息,即发区块哈希+版本号+时间戳+难度值+随机数+默克尔树根组成一个字符串str,通过两次哈希函数得出一个256的二进制数,即SHA256(SHA256(str)) = 10010011……共256位,比特币要求,生成的结果,前n位必须是0,n就是难度值,如果现在生成的二进制数不符合要求,就必须改变随机数的值,重新计算,只到算出满足条件的结果为止。假设现在n是5,则生成的二进制数必须是00000……(共256位)。一旦挖矿成功,矿工就可以广播这个消息到全网,其他的矿工就会基于该区块继续挖矿。下一个区块头中的父区块哈希值就是上一个区块生成的00000……这个数。

    解决这个数学难题要靠运气,理论上,运气最好的矿工可能1次哈希就能算出结果,运气差的可能永远都算不出来。但是总体来看,如果一个矿工的算力越大,单位时间内进行的哈希次数就越多,就越可能在短时间内挖矿成功。

    那么n是如何确定的呢?比特币设计者希望,总体上平均每十分钟产生一个区块,总体上来看,挖矿成功的概率为1/2^n。现假设世界上有1W台矿机,每台矿机的算力是14T次/s = 1.4×10^13次/s,单位次/s称之为哈希率,10分钟是600s,所以10分钟可以做8×10^19次哈希运算,从概率角度看,想要挖矿成功需要做2^n次运算,可以列出等式2^n = 8×10^19,可以解出n约为66。所以对于这种方法,我们没有办法使得自己的运气变的更好,只能提高自己的算力,尽快的算出结果。

    另外,需要模拟挖矿过程的C++代码可以回复邮箱,代码可以通过调整难度值,模拟比特币的挖矿算法,控制区块产生的速度。

    五、如何防伪、防篡改、防双重支付等问题

    这部分是理解比特币很重要的部分。

    5.1电子签名技术

    身份认证技术在生活中很常见,可以是人脸识别、签字、指纹等,但是这些方法在数字货币领域并不安全,因为它们一旦数字化,都可以通过复制的方法伪造。所以比特币采用了电子签名的方法。

    注册成为比特币用户时,系统会根据随机数生成一个私钥,私钥会生成一个公钥,公钥又会生成一个地址,其中私钥必须保密,可以保存到硬盘里或者记到脑子里,因为这个私钥是使用相应地址上的比特币的唯一标识,一旦丢失,所有的比特币将无法使用。下面介绍具体的转换过程,不感兴趣可以不看,只要知道随机数->私钥->公钥->钱包地址这个过程,其中私钥可以对一串字符进行加密,而公钥可以对其进行解密,这就是非对称加密,这类算法总体上的功能都是一样的,只是具体算法有区别,由于这些算法比较复杂,与SHA265算法一样不多做介绍,感兴趣可以深入了解具体算法,但是对于比特币系统,只要了解其功能即可。典型的算法是RSA,比特币采用椭圆曲线加密算法。

    转换过程(选读,不影响理解)

        1、首先使用随机数发生器生成一个私钥,它是一个256位的二进制数。私钥是不能公开的,相当于银行卡的密码。

        2、私钥经过SECP256K1算法生成公钥,SECP256K1是一种椭圆曲线加密算法,功能和RSA算法类似,通过一个已知的私钥,生成一个公钥,但是通过公钥不能反推出私钥。

        3、同SHA256算法一样,RIPEMD160也是一种HASH算法,由公钥可以得到公钥的哈希值,而通过哈希值无法推出公钥。

        4、将一个字节的版本号连接到公钥哈希头部,然后对其进行两次SHA256运算,将结果的前4字节作为公钥哈希的校验值,连接在其尾部。

        5、将上一步的结果使用BASE58进行编码,就得到了钱包地址(相当于银行账户)。比如A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

    所以,通过以上的过程我们可以总结出私钥、公钥、钱包之间的关系如下图。可以看到通过私钥可以推出所有的值,公钥哈希和钱包地址之间可以通过BASE58和BASE58解码算法相互转化。

    了解了公钥、私钥、地址的概念后,防伪验证的过程就很容易理解,当A发起一笔交易后,对消息进行哈希,生成数字摘要,对数字摘要,通过私钥加密,生成一个密码。之后A会广播这个条交易消息、公钥以及密码。收到消息的人首先对交易信息进行哈希生成摘要1,再通过公钥对密码进行解密,生成摘要2,这样,如果两个摘要相同,说明这个消息确实是A发出的。所谓的签名,就是密文。

     

    5.2余额检查

    余额的概念应该说根深蒂固,余额是伴随着称之为借贷记账法而产生的,也是目前银行普遍采用的方法,将一个人的交易记录统计好后算出一个余额,但是在比特币中没有余额这个概念,因为其采用的是UXTO模型的记账方法。比如A->B10个比特币,B->C5个比特币,对于第二笔交易来说,B在发起这笔交易时要注明第一笔交易的信息,这样就可以知道B曾经从A那里收到过10个比特币,说明满足第二笔交易发起的条件。所以比特币中余额的检查是通过追溯的方法。

    上图描述了两笔交易,交易10001中,B向C转了10个比特币,验证这笔交易的过程是:首先将B的签名通过B的公钥解密,然后再和交易的具体内容(B签名左侧)对比,如果相同,说明消息是B发出的,然后再检查10000这个交易是否真的存在以及它的内容的真实性。这两点都满足了,就说明交易10001是可以被接受的,否则拒绝接受。

    实际上,真实的交易比这个复杂的多,因为有可能是多笔交易构成了输入,比如B->C20个比特币,是由多笔交易A->B10,D->B10构成的,则前一笔交易ID就是两个ID,甚至可能更多。这里为了简单描述,只列举一笔交易。

    5.3双重支付

    A同时发了两条消息,同时给B和C转了10个比特币,实际上他只有10个会怎么样?假设D节点先收到了转给B10个BTC,然后收到了转给C10个比特币,通过上面的验证方法,自然会拒绝后面的一个,与此同时,E节点可能先收到了转给C10个BTC,然后收到了转给B10个比特币,他自然会拒绝后者。至于哪一笔交易最终会上链,就要看D和E哪个先解决难题,成功挖矿。

    5.4防止篡改

    假设A转给B10个比特币,但是他想把这个信息从区块链上删除,这样大家就都不知道这个事情存在,就可以赖账。
            首先说一下最长链原则,假设某一个区块后面有两个矿工同时挖到了矿,或者由于网络延迟等原因产生了分歧,这时,各个节点先随意根据自己认为对的区块挖矿,只到下一个区块产生,这时会有两条链,但是有一条是长的,比特币规定,以最长的链为准。如果某个节点仍然的固执的以较短的链为准,他就是在和大多数算力作对,这样做的结果是,他挖的块不被大家认可,会浪费时间和算力。

    回到上面的场景,A想赖账,就只能从记录了A->B10个比特币这个消息的区块的前一个区块开始重新挖矿,造出一个支链来,但是实际上的区块已经前进了很多,他只能不停的追赶,而且在追赶的同时,主链也在前进,他必须以比主链快的速度前进,如果他的算力足够大,理论上通过较长的时间确实可以追赶成功,就实现了对交易信息的篡改。然而其实这几乎是不可能的,因为就算算力再大,平均出块速度也是10分钟,从非技术的角度讲,一个人如果掌握了全网一半以上的算力,他为什么不在主链上继续挖矿呢?一个富可敌国的人应该不会甘愿去做一个小偷吧。 

    六、总结

    区块链并不等同于比特币,比特币也不是区块链,区块链只是比特币应用的一种技术,这个技术能给我们带来启发,比特币的伟大之处在于应用了前所未有的区块链技术。区块链技术还能在哪些方面应用还需继续探索。

    比特币是区块链技术最成功的应用,但是比特币本身也有很多问题,它想通过发行货币来挑战主权货币,这个动机有待商榷。此外,由于比特币的匿名性,只需要一个公钥或地址就能进行交易,为黑色产业提供了很好的平台。另外,比特币并不是一个成熟的支付系统,它具有吞吐率低,可拓展性差等缺点。

    可能文字还是比较苍白,可以看看李永乐老师讲解的视频,虽然没有这个详细,但是通俗易懂。

    七、代码实现

    点击这里!

    展开全文
  • 比特币

    2019-01-08 12:49:18
    零基础 实战 算法
  • 比特币最新计算器

    热门讨论 2013-04-27 10:05:01
    比特币是一种由开源的P2P软件产生的电子货币,是一种网络虚拟货币。比特币不依靠特定货币机构发行,它通过特定算法的大量计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易...
  • 比特币的原理和挖矿算法

    千次阅读 2020-01-08 16:51:46
    不过比特币的总数量只有2100万个,而且随着比特币不断被挖掘,越往后产生比特币的难度会增加,可能获得比特币的成本要比比特币本身的价格高。 比特币是一种虚拟货币,它的发行不依靠任何机构;现在已经可以进行交易...

    比特币的原理

    比特币产生的原理是经过复杂的运算法产生的特解,挖矿就是寻找特解的过程。不过比特币的总数量只有2100万个,而且随着比特币不断被挖掘,越往后产生比特币的难度会增加,可能获得比特币的成本要比比特币本身的价格高。

    比特币是一种虚拟货币,它的发行不依靠任何机构;现在已经可以进行交易了,而且支持全球7*24交易。需要注意的是比特币的价格波动非常大,普通的投资者根本没有能力进行买卖,关键很多投资者对比特币的价格很难把握。

    比特币在2008年由中本聪提出,是一种P2P形式的数字货币。比特币具有的特征有去中心化、全世界流通、专属所有权、低交易费用、无隐藏成本、跨平台挖掘等。比特币可以在任意一台接入互联网的电脑上管理。不管身处何方,任何人都可以挖掘、购买、出售或收取比特币。

    三、比特币和挖矿

    比特币存在于数字空间中,隐藏在特定算法里,需要投入大量人力物力才能挖出来,即所谓的比特币“挖矿”。挖矿原理是通过电脑搜寻一个64位的数字,外汇跟单www.gendan5.com通过反复的解密,目的是为比特币网络提供一个需要的数字组合,若成功则获得25个比特币。

    四、比特币如何发展

    尽管比特币拥有以上众多优点,尽管在过去一年内,比特币对美元的币值已经上涨了约一千倍。但考虑到其价格波动较大,很多想投资比特币的人都还是持观望态度。如今,虽然很多国家承认比特币的货币支付性质。但各国的政府也不会真的放任比特币任意流通,毕竟比特币的壮大必然会给各国的货币系统造成影响。虚拟货币是未来货币的发展趋势,但比特币的未来可能会演变成在人为的监管下发展。

    比特币挖矿算法

    可以说比特币的整个实现就是建立在已有的甚至存在多年的计算机科学领域里的技术或概念的整合,其中哈希算法在比特币中的应用几乎是方方面面,主要包括SHA256和RIPEMD160,比特币将这两个哈希算法的应用组合成两个函数:hash256(d)=sha256(sha256(d))和hash160(d)=ripemd160(sha256(d)),其中d为待哈希的字节数组,两者分别生成256位(32字节)和160位(20字节)的16进制数值。hash256主要用于生成标志符,如区块ID,交易ID等,而hash160主要用于生成比特币地址。

    对于hash160比较认同的答案是ripemd160可以使得生成的地址更短,但是只做ripemd160一次哈希可能会存在安全漏洞所以同时使用sha256起到安全加固;至于hash256使用两次sha256哈希算法的原因来源于sha1算法,由于一次sha1哈希存在被生日攻击(birthday attack)的风险,所以当使用sha1运算时一种有效方式就是做两次sha1哈希,sha256本身并不存在生日攻击漏洞,但是防御性的使用两次sha256哈希借鉴于sha1.

    展开全文
  • 比特币原理

    万次阅读 2019-05-07 09:40:14
    今年比特币大热,行情从9月的5000美元左右一路飙升到目前超过16000美元。如果对汇率不敏感的话,换算成人民币,就是一个比特币市值接近11万。特别是过去的一周,价格几乎以每天1000美元的增幅增长,此中疯狂让造富榜...

    今年比特币大热,行情从9月的5000美元左右一路飙升到目前超过16000美元。如果对汇率不敏感的话,换算成人民币,就是一个比特币市值接近11万。特别是过去的一周,价格几乎以每天1000美元的增幅增长,此中疯狂让造富榜排名第二的中国一线楼市也自愧不如。

    比特币(BTC)价格走势

    在你也被此疯狂感染,卖房入市之前,有必要知道什么是比特币,它是如何运作的。多数人的了解停留在“比特币是一种虚拟货币”。略微查过资料的可能还知道:比特币的概念是2008年由一个化名“中本聪”的人提出来的;2009年第一个比特币被“挖”了出来;比特币的总量有限,最多产生2100万个,因此不会因为政府开动印钞机而发生贬值。然而,这些知识尚不足以回答比特币作为一种电子货币面临的两个核心问题:

    (1) 如何辨别真伪?

    (2) 如何防止“重复支付”,即一张钞票被付给多个人?这个问题尤为重要。因为比特币就是一团数据,拷贝无数份都是可以的。

    本文将尝试为你解答以上两个问题。本文定位为一篇科普文章,因此将尽量不在文中包含公式和复杂的算法描述。首先,先弄清楚什么是比特币。

    1. 比特币本质是一个复式记账簿

    比特币的本质是一个记账簿,记录着全部比特币交易。

    所谓“复试记账”是指每笔交易都在两个或两个以上账户上体现,这些账户分别作为输入方和输出方,金额在输入和输出两方保持相等,这样便可清晰反映资金运动的情况。下图是比特币交易的一个例子,其中输入是4个账户,而输出为3个账户。咦?不是说输入和输出两方金额要相等吗?为啥总输入是0.55BTC,而输出只有0.50BTC,还有0.05BTC去哪了?这0.05BTC是作为交易费被转到“矿工”的账户上,这笔转账是一个特殊的交易,即创币交易的一部分。“矿工”、“创币交易”,我先埋个钩子,将在后面详细介绍。

    复试记账簿式交易

    由于比特币的本质是一个记账簿,因此为了正确理解比特币,首先要忘记银行借记卡账户的概念:并没有一个地方,记录着你拥有的比特币数量。你拥有多少比特币是通过遍历全部交易计算出来的。例如,向你的所有账户一共转入了5个比特币(8万刀,hohoho),而你的所有账户一共转出了3个比特币,那么你现在一共拥有5-3=2个比特币。

    比特币另外一个有别于过往常识的概念是:

    交易的基本单位是尚未再次支付的交易输出(UTXO:Unspent Transaction Output),而不是某个数量的比特币。

    比如,在某次交易中,另一个用户给你转了3个比特币,便产生了一个UTXO。在下次交易中,你准备用这些比特币买一辆车(价格:2个比特币),那么这个UTXO必须作为新交易的输入全部被花掉(spend),其中2个比特币转给卖家(成为他拥有的UTXO),等于或小于1个比特币转给你自己(找零,也是UTXO),当然还有一小部分作为交易费:

    3BTC(输入)= 2BTC(输出 to 卖家)+ 0.99BTC(找零,输出 to 自己)+ 0.01BTC(交易费)

    当然,另一个可能的情况是你拥有一大堆金额很小的UTXO,一起凑够2个比特币,付给卖家:

    0.01BTC(输入)+ 0.01BTC(输入)+ ...(此处省略几百字)+ 0.02BTC(输入) = 2BTC(输出 to 卖家)+ 0.01BTC(交易费)

    那比特币账户应该向谁申请呢?

    2. 比特币账户就是一个地址,不用申请,自己造一个就好

    比特币账户是一个地址,具体而言就是类似“1J7mdg5rbQyUHENYdx39WVWK7fsLpEoXZy”的一串字符。神奇的地方在于,

    比特币地址不用向任何权力机构申请,可以自己产生,想要多少个都可以!实际上,从保护隐私的角度考虑,鼓励用户在每次交易中使用不同的地址,这样就根本无法查到资金流向何处了。

    现在知道为啥暗网、勒索病毒热衷使用比特币交易了吧。

    每个比特币地址由一个私钥生成,产生多少个比特币地址,就需要多少个这样的私钥。更准确的说,是由私钥计算出对应的公钥,然后由公钥计算出对应的特币地址(如下图所示)。所选择的计算方法,即椭圆曲线相乘和哈希函数,具有单向特性,也就是说由私钥计算出公钥很容易,反之由公钥推导出私钥则非常非常困难。这一特性后面还会讲到,目前只要记住这一点即可:比特币地址告诉全世界都不要紧,而私钥一定要保存好莫让别人知道,因为凭借且仅凭私钥便可使用你的比特币(这就是为啥私钥被称为“私”钥)!想更深入了解“公钥”、“私钥”是啥东东的同学戳这里非对称加密

    由私钥生成比特币地址

    泄露自己的私钥丢了钱是一回事,忘记私钥有钱花不了是另一回事。这么多天书般的地址和私钥如何记得住呢?答案是不用记,一般是通过一个称为“比特币钱包”的软件来管理你的所有私钥和地址(主要是私钥,因为地址可以从私钥再次生成)。

    如果想知道你有多少比特币,需要翻看前面说的比特币记账簿,把输出账户是你的比特币地址之一的所有UTXO金额累加起来。OK,那什么地方可以找到这本记账簿呢?

    3. 记账簿的海量副本以区块链的形式存储在海量的P2P节点上

    这本账簿有海量副本,存储于海量的计算机节点上。

    说是“副本”,其实并没有什么“主本”,因为所有节点保存的账簿重要性相同。海量副本可以保证账簿不会丢失损坏,因为随时可以从其他不受影响的节点恢复;同时,也可以防止狼人通过伪造账簿来搞破坏,只要好人的数量更多。实际上,后面还会看到,这份账簿伪造起来可不容易。

    账簿的数字存储格式就是区块链。区块是一种数据结构,相当于账簿的“一页”,存储着一段时间(平均10分钟左右)内所有比特币交易的全部信息。

    区块结构如下表所示。

    区块结构

    区块链就是连接所有区块形成的链表数据结构。连接的方式是按照区块生成的先后将它们排列起来。刚好在某一个区块前面生成的区块称为这个区块的“父区块”。区块通常以区块头信息的数字指纹,即哈希值来标识。既然是指纹,那么对于每个区块都是唯一的。每个区块头中包含着父区块的哈希值,如下表所示。第一个产生的区块称为“创世区块”,它的哈希值是000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f。由于它没有爸爸,因此它的“父区块哈希值”为0000000000000000000000000000000000000000000000000000000000000000

    区块头结构

    区块头结构中的Merkle根即Merkle树的根节点,这是一种哈希二叉树,用作快速归纳和校验大规模数据完整性。比特币采用Merkle树作为一个区块中全部交易的摘要,一个区块记录的交易数量可能很多(目前的典型值是2000左右)。区块Merkle树是自底向上构建的,如下图所示。假设一个区块中包含四个交易:Tx(A)、Tx(B)、Tx(C)和Tx(D)。树最底层的叶子节点是分别对各交易的数据取哈希值,得到H(A)、H(B)、H(C)和H(D)。然后,将它们两两配对、拼接后再次取哈希值,得到H(AB)和H(CD)。最后,对H(AB)和H(CD)拼接而成的字符串计算哈希,就得到了H(ABCD),即Merkle根。那如果交易数不是偶数而是奇数怎么办?答:这时,就将最后一个交易(按时间排序)复制一份凑成偶数个交易用以生成Merkle树。

    区块的Merkle树

    Merkle树用于校验一项交易是否包含在某个区块,优点是只需要下载少量数据,而不是区块的所有交易信息。例如,下图是16个交易的Merkle树,对于某个叶子H(K),只需要H(L)、H(IJ)、H(MNOP)和H(ABCDEFGH)的值便可算出H(ABCDEFGHIJKLMNOP)的值,{H(L), H(IJ), H(MNOP), H(ABCDEFGH)}便称为H(k)的Merkle路径。因此要验证交易TxK是否包含在一个区块中,先计算出Tx(K)的哈希值H(K),然后从比特币网络查询它的Merkle路径来计算H(ABCDEFGHIJKLMNOP),如果与保存在本地的H(ABCDEFGHIJKLMNOP)值相等,那么此交易便包含在该区块中。如果一个区块包含了2048笔交易,整个区块的近似大小是512KB,而按照上述方法只需要下载352字节的数据便可完成验证。你可能会问,为啥不直接计算出交易Tx(K)的哈希,然后下载H(K)来进行比较呢?比特币的设计者认为网络不可靠,下载的数据可能是虚假的,只有保存在本地的Merkle根才可信,因此要求网络提供整个Merkle路径,如果能成功算出的Merkle根和本地保存的值相同,除了证明交易包含在区块中,也证明了网络提供的Merkle路径是可靠的,因为从哈希值推出原始数据在运算量上是不可行的。下一节会解释其中的原理。

    稍复杂一点的Merkle树

    同时,Merkle根还可视为区块交易部分信息的数字指纹,一旦交易信息有任何篡改,Merkle根都会发生变化,进而使区块的哈希值发生变化。更妙的是,一个区块的哈希值被包含在它的儿子区块头中,如果发生了改变,儿子区块的哈希值也会发生变化,这又会波及到孙子区块,曾孙区块...直到所有后代。

    存储完整账簿的节点称为全节点。

    全节点独立更新存储在本地的区块链备份。当一个新区块产生,新区块的信息便会通过P2P的比特币网络传播到所有节点,其中的全节点便会对新区块进行验证,确认有效后便会将新区块加入到本地的区块链。由于存有完整、更新的账簿,全节点还可以对交易的真实性和有效性进行验证。完整账簿需要占用数百G的空间,并且消耗大量内存,因此有些节点只会存储区块链的部分信息,譬如区块头。当这些节点需要对交易进行验证时,需要借助全节点提供的数据。

    交易不断发生,因此将需要更多页账簿(区块)来记录它们。产生新区块的过程称为挖矿,因为在此过程中产生了新的比特币,如同挖到了金矿!

    4. 通过挖矿产生新的区块和比特币

    当发生比特币交易时,这笔交易只有加入到区块链,即记到账簿里才会被承认。上面说过账簿在每一个全节点上都有一份拷贝,那就意味着交易信息需要加入到所有这些区块链拷贝。实现过程是其中一个节点首先生成一个新区块,即一页账簿,将它接收到的尚入账的交易都记录进去,然后再将新区块信息同步给比特币网络的其他节点。那么,是哪一个节点生成的新区块呢?

    事实上,所有节点都想当这个NUMBER ONE。因为,

    第一个生成新区块的节点有一项特权,可以在新生成的区块中插入一条特殊交易记录:凭空向一个地址转入一定数额的比特币。

    “凭空”的意思是不需要输入UTXO,这些比特币是凭空产生的,是作为产生新区块的奖励。这个特殊交易称为“创币交易”,因为这一过程也是发行新比特币的过程,这就是为什么产生新区块被称为“挖矿”。

    那么奖励的数额有多大呢?创建新区块的奖励数额是不定的:第一个区块奖励的是50个比特币,随后每产生210000个区块这一数字就递减50%,直到变为0。目前区块链的长度已接近50W,因此每次奖励12.5个比特币。通过以下公式便可算出,比特币的上限是2100W个。

    比特币数量上限

    除了创块奖励外,创块的收益还包括所有交易的交易费。例如,高度499376的区块,它的交易费为4.39BTC,按现在的市值是7.6W刀。幸运的家伙,晚饭吃鸡!

    那么,

    如何才能创建一个新区块呢?通过解决一个问题:即找到一个nonce值,使得新区块头的哈希值小于某个指定的值,即区块头结构中的“难度目标”。

    哈希函数又称为散列函数,无论它的输入数据有多长,它的输出总是固定数量的比特,例如32bit。之所以称“散列”,是因为输入数据哪怕是变化1个bit,也会使输出变得面目全非。例如,将李商隐的《锦瑟》:“锦瑟无端五十弦,一弦一柱思华年。庄生晓梦迷蝴蝶,望帝春心托杜鹃。沧海月明珠有泪,蓝田日暖玉生烟。此情可待成追忆,只是当时已惘然。”作为哈希函数SHA256的输入,输出的哈希值为:8342aed815e0fc39647a344d4d58ff33710e8d0b09a574ccb68c050141806eff。将诗中的“五”改成“六”,哈希值就变为e85cf59020e87006a1d3ff2849d72803e9b958a5e928696905aeb11b27408271,一眼望去,几乎所有字符都发生了变化。哈希函数的散列本质使它具有单向性,即知道x和函数Hash()的话,很容易算出y=Hash(x);然而,如果知道哈希函数和y,却很难猜出输入x。这就像调配颜料一样:如果我们知道各种颜色的比例,那么很容易调出所需的颜色;反过来,如果只知道目标颜色,却几乎无法猜出是哪些颜料、通过什么比例混合而成的。从y推出x的唯一办法就是穷举所有可能的x,看哪一个与y的值相同。生成新区块要解决的问题也是如此,区块头其他信息都是已知的,只有挨个尝试从1到最大可能值的所有整数,才能找到可能满足要求的nonce值。

    要求小于的这个数为啥称为“难度目标”呢?因为这个数越小,求解的难度就越大,需要经过更多次哈希值的计算。简单打个比方,想象人们不断扔一对色子以得到小于一个特定点数的游戏。第一局,目标是12。只要你不扔出两个6,你就会赢,so easy!然后下一局目标为11。玩家只能扔10或更小的点数才能赢,不过也很简单。假如几局之后目标降低为了5。现在有一半机率以上扔出来的色子加起来点数会超过5,因此无效。随着目标越来越小,要想赢的话,扔色子的次数会指数级的上升。最终当目标为2时(最小可能点数),只有一个人平均扔36次或2%扔的次数中,他才能赢。由此可知,

    挖出一个区块的平均工作量(尝试次数)与难度目标成反比,难度目标越小,工作量就越大。找到小于难度目标的nonce值有一定随机性,换句话说,凭运气。但从概率上来看,每次计算成功的概率是一定的,于是算得越快的节点第一个找到的概率就越大。

    因此,矿工们便想方设法提升自己的计算能力(算力),比别人算的更快以加大自己成为NUMBER ONE的几率,于是引发了一场算力的军备竞赛。在2009年,比特币刚出现时,普通PC便可用于挖矿,而后开始使用服务器,再后来CPU效率不够就用GPU,再再后来用专业矿机和FPGA制作的专用芯片,这些芯片除了计算哈希没有其他功能。目前,全球比特币网络的总算力已高达1.5×10**19次哈希每秒。对比一下就知道是什么概念了:我用的mac,算力约为3.6×10**5次每秒。

    为了将新区块的产生速度限定在一个恒定值,即平均每10分钟一个,难度目标每2016个区块调整一次,规则是:如果过去的2016个区块的平均生成间隔大于10分钟,难度目标值就增大(难度减小),否则就减小(难度增大)。

    因此,总算力增加,挖到金矿的难度也在不断增加,只有不断投入更多的机器。这也是为啥越往后,比特币的收益恐怕连矿工的电费都不够付了。

    小结一下,挖矿的过程实际是一个挖矿节点产生新的账簿页(区块)将新交易记录下来的过程,步骤如下:

    1. 挖矿节点持续监听比特币网络,将所有网络上广播的所有交易信息都记录下来,根据它们的优先级插入到一个新区块的数据结构中。优先级由交易发生的时间早晚和交易费决定,越早发生、交易费越多的交易,优先级也越高,也就会被优先加入新生成的区块,即被确认;

    2. 用交易数据填满一个区块后,挖矿节点立即开始疯狂计算来寻找使新区块头的哈希值小于目标难度的nonce值;

    3. 成功找到满足条件的nonce,挖矿节点便将完整的新区块信息通过比特币网络向其他所有节点广播,便立即着手创建下一个新区块;

    4. 其他也在试图创建同一个区块(挖同一块矿)的节点,接收到新区块信息,便会对新区块进行验证,验证通过后,便将它加入到自己的区块链备份中,同时放弃正在挖的矿,也立即着手创建下一个区块。

    不知道你发现没,这里存在一个问题:如果两个节点几乎同时发现了满足条件的nonce值,那究竟以谁创建的为准呢?答案是两个都暂时接受,然后投票决定用谁的,这就是所谓的“区块链分叉”。区块链就是交易账簿,不能容忍歧义,按理链条是不会有分叉的,是一条从创世区块到最新产生区块的单一链条。

    如果发生了竞争,即当两个新区块在两个不同节点几乎同时产生时,一条备链便会生成,相应的,万世一系的那条称为主链。多个链条生长的规则是:当有主备两条(理论上,两条以上也是可能的)区块链时,各节点挖到的新区块将续接在总工作量最大的链条上;如果各链条的总工作量相同,那么就接在主链,即各节点的区块链备份最早产生的分支上。各节点延续区块链的过程同时也是对多条分支进行投票。

    如下图所示,假设节点A和节点B几乎同时分别挖到了区块A(N)和B(N),紧接着各自将新区块信息通过比特币网络发给所有节点。距离A节点较近的节点首先受到区块A(N)的信息,因此便将A(N)追加到本地的区块链上。随后它们又收到了区块B(N)的信息,因为B(N)的父区块(通过区块头中的父节点哈希值搜索到)是较早的区块,这时一条备链便产生。类似的,距离节点B较近的节点会将B(N)加入主链,而A(N)将形成备链。请注意,这里的“远近”不一定是指地理位置,而是数据从一个节点到另一个节点需要经过几次转发,每次转发称为一“跳”。这样,所有节点就被分成了两个蓝绿两个阵营。从不同阵营角度观察到的主链和备链是不同的。蓝绿阵营各自基于A(N)和B(N)区块迅速投入产生下一个新区块的工作。假设蓝营的C节点抢先生成了新区块B(N+1),并广播给了所有节点,蓝营节点自然进一步延长它们的主链,而绿营节点发现新区块应该链接到备链,同时备链的总工作量已经超过了主链(因为多了一个区块),于是绿营节点会选择B(N+1)所在链条为主链,蓝绿阵营的主链再次统一了。这是,你可能会问:如果蓝绿阵营如果又是几乎同时产生了A(N+1)和B(N+1)会怎么样呢?答:那么主链和备链都会延长,两个阵营进入下一轮的角逐,直到分出胜负。从历史情况来看,每周都会发生一次分叉,而通常经过一个区块,不同主链便会再次统一。

    区块链分叉

    比特币设计的巧妙之处是利用“一人之私,众人之公”的社会心理实现了公共账簿的去中心化维护,并简洁优雅地实现了新币发行。然而,毕竟涉及到利益,也就无法回避人的贪婪,此过程中如果有人试图作弊或者搞破坏怎么办呢?下一节就来分析比特币的安全性。

    5. 比特币的安全性

    首先申明,由于本文定位科普,不研究详细的协议和实现细节,因此很难真正分析出比特币面临的全部威胁。只能努力为读者揭示比特币原理天生具备的安全机制,即回答开篇提出的两个问题:如何辨别真伪和如何防止“重复使用”。

    (1)如何辨别真伪

    比特币与真实货币表达财富的方式不同,后者直接描述财富本身,100美元、1亿日元、1个金币,而比特币通过财富的转移,即交易来描述。对于真实货币,财富大小通过某人拥有的货币面值便可度量,而比特币则需要综合这个人参与的所有交易才能得知他拥有的财富数量。因此,真实货币的防伪机制只要验证拥有的这部分货币是真实的,而比特币要验证相关交易是有效的,包括所有交易输入是有效的,而这些交易输入又是另一个交易的输出,连带这个交易也需要证实有效,以此类推,直到追溯到若干个创币交易。而所有交易都记录在记账簿中,因此,

    公共记账簿是比特币防伪机制真正要保护的对象。

    公共记账簿保存在海量比特币节点中,并且由这些节点独立维护。当需要验证一个交易的有效性时,节点会查找自己的账簿备份(注:为了简化问题,假设所有节点都是全节点),因此如果想篡改公共记账簿,得设法篡改所有节点的账簿备份。先不论黑入所有节点是否可能,那么篡改一份公共账簿是否可能呢?

    首先来尝试篡改一页账簿,即一个区块。如前面所述,无论是篡改区块头,还是交易部分(交易部分被篡改,便会与区块头中的Merkle根不一致;如果进一步更新Merkle根,区块头数据就会发生变化),都会使得区块头的哈希值发生变化,破坏“区块头的哈希值小于难度目标”这一约束,此区块会被视为无效。为了掩饰它就必须更新nonce值,相当于进行一次挖矿。更糟的是,它的子区块头中包含了该区块的哈希值,为了让数据一致,便需要进一步更新子区块;进一步波及到孙子区块...以此类推,此区块往后所有区块都需要连带更新。呜呜~~~,电费告警!!!

    篡改一个区块

    我们知道,成功创建区块,将获得创币奖励,这是应得的,因为你为此付出了机器和电费成本。你可能还记得,创币奖励是通过在区块中包含一个创币交易发出的,而交易信息是创币节点自己产生的,相当于拿着一张空白支票自己填数字。那能不能把创币奖励设成一个天文数字,一步就完成一个亿的小目标呢?不行,因为新区块要发给其他节点确认,这些节点会按照规则验证区块的有效性,而创币奖励的大小是有规则约束的。

    能不能篡改交易数据,将甲转给乙的比特币改成转给我呢?还是不能。因为交易信息是经过甲签名的,任何篡改都会导致交易数据失效。

    综上所述,想伪造比特币是不可能的。

    (2)如何防止“重复使用”

    真实货币有物质实体,根据物质守恒定理,一张钞票不可能分身出另一张一模一样的,同时进到你和我的钱包。然而,比特币只是一团数据,有没有可能通过拷贝数据来“复制”比特币呢?换个更专业点的问法,有没有可能将交易数据复制两份(类似重播攻击)让出钱方出一倍的钱?不能!交易的输入是若干UTXO(未支付输出),例如,交易1中的Tx1、Tx2和Tx3。发生交易1后,Tx1-3就不再是“未支付”状态,而成为“已支付”了。如果复制交易1形成交易2,比特币节点会检查交易2的输入是否存在并且为“未支付”状态。显然,交易2无法通过检查,因此所有节点会拒绝将交易2计入账簿(区块链),交易2不会生效。

    复制交易数据

    但是确实存在一种场景通过重复使用实施欺诈。设想你是一位前卫的珠宝店老板,接受比特币支付。小明用3BTC购买了价值三十万人民币的珠宝。小明支付后,产生了交易1。交易1产生后就开始等待某个节点产生新区块记录它。与此同时,小明的黑客朋友伪造了另一个交易2,与交易1中的输入相同,却将3BTC转账到小明的另一个比特币地址。由于黑客朋友掌握了全球算力的51%以上,因此抢先生成了新区块,将交易2计入,而将交易1排除掉。这样便让交易1失效了。如果你沉浸在做一笔大买卖的喜悦忘记留意比特币转账确认就让小明带着珠宝离开,你就失去了一大批珠宝而什么都没得到。这一欺骗过程是利用了前面说的“区块链分叉”原理,称为“51%攻击”。为了应对它,需要牢记:

    比特币交易只有收到多个(六个以上最佳)确认后,才能保证生效。比特币节点将包含此交易的区块成功加入区块链后才会发出确认。如果六个以上节点发来确认,交易的有效性便可无疑了。这好比检查比特币的水印。

    “51%攻击”若想成功,霸道的算力是关键。算力不济,只存在理论上成功的可能性。换个角度想想,如果有可观的算力,直接投入挖矿收益更稳定和有保障些。这说明了一个道理:当遵守规则的收益高于违反时,人们会选择遵守规则。

    6. 真正的安全风险

    比特币协议本身十分严密,几乎没有钻空子的可能。它的有效性不是靠信用(例如,法币依靠的是国家信用),而是算力来保证,这是无法造假的。

    然而,安全风险仍然存在,大都与私钥的保存有关。前面介绍过,只要且必须要有私钥才能使用比特币。比特币通常是通过称为“比特币钱包”的软件来管理。私钥保存不当,将导致比特币的重大损失。主要包括以下情形:

    (1)忘记私钥的保护密码:以密码保护私钥可以避免私钥泄露后被盗用。凡事有两面,如果忘记密码,没有任何方法能帮忙找回。

    (2)存储私钥的存储介质损坏或者丢失,甚至误删了钱包。最近看到一则有趣的故事,就是一个美国小哥把装有750个比特币的硬盘当垃圾扔了,这些比特币目前价值约1千多万美元;现在要找回来很难,因为那块硬盘上压着20吨垃圾...

    (3)私钥被黑客窃取:特别是网站钱包,私钥等数据是存储在服务器上的,如果遭到黑客入侵,用户的比特币将有很大可能被窃。网站服务的提供者是否可信也值得怀疑。毕竟比特币是无法溯源的,如果被窃,没有钞票编号可供追踪。因此,尽可能选用全节点客户端,它独立保存全部区块链信息,不依赖任何服务器和软件便可完成结算。一个全节点客户端的例子是bitcoin core。

    针对以上风险,安全性最好的措施是所谓的“纸钱包”。通过bitaddress.org可以生成一个纸钱包,如下图所示。它实际上就是包含一个私钥和对应的比特币地址的一个图片。将图片打印几份,锁在保险箱中,然后将你的比特币转给对应的地址,便可彻底杜绝被黑客窃取或硬盘损坏的风险。

    纸钱包

    我为什么要研究比特币

    最后说说我为什么要研究比特币。

    不,我不准备投身比特币投资,也不建议你这么去做。我学习它一方面是因为它的设计简洁优雅,是密码学和对等网络(p2p)技术的最佳实践,在学习过程中收获良多。另一方面,比特币是科技与社会的一次伟大结合。经济决定现代社会的方方面面,而比特币为改变未来经济运作机制提供了可能,从而可能进一步改变人类社会。将影响人类社会的东东,还不值得学习一下么?

    经过学习,我发现比特币确实具备成为优秀货币的潜力。甚至还不止于此,比特币的忠实拥趸将它视为建立一个理想国的基础。在这个理想国,人民的财富不会被贪婪的银行家或者统治者通过滥发纸币掠夺。

    也有人提出,比特币的数量是固定的,如果以之作为货币会造成通货紧缩,将造成经济衰退。这一论点尚有争议。通货紧缩是不假,可一定会造成经济衰退吗,异或会让经济运行更稳健。毕竟黄金就是紧缩货币,金本位并未阻止英国工业革命的发生。废除金本位后,人类货币就进入信用货币时代,虽然摆脱黄金约束,使得政府有更多手段和空间刺激经济高速发展,然而硬币的另一面是信用货币造成经济的大幅动荡。好比使用信用卡虽然可以让你提前满足需要,但过度依赖会造成入不敷出,因为借的总是要还的,借得越多,还得越痛苦,搞不好还有个人破产永不得翻身的风险。

    经济的最终目的是满足人的需要,是增加人的幸福感。信用货币造成的经济繁荣,实质是对未来市场需求的透支。企业为啥敢高负债,因为股市敢不断借钱给它;股市为啥这么放心,因为它相信新市场会不断被开拓,需求规模会不断扩大;企业拿到钱,进入更多市场领域,就需要更多钱去开发...由此,以GDP表达的经济繁荣便出现了。伴随的是,商品、产品渗透到人们生活的方方面面。将自己的生活分享给全世界的陌生人,真的比与家人、邻居分享能带来更大幸福感吗?作为消费者,我们是需要,还是被需要了。比特币的设计者无疑是一个理想主义者。在一个物欲横流的世界,选择自我约束的,一定是理想主义者。

    AGAIN,我不是建议大家去买比特币。写此文的一周内,比特币从16000美元涨到了最高18000美元,又跌回了16000。为我同志者加入我们,然而加入我们的却不一定都是同志。

     

     

     

    展开全文
  • 精通比特币

    万次阅读 2019-05-17 18:08:42
    精通比特币 介绍 前言 快速术语检索 第1章 介绍 第2章 比特币的原理 第3章 比特币客户端 第4章 密钥、地址、钱包 第5章 交易 第6章 比特币网络 第7章 区块链 第8章 挖矿与共识 第9章 竞争币、竞争...

    介绍

    介绍

    精通比特币

    作者:Andreas M Antonopoulos

    Andreas M. Antonopoulos 是一位著名的技术专家和连续创业企业家,比特币界最著名和倍受尊敬的人物之一。身为一名迷人的公共演说家、教师和作家,他善于把复杂的问题变得简单而易于理解。

    Andreas M. Antonopoulos 的成长和互联网密不可分,青少年时期,他便在自己希腊的家中创办了他的首家公司——一个早期电子信息服务系统和原始的互联网服务提供商。他取得了伦敦大学学院的电脑科学学位、数据通信学位以及分布式系统学位,该学校最近跻身于全球大学排名前十。移居美国后,Andreas M. Antonopoulos 和别人合办了一家成功的技术研究公司,管理公司的他,在网络、安全、数据中心和云计算方面,为许多世界五百强公司的首席执行者提供建议。他撰写了200多篇关于安全、云计算和数据中心的文章,已经在世界范围内被印制出版,并在多家报刊发表。此外,他还持有两项网络和安全领域的专利权。

    1990年,Andreas M. Antonopoulos 开始在私人、专业和学术等诸多场合讲授IT话题。从五名企业高管的会议室,到千人参与的大型会议,他不断磨练着自己的演讲水平。超过400次的锻炼,不仅使他成为了为人津津乐道的教授,还铸就了他世界级演讲大师的美名。2014年,第一所授予数字货币学士学位的尼科西亚大学邀请他来校任教。上任后,他与别人合作开设了这门课程。他还参与讲授了数字货币导论,后者成了为尼科西亚大学的一门大型网络公开课(MOOC)。

    作为一名比特币企业家,Andreas M. Antonopoulos 已成立了不少比特币企业,并推出了一些社区开源项目。他担任好几家比特币和加密货币公司的顾问。他既是一名出版作家,发表了大量关于比特币的文章和博文;也是一档流行博客“Let’s Talk Bitcoin”的固定主持人;还是在全球各地的技术安全会议上演说的常客。

    译者:

    薄荷凉幼;陈萌琦;陈姝吉;程鹏;程西园;达文西;吉鸿帆;李丹;李润熙;李凌豪;李昕阳;刘畅;吕新浩;马峰;牛东晓;秦彤;邱蒙;戎如香;史磊;汪海波;王宏钢;辛颖;杨兵;尹文东;余龙;张林;张琦张大嫂;张亚超;张泽铭;赵冬帅;赵余;YANG YANG

    简介

    想要加入一场颠覆金融世界的技术革命吗?《精通比特币》会为你参与这个货币网络提供必备知识,引导你进入看似复杂的比特币世界。无论你是正在构建下一个杀手级应用、投资创业,还是单纯对技术好奇,这本实用的书都是你不可或缺的阅读材料。

    比特币,作为第一个成功的去中心化数字货币,尽管还处在起步阶段,却已经催生了数十亿美元的全球性经济体。它对任何具备相应知识和参与热情的人都是开放的。《精通比特币》会为您提供必要的知识,但请各位读者自备热情。

    本书包括:   

    • 针对非技术用户、投资者以及企业高管,概括性地介绍比特币
    • 针对开发人员、工程师以及软件系统架构师,介绍比特币和加密货币的技术基础
    • 详细介绍比特币去中心化网络、点对点体系结构、交易生命周期以及安全原则等细节的
    • 比特币和区块链的发明的衍生物,包括替代链、货币以及应用程序
    • 通过用户故事、简练的类比、示例以及代码段来阐释的关键技术概念

    Andreas M. Antonopoulos 是比特币行业最为知名和受人尊敬的技术专家、连续创业家,现担任多家技术创业公司的顾问。他同时还是一名出色的演说家,教师以及作家,经常在世界各地的会议和团体活动中发表演说,用通俗易懂的讲解把复杂的学科普及给广泛听众。

    “论及比特币,有人问我它到底是怎样工作的?现在我有了一个极好的答案——《精通比特币》这本书会让每位读者深刻理解比特币的工作原理,还会帮助读者为写出下一代神奇加密货币的应用程序做好充分准备。”

    ——Gavin Andresen,比特币基金会,首席科学家

    “Andreas的书将帮助你投身于金融世界的软件革命。”

    ——Naval Ravikant,AngelList联合创始人

    展开全文
  • 比特币网络

    千次阅读 2019-04-18 09:33:28
    比特币采用了基于国际互联网(Internet)的P2P(peer-to-peer)网络架构。P2P是指位于同一网络中的每台计算机都彼此对等,各个节点共同提供网络服务,不存在任何“特殊”节点。每个网络节点以“扁平(flat)”的拓扑...
  • 什么是比特币比特币是由一系列概念和技术作为基础构建的数字货币生态系统。狭义的“比特币”代表系统中的货币单位,用于储存和传输价值。用户主要通过互联网使用比特币系统,当然其他网络也可以使用。比特币协议以...
  • 随着区块链上升到国家战略层面上,作为区块链最成功应用的比特币也被大量的人所熟知,比特币的创富神话更是吸引了无数投资者投入其中。 但比特币是一种高风险的投资项目,稍有不慎就会吃到苦果,因此,投资需要谨慎...
  • 比特币核心:参考实现你可以从bitcoin.org下载标准客户端,即比特币核心,也叫“中本聪客户端”(satoshi client)。它实现了比特币系统的所有方面,包括钱包、对整个交易账簿(区块链)完整拷贝的交易确认引擎,和...
  • 6.1 P2P网络架构比特币采用了基于国际互联网(Internet)的P2P(peer-to-peer)网络架构。P2P是指位于同一网络中的每台计算机都彼此对等,各个节点共同提供网络服务,不存在任何“特殊”节点。每个网络节点以“扁平...
  • 初识比特币——比特币私钥

    千次阅读 2017-06-11 20:37:42
    简述私钥和WIF格式的私钥
  • 比特币节点有很多实现 bitcoin core:官方节点,c/c++实现,正式网络大多数都是用这个来运行全节点 btcd:golang的实现版本,如果用golang来写一些功能,可以参考这个代码 libbitcoin:c/c++实现,特点是它有较好...
  • 比特币(bitcoin)诞生于2008年的一篇论文。 一个署名为中本聪的人,提出了革命性的构想:让我们创造一种不受政府或其他任何人控制的货币!这个想法堪称疯狂:一串数字,背后没有任何资产支持,也没有任何人负责,你...
  • 央行禁止金融机构服务比特币比特币暴跌20% 有报道称,央行已向各分支机构下发了一份名为《关于进一步加强比特币风险防范工作的通知》,该文件禁止国内银行和第三方支付机构替比特币交易平台提供开户、充值...
  • BTC:简单易懂比特币比特币的神奇——区块链技术的体现 目录 BTC的七大特殊之处 BTC的七大特殊之处 1、一个没有CEO的公司,管理几十万员工; 2、每个员工自私自利,争权夺利,公司运作9年风生水起...
  • 简述比特币地址和公钥
  • 比特币时间戳

    2020-01-27 19:23:06
    比特币上面,这个一定间隔周期就是两星期,即比特币每两星期根据当前算力调整一次采矿难度,以实现区块出块间隔十分钟左右的目标。为了对两星期的时间进行计算,需要将时间概念引入区块链并成为一致性系统...
  • 比特币】自己动手编译比特币客户端

    万次阅读 热门讨论 2013-11-29 10:39:31
    https://github.com/imharrywu/fastcoin本帖只谈技术实现,首先我们自己来编译一个比特币客户端吧, 技术讨论QQ群,161928517,欢迎大家入伙(注明:csdn)。   2014.7.18更新: 静态编译的第三方依赖和MINGW64工具...
  • 比特币核心(BTC)的支持者说,比特币不是用来买咖啡的。他们认为比特币的目的是作为一种价值储备,而不是一种货币,数字黄金不是数字现金。另一方面,比特币现金(BCH)的支持者认为,比特币注定要被用作一种交换...
  • 比特币深度分析

    万次阅读 多人点赞 2013-12-29 23:00:15
    最近电视、新闻、网站经常有讲到比特币,但普通人经常被比特币的各种信息搞得一头雾水,到底什么是比特币,它是谁开发的,它跟Q币有什么区别,它是不是一个庞氏骗局,它是不是一个击鼓传花的游戏,它会不会很容易就...
  • 比特币术语表

    万次阅读 2019-05-08 09:53:30
    区块链技术相关表包含了常见的区块链术语(概念)、解释及进一步阅读参考文章,以加深理解。 方便大家阅读博客或网络上其他文章...比特币地址由一串字符和数字组成,常见地址以1开头,常见的交易是比特币从一个地址...
  • 下载地址获取方式:1、关注微信公众号:ipfscom2、关注后回复: 比特币
  • 怎么更换比特币核心钱包 我安装了一下ubuntu的服务器,安装了一个全节点。 然后我就一直没加密过钱包的,但是我今天我去加密的时候,显示 error code: -15 error message: Error: running with an encrypted ...

空空如也

1 2 3 4 5 ... 20
收藏数 29,495
精华内容 11,798
关键字:

比特币