① 比特币算法原理
比特币算法主要有两种,分别是椭圆曲线数字签名算法和SHA256哈希算法。
椭圆曲线数字签名算法主要运用在比特币公钥和私钥的生成过程中,该算法是构成比特币系统的基石。SHA-256哈希算法主要是运用在比特币的工作量证明机制中。
比特币产生的原理是经过复杂的运算法产生的特解,挖矿就是寻找特解的过程。不过比特币的总数量只有2100万个,而且随着比特币不断被挖掘,越往后产生比特币的难度会增加,可能获得比特币的成本要比比特币本身的价格高。
比特币的区块由区块头及该区块所包含的交易列表组成,区块头的大小为80字节,由4字节的版本号、32字节的上一个区块的散列值、32字节的 Merkle Root Hash、4字节的时间戳(当前时间)、4字节的当前难度值、4字节的随机数组成。拥有80字节固定长度的区块头,就是用于比特币工作量证明的输入字符串。不停的变更区块头中的随机数即 nonce 的数值,并对每次变更后的的区块头做双重 SHA256运算,将结果值与当前网络的目标值做对比,如果小于目标值,则解题成功,工作量证明完成。
比特币的本质其实是一堆复杂算法所生成的一组方程组的特解(该解具有唯一性)。比特币是世界上第一种分布式的虚拟货币,其没有特定的发行中心,比特币的网络由所有用户构成,因为没有中心的存在能够保证了数据的安全性。
② 姣旂壒甯佹庝箞鏍疯繍绠
姣旂壒甯佹庝箞杩愮畻鐨
姣旂壒甯佹槸涓绉嶅熀浜庡瘑鐮佸﹀師鐞嗙殑鏁板瓧璐у竵锛屽叾杩愮畻涓昏佹秹鍙婂埌鍔犲瘑绠楁硶鍜屽垎甯冨紡璁$畻鐨勬妧鏈銆
姣旂壒甯佺殑杩愮畻杩囩▼涓昏佸寘鎷浠ヤ笅鍑犱釜姝ラわ細
1.鐢熸垚鍏绉侀挜瀵癸細姣旂壒甯佷娇鐢ㄦき鍦嗘洸绾垮姞瀵嗙畻娉(ECDSA)鐢熸垚鍏绉侀挜瀵癸紝鍏朵腑绉侀挜鐢ㄤ簬绛惧悕浜ゆ槗锛屽叕閽ョ敤浜庨獙璇佺惧悕銆
2.鐢熸垚浜ゆ槗淇℃伅锛氫氦鏄撲俊鎭鍖呮嫭鍙戦佽呭湴鍧銆佹帴鏀惰呭湴鍧銆佽浆璐﹂噾棰濈瓑淇℃伅锛岀敤浜庢弿杩版瘮鐗瑰竵鐨勪氦鏄撹繃绋嬨
3.楠岃瘉浜ゆ槗淇℃伅锛氬皢浜ゆ槗淇℃伅鍔犱笂鏃堕棿鎴炽佸彂閫佽呭叕閽ャ佸搱甯岀瓑淇℃伅锛岀粍鎴愪氦鏄撹板綍锛屽苟閫氳繃缃戠粶骞挎挱缁欏叾浠栬妭鐐归獙璇併
4.鎸栫熆璁$畻锛氭瘮鐗瑰竵鐨勬寲鐭挎槸鎸囧皢浜ゆ槗璁板綍鎵撳寘鎴愬尯鍧楀苟娣诲姞鍒板尯鍧楅摼涓鐨勮繃绋嬨傛寲鐭胯繃绋嬮渶瑕佽繘琛屼竴绯诲垪鐨勮$畻锛屽寘鎷鍝堝笇璁$畻銆侀毦搴﹁$畻绛夛紝杩欎簺璁$畻闇瑕侀氳繃鍒嗗竷寮忚$畻鏉ュ畬鎴愩
5.鑾峰緱鍖哄潡濂栧姳锛氬畬鎴愭寲鐭跨殑鑺傜偣鍙浠ヨ幏寰椾竴瀹氱殑姣旂壒甯佸栧姳锛屽悓鏃朵篃鍙浠ヨ幏寰椾氦鏄撴墜缁璐逛綔涓哄栧姳銆
鎬讳箣锛屾瘮鐗瑰竵鐨勮繍绠椾富瑕佹秹鍙婂埌鍔犲瘑绠楁硶銆佸垎甯冨紡璁$畻銆佸搱甯岃$畻绛夋妧鏈锛岄渶瑕侀氳繃澶氫釜鑺傜偣鍗忓悓瀹屾垚锛岀‘淇濅氦鏄撹板綍鐨勫畨鍏ㄥ拰鍙闈犳с
③ 高中生如何理解比特币加密算法
加密算法是数字货币的基石,比特币的公钥体系采用椭圆曲线算法来保证交易的安全性。这是因为要攻破椭圆曲线加密就要面对离散对数难题,目前为止还没有找到在多项式时间内解决的办法,在算法所用的空间足够大的情况下,被认为是安全的。本文不涉及高深的数学理论,希望高中生都能看懂。
密码学具有久远的历史,几乎人人都可以构造出加解密的方法,比如说简单地循环移位。古老或简单的方法需要保密加密算法和秘钥。但是从历史上长期的攻防斗争来看,基于加密方式的保密并不可靠,同时,长期以来,秘钥的传递也是一个很大的问题,往往面临秘钥泄漏或遭遇中间人攻击的风险。
上世纪70年代,密码学迎来了突破。Ralph C. Merkle在1974年首先提出非对称加密的思想,两年以后,Whitfield Diffie和Whitfield Diffie两位学者以单向函数和单向暗门函数为基础提出了具体的思路。随后,大量的研究和算法涌现,其中最为著名的就是RSA算法和一系列的椭圆曲线算法。
无论哪一种算法,都是站在前人的肩膀之上,主要以素数为研究对象的数论的发展,群论和有限域理论为基础。内容加密的秘钥不再需要传递,而是通过运算产生,这样,即使在不安全的网络中进行通信也是安全的。密文的破解依赖于秘钥的破解,但秘钥的破解面临难题,对于RSA算法,这个难题是大数因式分解,对于椭圆曲线算法,这个难题是类离散对数求解。两者在目前都没有多项式时间内的解决办法,也就是说,当位数增多时,难度差不多时指数级上升的。
那么加解密如何在公私钥体系中进行的呢?一句话,通过在一个有限域内的运算进行,这是因为加解密都必须是精确的。一个有限域就是一个具有有限个元素的集合。加密就是在把其中一个元素映射到另一个元素,而解密就是再做一次映射。而有限域的构成与素数的性质有关。
前段时间,黎曼猜想(与素数定理关系密切)被热炒的时候,有一位区块链项目的技术总监说椭圆曲线算法与素数无关,不受黎曼猜想证明的影响,就完全是瞎说了。可见区块链项目内鱼龙混杂,确实需要好好洗洗。
比特币及多数区块链项目采用的公钥体系都是椭圆曲线算法,而非RSA。而介绍椭圆曲线算法之前,了解一下离散对数问题对其安全性的理解很有帮助。
先来看一下 费马小定理 :
原根 定义:
设(a, p)=1 (a与p互素),满足
的最下正整数 l,叫作a模p的阶,模p阶为(最大值)p-1的整数a叫作模p的原根。
两个定理:
基于此,我们可以看到,{1, 2, 3, … p-1} 就是一个有限域,而且定义运算 gi (mod p), 落在这个有限域内,同时,当i取0~p-2的不同数时,运算结果不同。这和我们在高中学到的求幂基本上是一样的,只不过加了一层求模运算而已。
另一点需要说明的是,g的指数可以不限于0~p-2, 其实可以是所有自然数,但是由于
所以,所有的函数值都是在有限域内,而且是连续循环的。
离散对数定义:
设g为模p的原根,(a,p) = 1,
我们称 i 为a(对于模p的原根g)的指数,表示成:
这里ind 就是 index的前3个字母。
这个定义是不是和log的定义很像?其实这也就是我们高中学到的对数定义的扩展,只不过现在应用到一个有限域上。
但是,这与实数域上的对数计算不同,实数域是一个连续空间,其上的对数计算有公式和规律可循,但往往很难做到精确。我们的加密体系里需要精确,但是在一个有限域上的运算极为困难,当你知道幂值a和对数底g,求其离散对数值i非常困难。
当选择的素数P足够大时,求i在时间上和运算量上变得不可能。因此我们可以说i是不能被计算出来的,也就是说是安全的,不能被破解的。
比特币的椭圆曲线算法具体而言采用的是 secp256k1算法。网上关于椭圆曲线算法的介绍很多,这里不做详细阐述,大家只要知道其实它是一个三次曲线(不是一个椭圆函数),定义如下:
那么这里有参数a, b;取值不同,椭圆曲线也就不同,当然x, y 这里定义在实数域上,在密码体系里是行不通的,真正采用的时候,x, y要定义在一个有限域上,都是自然数,而且小于一个素数P。那么当这个椭圆曲线定义好后,它反应在坐标系中就是一些离散的点,一点也不像曲线。但是,在设定的有限域上,其各种运算是完备的。也就是说,能够通过加密运算找到对应的点,通过解密运算得到加密前的点。
同时,与前面讲到的离散对数问题一样,我们希望在这个椭圆曲线的离散点阵中找到一个有限的子群,其具有我们前面提到的遍历和循环性质。而我们的所有计算将使用这个子群。这样就建立好了我们需要的一个有限域。那么这里就需要子群的阶(一个素数n)和在子群中的基点G(一个坐标,它通过加法运算可以遍历n阶子群)。
根据上面的描述,我们知道椭圆曲线的定义包含一个五元祖(P, a, b, G, n, h);具体的定义和概念如下:
P: 一个大素数,用来定义椭圆曲线的有限域(群)
a, b: 椭圆曲线的参数,定义椭圆曲线函数
G: 循环子群中的基点,运算的基础
n: 循环子群的阶(另一个大素数,< P )
h:子群的相关因子,也即群的阶除以子群的阶的整数部分。
好了,是时候来看一下比特币的椭圆曲线算法是一个怎样的椭圆曲线了。简单地说,就是上述参数取以下值的椭圆曲线:
椭圆曲线定义了加法,其定义是两个点相连,交与图像的第三点的关于x轴的对称点为两个点的和。网上这部分内容已经有很多,这里不就其细节进行阐述。
但细心的同学可能有个疑问,离散对数问题的难题表现在求幂容易,但求其指数非常难,然而,椭圆曲线算法中,没有求幂,只有求乘积。这怎么体现的是离散对数问题呢?
其实,这是一个定义问题,最初椭圆曲线算法定义的时候把这种运算定义为求和,但是,你只要把这种运算定义为求积,整个体系也是没有问题的。而且如果定义为求积,你会发现所有的操作形式上和离散对数问题一致,在有限域的选择的原则上也是一致的。所以,本质上这还是一个离散对数问题。但又不完全是简单的离散对数问题,实际上比一般的离散对数问题要难,因为这里不是简单地求数的离散对数,而是在一个自定义的计算上求类似于离散对数的值。这也是为什么椭圆曲线算法采用比RSA所需要的(一般2048位)少得多的私钥位数(256位)就非常安全了。
④ 知道私钥怎么提币
有了私钥,我们就可以使用椭圆曲线乘法这个单向加密函数产生一个公钥(K)。
有了公钥(K),我们就可以使用一个单向加密哈希函数生成比特币地址(A)。
H3
私钥
私钥就是一个随机选出的数字而已。一个比特币地址中的所有资金的控制取决于相应私钥的所有权和控制权。在比特币交易中,私钥用于生成支付比特币所必需的签名以证明资金的所有权。私钥必须始终保持机密,因为一旦被泄露给第三方,相当于该私钥保护之下的比特币也拱手相让了。私钥还必须进行备份,以防意外丢失,因为私钥一旦丢失就难以复原,其所保护的比特币也将永远丢失。
比特币私钥只是一个数字。你可以用硬币、铅笔和纸来随机生成你的私钥:掷硬币256次,用纸和笔记录正反面并转换为0和1,随机得到的256位二进制数字可作为比特币钱包的私钥。该私钥可进一步生成公钥。
H3
公钥
通过椭圆曲线算法可以从私钥计算得到公钥,这是不可逆转的过程:K = k * G。其中k是私钥,G是被称为生成点的常数点,而K是所得公钥。其反向运算,被称为“寻找离散对数”——已知公钥K来求出私钥k——是非常困难的,就像去试验所有可能的k值,即暴力搜索。
H3
比特币地址
比特币地址是一个由数字和字母组成的字符串,可以与任何想给你比特币的人分享。由公钥(一个同样由数字和字母组成的字符串)生成的比特币地址以数字“1”开头。下面是一个比特币地址的例子:
在交易中,比特币地址通常以收款方出现。如果把比特币交易比作一张支票,比特币地址就是收款人,也就是我们要写入收款人一栏的内容。一张支票的收款人可能是某个银行账户,也可能是某个公司、机构,甚至是现金支票。支票不需要指定一个特定的账户,而是用一个普通的名字作为收款人,这使它成为一种相当灵活的支付工具。与此类似,比特币地址的使用也使比特币交易变得很灵活。比特币地址可以代表一对公钥和私钥的所有者,也可以代表其它东西,比如“P2SH
(Pay-to-Script-Hash)”付款脚本。
⑤ 比特币什么方式存在
比特币是一种基于区块链技术的数字货币,以去中心化、匿名性和安全性等特性存在于网络世界中。
比特币是一种虚拟货币,它的存在方式主要体现在以下几个方面:
1. 区块链网络:比特币基于区块链技术构建,通过分布在全球的节点组成的网络进行交易和存储。每个节点都保存着完整的区块链数据,确保比特币的安全性和去中心化特性。
2. 数字账户:比特币交易不依赖于传统的金融机构,用户通过拥有私钥和公钥的加密钱包进行交易。私钥是用户控制比特币的密钥,而公钥则用于接收比特币。这种数字账户的形式保证了比特币的安全性和交易的便捷性。
3. 加密技术:比特币通过复杂的加密算法确保交易的安全性和匿名性。这些技术包括椭圆曲线密码学和非对称加密等,保证了交易过程中信息的完整性和不可篡改性。
综上所述,比特币通过区块链网络、数字账户和加密技术等方式存在于网络世界中。作为一种虚拟货币,比特币的交易和存储都依赖于互联网和相关的技术设施。由于其独特的特性和安全性,比特币在全球范围内得到了广泛的应用和关注。
⑥ 什么是加密货币 加密货币怎么赚钱
加密货币(英文:Cryptocurrency,常常用复数Cryptocurrencies,又译密码货币,密码学货币)是一种使用密码学原理来确保交易安全及控制交易单位创造的交易媒介。 加密货币是数字货币(或称虚拟货币)的一种 。比特币在2009年成为第一个去中心化的加密货币,这之后加密货币一词多指此类设计。 自此之后数种类似的加密货币被创造,它们通常被称作altcoins。 加密货币基于去中心化的共识机制 ,与依赖中心化监管体系的银行金融系统相对。
温馨提示:以上信息仅供参考,不代表任何投资建议。
应答时间:2021-01-06,最新业务变化请以平安银行官网公布为准。
[平安银行我知道]想要知道更多?快来看“平安银行我知道”吧~
https://b.pingan.com.cn/paim/iknow/index.html