主页 > imtoken转币到交易所 > 比特币和区块链

比特币和区块链

imtoken转币到交易所 2023-08-15 05:09:37

地址、交易、区块和网络是区块链数据中最基本和最重要的概念。地址用于识别交易的发送者和接收者。所有的交易最终都需要记录在一个统一的账本上,即区块链上,而这个账本是通过区块来确认和完成的。每一个新的区块都会被打上时间戳,最终的生成会根据时间进行排列和记录。每个独立的节点都通过比特币网络连接起来,从而为电子交易记录建立了一个去中心化的分布式时间戳服务器系统。

很复杂,本节我们先讲地址。

1、公钥加密

说到地址,我们必须先谈谈密码学。作为保护信息传输安全的技术手段,密码在人类社会中的应用由来已久。凯撒密码是经典密码的典型代表。它的基本思想是用字符替换来实现加密和解密。因此,经典密码学的安全性主要取决于加密算法本身的安全性。如果算法被泄露,被加密的信息就不会是秘密的。

1949年,香农发表了《保密系统的信息论》,奠定了对称密码系统的理论基础比特币区块链地址查询,并带来了加密传输基于密钥安全而非加密算法安全的理论和技术变革。这是密码学发展的里程碑,标志着现代密码学时代的到来。如今,密码学相关技术已经渗透到各个领域,其理论共识遵循 19 世纪 August Kirkhoff 提出的“Kirckhoff 原则”——一个密码系统应该为所有人所熟知,即使它的操作步骤是,仍然是安全的。即算法是公开的,唯一需要保护的就是密钥。

在公钥密码学兴起之前,对称加密是主流的加密方式。人们根据密钥对信息进行加密和解密。通常,密钥越长,破解密文就越困难。由于加密算法和解密算法都是同一种模式,只有一个密钥可以保证加密数据的安全,所以这种加密算法也称为“对称加密算法”。对称加密有一个最大的弱点:甲方必须告诉乙方密钥,否则乙方无法解密。而保存和传递密钥成为了最头疼的问题。

公钥密码学是现代密码学中最重要的进步。公钥密码学可以在不直接传递密钥的情况下完成密文的解密。加密和解密可以使用不同的规则,只要两条规则之间存在一定的对应关系,系统的安全性不依赖于算法的机密性,也不需要直接传递密钥。基于这种公钥机制的思想,一系列非对称加密算法已经开始出现。

1976年,Whitfield Diffie & Martin Hellman首先提出了一种基于数学问题的公钥密码机制。1978年RSA公钥密码机制的出现,成为公钥密码学的杰出代表,成为事实上的标准,开创了密码学史上的又一个新纪元。里程碑。1990年代,随着公钥密码学的进一步发展,基于椭圆曲线乘法和素幂等数学函数的公钥算法诞生,使数字密钥和不可伪造的数字签名成为可能。

数据签名算法的核心是证明数据的发送者是签名者发送的并且是不可否认的,而不是要签名的数据的机密性。

下图比较了非对称加密和对称加密算法的区别:

非对称加密需要两个(一对)密钥:一个公钥和一个私钥。用公钥加密数据后,只有对应的私钥才能解密;否则,如果私钥用于加密,则只有对应的公钥才能解密。两个通信方可以在不交换密钥的情况下建立安全通信。

公钥算法使用私钥和公钥。它们与比特币系统中经常提到的地址有什么关系?在比特币系统中,私钥由一个 32 字节的随机数组成,公钥可以从私钥计算出来。公钥通过一系列散列和编码算法获得比特币中的地址。所以地址其实是公钥的另一种表示,可以理解为公钥的一个总结。

2、相关加密算法

在私钥、公钥和地址的相关操作中,使用了基于secp256k1椭圆曲线乘法、SHA-256、RIPEMD-160、Base58编码的签名算法。

2.1 椭圆曲线签名算法

Neal Koblitz 和 Victor Miller 分别于 1985 年独立提出在密码学中使用椭圆曲线。它的主要优点是在某些情况下,它使用比其他算法(例如 RSA)更小的密钥,但提供相当或更高级别的安全性。

比特币使用基于 secp256k1 椭圆曲线数学的公钥密码算法。它包含一个私钥和一个公钥。私钥用于签署交易并将签名和原始数据发送到整个比特币网络。公钥被整个网络中的节点用来验证交易的有效性。签名算法确保交易由拥有相应私钥的人发出。

2.2 哈希函数

SHA-256是一个哈希函数,上一节已经介绍过,这里不再赘述。

RIPEMD-160 也是用于地址生成的散列函数,其输出长度为 20 字节(160 位)。比特币使用它来减少识别接收者的字节数。

2.3 Base58 编码

可读性编码算法,类似于经典密码学中的替换算法,理论上不是密码学理论的核心内容。可读性编码算法不是为了数据安全,而是为了可读性。二进制传输的信息不可读,数字和字母串更容易识别。可读性编码不会改变信息内容,而只是改变信息内容的表现形式(有些编码算法还增加了容错检查功能,以保证数据在传输过程中的准确性和完整性)。

Base64 是一种常见的可读编码算法。所谓Base64,就是在编码过程中使用了64个字符:大写A到Z,小写a到z比特币区块链地址查询,数字0到9、“+”和“/”。

Base58是比特币中使用的一种编码方式,主要用于生成比特币钱包地址。与 Base64 相比,Base58 不使用数字“0”、大写“O”、大写“I”、小写“i”以及“+”和“/”符号。

设计Base58的主要目的是:

避免混淆。在某些字体中,数字 0 和大写字母 O,以及大写字母 I 和小写字母 l 会非常相似。不使用“+”和“/”的原因是非字母数字字符串很难被接受为帐户的一部分。没有标点符号,一般不会从中间断掉。使大多数软件支持双击选择整个字符串。

比特币使用Base58算法对公钥和私钥的Hash160进行编码,生成以1或3开头的比特币地址和WIF(Wallet import Format)格式的私钥。

3、私钥和公钥

比特币私钥实际上是使用 SHA-256 生成的 32 字节(256 位)随机数,有效私钥的范围取决于比特币使用的 secp256k1 椭圆曲线数字签名标准。0x1 和 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140 之间的数字几乎总是有效的私钥。

在私钥前面加上版本号,然后加上压缩标志和附加校验码。),然后对其进行Base58编码,得到我们常见的WIF(Wallet import Format)格式的私钥。

私钥乘以椭圆曲线得到公钥。公钥是椭圆曲线上的一个点,具有 x 和 y 坐标。公钥有两种形式:压缩和未压缩。在比特币的早期,使用的是未压缩的公钥,现在大多数客户端默认使用压缩的公钥。

由于数学原理,从私钥推导出公钥是可能的,但从公钥推导出私钥是不可能的。

刚接触比特币的人经常会误认为比特币公钥就是地址,这是不正确的。从公钥到地址,需要进行一些操作。

4、地址生成

椭圆曲线算法生成的公钥信息比较长,压缩格式为33字节,未压缩格式为65字节。地址是为了减少接收方需要识别的字节数。生成比特币地址的步骤如下:

生成私钥和公钥。通过SHA256哈希算法对公钥进行处理,得到32字节的哈希值,再使用RIPEMD-160算法得到20字节的哈希值。Hash160把版本号+Hash160组成的21字节数组进行双重SHA256哈希运算,得到的哈希值的前4字节作为校验和,放在21字节数组的末尾。地址是通过 Base58 编码 25 位数组得到的。

下图用未压缩格式的 65 字节公钥说明了上述过程:

由于椭圆曲线乘法和散列函数的特性,我们可以从私钥推导出公钥,也可以从公钥推导出地址,这个过程是不可逆的。正因为如此,在整个比特币系统中,私钥是最关键的部分。私钥泄露意味着一切都丢失了。

要将资产花在一个地址上,我们需要构造一个交易,并使用该地址对应的私钥对其进行签名。而如果我们想将资产转移到某个地址,我们只需要转移到他的公共地址即可。

在下一节中,我们将详细介绍比特币交易的结构和实施方式。

[1]

[2]普通地址P2PKH的版本默认值为0,P2SH类型的版本默认值为5