主页 > imtoken知乎 > 首页> 苹果imtoken钱包官网> 比特币交易流程详解

首页> 苹果imtoken钱包官网> 比特币交易流程详解

imtoken知乎 2023-12-24 05:15:14

今天第二次看了《精通比特币》这本书,对比特币的交易过程有了更清晰的认识。 结合我以前的知识,记录下我的心得。 网页格式

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

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

这里特别说明,开立账户不算是交易过程的一部分,但由于它们对理解交易特别重要,所以我也会在这里解释一下。 安全

创建一个帐户

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

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

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

火币网买比特币安全吗_比特币借币交易怎么玩_哪里可以安全的交易比特币

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

用户名 私钥 公钥 钱包地址

比特币私钥是什么_比特币钱包私钥论坛_一个比特币账号包含私钥和公钥吗

0xtjnpelimdkygfoqsuhvxzwarcb

0xDNnPoyw0QKVfssQy

0x9SDYFw46EANVMp6P3F754k

比特币借币交易怎么玩_哪里可以安全的交易比特币_火币网买比特币安全吗

0xwehsSivmE4IHN1aVzwDEzkVC

0xp7cNc9rpnz23pEHc

0xErho6FVqTqgHTpcLiE2R6A

为了便于理解和记录一个比特币账号包含私钥和公钥吗,我们假设编码

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

比特币钱包私钥论坛_比特币私钥是什么_一个比特币账号包含私钥和公钥吗

火币网买比特币安全吗_比特币借币交易怎么玩_哪里可以安全的交易比特币

B的私钥、公钥、地址对应关系:private-key-B,public-key-B,address-B.code

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

{
	"付款地址":"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,请过来确认。 广播信息包括原始交易信息和签名信息。

一个比特币账号包含私钥和公钥吗_比特币私钥是什么_比特币钱包私钥论坛

p>

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

验证交易

其他比特币节点收到广播交易后,会对这笔交易进行验证,主要是验证这笔交易是否是自己发起的。 由于用户只有私钥,只要验证签名信息无误,就使用私钥进行签名。 当然在实际交易过程中还会做一些其他的验证,比如付款人的UTXO(实际是余额)是否足够。

火币网买比特币安全吗_哪里可以安全的交易比特币_比特币借币交易怎么玩

签名验证过程一般如下:

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

比特币私钥是什么_比特币钱包私钥论坛_一个比特币账号包含私钥和公钥吗

if (verify(signature, public-key-A) == summary) { //验证经过 //打包交易到区块 }

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

存储事务

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

如果你喜欢可以安全地交易比特币的地方,那就捐款吧; 如果您认为这篇文章对您有用,请捐赠。 您的支持是对创作者极大的支持和鼓励。

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

原文链接: