OKCoin

浅析比特币的找零机制

imcoddy 发布在 技术指南 26 10753

前言:守币比守寡难其实是有多层含意的:一方面在牛市冲天洛阳币贵时难免“菊花虽可贵,高价亦可抛”,另一方面在熊市低迷无论是割软妹币还是割比特币对小白而言都难免心头长痛不已,此外,在门头沟黑幕被逐渐揭露以及国内交易币久久没有提供准备金证明的情况下,又让不少人改名换姓变身买买提。不过即使提到自己的钱包里,还是需要小心比特币“坑爹”的找零机制,否则又将是晚节不保,丢币却又无处可寻。本文将对比特币的打零机制加以解释。

前不久推出的比特币 0.9 版里面加入了一个小白们期待已久的新功能:可以自行选择支付后的找零地址。对于这个功能的加入,本聪大叔不知道会不会哭笑不得地说道:“It’s not a bug; it’s a feature!”

要想理解比特币的找零机制,还得先从比特币的交易原理说起。

地狱天使的借记卡

试着把比特币地址想象成一张你平时到便利店购物时用的借记卡。你提着选好的东西来到收银台,看着秀色可餐的收银台美眉计算出所要付的总额,然后像以往那样将卡一刷,正要输入密码确认时,你突然发现你卡上的钱将会被清空!

“我去,你们这居然是一家黑店?!”

“先生您多虑了,这是我们公司针对您这样的高端用户所提供的一项特殊服务。您可以选择以下几种收款方式:(1)将零钱发回你现在的帐户上;(2)新创建一个帐户并将零钱发送过去;(3)什么都不说直接将零钱发送至支付终端的公司……”

是不是越听越糊涂了?不过,这就是比特币交易的基本工作方式。试图用网银或者借记卡的经验来理解比特币容易造成一些误解。幸运的是,古老的现金交易方式可以让我们更好的来解释比特币的原理。

比特币是电子版的现金

比特币与现金的关系源远流长。实际上,本聪大叔在创世论文中开门见山地将比特币描述为一种完全通过点对点技术实现的电子现金系统。理解比特币与现金的关系,对于理解找零地址至关重要。

每一张纸币有着固定的面额,相同面额的可能也会有多张。在这人心不古的年代,纸币东放一张西扔一张明显不是个好习惯,这时候你应该找个钱包把纸币装起来。而在比特币的世界里,将各个比特币保存起来的东东就是比特币地址,其关系如下(本聪大叔比较低调,所以钱包也是实用主义为主,一个信封就搞定了XD):

每一个地址可以装至少零枚比特币,多则无上限。(哦不对,多则为 2100 万的比特币总上限,不过全放一块的话估计这玩意也没其它人用了……)与纸币面额稍有不同的是,比特币中这被称为“未花费输出”,比特币地址会计算所有的未花费输出,并在相应的地方显示出当前地址的总额。

而比特币网络的目的,就是确保未花费输出通过交易转移到其它的地址上去。

比特币交易如何工作的

假设 A 拥有一个比特币地址,里面包含着还没有花费过的 10 个比特币。B 也有一个比特币地址,里面一分钱也没有。当 A 想付给 B 10 个比特币时,A 地址里的未花费输出变为零,而 B 的会变为 10 BTC。


(这在现实世界里面是非常正常的事情,不过在大家习惯了 Ctrl+C 和 Ctrl+V 的数码世界里,要实现一份不可复制的信息转移系统其实是件不容易的事情。更多关于比特币防止重复消费的原理,请参考这里。)
(如果你还不理解复制粘贴有多容易,也许你看到这条文字就能明白了……总之,插个广告,欢迎打赏 1MzziGBa7tNNzMwVJMPEjAfM1wRcvSGZu5 ^_^)
如果 A 想支付的金额与所拥有的相同,自然不会存在需要找零钱的问题。不过当手头的金额比要支付的大时,找零自然也是天经地义的事情。假设 A 的地址上有 35 个比特币,当 A 想支付给 8 个比特币给 B 时,只需要使用包含着 10 个比特币的那一笔未消费支出,设置好要支持的金额,打零剩下的 2 个比特币则返回给 A,以便 A 在将来可以继续使用。当然,如果你是比特土豪可以随意将手头上的币一把甩出去然后说句“Keep the change”就直接闪人:P

实际上,比特币在交易时会把消费时所用的地址(消费地址)的余额置零。当需付的金额小于可用余额时,交易信息中必须告诉比特币网络零钱将被发送至的地址,即“找零地址”。找零地址可能是也可能不是原先消费时所用的地址。除此之外消费地址所留下的剩余款项将由网络作为交易费的支出支付给矿工。

在上面的例子里,A 可以选择将找回的零钱发送到一个新创建的找零地址上,或者将原先发送的地址设置为找零地址。将零钱返回原先的地址虽然对 A 而言方便了管理,不过这可能会造成 A 的隐私性降低,一定程度上还可能会影响到 B 的匿名性。

找零地址和隐私保护

根据设计,每一笔比特币交易将在一个称为“Blockchain”的全球性的公共总账上永久可见,这就意味着任何人都可以随时在上面进行跟踪查询。通过将某个比特币地址与其使用者关联起来,好事者都可以开始绘制关于这个人与他人之间的资金转移的关系图。而通过将找回的零钱发送至一个新创建的地址,可以让这种追踪变得更加困难。

要理解这一点,可以参考下图。假设从地址 A 发送比特币到地址 B,如果零钱返回地址 A,则 Blockchain 会揭示控制着地址 A 的付费者向控制着地址 B 的人支付了一笔钱。同样的道理,如果有两个或两个以上地址参与其中,任何涉及到这个接收零钱的找零地址都会揭示 A 作为支付方的交易。假如某个控制着的任何接收地址或付款地址的人的身份成为众所周知的对象时,其他有过交易往来的各方的身份也有可能被推断出来。

现在想象一下,地址 A 发起付款到地址 B,但此时将找零地址更改为新生成的地址 C。如果没有进一步的信息,其它人所能知道的是,有一个交易拆分了地址 A 的余额至地址 B 和 C。而地址 B 或 C 的主人可能是也可能不是 A。由于新地址 C 的加入,让整个交易的真相变得更加扑朔离迷:哪一个地址代表着被支付方,哪一个地址代表着找回的零钱呢?

当所有各方都将零钱发送至新创建的地址时,要想将个人身份与地址相联就必须收集更多的信息,并耗费更多的资源。像 SilkRoad 或者 MtGox 这样摊上大事的时候他们的地址会被成千上万双群众的眼睛紧紧地盯着,毕竟不少人身家财产都放在上面。而像你我这样的泯泯众生,虽然以实际行动向苍老师捐赠比特币以表敬意是件君子袒蛋蛋的举动,不过这个时候换用个鲜为人知的地址更显出我辈置功名于身后的豁达。

小隐隐于野,中隐隐于市,大隐隐于朝。明白了这一点,放能体会到本聪大叔当初敲代码时的良苦用心。当然,新版中将找零地址的设定权交给用户自然是一件好事,只是,我们不应该忘记其设计初衷。

在这暮春雨纷的时节里,谨以此文,向依旧埋名隐姓笑看红尘的本聪大叔致敬。

binary-tree

欢迎打赏:1MzziGBa7tNNzMwVJMPEjAfM1wRcvSGZu5

版权声明: by nc" sa 作者保留权利。文章为作者独立观点,不代表巴比特立场。

评论:26

您需要登录后才可以回复 登录|注册
    渣浪sb封我号
    渣浪sb封我号 479 天前

    浅析比特币的找零机制 | 巴比特 前言:守币比守寡难其实是有多层含意的:一方面在牛市冲天洛阳币贵时难免“菊花虽可贵,高价亦可抛”,另一方面在熊市低迷无论是割软妹币还是割比特币对小白而言都难免心头长痛不已,此外,在门头沟黑幕被逐渐揭露以… http://t.cn/8sXEHf6

    +1
    +1
    我要点评
    Author Image
    BigChubbyCat 939 天前

    0419bdcbdd70dc4e81bfa5bebdb2980e8c7b365f202ffd5c1e62afcfbc59046f-000

    +1
    +1
    我要点评
    比特币x望虹
    比特币x望虹 975 天前

    【浅析比特币的找零机制】前言:守币比守寡难其实是有多层含意的:一方面在牛市冲天洛阳币贵时难免“菊花虽可贵,高价亦可抛”,另一方面在熊市低迷无论是割软妹币还是割比特币对小白而言都难免心头长痛不已,此外,在门头沟黑幕被逐渐揭露以及国内交易币… http://t.cn/8sXEHf6

    +1
    +1
    我要点评
    币竟网络
    币竟网络 976 天前

    //@超级比特币: 转发微博

    +1
    +1
    我要点评
    江老鱼黑
    江老鱼黑 976 天前

    真心希望把找零这个功能去掉,使比特币复杂化了。比特币的匿名性使得他容易被非法的人使用。

    +1
    +1
    我要点评
    江老鱼黑
    江老鱼黑 976 天前

    对于我来说,这是一片好文章。多谢分享。

    +1
    +1
    我要点评
    Author Image
    BigChubbyCat 976 天前

    通俗易懂《浅析比特币的找零机制》

    +1
    +1
    我要点评
    MINERHOUSE
    MINERHOUSE 976 天前

    找零是别人找给你,比特币系统是自己找给自己。哈哈

    +1
    +1
    我要点评
    Q小迪
    Q小迪 976 天前

    原文加了矿工费的图。当时觉得这个和找零关系不大就没加了[嘻嘻]

    +1
    +1
    我要点评
    小菜ZENO
    小菜ZENO 976 天前

    //@宋欢平:找零机制到底是特征还是问题?

    +1
    +1
    我要点评
    比特币azure
    比特币azure 976 天前

    回复@危小生:恩,应该这样。给隐私一个选项即可。 //@危小生:不管怎么说,用户体验如果不好,比特币一定推广不开来。有哪个人用人民币会关心它们是怎么制造出来的,银行转账银行内部走什么流程。找零机制应该默认转到自己原地址,可以设置找到新地址,毕竟一般用户并不需要靠找零机制来保护隐私。

    +1
    +1
    我要点评
    比特币azure
    比特币azure 976 天前

    回复@危小生:恩,应该这样。给隐私一个选项即可。

    +1
    +1
    我要点评
    路过的小新
    路过的小新 976 天前

    找零机制应该默认回到发送地址,不然就是在坑只备份私钥的人//@宋欢平:找零机制到底是特征还是问题?

    +1
    +1
    我要点评
    campanella
    campanella 976 天前

    其实我更关心的是矿工费的去向,似乎在账本里没有体现。//@宋欢平: 找零机制到底是特征还是问题?

    +1
    +1
    我要点评
    -你在想我吗
    -你在想我吗 976 天前

    没流量咯拿我妈手机上微博

    +1
    +1
    我要点评
    危小生
    危小生 976 天前

    不管怎么说,用户体验如果不好,比特币一定推广不开来。有哪个人用人民币会关心它们是怎么制造出来的,银行转账银行内部走什么流程。找零机制应该默认转到自己原地址,可以设置找到新地址,毕竟一般用户并不需要靠找零机制来保护隐私。

    +1
    +1
    我要点评
    比特币azure
    比特币azure 976 天前

    显然是更人性化的改变。现实中买东西找零,不知道找回的零钱放到了钱包的哪一格,也会让人抓狂的。//@Nimrod_bit: “It’s not a bug; it’s a feature!” //@BTC100交易网:转发微博

    +1
    +1
    我要点评
    包子笔记
    包子笔记 976 天前

    博主知不知道在线的脑钱包支付找零机制是什么样的?是一定回到发送地址吗?如果不回到原地址又根本没有钱包文件,那不是丢币了吗?

    +1
    +1
    我要点评
    麻辣酸枣
    麻辣酸枣 976 天前

    用户可以自行选择是否开启找零机制比较好

    +1
    +1
    我要点评
    宋欢平
    宋欢平 976 天前

    找零机制到底是特征还是问题?

    +1
    +1
    我要点评
    Nimrod_bit
    Nimrod_bit 976 天前

    “It’s not a bug; it’s a feature!” //@BTC100交易网:转发微博

    +1
    +1
    我要点评
    用户3575974973
    用户3575974973 976 天前

    地址:

    +1
    +1
    我要点评
    btcrobot
    btcrobot 976 天前

    这篇不错!

    +1
    +1
    我要点评
    孤独的异客
    孤独的异客 976 天前

    好文[可爱]!

    +1
    +1
    我要点评
    巴比特资讯
    巴比特资讯 976 天前

    【浅析比特币的找零机制】前不久推出的比特币0.9版里加入了一个小白们期待已久的新功能:可以自行选择支付后的找零地址。找零地址的加入,让整个交易的真相变得更加扑朔迷离。对于这个新功能,不知本聪大叔会不会哭笑不得地说道:“It’s not a bug; it’s a feature!”

    +1
    +1
    我要点评
    Author Image
    我看比特币 977 天前

    不错的文章,感谢!

    +1
    +1
    我要点评