zoukankan      html  css  js  c++  java
  • 区块链钱包开发

     区块链钱包技术原理

    区块链钱包实现的技术原理用一句话表示就是:钱包助记词生成了种子(Seed),种子(Seed)生成了私钥,私钥推导出公钥,公钥节选部分成了钱包地址。同时钱包提供了 keystore,它也是私钥加密后的文件,可以配合正常的密码使用,便捷了用户的钱包使用。

    区块链钱包并不是存储着大家的 cryptocurrency,它是在链上存储的,钱包主要存储的是私钥,它是用户对链上 cryptocurrency 的所有权凭证,这是一个不记名、不可挂失的凭证。从开发者的角度看,钱包的作用就是管理用户的私钥、通过私钥签名交易管理用户在区块链上的数字货币 Cryptocurrency
    Address + Private key = Cryptocurrency Wallet。 

    【区块链钱包基本类型和特点】

    区块链钱包本质特点划分

    区块链钱包和区块链一样,也可以分为去 onchain 钱包和 offchain 钱包,它们本质区别在于钱包私钥的存储方式和地点,私钥存储在用户手中,钱包商无获取途径,用户可以实时使用链上资产的称之为 onchain 钱包;而私钥存储在钱包商或者交易所手中,用户不能直接使用链上资产而需要通过第三方才能动的称之为 offchain 钱包。具体来讲: 

    1.onchain 钱包——全节点钱包

    私钥存储在用户手中,同时全节点钱包还保存了所有区块的数据,这样就可以在本地直接验证交易数据的有效性。大部分全节点钱包也具备挖矿功能,它自身也是区块链网络中的一个节点,如 BTC 的 Bitcoin
    Core;ETH 的 Mist,Parity 等。

    优点:

    一般属于官方为区块链设计的钱包,直接 onchain,不需要经过第三方发起交易,保证了基本安全性;由于前节点下载到本地,所以会更快验证交易信息。

    缺点:

    也因为下载了所有节点,所以占用很多硬盘空间(Mist 现在达到了 80G,笔者下了好几天也失败了;Bitcoin Core 据说是 150G);每次使用前需要同步数据;新手的使用体验不够好;不支持多种数字资产;往往都是电脑版本。

    2.onchain 钱包——SPV 轻钱包

    私钥存储在用户手中,但不保存所有区块的数据,只保存跟自己相关的数据,所以体积很小,可以运行在电脑,手机,网页等地方。如 Blockchain,imtoken 等

    优点:

    用户体验很好,尤其对于新手;很多轻钱包都支持多种数字资产;体积小,不占空间

    缺点:

    交易验证会稍微慢一点 

    3.offchain 钱包——通过中心服务器访问区块链网络的钱包

    该类型钱包的划分有一定争议,主要在于钱包数据传输的方式是可以扩展选择区块链节点还是必须通过钱包服务方的服务器,如果是后者就存在私钥存储在中心化服务器的风险,目前有很多区块链钱包体验都很不错,甚至很流畅,由于不开源无法排除该类风险。笔者推断比特购钱包应该属于此类。

    优点:

    同 SPV 轻钱包 用户体验会比 onchain 钱包好

    缺点

    存在安全风险(虽然真正致力做区块链的钱包企业哪怕即使通过自己的服务器将交易信息发送到节点上,即不会作恶,但是不能排除可能有作恶的人可以使用这种方式获得用户密钥);会比 onchain 钱包交易验证更慢,但是用户可能体会不到。 

    4.offchain 钱包——第三方托管钱包

    完全依赖运行这个钱包的公司和服务器,存在某个组织或者个体的钱包地址里,中心化交易所里的 Cryptocurrency 就是在 offchain 钱包(交易所)里保存的。

    优点:私钥忘记了可以找回;平台会把私钥安全做的不错;一般以企业作为信用背书;

    缺点:你的私钥控制在平台手上,平台“做坏事”你是无法阻止的,即作恶风险;平台关闭后你的币就没有了,即跑路风险 

     

    区块链钱包表现形式划分

    这种划分理解就比较简单了,电脑单机版的钱包,如前面提到的全节点钱包基本以此类为主;手机钱包和在线钱包以 SPV 轻钱包为主,前者以手机 APP 为主要表现形式,后者是网页插件,如 MyEtherWallet,
    MetaMask 等。硬件钱包是为了增强安全性,通过专门设计的安全硬件来离线保存储私钥,隔绝黑客入侵。

    所以,电脑钱包、手机钱包、在线钱包一般体现的都是实时可用性,它们更多被称之为热钱包,即实时在线,这样就存在被黑客攻击的风险;于是硬件钱包作为常年离线保存,更多称之为冷钱包,即离线保存。

    但是硬件钱包往往需要购置单独的硬件设备,所以在成本上会付出更多,同时使用的便利性也不如热钱包,因为实时在线可用。当然也有使用优盘来自己制作硬件钱包的,一方面制作过程比较繁琐,同时每次转账支出时会比较繁琐,适用于比较有基础的人士。 

    优点:

    安全,私钥不触网,黑客无法通网络攻击。另外设备都有 PIN 码保护,即使在物理环境中设备被盗走,也无法打开你的钱包;

    易备份,设备在初始化配置的时候会生成助记词(一般为 12 个或者 24 个单词),而助记词就是你私钥的备份,当你的设备丢失或者损坏以后,可以够买新的设备然后通过助记词来恢复私钥;

    多币种同时管理,现在绝大多数的硬件钱包,不仅仅可以管理比特币,像莱特币、以太坊、比特现金等数字货币都可以同时管理。

    缺点:

    不免费,你要为硬件付费;

    无法独立使用,硬件钱包都是隔绝网络的,所以需要配合联网的客户端(Chrome
    插件、桌面客户端、手机客户端等)来完成收币和发币。不过为了安全牺牲一些方便些也是值得的,毕竟一个比特币 8000 刀,丢半个都疼。 

    【区块链钱包实现技术原理】

  • 相关阅读:
    K2路由器刷机教程
    GitBook Editor使用教程
    source tree使用教程
    github与github网站push神器
    tgp助手开启逆战游戏无反应
    如何计算服务器指标参数
    排序--堆排序算法
    排序--希尔排序算法
    排序--直接插入排序算法
    排序--冒泡排序算法
  • 原文地址:https://www.cnblogs.com/peteremperor/p/14800980.html
Copyright © 2011-2022 走看看