了解钱包
在与NEO或其他区块链交互前,用户必须在他们的本地机器上创建一个唯一的用户“钱包”,从而在网络上发起交易。 这与当前中心化的应用程序不同,中心化程序要求用户必须创建账户,且所创建的账户存储在中心化的服务器上并由服务提供商管理。 虽然钱包可以用来存取NEO,GAS和基于NEO的其他代币,但“钱包”这个名称实际上是取得不太恰当的。 钱包的核心功能应该是加密公钥/私钥对,用于对NEO网络上出现的数据库交易进行签名和验证。
首先让我们来想想看用户是如何在传统的中心化数据库上执行写操作的,并将这种操作与用户在NEO区块链上执行的写操作进行比较。 这应该有助于消除你认为代币是存储在钱包中,而不是存储在区块链上的这种误解。
中心化数据库
在客户端/服务器架构体系中,用户首先会使用身份凭证(如电子邮件/密码组合)来创建一个账户, 然后这些凭证会存储在服务数据库中。 当用户登录到服务系统时,他们会在本地收到一个会话令牌,持有该令牌可以对服务数据库执行写操作。
因此,如果这个中心化的应用程序是银行服务,那么“资金”就会存储在银行的服务器上,你可以通过向银行提供有效凭证来执行转账操作。
优点
-
如果用户丢失了凭证信息,服务提供商可以进行恢复
-
电子邮件/密码是一种标准的用户体验模式,几乎所有的互联网用户都习惯这种操作
缺点
-
将所有用户的凭证都存储在中心化服务器中,这非常容易遭受到黑客攻击
-
需要为每个服务生成一组单独的凭证
但最为重要的是,正如这句常出现在加密货币社区的话所说的:
“不是你的密钥,就不是你的代币”
传统客户端/服务器体系结构的本质意味着终端用户对服务器端数据库中存储的数据几乎没有什么控制权。 虽然在金融应用程序中这点尤为突出,但对于一般的用户数据而言也是一样的。
NEO 区块链
对此我们来比较下用户是如何在NEO区块链上执行写操作的。用户首先会生成公钥/私钥对。所生成的密钥对会存储在用户的本地机器上,比如专用硬件模块或客户端的其他位置。远程服务器永远不可能获取到这些密钥对信息。当用户想要在NEO区块链(数据库)上执行写操作时,他们会在本地生成交易用于执行相关操作。例如,用户可能想给朋友转账1 NEO。然后,他们使用自己的加密签名对该交易进行签名,签名是通过公钥对生成的。
之后会对该交易进行验证,验证通过后向网络进行广播并最终完成写操作。我们可以看到,由于加密签名只能由用户自己生成,因此没有其他实体可以在没有显式授权的情况下,代表用户对远程数据库执行写操作。
### 优点
-
对黑客而言没有可攻击的中心目标。这免去了服务提供商的许多责任
-
可以在各种服务提供商之间共享用户的公开身份
-
你的密钥,就是你的代币
缺点
-
如果用户丢了凭证,就不可恢复
-
对于没有使用过此类系统的用户而言,这是一种新的用户体验模式
总而言之,对钱包更准确地描述应该是利用公钥/私钥对在分布式数据库(区块链)上执行写操作。与典型的客户端/服务器认证体系结构相比,它具有优点也有缺点,但整体上而言,我们相信该系统提供的安全性和用户自主权可以给用户带来更强大的用户体验。
下一节,我们会了解一些NEO密钥架构设计的相关细节。