主页 > imtoken 钱包是什么 > imtoken如何交易usdt:btc分叉查询 比特币的双花问

imtoken如何交易usdt:btc分叉查询 比特币的双花问

提usdt到imtoken钱包 imtoken 钱包是什么 2022年10月21日

不知道题主有没有看过白皮书?

bitcoin.org/bitcoin.pdf

有空可以去读一读。

如果想深入了解,还有官网的开发者指南以及《精通比特币》等书籍可以参考。

我随便说一下吧:

1.地址是可以重复用的,只是出于保护隐私的目的不推荐你重复用。

2.每一笔转账(比特币的术语叫交易),都是把输入的币全部“熔毁”,然后按照输出“铸造”新的币。

输出金额减去输入金额的差值就是给矿工的手续费(按照规则,矿工也可以选择不拿这笔钱,而且这么做本质上就是销毁了一些币,显然,脑子正常的矿工都不会干这种烧钱的傻事)。

所以,需要有一个“找零”输出,填上你的比特币地址。如果你不填找零,就等于把输入里没花完的余额都当作手续费送给矿工了。

PS:一般用户不会碰到这个找零问题,钱包软件会自动搞定这件事。有些手动构造交易的开发者/高级玩家犯过忘记填找零的错误,然后就发生了转一次账手续费花了几百万的悲剧……不过有些矿池可能是“拾金不昧”、愿意退回的。

“找零”同样是“销毁旧币、创造新币”的过程,哪怕是找零到原先的地址上。

具体到技术细节是这样的:每一个“币”,也就是一个UTXO,它的表示形imtoken钱包 知乎式是【交易ID:输出序号】。交易ID就是交易数据的两次SHA256哈希值。

比特币的交易也是哈希链条组成的,每一笔交易的ID都是唯一的。所以,即使找零到原先的地址上,你可以花出去的币也是一个交易ID已经完全不同的崭新UTXO,原先的UTXO已经作废了。

PS:你也可以看到,比特币在设计上其实没有“来源地址”。一笔交易只是记录了输入“销毁”了哪些UTXO、然后又输出“生成”了哪些新的UTXO,并没有“来源地址”这回事——当然,你也可以把输入里引用的那笔交易也找出来,看看那个UTXO原先是输出到哪个地址上的,这样就可以显示出“来源地址”了。区块链浏览器就是这么干的。

3.显然,如果一笔交易试图花费一个已经作废的UTXO,那这笔交易就是无效的。

如果某个矿工把这种交易打包进区块,那这个区块也是无效的,这个矿工会因此受到惩罚(挖这个区块时白白烧掉了电力,但是却没有人愿意接受,大家都把这个区块拒绝掉了)

4.所以,如果你想达成一次双重支付攻击,你只能这么做:

生命线分叉命运线分叉相连_感情线末端分叉又分叉好吗_btc分叉查询

构造一笔交易,把已经被花掉的钱转回自己的地址;然后,利用自己控制的算力去挖另一条攻击链,里面不打包原先正常付款的那笔交易btc分叉查询,改成自己构造的双花交易。

比特币的规则里有一条:多条分叉链出现时,最长链(具体来说是积累工作量最多的链)是有效的。如果你能挖出一条比现有的诚实链更长的攻击链,那大家都会承认你的攻击链imtoken ios才是有效的,诚实链会被孤立作废。

5.双重支付攻击需要有51%的算力才有100%的成功概率。

实际上,没有超过50%的算力也有概率能成功,但是算力越少、确认数越多,成功概率就越低,只要确认数稍微多一点,成功概率就几乎是0了。

6.从另一个角度讲,为什么要规定大家都承认符合规则的最长链有效呢?这样有51%攻击的问题啊。

以前有人就想过一个简单粗暴的办法:开发者定期在软件里硬编码写死区块哈希值,也就是所谓的checkpoint,只接受这条链,拒绝其他可能存在的“攻击链”。

但是,马上就有人发现了问题:这个checkpoint实际上就是开发者“权威”的体现,大家归根到底还是得完全信任开发者、不停地从官网下载最新版软件,才能保证自己的安全——这样做是中心化的,并没有达到去中心化的目的。

现在还可以看到比特币代码里有checkpoint的逻辑,但是这已经是历史遗迹了,早就不再更新,它的存在主要是缓解一个问题:目前的算力已经比几年前高出太多了,所以就可能有人利用以前挖矿难度低的特点来制造无效的分叉链,用这种垃圾数据来干扰节点运行、攻击网络。

(参考:What are checkpoints?)

再扯点题外话:

7.嗯,比特币这种UTXO设计其实还有另一个蛋疼的问题,就是“碎币”,或者说“粉尘”(dust)问题。

一个地址每次接受转账(包括找零),收到的“币”都不会自动融合到一起。

而且,比特币的手续费并不是按照金额比例收取的,而是按照交易的数据字节大小收取的(而且还得看网络是否拥堵,拥堵了还得竞价,否则迟迟确认不了)。

如果一个“币”的币值很小,就很尴尬了:你把他花出去要掏的手续费,可能超过了币值本身。

8.为了解决这个问题,就有了一个专门的“研究领域”,也就是选币算法,目的是尽量在隐imtoken无法实名认证私、手续费、避免产生粉尘方面找到平衡点……

为什么要说隐私呢?打个比方,X贪官收了一笔赃款在A地址,正常用法币购买比特币在B地址,然后,他在买豪车时,把两个地址上的币一起花出去了——比特币的交易记录是完全公开透明的。所以,如果执法机构知道B地址属于X贪官btc分叉查询,他们也就顺藤摸瓜找到了巨额财产来源不明的A地址。

还有避免粉尘,这不仅仅是为了那个用户自己好、防止他的钱受损失,也是为了整个网络的健康考虑。粉尘是每一个节点都要保存、处理的,粉尘越多,节点的负担越重。

广告位