主页 > imtoken中国版下载 > 首页> imtoken钱包官网app下载> 详解比特币交易流程

首页> imtoken钱包官网app下载> 详解比特币交易流程

imtoken中国版下载 2023-02-20 05:50:37

在学习《精通比特币》这本书时,在了解比特币交易的过程中,通过阅读书籍和上网查找资料,整理一下比特币交易过程的学习心得。

比特的交易流程可以简单地用下图表示:

比特币钱包是非对称加密吗_币安里面的比特币怎么提现到钱包_比特币 钱包 未确认

在这里特别说明一下,创建账户并不算交易流程中的部分,但是由于它对于交易的理解特别重要,所以我也放在这里解释一下。

1.创建用户

所有比特币创建都是匿名账户。 在比特币中,所谓的账户其实就是通过非对称加密算法(比特币使用的椭圆曲线算法)创建的一对密钥,分为公钥和私钥。 首先私钥是一个随机数,随机选择一个32字节的数,然后使用椭圆曲线加密算法(ECDSA-secp256k1)对私钥进行压缩生成公钥。 也就是说,比特币账户的本质就是一个随机数,没有其他信息,这给以后有人用比特币洗钱带来了前所未有的便利,所以必须妥善保管好私钥,不让任何人知道。 else 可能知道它是你比特币所有权的唯一证明。 公钥可以暴露给其他人。 实际上,我们平时发送给他人的钱包地址就是经过一系列哈希计算和Base58编码得到的公钥。 但是钱包地址不等于公钥,因为上面的整个过程是不可逆的,也就是说你不能从钱包地址推导出公钥,也不能从公钥推导出私钥。 事实上,从私钥到地址,经过9步计算处理,所以私钥绝对安全,无法破解。 您不能从钱包地址推断出公钥,也不能从公钥推断出私钥。 事实上,从私钥到地址,经过9步计算处理,所以私钥绝对安全,无法破解。 您不能从钱包地址推断出公钥,也不能从公钥推断出私钥。 事实上,从私钥到地址,经过9步计算处理,所以私钥绝对安全,无法破解。

从上面的解释中,我们可以提炼出以下信息:

私钥:私钥是一个随机数,随机选取的一个32字节的数。

公钥:私钥经过椭圆加密算法压缩生成公钥。

钱包地址≠公钥:通常发送给他人的钱包地址是通过一系列哈希计算和Base58编码得到的公钥

总的总结就是下面这句话:

比特币系统使用椭圆曲线签名算法(ECC)。 该算法的私钥由32字节的随机数组成。 公钥可以从私钥计算出来。 公钥通过哈希序列得到比特币地址算法和编码算法。 地址也可以理解为公钥的汇总

比特币钱包是非对称加密吗_比特币 钱包 未确认_币安里面的比特币怎么提现到钱包

通过这张图我们可以清楚的知道如何从公钥生成比特币地址(钱包地址)。

进一步总结一下,比特币地址生成步骤如下:

生成一个32字节的随机数作为私钥,用椭圆曲线算法加密私钥,生成公钥,对公钥进行一系列哈希计算,生成公钥摘要,使用Base58编码技术encode the public key 编码key digest得到地址(这一步是可逆的)

2.发送交易和广播

如果有两个账户A和B,他们的账户信息如下

用户名 私钥 公钥 钱包地址

某种

0xtjnpelimdkygfoqsuhvxzwarcb

0xDNnPoyw0QKVfssQy

0x9SDYFw46EANVMp6P3F754k

第二

0xwehsSivmE4IHN1aVzwDEzkVC

0xp7cNc9rpnz23pEHc

0xErho6FVqTqgHTpcLiE2R6A

为了便于理解和记录,我们假设

A的私钥、公钥、地址对应:private-key-A、public-key-A、address-A。

B的私钥、公钥、地址对应:private-key-B、public-key-B、address-B。

假设A想转5个BTC给B,付款人会发送这样一笔交易

{
	"付款地址":"address-A",
	"收款地址":"address-B",
	"金额":"5BTC"
}

在真正发送交易之前,A还需要对交易进行签名,以便其他接收节点可以验证交易。 由于非对称加密算法一般加密数据的长度有限(通常为1024字节),所以在签名前使用哈希计算交易摘要,再对交易摘要进行签名,这样也可以节省计算资源。

summary = hash({
	"付款地址":"address-A",
	"收款地址":"address-B",
	"金额":"5BTC"
}) => "KrDsjT4J7vo6GbibMQMPYkcA2f5bck"

假设摘要信息为: KrDsjT4J7vo6GbibMQMPYkcA2f5bck比特币钱包是非对称加密吗,则使用A的私钥对摘要进行签名

signature = sign(summary, private-key-A) -> "RAJ8uRurwWQVQRO5"

签名后,支付节点将交易广播给全网节点:我转了5个BTC给B,请过来确认。 广播信息包括原始交易信息和签名信息。

如果对以上步骤不是很清楚,可以参考这篇文章:非对称加密(详解)

当然,以上是模拟的主要数据,实际交易中包含更多信息。 比特币真实的交易数据结构如下:

3.验证交易

其他比特币节点收到广播交易后,会对这笔交易进行验证,主要是验证这笔交易是否是自己发起的。 因为用户拥有的只有私钥比特币钱包是非对称加密吗,所以只需要验证签名信息是否正确,即是否用私钥签名即可。 当然,在真正的交易过程中还会做一些其他的验证,比如付款人的UTXO(实际上是余额)是否足够。

签名验证过程大致如下:

summary = hash({
	"付款地址":"address-A",
	"收款地址":"address-B",
	"金额":"5BTC"
})
if (verify(signature, public-key-A) == summary) {
	//验证通过
	//打包交易到区块
}

这里使用公钥对签名进行解密,这是非对称加密的一个特点。

4.存储交易和广播

交易验证通过后,当前节点将交易写入账本,然后广播给与其相连的节点,其他节点对交易进行验证、打包、广播,直至全网节点确认交易。