【国庆征文】借用纸币进行比特币离线支付的两种方法

原创作者:bingjiw,中国
作者BTC地址:1QCRu9AhDcZYYg8neeYxrhdVUbqyVHMi1t

发布时间:2013年10月14日

网络来源:比特人论坛

概要:本文介绍了两种利用纸币来实现比特币的离线支付且可以避免双重支付问题的方法,两种方法分别简称为1PAP和3PEB。

(一)不依赖于第三方的不可赎回的比特币离线支付方法
(简称为1PAP,取自此方法所产生的虚假比特币地址的开头4个字符)

把比特币“注入”一张纸币中

首先需要一张纸币,比如美元或人民币等都可以,但必须满足两个条件:1)此种纸币上的编号具有唯一性,绝不重复。2)此种纸币具有较好的防伪性,即此种纸币市面上的假币比较少,或非常难以造假。然后,利用纸币上的唯一编号与面值等来创建一个虚假的比特币地址。

这个虚假的比特币地址的组成格式依次是:

  • 1(比特币开头数字1)
  • 使用本方法的比特币地址标识,英文大写PAP,代表PAPER,表示这个地址上的比特币已经纸币化了。(若遇到某种纸币的编号特别长,则此PAP可以缩短为P或省略不写,以给后面的特别长的编号留下足够的字符空间。但目前暂未发现有某国的纸币编号长到这种程度。)最多占3个字符。
  • 纸币面额(数字)遇到0用小写英文o代替,如1oo,5o等。大于或等于1000的面额,用简略的科学计数法记,比如1000可记为1E3,10000记为1E4,2000000记为2E6。最多占3个字符。
  • 三个英文字母的货币代码(3个小写英文字母,货币缩写采用ISO4217国际标准,若遇到小写l则用大写L代替,其余全是小写,因为比特币地址中没有小写L。)最多占3个字符。
  • 这张纸币上的编号(大写英文字母与数字,不得有小写字母出现,几乎所有现实纸币的编号中都不存在小写字母。若遇到大写”O”及”I”,则用小写代替,遇到数字0则用英文o代替。)
  • 英文小写z填充区,全部填以小写英文字母z,直到填满比特币地址所规定需要的长度。
  • 比特币地址校验码(使整个地址符合比特币的规范要求)

例如:一张100元面值的人民币,它的编号是:A6K4586664
那么所得到的虚假比特币地址就是:1PAP1oocnyA6K4586664zzzzzz4oLvT2

例如:一张面值5美元的纸币,它的编号是:BL39319171AL12

那么所得到的虚假比特币地址就是:1PAP5usdBL39319171AzzzzH82sJP。

注意,这个地址不是通过私钥生成的,因此它没有对应的私钥。采用如上的方法,一看这个地址就很清楚,它是什么货币,什么面值,编号是多少,而且用了不同的大小写区别开了不同的部分,不容易混淆。

虚假比特币地址制作好后,就可以把你准备用来离线交易的比特币金额发送到这个地址上去了。比如,我们发送100个BTC到前面的1PAP1oocnyA6K4586664zzzzzz4oLvT2这个地址上去。

从比特币的数字世界来看,其实这样子就是销毁了这100个BTC,因为我们并没有这个虚假比特币地址的私钥,谁都没有,所以发送之后,从比特币的数字世界来看,就等于是这100个BTC永远永远的消失了,没有任何人能够把它再取回来或花掉(因为没有私钥)。正如那块沉入大海中的石头货币一样(*见注释1),虽然永远消失了,但其在人们心目中的价值使它依旧能当作货币用来交易。而且正是因为消失了,所以绝对不存在双重支付的可能性。再加上这张纸币本身的防伪性及其编号的唯一性,因此这张纸币就成为了这100BTC的唯一证明,因此这个离线支付的方法是不存在双重支付的问题的。


*注释1:
弗里德曼在《货币的祸害》一书中引述了一个太平洋岛屿雅浦岛上的货币故事——当地人将打磨搬运回家的石头作为货币来进行价值度量和交换。曾经有一家人在某个盛产石头的岛上,采到了一块硕大的费(即石头货币),但在把费运回雅浦岛的中途遭遇风暴,最后只好砍断捆着费的缆绳,船上的人得救了,但费却沉入海底,无法打捞。人们回到岛上,都证明那家人得了一块质地优良体积巨大的费。自从那时,岛上所有的人都承认,石头落入海底是个意外,这块费虽然躺在大洋底下一动未动,但它却在岸上媒介了几辈子的交易。即使是百年前沉入海底的石头也可以成为一个家庭财富的象征并得到整个社区的认可。


制作者(支付者)可以做得更好一点,就是把这个虚假比特币地址及其二维码打印在纸币的空白处,若再打印上“此钞票已注入100BTC”的提示性说明就更直观了,通过二维码可以方便接受者扫描与校验真伪。比如像下图右边这样。

(图一:用户自己打印上二维码的美元)

接受支付与检验真伪

离线支付的接受方在接受此纸币时可以没有互联网接入,但接受方需要有一份若干天以前(但必须在制作者往这个地址输入比特币之后)的BLOCKCHAIN的离线数据文件在身边的电脑或手机或iPad中,接受者只要查询BLOCKCHAIN中有没有这样的一个比特币地址,而且是不是输入了支付者所宣称的数量金额的比特币,就可以了。更简单(更轻量,存储空间更小)的办法是接受方需要有一份所有以1PAP开头的比特币地址的余额表,如一个EXCEL文件存在手机中。如果要更加保险一点,接受者还可以用台式验钞机、或便携式验钞仪检验一下这张纸币的真伪就更保险了。甚至验钞机还可以自动扫描上面的比特币二维码,自动用验钞机内的1PAP数据库(可以不定期手动更新,或可以自动接受来自卫星或短波无线电信号中的1PAP数据来自动同步)进行检验余额。

如果接受者身边没有BLOCKCHAIN的离线数据文件,或者支付者往虚假地址中输入比特币是在最近几天,而接受者的BLOCKCHAIN(或EXCEL表格文件)中没有包含最近几天的数据,那么接受者还可以把此纸币的编号、面额、币种用短信发送到一个支持本文所述的方法的钱包服务商(比如是:blockchain.info或bitpay或coinsetter等)的检验短信服务号码上,钱包服务商根据最新的BLOCKCHAIN检查此3种数据所构成的比特币地址,然后把此比特币地址上所具有的(其实是此地址上已经销毁的)比特币数量发回给接受者。接受者就能确定这张纸币所代表的比特币的是否真实了。或者接受者打电话请他的可以上网的朋友帮忙检验也是可能的。

一旦纸币化后的比特币是再也不能重新数字化回到BLOCKCHAIN中去的,它将是永远以纸币的形式存在。

除非未来大家都认可某一个权威的机构来执行这个重新数字化的过程,该机构一边销毁这张纸币,一边向比特币网络结点广播它重新生成(re-generate)了与原数量相同的比特币(类似Zerocoin的generate出新的比特币),并发到现纸币所有者的比特币钱包地址上。然后所有结点认可此机构的确认与销毁纸币的工作以及重新生成的宣告。当然这是要修改比特币的协议,加入“重新生成”这一功能的。所以这个重新数字化只是一种可能的假想,它是否存在并不会影响离线支付的进行。

即使虽然无法重新数字化回到BLOCKCHAIN中,但是与“用石头来当作货币的岛民一样,大石头虽然掉到海里去了、消失了,但是大家都可以证明那块大石头确实是某个岛民所拥有的”是一样的。虽然比特币被制作者(第一个支付者)发送到了一个虚假地址“销毁”了,但这正是证明了制作者确确实实拥有过这个数量的比特币,而且绝对没有可能双重支付它。基于这样的信任,下一个接受者、再下一个接受者、乃至整个比特币社区都可以这样子把这个信任的链条一直传递下去。


(图二:某小岛上的石头货币)

而这张纸币正是代表着那块永远再也见不到的沉在海底的大石头。

(更多关于石头货币的讲述可参见:
http://zh.wikipedia.org/wiki/%E9%9B%85%E6%B5%A6%E5%B3%B6%E7%9F%B3%E5%B9%A3 http://news.xinhuanet.com/energy/2011-11/10/c_122263095.htm

(二)依赖于第三方托管的可赎回的比特币离线支付方法
(简称为3PEB: 3rd party escrowed bitcoin within a paper money)

利用与(一)中类似的理念,下面简要举例说明。
1.      用户A将100BTC发送并存在如:BitStamp或MtGox或其他支持发行比特币离线证明的服务商(下面简称为服务商)。
2.      用户A请求服务商给他发行比特币离线证明(通过本文的用纸币方法),同时用户A自己挑选一张纸币,并将纸币的面额、币种、编号发送给服务商。
3.      服务商将用户A的100BTC冻结。并用服务商的专用私钥对这句话加密签名:
“本钞票(5/usd/BL39319171A)的持有者可随时向BitStamp赎回100BTC.”(这句话的格式是固定的,且公开的。)
然后服务商将此私钥加密后的信息(一串已加密的字符串)发回给用户A。
4.      用户A将这一串已加密的字符串、字符串的二维码、“凭此票可向BitStamp赎回100BTC”字样打印在自己的那张钞票的空白处(如果要打印的内容太多,空白处太小打印不下,那么打印在白纸上并与此张钞票一同保存,同样有效)。制作完成。
5.      用户A将这张带有100BTC的钞票支付交给了用户B。
6.      用户B用服务商的专用公钥来验证打印在钞票上的加密字符串,并检查是否与钞票的面额、币种、编号一致。并检查钞票的真伪。若一致且是真钞,则接受此张钞票的100BTC支付。(注:此方法不需要像方法一中那样查询BLOCKCHAIN的数据库。)
7.      用户B可以再将这100BTC的钞票支付给用户C,用户C再支付给用户D,D再给E,……,一直到某个用户X。
8.      当用户X要赎回这100BTC时,他可以到服务商的柜台并交出这张钞票(或邮寄给服务商也可以),服务商用它的专用公钥解密并校验钞票上的加密字符串与钞票的面额、币种、编号是否一致。并检查钞票的真伪。若都没问题,则将它冻结的100BTC解冻并发送到赎回者的BTC钱包地址,同时销毁这张钞票。

两种方法的防伪性:此两种方法防伪性等同于所选用的纸币的防伪性,且只要纸币发行机构没有破坏纸币上的编号的唯一性,就不会出现伪造与多重支付的欺骗。接受者应当拒绝纸币上的编号有明显被涂改过的痕迹的纸币的支付。这样即可保证将伪造纸币与双重支付的风险降到最小。

(三)扩展应用
把彩色币、Mastercoin、BitShares“注入”纸币中

当把比特币“注入”纸币钞票这种使用方法广为大家所认可与接受时,就有可能会出现一些扩展的应用。例如以下两个例子:

(1)(1) 钞票变成原始股票

假设未来烤猫(ASICMiner)把它的直接股全部转入了彩色币系统中。你可以把带有烤猫股票的彩色币发送到如第(一)章中所述的由钞票编号构成的虚假比特币地址上,那么这张钞票就变成了“原始的股票”,因为它就代表着对烤猫的股权。为避免与其他钞票搞混,可在钞票上打印地址二维码及“烤猫股票XXX股”字样。(但若要另外定期获得烤猫的分红,还需要设置为股权地址与分红地址不同才行,或者需要另外结合1PAP或3PEB的方法来处理分红,此处不再详述。)

(图三:与传统的原始股票相比,用钞票来当股票其防伪性更好;无需专门印制,使得个人也能发行股票;持有人不记名,可任意出售、交易。)

(2)(2) 用“钞票”来代表债券或其他资产或某种权力。

比如未来某个机构、公司、个人通过彩色币、MasterCoin或BitShares来发行债券、固定资产证明、身份或权力证明时,然后持有者将对应的彩色币、MasterCoin或BitShares“注入”钞票后,持有这张钞票就拥有了所对应的权力。比如:迪斯尼公司利用彩色币发行了“迪斯尼虚拟门票币”,假设每个“门票币”约价值3000元,每个“门票币”可以到全球任何一家迪斯尼公园玩一整天。一位中国的父亲把一个“迪斯尼虚拟门票币”“注入”了一张崭新的100元的钞票中,并在钞票上打印好地址二维码及“迪斯尼门票”字样,然后在过年时把这张钞票作为“压岁钱”送给他的小孩,(对小孩子来说持有与使用一件实物要比持有虚拟的彩色币更容易)。去玩时,把这张纸币插入迪斯尼门口的自动检票机,完成检验后,自动门自动打开,即可进入。同时可让游客选择那100元钞票本身是换一个“电动米老鼠玩偶”或者可以换一桶“唐老鸭冰激凌”给游客(因法币不断的通货膨胀,那时的一桶冰激凌可能也就差不多值100元了)。当然,若“注入”的是一张10元面额的钞票,则只能送一张“迪斯尼粘粘纸”了。

与现在常见的普通门票相比,这张钞票“门票”是难以复制、难以伪造的,因为伪造它就等于印假钞,其技术成本与法律风险是极高的。而迪斯尼公司还可以省掉自行研制、印刷、销售、流通“特制防伪门票”的成本。

<全文完>

相关文章:

发表评论

您的电子邮箱地址不会被公开。