比特币算出了货币,如何向全网广播的?求干货,不要概念
首先比特币不能算做是货币,其次比特币是一个激励制度的奖励,在一笔交易产生的时候向全网广播,判断这笔交易并且帮助这个广播的人会获得奖励(比特币)
比特币向全网广播是怎么实现的?
两个说法供参考,都是从巴比特找到的:
?? 比特币采取一种数学竞赛的方式来决定交易到达节点的时间,并同时保护这种顺序,在比特币系统中是通过将交易按组分配来对交易进行排序的,这样的组被称作区块(同一时刻发生的交易会分在同一个区块内),然后将这些区块链接起来,被称作区块链。区块链是用来对交易排序,而交易链则是追踪记录比特币所有权变化的,这些区块是按照时间排列的就是一个链接,未在区块内的交易被成为未确认或者未排序的交易,任何节点都快要将一组未经确认的交易放入区块中,然后向网络中的其他节点广播他们对于下一个区块应该是什么的建议。
? ?? ?? ?如果同一时刻有多人同时生成区块(这种概率基本很小),所以就会有当前的区块的下一个区块会有多个选择,为了保证区块链接的顺序性,比特币系统让每个有效的区块必须包括一个特殊数学问题的答案,计算机会计算整个区块的文本,再加上基于加密哈希进行的随机猜测,直到得出一个低于某个特定数值的输出,哈希函数能够从任意长度的文本中创建一段简短的摘要,这个固定输出值是非常复杂的找到他的唯一方法就是随机猜测,这就是所谓的挖矿。King在去年发行PPC 的时候引入了检查点机制,以在其发展初期保护避免攻击。这个机制使其能够抵御51%攻击。”开发者可以控制一个母节点并向全网广播“检查点”,这让其它节点在某些区块上达成一致。“他说,这其实是一个”(区块链)连续性警告信息“。
详解比特币的“51%攻击”
刚接触比特币的时候,都听过“51%攻击”这个概念。简单来说,就是如果某个节点拥有超过全网51%的算力,将能够实现双重支付、撤销交易等操作,让比特币网络崩溃。
那么,这个51%攻击是什么实现的?
假设一个场景,A用10比特币向B购买一样商品,步骤如下:
(1)A支付给B 10BTC;
(2)B收到10BTC确认收款后发货(一般认为6次确认后交易就不可逆转);
(3)A随即创建另一笔交易,将同样的10BTC支付给自己。
显然,A想要撤销第一笔交易,不用花钱就得到B的商品。为了达到这个目的,A进行了双重支付,将同样的10BTC支付给B和自己。在正常的比特币网络中,一旦第一笔交易经过6次确认后就几乎不可更改,后续的交易数据将继续打包成新的区块依次链接下去。可是,如果A用户拥有51%的算力,情况将会发生有趣的变化,A可以实现双重支付的目的。
具体过程如下:
假设第一笔交易被打包到100号区块,当后面再增加5个区块后,6次即可确认该交易,区块如下图所示:
这时,A又发起了一次给自己10BTC的交易。如果A向全网广播,这笔交易不会被处理(因为找不到要花费的UTXO,10BTC支付给B的事实已经被全网确认了),所以A选择不广播,而是对主链进行“分叉”,生成另外一个100号区块,并在其中打包第二笔交易,如下图:
由此,产生了两条子链。简单描述起见,第一笔交易所在的叫C1,第二笔交易所在的叫C2。其他矿工继续在C1上打包数据,而A则在C2上挖矿,两条链开始赛跑。由于A具有超51%的算力资源,很快,C2的长度就会超过C1,如下图:
这时,按照比特币的最长链优先原则,其他矿工也会自动转到C2上,使C2变成了主链。C1则会被抛弃,之前打包在C1上的所有交易(包括第一笔A支付给B 10BTC的交易),都会变为无效。结果是A不花一分钱就拥有了属于B的商品,这就是“51%攻击”。
当然,要真正实现51%攻击是非常困难的,在比特币网络中几乎是不可能的,因为这需要消耗巨大的成本,跟攻击成功后获取到的收益相比,完全是得不偿失。
51%攻击能带来的收益是非常有限的,只能做到:
1、修改自己的交易记录,如双重支付;
2、阻止确认部分或全部交易。
而下面这些即使是51%攻击也没法做到的:
1、凭空生成比特币;
2、修改每个区块产生的比特币数量。
因此,51%攻击成本巨大,收益却很小,仅能实现“双重支付”而已,所以51%攻击很多时候又被称为“双花攻击”。“双花”是数字货币要解决的第一个核心问题,比特币通过共享账本和工作量证明共识机制比较完美地解决了这个问题。
比特币的网络是怎样运行的?
我开发过山寨币的。 大致说下吧, 主要是区块链这个概念,你可以理解成是一个长长的账本, 里面记录了各类支出收入。 而挖矿相当于去增加这个账本的内容, 但是这个账本不是你说改就能改的。 新增加的内容必须要满足一系列条件并被第三方验证。 这个过程就叫挖矿, 而新增内容就叫块。这个块刚出来的时候已经有一笔交易了,就是挖矿的人的奖励。 这个块不是挖出来就好了的, 需要由另外几个人的确认,而整个确认过程是通过p2p协议来完成的。 举个例子: 区块链相当于是一部电影, 比特币客户端相当于是迅雷, 每一个在线的客户端相当于是种子, 所以这个账本(区块链)就会同时被这个几个人下载, 而验证过程就相当于是互传。 这样, 只要在同一个验证机制下, 所有p2p的用户会形成一个相同区块链的群体了, 也就是比特币用户。
我的比特币怎么转账到别人的账户上?
很多人只知道比特币可以用来投资,却不知道比特币可以像银行卡一样转账。
生活中我们都有自己的银行账户,转账是在银行账户之间进行的。同样,比特币转账就是把比特币从一个比特币地址转移到另一个比特币地址上的过程。
如果你想要转账比特币给别人,你需要在比特币交易平台、比特币钱包或者比特币客户端中,输入你的比特币地址、接收方地址、转账金额和手续费金额。
确定支付后交易信息会在比特币网络进行全网广播。矿工每隔10分钟会将比特币网络中未被记账的交易打包进一个区块,这就完成了一次确认,此时比特币已转到对方账户。
通常需要经过6次确认,确保交易记录不能被任何人窜改,转账才算真正完成。
1、输入自己的比特币地址,接收方地址。
2、输入转账金额和手续费金额。
3、确定支付后交易信息全网传播。
4、矿工会将比特币中未被记账的交易打包进入区块。
5、完成确认后比特币就已转到对方账户。
6、为确保交易记录不被人篡改,需要经6次确认,转账真正完成。
比如一个叫小五的人在山上挖矿,今天手气不错挖到了一块值10000元的稀有金属,为了感谢小三和小四借他工具所以想分别转账给小三和小四100和400块表示感谢,小四为了感谢小三告诉小五想借他工具这件事(只是借了下工具得到400元),为表示感谢小四给小三转账150表示感谢,下面我们看看基于账户是怎么处理的,比特币是怎么处理的。
比特币转账手续费是交易者付给矿工的一笔费用,用于激励矿工竞争记账为比特币提供足够的算力从而确保比特币网络的安全,有的地方也叫做矿工费。用户在比特币网络发起一笔转账时,一般需要支付给记账矿工一定的转账手续费。转账手续费一般为0.0001-0.0015个比特币,由于区块能容纳交易记录的容量有限,矿工会优先打包手续费高的交易,所以多付手续费可以更快被记账。比特币交易手续费的存在能提高转账门槛,有效防止区块链中充斥垃圾信息,并且能够保证在比特币被挖完之后矿工仍有动力维护比特币网络。
理论上讲,打包完这个交易记录的区块后,再产生6个区块后,原则上讲这条交易记录就完全确认了。这个转账就完全确认了。
总结:在比特币网络中,由于没有了中心,为了实现安全、有效的记账,采取了多种新的技术。为了防止网络上广播秘钥而采用的私钥、公钥、地址的加密形式;为了减少检索整个账单而采用的UTOX集,让比特币在像在水管中一样在比特币网络中来回流淌;为了公平记账,采用挖矿的机制来让每个矿工根据算力付出来竞争;为了平衡10分钟出一个区块,可以根据全网算力动态调整挖矿的难度。而这一切技术都是围绕着记账展开,比特币区块链的区块主体数据也都是这样一条条交易数据,没有比特币本身,有的只是基于若干聪的UTOX;没有账户本身,有的只是一串数字的三种形式(私钥、公钥、地址)。