主页 > imtoken钱包激活 > 首页> tp钱包官网下载安装> 比特币交易流程详解

首页> tp钱包官网下载安装> 比特币交易流程详解

imtoken钱包激活 2023-04-23 07:19:10

今天,我第二次阅读了《精通比特币》这本书,对比特币的交易过程有了更清晰的认识。 根据我以前的知识,我将我的经验记录下来。

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

比特币可以公开交易吗_ios可以用的比特币钱包_比特币钱包可以验证交易吗

特别是,创建账户不属于交易过程的一部分,但由于它对理解交易尤为重要,所以我也会在这里解释一下。

创建一个帐户

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

我们简单总结一下制作比特币账户的过程如下

生成一个32字节的随机数作为私钥,使用私钥椭圆曲线算法加密,生成公钥,对公钥进行一系列哈希计算,生成公钥摘要使用Base58编码技术进行编码公钥获取地址密钥摘要的公钥(这一步是可逆的)发送交易

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

用户名 私钥 公钥 钱包地址

比特币可以公开交易吗_ios可以用的比特币钱包_比特币钱包可以验证交易吗

0xtjnpelimdkygfoqsuhvxzwarcb

0xDNnPoyw0QKVfssQy

0x9SDYFw46EANVMp6P3F754k

0xwehsSivmE4IHN1aVzwDEzkVC

0xp7cNc9rpnz23pEHc

0xErho6FVqTqgHT

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

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

比特币可以公开交易吗_比特币钱包可以验证交易吗_ios可以用的比特币钱包

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

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

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

在发送交易之前,A还需要对交易进行签名,以便其他接收节点可以验证交易。 由于非对称加密算法一般对加密数据的长度有限制(一般为1024字节),所以在签名前会使用hash计算交易摘要,然后对交易摘要进行签名比特币钱包可以验证交易吗,这样也可以节省计算资源。

ios可以用的比特币钱包_比特币钱包可以验证交易吗_比特币可以公开交易吗

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

假设摘要信息为: KrDsjT4J7vo6GbibMQMPYkcA2f5bck ,则使用A的私钥对摘要进行签名

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

比特币钱包可以验证交易吗_ios可以用的比特币钱包_比特币可以公开交易吗

@ >

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

p>

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

验证交易

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

签名验证过程大致如下:

summary = hash({
	"付款地址""address-A",

ios可以用的比特币钱包_比特币钱包可以验证交易吗_比特币可以公开交易吗

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

在这里,用于验证签名的公钥被解密,这是非对称加密的一个特点。 如果你不知道什么是非对称加密,请看我之前的博客《区块链技术指南》阅读笔记(二)

存储事务

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