今天给大家聊到了区块链公私钥管理,以及区块链公私密钥相关的内容,在此希望可以让网友有所了解,最后记得收藏本站。
2018-07-13小白学区块链——私钥·公钥
在生活中移动支付和无现金支付已经相对普及了,它方便了我们区块链公私钥管理的日常生活,也降低了我们随身携带现金的风险。无论是移动端支付还是银行卡类支付,我们都要绑定或输入银行卡号和支付密码才能支付,那么在比特币的交易中是如何达成支付的呢?
1.私钥
在比特币网络中的私钥可以对应我们现实世界银行卡号加支付密码,也就是区块链公私钥管理: 私钥=银行卡号+取款密码。 私钥是比特币网络中根据密码学上的一种伪随机算法生成一种不可预算的一串字符,由于生成的私钥是256位数的二进制密码。因为私钥太长,识别率不高。所以系统又对于原始的随机数进行一定的转换,转换为识别率高的字符串形式的私钥,比如:3KEHtUDa35z3FPrtuX2QbbwGfNP5zhd7yyr2SC1j236sLBxDgse也可以把私钥转换其他形式,比如以单词的形式(12或者24个单词)的助记词。还有一种是经过加密的私钥Keystore,是以文件形式存在的,导出时需要设置密码,导入也一样的需要输入密码,即使别人知道了你的Keystore,没有你设的密码也是得不到你的私钥的。
2.公钥
公钥也就是我们通常所说的转账地址。公钥是由私钥生成的,通过椭圆曲线算法生成,一个私钥经过椭圆曲线变换之后能够得到公钥,公钥也是一组转换后的字符串,比如:1QDXYsotWo2Byz8NxFaVBArDBYhstFTrE5。公钥是用来验证私钥的签名,私钥和公钥是成对出现的,一个私钥签名的数据,只有对应的公钥才能对其进行验证,而地址也是从公钥生成的,这样就可以验证花费的交易是不是属于这个地址。简单理解也就是: 公钥=银行卡账号。
总结
1.是私钥生成公钥也是成对出现的,公钥可以生成对应的唯一地址,验证发送交易的地址是否和该公钥生成的地址一致
2.公钥验证私钥的签名,用来验证该交易是否使用了正确的私钥签名,这样就能确认了该地址发送的交易是否使用了对应的私钥。
区块链中的私钥和公钥
公开密钥(public key,简称公钥)、私有密钥(private key,简称私钥)是密码学里非对称加密算法的内容。顾名思义,公钥是可以公开的,而私钥则要进行安全保管。
私钥是由随机种子生成的,公钥是将私钥通过算法推导出来。 由于公钥太长,为了简便实用,就出现了“地址”,地址是公钥推导出来的。这些推导过程是单向不可逆的。也就是地址不能推出公钥,公钥不能推出私钥。
从中我们可以看出,公钥与私钥是成对存在的。它们的用处用16个字来概括: 公钥加密,私钥解密;私钥签名,公钥验签。
公钥加密,私钥解密。也就是用公钥加密原数据,只有对应的私钥才能解开原数据。这样能使得原数据在网络中传播不被窃取,保护隐私。
私钥签名,公钥验签。用私钥对原数据进行签名,只有对应的公钥才能验证签名串与原数据是匹配的。
可以用锁头,钥匙来比喻公钥,私钥。锁头用来锁定某物品,钥匙来解锁该物品。钥匙所有者是物品的所有者。事实上就是这样,公私钥对奠定了区块链的账户体系及资产(Token等)的所有权,区块链的资产是锁定在公钥上的,私钥是用来解锁该资产然后使用。比如说我要转让资产给你,就是我用我的私钥签名了一笔我转让资产给你的交易(含资产,数量等等)提交到区块链网络里,节点会验证该签名,正确则从我的公钥上解锁资产锁定到你的公钥上。
我们看到了私钥的作用了吧,跟中心化记账系统(支付宝、微信支付等)的密码一样重要,拥有私钥就拥有了资产所有权,所以我们千万要保管好私钥,不能泄露。
区块链私钥、公钥和地址是什么关系?
区块链私钥,公钥和地址三者之间区块链公私钥管理的关系是私钥生成公钥,公钥转化成为地址。所以私钥是最重要区块链公私钥管理的。这三者之间是不可逆区块链公私钥管理的,地址不能生成公钥,公钥也不能转化成为私钥。
首先先跟大家说明一下什么是私钥,私钥就是钱包根据密码学原理生成的一串字符,创建钱包时通过各种算法生成的随机数。私钥的作用相当于在区块链上的一个身份,区块链公私钥管理你在区块链上的资半存储在你身份之中,也就是存储在你私钥身份下面的地址里,所以谁掌握了私钥,就掌握了在该身份下地址里的数字资产。私钥相当于银行卡密码,一定要离线保管好,防止被盗。
其次是公钥,公钥相当于就是区块链记账的一个交易记录,交易发生后记录入区块链中,是公开的,并且不可篡改,因为在区块链中,每发生一笔交易都要广播到区块中,大家进行记账。例如张三给王五买牛,现实生活中只是他们两人的事,牛的成交价格只要他们达成协议就可以成交了,跟全村人没有关系,他俩的交易记录由于没有公开所以不叫公钥。但在区块链中,张三给王五买牛的价格除了他们俩人达成协议以外,全村人都要进行记账,全村人记完账交易才完成,那么全村人所记的记录就叫公钥。
再次是区块链地址,它通常是由26至35个字符的字母和数字字符串组成,区块链地址主要来源于公钥,区块链地址相当于区块链公私钥管理我们平时使用的银行卡卡号,是可以公开给任何人的,没有安全限制,主要作用就是用于接收和发送区块链上的数字资产。
区块链技术现在处于初期发展阶段,但因其具有去中心化、安全性、不可篡改等特性,今后的生活工作中可能会产生杀手级别的落地应用而备受各国重视。本文仅供参考,欢迎留言讨论。
区块链的核心技术是什么?
简单来说区块链公私钥管理,区块链是一个提供了拜占庭容错、并保证了最终一致性的分布式数据库;从数据结构上看区块链公私钥管理,它是基于时间序列的链式数据块结构;从节点拓扑上看,它所有的节点互为冗余备份;从操作上看,它提供了基于密码学的公私钥管理体系来管理账户。
或许以上概念过于抽象,我来举个例子,你就好理解了。
你可以想象有 100 台计算机分布在世界各地,这 100 台机器之间的网络是广域网,并且,这 100 台机器的拥有者互相不信任。
那么,我们采用什么样的算法(共识机制)才能够为它提供一个可信任的环境,并且使得:
节点之间的数据交换过程不可篡改,并且已生成的历史记录不可被篡改;
每个节点的数据会同步到最新数据,并且会验证最新数据的有效性;
基于少数服从多数的原则,整体节点维护的数据可以客观反映交换历史。
区块链就是为了解决上述问题而产生的技术方案。
二、区块链的核心技术组成
无论是公链还是联盟链,至少需要四个模块组成:P2P 网络协议、分布式一致性算法(共识机制)、加密签名算法、账户与存储模型。
1、P2P 网络协议
P2P 网络协议是所有区块链的最底层模块,负责交易数据的网络传输和广播、节点发现和维护。
通常我们所用的都是比特币 P2P 网络协议模块,它遵循一定的交互原则。比如:初次连接到其他节点会被要求按照握手协议来确认状态,在握手之后开始请求 Peer 节点的地址数据以及区块数据。
这套 P2P 交互协议也具有自己的指令集合,指令体现在在消息头(Message Header) 的 命令(command)域中,这些命令为上层提供了节点发现、节点获取、区块头获取、区块获取等功能,这些功能都是非常底层、非常基础的功能。如果你想要深入了解,可以参考比特币开发者指南中的 Peer Discovery 的章节。
2、分布式一致性算法
在经典分布式计算领域,我们有 Raft 和 Paxos 算法家族代表的非拜占庭容错算法,以及具有拜占庭容错特性的 PBFT 共识算法。
如果从技术演化的角度来看,我们可以得出一个图,其中,区块链技术把原来的分布式算法进行了经济学上的拓展。
在图中我们可以看到,计算机应用在最开始多为单点应用,高可用方便采用的是冷灾备,后来发展到异地多活,这些异地多活可能采用的是负载均衡和路由技术,随着分布式系统技术的发展,我们过渡到了 Paxos 和 Raft 为主的分布式系统。
而在区块链领域,多采用 PoW 工作量证明算法、PoS 权益证明算法,以及 DPoS 代理权益证明算法,以上三种是业界主流的共识算法,这些算法与经典分布式一致性算法不同的是,它们融入了经济学博弈的概念,下面我分别简单介绍这三种共识算法。
PoW: 通常是指在给定的约束下,求解一个特定难度的数学问题,谁解的速度快,谁就能获得记账权(出块)权利。这个求解过程往往会转换成计算问题,所以在比拼速度的情况下,也就变成了谁的计算方法更优,以及谁的设备性能更好。
PoS: 这是一种股权证明机制,它的基本概念是你产生区块的难度应该与你在网络里所占的股权(所有权占比)成比例,它实现的核心思路是:使用你所锁定代币的币龄(CoinAge)以及一个小的工作量证明,去计算一个目标值,当满足目标值时,你将可能获取记账权。
DPoS: 简单来理解就是将 PoS 共识算法中的记账者转换为指定节点数组成的小圈子,而不是所有人都可以参与记账。这个圈子可能是 21 个节点,也有可能是 101 个节点,这一点取决于设计,只有这个圈子中的节点才能获得记账权。这将会极大地提高系统的吞吐量,因为更少的节点也就意味着网络和节点的可控。
3、加密签名算法
在区块链领域,应用得最多的是哈希算法。哈希算法具有抗碰撞性、原像不可逆、难题友好性等特征。
其中,难题友好性正是众多 PoW 币种赖以存在的基础,在比特币中,SHA256 算法被用作工作量证明的计算方法,也就是我们所说的挖矿算法。
而在莱特币身上,我们也会看到 Scrypt 算法,该算法与 SHA256 不同的是,需要大内存支持。而在其他一些币种身上,我们也能看到基于 SHA3 算法的挖矿算法。以太坊使用了 Dagger-Hashimoto 算法的改良版本,并命名为 Ethash,这是一个 IO 难解性的算法。
当然,除了挖矿算法,我们还会使用到 RIPEMD160 算法,主要用于生成地址,众多的比特币衍生代码中,绝大部分都采用了比特币的地址设计。
除了地址,我们还会使用到最核心的,也是区块链 Token 系统的基石:公私钥密码算法。
在比特币大类的代码中,基本上使用的都是 ECDSA。ECDSA 是 ECC 与 DSA 的结合,整个签名过程与 DSA 类似,所不一样的是签名中采取的算法为 ECC(椭圆曲线函数)。
从技术上看,我们先从生成私钥开始,其次从私钥生成公钥,最后从公钥生成地址,以上每一步都是不可逆过程,也就是说无法从地址推导出公钥,从公钥推导到私钥。
4、账户与交易模型
从一开始的定义我们知道,仅从技术角度可以认为区块链是一种分布式数据库,那么,多数区块链到底使用了什么类型的数据库呢区块链公私钥管理?
我在设计元界区块链时,参考了多种数据库,有 NoSQL 的 BerkelyDB、LevelDB,也有一些币种采用基于 SQL 的 SQLite。这些作为底层的存储设施,多以轻量级嵌入式数据库为主,由于并不涉及区块链的账本特性,这些存储技术与其他场合下的使用并没有什么不同。
区块链的账本特性,通常分为 UTXO 结构以及基于 Accout-Balance 结构的账本结构,我们也称为账本模型。UTXO 是“unspent transaction input/output”的缩写,翻译过来就是指“未花费的交易输入输出”。
这个区块链中 Token 转移的一种记账模式,每次转移均以输入输出的形式出现;而在 Balance 结构中,是没有这个模式的。
区块链钱包的私钥如何备份?有哪几种方法?
当你在创建一个区块链钱包的时候,创建成功之后,系统会自动生成钱包地址、公钥、私钥,然而这些需要你自己去备份,钱包不会帮你保存,那么大家应该如何备份这些信息呢?又有几种方法?
第一,具备双倍安全性的钱包,并把私钥导入到Armory客户端(1)进行冷储存(2) ,用户可以在客户端中快速从冷储存中找到所需私钥,还有一个优点就是方便离线交易转账,不必每次都重新导入私钥。同时电脑的操作系统需要设置密码。
第二,可以把钱包的私钥和公钥制作成电子版备份,同步到云端。 你可以把它们复制粘贴为一个文档,标记好名字,文档可以以拼音的形式命名,可以乱码,但是要额外的保存在另一个文档里注明该文件是干什么用的。但是这样做的结果就是可能会忘记储存的文件是哪个,因此你需要在手机备注好信息,同时需要把复习私钥这件事安排为按时间重复的(如2个月复习一次)日程事件,时间到了手机或电脑提醒复习。而且不仅仅是回忆几遍就可以了,是要到备份上打开那个生成私钥的钱包中,重新登录一遍,看看私钥(和地址)是否正确。
第三,用户可以在文档上写下钱包的私钥和公钥以及地址, 命名的话,你自己看得懂就好,接着就把后缀名为jpg图片格式,使其看起来就像一个坏掉的打不开的图片,或者更甚,我们可以把这打不开的假图片压缩为zip格式并伪装为一个真正的图片,需要的时候再还原出来。具体更改方法可以上百度查找。
第四,以上三种方法都是电子版的备份方法,还有一种简单粗暴的方法就是在 日记本手抄私钥公钥, 使其看起来不那么刻意、唐突,不过大家需要注意的是,抄写的时候记得要写得字体清晰、工整,避免字迹潦草而导致输入私钥错误。同时,保存的地方也是需要注意的,可以藏在家里隐私的地方(有条件可以存银行保险柜)。
备份区块链钱包私钥的方法有以上4种方法,当然如果你有更好的备份方法,也可以分享出来,不必按部就班地使用上述备份方法的哦。最后,给一个备份建议:可以结合上述2到4种方法来备份私钥,避免遗忘。
注释:
(1)Armory客户端:Armory 是一个功能齐全的比特币客户端,提供了许多其他客户端软件所没有的创新功能!管理多个钱包(确定性和仅观看)、打印永久工作的纸张备份、导入或删除私钥等。
(2)冷储存:即比特币钱包的冷储存(Cold storage)。是指将钱包进行离线保存的一种方法。
区块链公私钥管理的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于区块链公私密钥、区块链公私钥管理的信息别忘了在本站进行查找喔。
标签: #区块链公私钥管理
评论列表