主页 > 苹果imtoken怎么下载 > 《比特币基本概念介绍》——带你掌握未来的科技与财富

《比特币基本概念介绍》——带你掌握未来的科技与财富

苹果imtoken怎么下载 2023-05-26 06:18:35

实验楼推出《比特币基本概念导论》,从比特币的密码学和交易原理等方面逐步揭开区块链技术的面纱……

2017年,比特币一定是最疯狂的名词之一。 比特币的价格从年初的不到1000美元飙升至最高的5000美元以上,并被越来越多的市场和机构采用。

令人瞠目结舌的涨幅也带动了越来越多的人加入到挖矿的热潮中。 摩尔定律甚至因此失去了作用——显卡等电脑设备的价格非但没有下降,反而一路上涨。 比特币背后的区块链技术甚至被誉为下一个可能改变世界的技术。

实验楼推出《比特币基本概念导论》,从比特币的密码学和交易原理等方面逐步揭开区块链技术的面纱……

课程介绍

本课程从比特币密码学原理、交易原理等入手,层层揭开区块链技术的面纱,带领学员领略来自未来的技术。

一、实验清单:

玩客币钱包忘记密码_比特币忘记密码怎么办_比特币地址忘记

二、实验环境

2.加密算法和数字签名

一、实验知识点

2. 比特币简介

什么是比特币? 准确的说,比特币有多重含义,很多人在谈论比特币的时候都有概念上的混淆。 下面我们解释一下比特币的不同含义:

从技术角度来看,比特币是最早也是最成功的区块链应用。 它可以看作是一个由加密算法、共识机制、p2p网络等技术组成的系统。

由于这个系统不断地发行货币,它也可以被视为世界银行,但与普通银行不同的是,它的运营者不是特定的中央机构,而是网络上的节点。

另外,这个系统发行的货币也叫比特币。 如果我们想避免混淆,我们也可以用btc来指代这种货币。

3.加密算法

什么是比特币? 准确的说,比特币有多重含义,很多人在谈论比特币的时候都有概念上的混淆。 下面我们解释一下比特币的不同含义:

3.1 私钥、公钥和比特币地址

在现代社会,一种大量流通的货币,一般都有非常先进的加密技术。 例如,人民币有水印、荧光孔等一系列技术,增加了造假难度。 数字货币本质上是网络上的数据,极易受到攻击,因此需要完善的加密系统。

就像我们在银行有账户密码一样,在比特币中我们有类似的东西来确定一个账户的所有权。 具体来说,与账户相关的概念有3个:私钥、公钥和比特币地址。

比特币地址忘记_比特币忘记密码怎么办_玩客币钱包忘记密码

它们之间的关系如上图所示。 私钥可以通过椭圆加密算法生成公钥,公钥可以通过哈希函数生成比特币地址。 反之,有了比特币地址,就不可能生成公钥,有了公钥,也就不可能生成私钥,这是通过后面要介绍的加密算法来实现的。

值得一提的是,掌握了私钥就可以生成对应的公钥和比特币地址,相当于掌握了整个账户,所以一定要保管好自己的私钥。

下面简单介绍一下椭圆加密算法和哈希函数:

3.2 椭圆加密算法

从私钥到公钥使用的椭圆加密算法有一个简单的数学形式,即

K = k * G

其中,K代表公钥,k代表私钥,G代表椭圆曲线上的一点。 这个乘法不是自然数的乘法,而是椭圆乘法。 关于椭圆曲线及其乘法更完整的数学定义,请参考 Mathworld: Elliptic Curve 和 Introduction to Elliptic Curve Cryptography。

以下是该算法的一些关键点:

1、椭圆曲线的一般形式:

y2 = x3 + ax + b

一组点

2、椭圆曲线相加计算方法(x1,y1) + (x2,y2) = (x3,y3)

比特币地址忘记_玩客币钱包忘记密码_比特币忘记密码怎么办

3、通过计算G+G计算2G,然后计算4G,最后通过大约log2(k)次计算k * G。 由于每次的计算量不大,所以整体的计算量也不大。

4、根据K和G得到k的问题称为离散对数问题,计算复杂度为根p,其中p为整个组的大小。 (如果 n 位是二进制比特币忘记密码怎么办,则复杂度为 2n/2)。 这种复杂性是非常可怕的,想要解决它几乎是不可能的。 也就是说,从公钥反推私钥基本上是不可能的。

3.3 哈希函数

从公钥生成比特币地址的过程使用哈希函数,该函数在比特币系统中的多个地方使用。

哈希函数有很多种,一般定义如下:

从安全的角度来看,它具有以下特点:

3.4 代码

以下是生成私钥、公钥和比特币地址的示例代码。 椭圆加密算法使用python的ecdsa库,哈希算法使用hashlib。 另一部分没有提到的是base58Checkencode,这是用来表示比特币地址的方法,可以把地址压缩得更短,让表示更清晰。

读者可以看看这段代码并实践一下,了解比特币的加密原理。

导入 ecdsa 导入 ecdsa。 导出 ecdsa。 utilimport hashlibimport osimport reimport structb58 = 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz def base58encode(n):result = while n > 0:result = b58[n%58] + resultn /= 58 返回resultdef base256decode(s):result =:0s for c = s结果 * 256 + ord(c)return resultdef countLeadingChars(s, ch):count = 0 for c in s:if c == ch:count += 1 else:break return counten。 比特币。 它/wiki/Base58Check_encoding def base58CheckEncode(version, payload): s = chr(version) + payloadchecksum = hashlib.

sha256(hashlib.sha256(s).digest())。 digest()[0:4] 结果 = s + checksummleadingZeros = countLeadingChars(result, \0) return 1 * leadingZeros + base58encode(base256decode(result)) def privateKeyToWif(key_hex): return base58CheckEncode(0x80, key_hex.decode(hex) )def privateKeyToPublicKey(s):sk = ecdsa. 签名密钥。 from_string(s.decode(hex), curve=ecdsa.SECP256k1) vk = sk. verifying_key return(\04 + sk.verifying_key.to_string()). 编码(十六进制)def pubKeyToAddr(s):ripemd160 = hashlib。 新的(ripemd160)ripemd160。 更新(哈希库。

sha256(s.解码(十六进制))。 digest()) return base58CheckEncode(0, ripemd160.digest()) def keyToAddr(s): return pubKeyToAddr(privateKeyToPublicKey(s)) 生成随机私钥 private_key = os. 随机数(32)。 encode(hex) 你可以在brainwallet上验证值。 org/print “秘密指数(未压缩):%s” % private_keyprint “公钥:%s” % privateKeyToPublicKey(private_key)print “私钥:%s” % privateKeyToWif(private_key)print “地址:%s” % keyToAddr(私钥)

开启实验楼在线环境,首先需要通过终端安装ecdsa包:

sudo pip 安装 ecdsa

安装完成后,建议通过在线环境桌面可以看到的gedit编辑器编写代码。 最终保存运行结果如下:

比特币忘记密码怎么办_玩客币钱包忘记密码_比特币地址忘记

4. 交易和数字签名

比特币地址忘记_玩客币钱包忘记密码_比特币忘记密码怎么办

了解了私钥和公钥的概念之后,我们再来看看比特币内部的交易是如何进行的。 从上图中我们可以看出,一个方框代表一笔交易。 例如,中间的框表示所有者 1 支付给所有者 2 的交易。 我们可以看到盒子下面有一个签名。 正是这个签名使得这个交易有效。

本次签名使用owner1的私钥和本次交易的相关信息(包括之前的交易、owner2的公钥、金额、时间戳等)进行签名,以api的形式表示:

sig := sign(sk, 消息)

其中sig代表签名,sign是签名函数比特币忘记密码怎么办,sk代表私钥,message代表交易相关信息

签名完成后,其他人肯定有办法验证交易是否有效,所以需要使用owner1的公钥、交易相关信息、签名完成验证,以api的形式表示

isValid := verify(pk, message, sig)

这里的 pk 代表公钥,isValid 是一个布尔变量,其值为 true 或 false。

从以上两个API,我们可以看出数字签名具有一系列良好的特性。 一个特性是我们在签名时使用私钥,而在验证时只使用公钥,这样就保证了私钥的安全。 二是签名对应每笔交易。 我们不能将签名转移到另一笔交易。 只要不泄露私钥,其他人就无法伪造签名。

五、总结

在本节中,我们将介绍私钥、公钥和比特币地址以及用于在它们之间进行转换的加密算法。 另外,我们还介绍了比特币系统中的交易原理,这是比特币系统中非常基础的内容。

下一节,我们将介绍存储这些交易记录的数据结构,也就是传说中的区块链。

至此,课程才完成1/3,请点击“比特币基本概念介绍”观看后续步骤和详细代码。 学习编程,敲代码是最有用的方法。 请到实验楼学习这个项目。 更多经典编程实践项目:关注所有课程微信公众号【实验楼】,手机端查看海量项目教程。