一、比特币背后的技术1 - 椭圆曲线签名算法
本文使用 Zhihu On VSCode创作并发布
本文同步发表于个人blog
在传统的金融模型中,当人们需要在银行等金融机构中创建新的账户时,人们必须提供用于证明其身份的凭证(身份证,护照,etc)。然而,在比特币的新型隐私模型中,虽然每个账户之间的交易记录是公开的,但是账户拥有者的身份确不会被公开。为了防止比特币账户被冒用,比特币交易系统中使用了椭圆曲线签名的机制来确保账户操作者就是账户拥有者。
拥有这样的解析式的一类曲线被称作椭圆曲线:
[公式]
这样的曲线拥有这如下图所示的形状:
这样的曲线有两个非常重要的性质:
有了这两个性质,我们可以在椭圆曲线上定义“加法”和“乘法”这两种运算
假设我们有任意两点[公式]在椭圆曲线 [公式]上,我们可以将两点链接起来得到一条直线,这条直线与椭圆曲线的第三个交点 [公式]。这时候,我们将得到的点 [公式]关于 [公式]轴对称,得到点 [公式]。这样的一串操作可以被记录为 [公式]
如果我们把一次加法操作画在图上,那么[公式]的计算过程会是下面这样:
从上面的途中,我们可以发现椭圆曲线上的点乘是满足交换律的,因为点[公式]定义的直线与点 [公式]定义的直线是同一条。
一种特殊的情况是[公式]。这样的情况下,我们得到的直线会是椭圆曲线在[公式]点上的切线,也就是……
如果一个椭圆曲线上进行了[公式]次[公式]这样的加法操作,我们可以将其简写为 [公式]。例如:[公式]的计算过程可以用这样的几何方法表现出来:
上面这个网站提供了椭圆曲线加法和乘法的可视化
定义了这两种椭圆曲线上的运算以后,我们下面看看为了在计算机上更好的实现这个函数,我们都做了哪些改进。
为了在计算机上更准确的处理椭圆曲线,我们对椭圆曲线做了以下这些改进:
所以,一个椭圆曲线是由这些参数所决定的:
[公式]
这样的一条椭圆曲线拥有这样的代数表达式:
[公式]
说了那么多,人们到底是怎么用椭圆曲线进行身份验证的呢?
比特币所使用的椭圆函数签名协议是SECP256K1,这个签名协议中包括了一个椭圆函数[公式]和一个起始点 [公式]。现在,如果有一个人拥有一个数字[公式],他可以很快的用计算机算出在椭圆函数上的[公式]。然而,给定[公式],计算出[公式]的值却是几乎不可能的。
这样一个非对称的难度让身份验证变得十分简单,只要私钥[公式]的持有者不公开自己手中的私钥,其他人就几乎不可能通过私钥的生成结果[公式]逆向获得私钥[公式]。
假如Bob要使用椭圆签名函数来验证Alice的身份,在此之前,Bob已经通过公开渠道得知Alice的公钥(椭圆函数计算结果是[公式]),Alice也通过公开渠道知道Bob的公钥(Bob用自己的椭圆函数私钥[公式]计算出的结果[公式])。那么Alice要做的事情就是向Bob传输[公式]。因为[公式]实际上是[公式]的结果,我们也可以将传输的信息写作[公式]。
当Bob收到Alice发来的[公式]的结果后,他可以通过计算[公式]并与Alice发出的结果相比对进行验证。如果对面确实是Alice在对账户进行操作,那么应该有[公式]。证明如下:
[公式]
通过这样的方式,就可以在双方不透露自己私钥的情况下完成身份认证了。
在比特币的交易系统中,每个用户都会有一个随机生成的私钥,并且用SECP256K1算法计算出自己私钥所对应的公钥,在下面这张描述比特币交易流程的图中,最关键的部分之一就是通过上述的身份验证算法确定确实是比特币的所有者在进行转账操作。
二、比特币多重签名钱包缺点
比特币多重签名钱包缺点:更难转移资金。
多重签名钱包使人们更难转移资金,无论行为是否恶意,因为钱包需要所有或大多数持有人的签名,具体取决于设置。
加密货币钱包的工作方式与普通钱包相同,它们的所有者必须执行交易、支付费用并对其进行身份验证才能移动它们。
三、比特币使用教程
比特币是一种建立在全球网络上的货币。
比特币是一种没有央行参与发行的,总量固定的数字货币。
比特币建立在全球的P2P网络上。
全球无数的P2P节点全天候的在维护着比特币的网络。
英文:bitcoin货币符号:英文缩写:BTC或 XBT。
维基百科对比特币的介绍:
Bitcoin与传统货币不同,比特币运行机制不依赖中央银行、政府、企业的支持或者信用担保,而是依赖对等网络中种子文件达成的网络协议,去中心化、自我完善的货币体制,理论上确保了任何人、机构、或政府都不可能操控比特币的货币总量,或者制造通货膨胀。它的货币总量按照设计预定的速率逐步增加,增加速度逐步放缓,并最终在2140年达到2100万个的极限。
为什么要使用比特币?
全球交易畅通无阻。
比特币费用低廉。
比特币易于携带,在全球范围内交易畅通无阻,全世界很多地方都接受比特币。
去中心化。
比特币的发行由整个P2P网络完成,不受任何组织和个人控制,是一个完全去中心化的货币系统。
比特币的发行数量是固定的,不会因通胀而贬值,就像黄金一样。
如何使用比特币钱包?
我们从三个方面来说明这个问题。
一:什么是比特币钱包?
简单来说,比特币钱包可以让你和整个世界进行交易。利用比特币钱包中生成的比特币地址你可以接收来自他人的比特币,你也可以将你帐户上的比特币转到他人的比特币地址上面。比特币地址就像银行卡号一样,你只有知道别人的比特币地址才能进行比特币转账。比特币钱包中保存着你自己的所有比特币地址和私钥信息。
二:什么是比特币地址和私钥?
比特币地址和私钥是成对出现的,他们的关系就像银行卡号和密码。比特币地址就像银行卡号一样用来记录你在该地址上存有多少比特币。你可以随意的生成比特币地址来存放比特币。每个比特币地址在生成时,都会有一个相对应的该地址的私钥被生成出来。这个私钥可以证明你对该地址上的比特币具有所有权。我们可以简单的把比特币地址理解成为银行卡号,该地址的私钥理解成为所对应银行卡号的密码。只有你在知道银行密码的情况下才能使用银行卡号上的钱。所以,在使用比特币钱包时请保存好你的地址和私钥。
三:比特币地址和私钥的格式
比特币地址是一段由数学算法生成的二十七到三十四位长度的字符串,一般以数字“1”或者“3”开头。每个比特币地址都对应着一个比特币私钥。比特币私钥亦是由一串字符组成,一般以数字“5”开头。私钥保证了你对该比特币地址上比特币的所有权。比特币私钥有不同的格式,详细资料读者可参见下面的基础教学内容。
请注意
比特币的私钥可以生成该私钥对应的比特币地址,但是比特币地址不能计算出该地址所对应的私钥。因此,假如你忘记了私钥而只记得比特币地址,那么该地址上的比特币便不属于你了。所以,一定要备份好比特币钱包,保护好私钥。如何生成比特币地址和私钥呢?你可以用比特币钱包来生成任意数量的地址和私钥。当然,也有离线生成比特币地址和私钥的比特币钱包工具(关于钱包的概念详见后面的基础教学)。
比特币钱包的种类有哪些?
比特币常用的钱包有三种:软件钱包、手机钱包、在线钱包。
软件钱包:通常指可以在本地机子上运行的比特币客户端。使用软件钱包是最安全的保护你比特币的方式。
手机钱包:只装在手机上的比特币钱包,用手机钱包你可以随时随地的使用比特币。
在线网络钱包:让你可以在任何地方使用比特币,在线服务提供商帮助你保护你的比特币安全。但是值得注意的是,你要仔细谨慎的选择你的在线钱包提供商。
常用软件钱包介绍:
①Bitcoin-Qt:
是最早的比特币客户端,比特币初期的骨干网络就是建立在它上面的。它提供了最高级别的安全性,隐私性和稳定性。然而,它具有的功能并不多。
②Multibit:
是一个轻量级的客户端。Multibit专注于便捷和易用。它与网络同步是在几分钟内就可以使用。Multibit还支持多语言。对于非技术用户,这是一个不错的选择。
③Electrum:
和Multibit类似,Electrum是一款基于SPV原理的比特币钱包软件客户端,它能在几分钟之内完成同步。不同的是Electrum采用了和Bitcoin-qt和Multibit不同钱包的找零机制,所有的比特币私钥都由安全密码种子生成,因此他的安全性更高。Electrum适合对比特币技术原理已经有一定了解的玩家使用。
④Armory:
Armory客户端是运行于Bitcoin-Qt客户端之上的高级比特币客户端,为高级用户提供了更多的扩展功能,其中包括了很多关于备份和加密的功能,以及非常安全的线下冷存储。和Electrum一样,Armory适合对比特币有一定了解的用户使用。
常用的手机钱包介绍:
Bitcoin Wallet:
Bitcoin Wallet可以在Googleandroid商店找到。它是一个轻量级的移动客户端,支持Android和黑莓系统。这个客户端并不需要在线才能工作。它支持QR码(二维码)扫描和NFC(近距离无线通信)。
常用的在线钱包介绍:
①Blockchain:
Blockchain是最早的比特币在线钱包提供商,它提供的功能最多,也非常可靠。您可以用它在全球免费付款。它支持在手机上或个电脑上使用。
②P2PBUCKS:
提示:为保证安全,Blockchain.info在线钱包的用户请使用GoogleAuthenticator或Yubikey等双因子认证方式登陆。并定时从Blockchain上下载自己的钱包备份到本地电脑。
我是在完美生活卫星号上看到这篇文章哦,详细的你可以去关注一下:funinusa
本文来自用户投稿,不代表币大牛资讯立场,如若转载,请注明出处:https://www.98xmw.com/zhis/22000.html
发表回复
评论列表(0条)