{"content":{"title":"托管钱包VS非托管钱包","body":"## 钱包是什么\r\n\r\n钱包，就是交易的出入口\r\n\r\n可以类比银行卡，有一个银行卡号和银行卡密码，别人知道你的银行卡密码就可以向你转账，你拥有密码就可以支付。在web3里面，银行卡类比成公钥，支付密码类比成私钥。每个钱包创建的时候会生成一个公钥一个私钥，私钥只有你自己拥有。交易都需要通过私钥签名认证。\r\n\r\n但是实际上，钱包并不含有ether或者其他token，代币都是存在链上的，钱包只是一个包含私钥公钥的字符串。**用来证明你拥有这些资产。**\r\n\r\n在web3的世界，钱包不仅是一个储存资产的地方，钱包更像是一个地址（本质上也是一个地址），大家可以类比成web2的IP。用户通过连接钱包来访问网站\r\n\r\n## 解释、二者区别\r\n\r\n### 托管钱包\r\n\r\n1. 定义：用户不拥有自己的私钥，私钥掌握在第三方交易所或者平台上。一般通过邮箱验证等方式进行交易，比较像web2的交易方式\r\n2. 优点：\r\n    1. 由于使用的是中心化平台的服务，所以遇到问题的时候可以享受技术支持\r\n    2. 私钥由第三方保护，因为托管在第三方服务器上\r\n    3. 在平台的操作相对来说安全\r\n3. 缺点\r\n    1. 最重要的一点是，您不持有私钥，本质上您并不“拥有”钱包的资产\r\n    2. 其次，由于存储在第三方服务器上，所以有可能遭遇数据泄露或者外部黑客攻击；不过这样取决于平台的安全性。再者说，其实所有的服务器都是有受攻击的可能的。把资产存在银行里，银行甚至可能倒闭。这也就是去中心化账本和去中心化钱包的可贵之处，托管钱包有点违背了去中心化的精神（去中心化程度不高）\r\n    3. 必须联网才能使用\r\n\r\n### 非托管钱包\r\n\r\n1. 定义：用户拥有自己的私钥，所有交易都要经过自己的私钥签名，也就是说只有自己能访问自己的资金\r\n2. 优点：\r\n    1. 如上所述，只有自己掌握私钥，拥有了资金的完全掌控权\r\n    2. 部分钱包是支持不联网使用的\r\n3. 缺点：\r\n    1. 托管钱包的交互更像传统web2的交互，不需要通过签名等方式，但是非托管钱包的交互需要涉及签名等，如有不慎可能会丢失钱包内的所有资金\r\n    2. 如果丢失密钥，也就是等于丢失了资金，所以**自己一定要保管好私钥**\r\n\r\n## 托管钱包对于Dapp的必要性\r\n\r\n大部分项目都是直接用非托管钱包，基本只有中心化交易所用到了托管钱包。\r\n\r\n今天想了很久也找了很多资料，在想为什么要引入托管钱包，对平台方有什么好处呢。保存用户的私钥如果服务器被攻击导致私钥泄露或者资金丢失，平台方要付很大的责任。\r\n\r\n1. 没有什么资料能说明这一点。所以类比web2的逻辑的话，只能从平台方本身的资金流去解释，托管钱包能让平台方有足够多的资金去做投资等等。比如最近的FTX事件，第二大交易所几天内宣布破产，就是因为挪用用户资金，有兴趣大家自行查阅。\r\n2. 平台形式应该也有一部分因素。交易所一般是有APP的，但是大部分web3项目基本是网页端，在网页端用钱包连接有天然的优势。网页版一般在PC端，可以用浏览器钱包连接；APP一般在移动端，要唤起第三方钱包，相对来说会麻烦一些。\r\n\r\n## 总结\r\n\r\n| 类型 | 托管钱包 | 非托管钱包 |\r\n| --- | --- | --- |\r\n| 私钥持有人 | 私钥由第三方持有 | 私钥由个人持有 |\r\n| 是否需要联网使用 | 始终需要互联网才能运行 | 可以在线和离线运行 |\r\n| 钱包控制方 | 不让所有者完全控制他们的资产 | 让用户完全控制他们自己的资产 |\r\n| 钱包安全保管方 | 第三方负责保护钱包 | 个人全权负责保护钱包 |\r\n| 去中心化程度 | 存储平台通常是中心化的 | 通常去中心化 |"},"author":{"user":"https://learnblockchain.cn/people/12669","address":null},"history":null,"timestamp":1668417713,"version":1}