比特币简介1
来源:互联网 发布:什么是敏捷软件开发 编辑:程序博客网 时间:2024/04/28 01:44
我于2016年开始接触比特币,发现国内少有介绍的文章。
虽然我还是一个技术渣渣,但是经过摸爬滚打,还是想腆着脸给大家贡献一些经验。
比特币是一种点对点,去中心化结算的虚拟货币。“去中心化结算”的方式完全和我们现在身处的金融体制相悖。银行就是中心化结算的机构,依靠国家权力运行,如果银行倒闭或者国家灭亡。你手中的钱就失去价值了。我们的钱的价值的背后依赖的是信用。没有信用的环境,价值不会被承认,也不可被转移(交易)。不仅如此,银行为了构建信用体系,必须索取用户的个人隐私信息,绑定我们的钱。就算银行不泄露我们的个人隐私,信用体系的构建成本高昂。我们发现现实世界中,人们在大部分的时间里做着如何让别人信任的事。
IT界众大神洞悉了银行体系的脆弱,前仆后继地探索新的出路,让人们更加安全地远距离传输价值。
早期的电子货币,以乔姆盲签技术(Chaumian blinding)为基础发展,很可惜,他们还是依靠中心化的货币。
1998年,戴伟发明了b-money,这种数字货币引入hashcash的思想制造货币,就是制造货币需要大量计算,然而b-money还没有实现去中心化。
hashcash原先是为了防止发送垃圾邮件的机制,具体规定允许发送者发送垃圾邮件,但是在发送之前需要算一个非常难得题目(在头部嵌入一个特定的值,这个值是需要大量计算得出)。
2005年,芬尼引入了“可重复使用的工作量证明机制”来制造货币,这种货币依靠可信赖的后端计算,也没成功。
去中心化要求在没有中心节点的情况下大家能够承认在网上发生的交易,而且还得保护交易双方的隐私。
也有人这两点都实现了,可是又出现了“拜占庭将军”的问题。即这些去中心化的节点的域是一定的,换句话说,如果去中心化的节点够多,出现不诚实的节点,是会出现不可信的交易的。
于是,中本聪横空出世,甩出一篇论文,声称发明了一种点对点,去中心化的数字货币,解决了之前出现的所有问题。这就是比特币。
1.如何承认货币价值
比特币并不是硬通货,承不承认大家自己决定喽。
2.如何发行比特币
挖矿。谁愿意耗费电力和买矿机成本替大家算算账,如果算出来了,就发给他一定数量的比特币作为奖励。
这奖励分为两部分:
一.如果你打包N笔交易到新的区块被承认有效了,这是新创造的币,每四年减半一次。笔者写下这篇文章时是2016.6.29,正是比特币第二次减半的时候;
二.被确认的交易会发给矿工手续费。
3.如何保证交易安全有序
交易是需要交易发送者(sender)签名确认的,接收者用发送者的公钥进行验证。交易的签名不对,余额不足都不是有序交易,诚实的矿工都不会承认这笔交易。
区块链,顾名思义,就是很多区块连起来的链。高度N的新区块头部会包含高度N-1的区块的hash值,这样层层链接。
那他怎么保证有序打包交易呢?时间戳。N-1的区块产生后,其实是一串hash过的数据罢了,再加上时间戳向全网传播,矿工们正在咔咔挖矿,突然收到这个区块,就得马上放下铁锹来确认这区块是不是真的有序,确认后会把区块加在当前区块的后面。时间戳保证以后的交易只能放到区块N,甚至是N+1,N+2。。。。矿工赶快向后挖。
区块链会分支,诚实的矿工要在最长的链上挖矿
有一些内心黑暗的矿工打起了坏主意,他想,哎,大家的交易我是没法篡改了。但是我取消付款给别人的交易,这总可以啊。这就是“双花交易”, double exchange。其实就是在当前的区块的父区块位置添加一个分支,在这个新分支上挖啊挖,如果挖的速度足够快,能够比其他所有人快1%,我这个新的分支势必会成为最长链。中本聪又说,大家注意了,你们交易完成的时候不要急着确认,等个平均约10分钟再确认。这时候的最长的诚实的链超出坏人的分支5个块以上,坏蛋就很难追上了,因为他的工作量会大的无法承受,老老实实在最长链上挖矿更划算。这样他就么有double exchange的欲望了。
- 比特币简介1
- 比特币简介2
- 比特币开发者指南(简介)
- 比特股简介
- 比特币源码解析(1)
- 比特币
- 比特币
- 比特币
- 比特币
- 比特币
- 比特币
- 比特币
- 比特币
- 精通比特币-第1章 介绍
- 比特币基础概念入门 1
- 【比特币】自己动手编译比特币客户端
- 比特币学习之比特币地址
- 初识比特币——比特币私钥
- Java源代码分析之LinkedList
- __init__(self),self,super,继承杂谈
- pgpool复制和负载均衡
- 支持向量机SMO算法求解过程分析
- JAVA POST请求远程HTTP接口
- 比特币简介1
- android中不同类之间的数据通信之接口回调
- Linux驱动关联丢失处理
- 第二讲 html5框架+Crosswalk打包app 以及 Angularjs 基础(初步认识了解Angularjs)
- 简单的SQL语句汇总
- maven的私服搭建 Maven Nexus
- Linux Samba及NFS服务器搭建命令
- MapReduce基础开发之四参数传递
- 怎么在手机调用disable-web-security来访问跨域网页