Author

Topic: 如何用短信收发比特现金BCH——CoinText的技术原理 (Read 114 times)

member
Activity: 224
Merit: 10
作者黄世亮

第0章 引言

在2012年我费了好大的功夫教我爸爸使用支付宝,然后直到2015年,他终于自己独立完成了在淘宝和京东购物。

教人使用数字货币并不是一件容易的事,如果数字货币是未来,那降低使用数字货币的难度就是一个不错的生意。最近有人搞了一个叫CoinText的项目,可以让人使用手机短信收发比特现金BCH。

第1章 使用手机短信接收和发送比特现金

试想这么一个场景,你能不能用一个早期的黑白屏诺基亚手机给别人发送比特现金BCH?不用互联网,只用2G网络,就是一个GSM信号。

真有人这么干了。

CoinText就能让你仅仅使用短信(GSM信号)收发比特现金。请注意,无论是发送还是接受,双方都只使用GSM短信就可以完成发币和收币。不需要使用3G、4G和互联网流量。

CoinText并不需要下载app,也不需要注册账号,不需要你保管私钥,甚至你可以连地址都不需要知道。非常简单。

对用户来说,CoinText就是一个手机号,你只需要往这个手机号发送特定信息的短信就可以完成充值、发送、查余额等操作。

目前CoinText还没有开通中国业务,开通了美国、加拿大、英国、。。。。等少数几个国家业务。比如在美国你可以往这个手机号 17077776185 发送特定短信来充值和发送比特现金。

如果你用的是美国手机,你编辑短信 “receive”发给这个号码“17077776185”,你的手机就会收到一条短信,提示BCH充值地址,然后你就可以用别的BCH钱包往这个地址充值,这时你就完成了你的CoinText充值。

你可以编辑短信“balance”发给这个号码“17077776185”来查询你的余额。

你可以编辑短信“Send 0.001BCH 16WsGp8GWfDBXJGgGyjv6xwuk95RFewRz ”,发给这个号码“17077776185”,即可实现往短信里这个比特现金地址发送0.001BCH。

你可以编辑短信“Send 0.001BCH 18188887296”,发给这个号码“17077776185”即可实现往后面这个手机号里发送0.001BCH。哪怕是后面这个手机号从来没有和CoinText发生过任何关系。(后面短信里那个手机号是我瞎骗的)

所以,如果你想教你奶奶使用比特现金,那就往她手机号里发一点BCH,然后她只要会发短信,就会用BCH了。

第2章 CoinText的原理

CoinText是一家公司,他们有服务器来运行比特现金节点钱包和辅助软件,他们还有一些电话号码,来接收用户发来的短信。

用户充值BCH到CoinText原理。

当用户给CoinText发送短信时,比如一个美国人的手机号是“18188887296”编辑短信“receive”发给这个号码“17077776185”,CoinText就会回一短信给他,告诉他充值地址。

这个过程发生了什么呢?CoinText会使用用户的手机号“18188887296”作为参数,加上CoinText服务器上的特定算法来生成一个BCH私钥和对应的地址。因为手机号肯定是唯一的,不可能重复的,所以逻辑上用手机号来生成一个私钥肯定是可行的。然后将该地址以短信的形式发回给这个美国人。

然后美国人就可以用别的BCH钱包往这个地址里充值BCH了。

但接下来,按CoinText的技术文档表述来说,CoinText会在给该用户生成私钥和地址后的一秒后就删除掉该私钥,并且还会删除掉用户的手机号。CoinText的服务器不会保留用户的手机号、也不会保留用户的私钥。
而用户的手机也不会保存私钥。

那用户怎么发送BCH呢?

如果这个美国人完成了充值,那下一步他编辑了短信“Send 0.001BCH16WsGp8GWfDBXJGgGyjv6xwuk95RFewRz ”,发给这个号码“17077776185” 想用CoinText发送0.001BCH到这个地址“16WsGp8GWfDBXJGgGyjv6xwuk95RFewRz ”,具体发生了什么呢?

用户使用CoinText发币原理。

在上面场景中,CoinText会利用这个用户发短信的手机号码,在服务器上调用对应的算法,复现出用户的私钥,然后使用该私钥签名构造交易,完成发送BCH。
CoinText复现出用户的私钥就是关键的技术。这肯定是CoinText的核心算法,这个算法可以使用用户的手机号来生成私钥,然后在删掉这个私钥和手机号后,如果CoinText的服务器再次收到该手机号,这个算法还能复现出这个私钥。

而如果用户编辑短信“Send 0.001BCH 1XXXXXXXX”,发给这个号码“17077776185”想通过CoinText给这个1XXXXXX手机号发送0.001BCH。具体发送的过程就是CoinText先利用1XXXXXX这个手机号生成(或复现)一个私钥,然后再用这个发币的用户的手机号复现私钥,然后用发币的用户的私钥构造交易并签名来将BCH发到1XXXXX这个手机号生成的私钥对应的地址。

用户查CoinText余额原理。

用户编辑短信“balance”发给这个号码“17077776185”来查余额。这个过程就是CoinText拿到用户的手机号后,通过算法复现出对应的地址,然后使用区块链浏览器进行查余额,反馈给用户的过程。

核心原理还是CoinText如何通过一个手机号来复现出该手机号曾经在这个平台上生成过的私钥和地址。

总结,CoinText的原理大致是这样的:CoinText可以利用手机号来生成一个私钥;然后CoinText在生成私钥后可以立刻删掉私钥和手机号;CoinText可以利用收到的手机号来复现已经生成过的私钥,并且用来构造交易和签名。

第3章 CoinText的安全性

从上述的技术分析可以看到,CoinText的核心技术是一套算法,这套算法可以使用手机号作为参数来生成私钥;并且还可以生成后立刻删掉私钥和对应的手机号;并且还可以使用手机号来复现私钥。

也就是说,CoinText只会短暂地保存私钥,用户自己不需要保存私钥,目前也没有看到CoinText会提供私钥备份功能,我这里说的私钥备份是指通用的BIP32或BIP39之类的私钥。CoinText提供的是用户手机号,和某种私钥信息(原文为Private Key Information),可以利用手机号或私钥信息,结合CoinText的算法来复现通用的私钥。

所以用户存在CoinText上的BCH的安全隐患在于:

1CoinText本身是否作恶。CoinText是有能力复现用户的私钥。

2CoinText的算法被黑客攻破,黑客可以穷举所有手机号结合CoinText的算法来偷币。

3用户的手机被黑客攻破,黑客可以利用用户的手机来给CoinText的号码发送短信来偷币。

这种安全性级别还可以吧,肯定输给自己保存私钥的钱包。那和Offchain钱包比呢?Offchain钱包是完全相信平台方,但CoinText好歹还把用户的私钥给删除了。用户手机被黑是在offchain钱包和CoinText的场景下都是一样危险的。看起来CoinText还比Offchain在业务逻辑上更安全一点呢。当然安全性主要还是取决于平台方,如果CoinText人品不好,业务逻辑更安全也是没有用的。

第4章 CoinText的应用场景

拿CoinText来收发币估计不是老韭菜的梦想吧,我们老韭菜都有自己的钱包。

CoinText可以给没有互联网的地方提供移动支付服务。

比如非洲,非洲人没有互联网,更别提4G网络了,但GSM信号还是比较普遍存在的,非洲人可以使用功能手机发送短信。就可以结合CoinText来完成移动支付了。这个相信力还是比较大的。

问题是BCH的波动性这么大,做支付是很困难的。这个CoinText是没办法解决的。

CoinText可以用来当推广教学,给好奇的人发一点币。等CoinText开通中国业务后,我就会给朋友去推广下。我会问没有BCH的朋友要100块钱,然后使用CoinText给他发100块钱的BCH,让他们拥有人生的第一笔BCH。

最后,如果CoinText推广的好,是可以拿来当小额存币用钱包吧。

第5章 结束语

今年给爷爷发压岁钱就用CoinText了。
Jump to: