Grin使用方法及安全风险
Bitcoin等现有的数字货币转账,只需要支付者获知收款人地址,然后转账即可,不需要收款方做任何事情。但是Grin不一样,它没有交易地址[1]。
什么?没有交易地址?是的,那怎么转账?
使用Grin需要观念上稍微转变一下,转账时,支付者、收款方是通过互传交易文件的形式进行,而不是通过交易地址,而且双方都需要操作。不需要同时在线,但都需要操作。
Grin目前只有命令行工具,还没有图形界面,下面以命令行工具的方式示范交易过程。不过即使之后出了图形界面工具,交易过程也仍然是差不多的。
发送文件
转账需要用grin wallet进行以下几个步骤[2]:
- 支付者发起交易,创建交易文件
比如支付10.25个币,需要运行命令
grin wallet send -m file -d my_grin_transaction.tx 10.25
创建交易文件(transaction file) my_grin_transaction.tx,并发送给收款方
- 收款方收款
获取支付者发来的交易文件后,运行命令
grin wallet receive -i my_grin_transaction.tx
生成收款文件(response file) my_grin_transaction.tx.response,发送回支付者
- 支付者确认交易
获取收款方发来的收款文件后,运行命令
grin wallet finalize -i my_grin_transaction.tx.response
此时 grin 节点将交易发送到grin网络,等待几分钟,交易上链,交易完成。运行命令grin wallet info
可以看到当前余额。
交易过程需要发送2次文件,可以通过任何途径传输——U盘拷贝、微信/邮件。但是如果transaction file被中间人拦截了[3],或者他假冒收款人获取transaction file,就可能导致钱转到别人账上了。
HTTP
还有另外一种交易方式,收款人通过命令grin wallet listen
使钱包监听通过网络传输过来的transaction file。支付者只需要知道收款人grin钱包的IP地址,并执行一次命令[4]:
grin wallet send -d http://ip-address:3415
交易的所有过程全部自动完成:
- 收款方不再需要手动接收transaction file、生成response file、发送给支付者。
- 付款方不再需要手动生成transaction file、发送给收款人、等待response file、确认交易。
这确实带来了很大方便,但是收款人需要暴露自己的公网IP地址,这有损grin意图达到的匿名性。而且,大部分人是没有固定的公网IP地址的。
但问题并不严重
上面说了它存在的2个问题,但Grin的匿名性确实很好,可以完全隐藏交易地址、交易记录、账户余额。上面所陈述的2个问题,很多时候也不会有问题:
- 关于第一个问题,交易文件可以通过加密传输、数字签名进行保障
- 关于第二个问题,很多时候暴露自己的IP地址也是并没有关系的,只要达到隐藏交易的目的就行了
交易纠纷
由于Grin的匿名性,交易在区块链上是查不到的。交易完成后,只是支付者、收款方各自可以看到自己的余额变动了。如果收款方赖账,说自己没收到币,付款者完全没有办法证明自己的清白。
Monero通过payment ID解决这个问题,但据我所知Grin则并没有任何途径解决这个问题。