区块链钱包分类及BIP协议

这篇具有很好参考价值的文章主要介绍了区块链钱包分类及BIP协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上一次我们介绍了区块链的背景,区块链、以太坊、智能合约到底是什么,但我们并不止步于此,为了实现最终的目标:“完成区块链钱包的设计并顺利毕业”,我们还要来了解一下有关钱包的相关理论。

什么是区块链钱包

钱包其实就是一个用来管理私钥的工具,用来存储数字资产。我再直白一点,大家都知道现在的比特币单价很高,近20w一个,假设说,你拥有20个比特币,那么20个比特币应该存储在哪里呢?如果你想买一个新手机,该怎么用比特币进行交易转账呢?其实也很简单,想在银行里存钱,那就需要先去开个户,数字货币也一样,想在钱包里存钱,那就先去开个户吧。在市面上的钱包里,都支持创建一个新账户的操作,这样,我们就可以先拥有一个账户了,跟这个账户一同创建的,还有一个私钥和账户地址,私钥相当于账户的密码,地址相当于银行卡号。
总结一下,数字钱包用来存储数字资产,在区块链中,我们的数字资产都会对应到一个账户地址上, 只有拥有账户私钥才可以对资产进行消费,即用私钥对消费交易进行签名。私钥、公钥与地址之间的关系如下:
bip协议,区块链,区块链
私钥单向生产公钥,公钥单向生产地址,均不能反向推导,也就是说,如果你丢失了私钥,那么账户里的一切,你都丢失了,包括数字加密资产!

区块链钱包分类

我先pou一张图,这张图并没有完全包含所有钱包的种类,大家看到其他的可以继续补充哈
bip协议,区块链,区块链
目前的钱包若按照私钥存储方式,可分为中心化钱包和去中心化钱包。中心化钱包又称托管钱包,是指用户对第三方服务器高度信任,不必自己保存私钥,私钥由第三方服务器进行保管,优势在于用户使用简洁,不必保存钱包信息,不必担心忘记私钥或者助记词,但劣势也正因此产生——第三方可携款潜逃,服务器也会因为携有大量数字资产而成为被攻击的对象,从而造成单点失效问题。相对于中心化钱包,在去中心化钱包中,账号秘钥的管理,交易的签名,都是在客户端完成,即私钥相关的信息都是在用户手中,钱包的开发者接触不到私钥信息。

按照钱包是否联网可分为冷钱包(也称为离线钱包)和热钱包。冷钱包是指不联网使用的钱包,根据实现方式的不同,又可分为硬件钱包、纸钱包和脑钱包等。硬件钱包用来生成和保存密钥,设备本身不会泄密,但使用流程繁琐且价格昂贵。纸钱包是指用户将钱包信息记到纸上,然后将其锁在保险柜中,而脑钱包则更为直接,用户直接背下钱包的信息即可。虽然冷钱包相对于热钱包更安全,但是冷钱包也不是绝对安全,可能会遇到硬件损坏,钱包丢失等情况,便携性也较差,成本较高。为解决硬件钱包便携性问题,Bamert等提出 BlueWallet,通过使用蓝牙与创建无签名交易的实体进行通信,构建一个具有低功耗的设备。热钱包相对于冷钱包使用起来更方便,既可在PC上使用,也可在手机等移动终端使用,还可对钱包内资产随时进行操作,因此目前83.87%的钱包都为热钱包模式。

第三种分类是全节点全包和轻节点钱包,意思就是区块链中的区块,是一整个区块前部保存还是保存部分。Bitcoin Core钱包是比特币的官方钱包,实现的就是全节点的比特币客户端,组成了整个比特币网络的支架。拥有极高的安全性、隐私性、稳定性,但数据量过大,速度慢。为解决上述问题,轻节点SPV 钱包将钱包的部分功能剥离出来,只是一个支付验证,而对于完整的交易验证由核心节点完成,钱包在不下载区块链的情况下验证交易是否是区块的一部分,具有较快的速度。

BIP32

我们上面介绍的是,每创建一个账户都要有一个密码私钥,如果我们想拥有大于1个的钱包,就要拥有大于1个的密钥,每一个密钥都要好好的保存记录下来(我们在现实生活中还不能随意的保存备份,对私钥的安全性存储是有一定要求的,我们以后再讲),这样真的太麻烦了,万一有一个密码被我们忘记了,里面的资产也随风离去了。因此,出现了BIP32协议,它的核心就是,只备份一个种子(是一串数字),可以推导出来所有的密钥,也就是只需要记住一个种子,我们不必再记住所有的密码了。
bip协议,区块链,区块链
——————下面是原理,不需要很深入的同学,直接到BIP39——————
这一部分就有点专业了,但也不是很难,让我们仔细来瞧瞧BIP32密钥的生成过程吧
首先,我们需要一个根种子,这就是我们需要记录下来的种子,一般是个随机数,128位,256位,512位的都有(随机数能不能做到真正的随机也很关键,安全性高的硬件钱包可以通过一些硬件设备产生某时刻的物理世界反映到二进制世界的随机数,当然,硬件钱包的价格也比较高),有了随机数种子之后,经过HMAC-SHA512算法,可以得到主私钥(m)和主链编码,主私钥再通过椭圆曲线生成主公钥。而这一步生成的秘钥(私钥或公钥)、主链编码再加上一个索引号,将作为HMAC-SHA512算法的再次输入,将继续衍生出下一层的私钥及链编码,上图!
bip协议,区块链,区块链
现在,大家可以增加索引,水平的扩展,就像上一张图的子密钥1,子密钥2,子密钥3……一直到子密钥n,水平的增加,也可以向下一层深度的扩展,就像是子密钥1,孙密钥1,重孙密钥1……等等,我们理论上可以获得无限的私钥,创建无限个账户。需要说明的是,以上的推导过程是单向的,相同的输入总是有相同的输出,子密钥不能推导出同层级的兄弟密钥,也不能推出父密钥。如果没有子链编码也不能推导出孙密钥。

BIP39

BIP32让我们只需保存一个32字节的随机数种子(通常16进制数表示)即等价保存一堆密钥,这样做确实方便一些,但种子没有规律,不方便用户使用.想一想,要你背下来一串没有规律的数字,太痛苦了!!!为了方便我们记忆种子,BIP39横空出世,它是使用助记词的方式生成种子的,这样用户只需要记住12(或24)个单词以及单词的序列,就可以恢复种子,然后再根据BIP32协议创建钱包即可。
——————下面是原理,不需要很深入的同学,直接到BIP44——————
使用助记词作为种子其实包含2个部分:助记词生成以及助记词推导出随机种子,下面分析下这个过程。
首先介绍助记词生成过程。生成一个128位随机数,再加上对随机数做的校验4位,得到132位的一个数,然后按每11位做切分,这样就有了12份11比特的二进制数,然后用每一份二进制查BIP39定义的单词表,这样就得到12个助记词。
bip协议,区块链,区块链
其次介绍助记词推导出种子的过程。这个过程使用密钥拉伸(Key stretching)函数,用来增强弱密钥的安全性,PBKDF2是常用的密钥拉伸算法中的一种。PBKDF2基本原理是通过一个为随机函数(例如HMAC函数),把助记词明文和盐值作为输入参数,盐可以提高暴力破解的难度,重复进行2048次运算最终产生生成一个更长的(512 位)密钥种子,再通过这个512位的种子根据BIP32的介绍,构建钱包并派生出它的密钥。
推导种子的过程由常量字符串“mnemonic”(助记词)及一个可选的密码(盐值)组成,使用不同的密码或者拉伸函数,在使用同一个助记词的情况下会产生不同的种子。密码可以作为一个额外的安全因子来保护种子,即使助记词的备份被窃取,也可以保证钱包的安全,不过另外一方面,如果我们忘记密码,那么将无法恢复我们的数字资产。
bip协议,区块链,区块链

BIP44

BIP44呢,是一种路径表示的方法,在BIP32中,我们已经可以生成很多个密钥,而BIP44的路径,可以清楚的表示密钥在结构中的位置。个人感觉不是很重要
BIP44从主私钥开始衍生,路径的首个字符以m为首,从主公钥开始衍生则以M为首。BIP44对路径约定了一个规范的含义,定义了5个层级结构:
bip协议,区块链,区块链
第一层是purpose层。该层主要是用来声明钱包使用的是BIP44规范,该层的值通常被定义为44。
第二层是coin type层。该层表示币种,0代表比特币,1代表比特币测试链,2表示莱特币,60代表以太坊。
第三层是account层。该层主要是用来设置账户索引,从0开始。
第四层是change层。该层的值主要为0或1,常量0用于外部(收款地址),常量1用于内部(找零地址)。外部用于钱包外可见的地址,例如,用于接收付款。内部地址钱包外部不可见的地址,用于返回交易变更。从这一层级开始,基本用的是普通衍生,从而输出扩展公钥。
第五层是address_index层。该层代表了地址索引,从0开始,代表生成第几个地址,官方建议,每个account下的address_index不要超过20。文章来源地址https://www.toymoban.com/news/detail-707538.html

到了这里,关于区块链钱包分类及BIP协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Golang区块链钱包_go语言钱包

    Golang区块链钱包的特点 Golang区块链钱包具有以下几个特点: 1. 高性能 Golang是一种编译型语言,具有快速的执行速度和较低的内存消耗。这使得Golang区块链钱包在处理大规模交易数据时表现出色,能够满足高性能的需求。 2. 并发支持 Golang内置了轻量级线程——goroutine,以及

    2024年04月15日
    浏览(59)
  • Golang区块链钱包

    随着区块链技术的发展,数字货币的应用逐渐普及。而区块链钱包作为数字货币的一种必备工具,也变得越来越重要。Golang作为一种简单、高效的编程语言,被广泛运用于区块链领域。本文将介绍Golang区块链钱包的基本概念、特点和使用方法,帮助读者了解和使用这一工具。

    2024年02月04日
    浏览(39)
  • 区块链钱包安全汇总

    一:钱包发生过那些安全事件? 1、“私钥丢失” 部分用户使用钱包时,会习惯性将私钥截图保存在手机,但当手机出现了丢失或者损坏,助记词可能永远无法复原;部分用户有一定安全意识,会将助记词手写一份,但当该份助记词丢失时,助记词也可能无法复原。 2、“伪装

    2024年01月18日
    浏览(36)
  • 区块链钱包-android篇

    ​ 1:使用Protocol Buffers  首先根目录gradle中添加依赖: classpath \\\"com.google.protobuf:protobuf-gradle-plugin:0.8.3\\\" 然后项目文件中添加plugin,添加依赖包: apply plugin: \\\'com.google.protobuf\\\' protobuf { protoc { artifact = \\\'com.google.protobuf:protoc:3.6.1\\\' } plugins { javalite { artifact = \\\"com.google.protobuf:protoc-gen-jav

    2024年03月09日
    浏览(50)
  • 【区块链】虚拟货币钱包

    目前区块链中虚拟货币的钱包种类和应用多样,按照私钥存储方式的不同,可以将钱包分为『 热钱包 』和『 冷钱包 』两大类型。 热钱包又称在线钱包,是指互联网能够访问用户私钥的钱包,一般通过电脑(交易平台)或者手机 APP 进行操作。 『 热钱包 』 优点 实用性高(

    2024年02月16日
    浏览(47)
  • 区块链钱包开发(Android篇)

    On-chain 给一个钱包地址发送数字货币, 这笔交易在全网广播、被确认、被打包进区块。这是发生在链上的,被称为on-chain交易。on-chain钱包需要自己保管私钥。 Off-chain 相对于on-chain交易是off-chain交易。通常,通过交易所进行的交易是off-chain的,本人并没有私钥。私钥在交易所,

    2024年04月26日
    浏览(38)
  • 区块链钱包软件开发python

    开发区块链钱包需要涉及到很多方面,包括前端、后端和加密算法等。以下是一个简单的示例代码,展示了如何使用Python开发一个简单的区块链钱包。 ```python import hashlib import binascii import random class Block:     def __init__(self, index, timestamp, data, previous_hash):         self.index = ind

    2024年03月24日
    浏览(41)
  • 交易的流动——从钱包到区块链网络

    是否经常会好奇我在钱包上生成的交易是如何一步步流入区块链网络,并最终成为区块的一部分呢? 要想弄清这个问题,首先要搞清楚钱包的工作原理,以主流钱包MetaMask为例,在我们添加一个新的网络时,会需要填写以下信息。MetaMask在会为预置的网络填好这些信息,使用

    2024年02月15日
    浏览(40)
  • 区块链系统探索之路:钱包地址的实现

    在区块链,特别是比特币网络,一个非常关键的组件是钱包。它主要用来实现“价值转移”,既然要转移,那就必须要有转移人和接收人,在转移过程中,我们必须确保转移的发送必须由资产的所有者发起,这就是私钥的作用,一笔交易要生效必须由资产的所有人使用它的私钥

    2024年02月07日
    浏览(41)
  • flutter创建/导入区块链钱包,获取余额

    作为区块链行业小白刚接触区块链钱包几天,来开发钱包还是需要付出很多努力的.下面记录一下flutter框架下创建/导入区块链钱包,并获取余额 一、创建钱包: 钱包的创建分为三个步骤: 1、生成助记词 (1)、创建助记词: 需要用到bip39插件 (2)、创建方式: 2、助记词生成私钥 (1)、生

    2024年02月06日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包