主页 > imtoken钱包app下载 > 比特币交易和区块链。

比特币交易和区块链。

imtoken钱包app下载 2023-01-16 22:32:51

什么是比特币 (BTC)?

根据中本聪的比特币白皮书,比特币是一种完全通过点对点技术实现的电子现金系统,可以使在线支付由一方直接发起并支付给另一方,中间没有任何金融机构。

通俗地说,比特币不是一种真实的货币,而是一种虚拟的加密数字货币,是计算机中的一串虚拟数字。 这种数字货币不是某个国家发行的,而是比特币软件经过一定时期发行的。 通过机制发行,这种货币可以在没有权威机构批准的情况下进行点对点交易,并由运行整个比特币的节点进行验证(即共识),每个人都可以检查和验证交易是否合法。

在详细解释比特币之前,我们先了解几个名词:.

私钥(SK):256位随机数,个人秘钥,不能泄露,必须妥善保管。

公钥(PK):512位,由私钥通过特定函数生成,可以公开。

公钥哈希值:公钥(PK)的哈希值,257位。

哈希函数:密码学中的一种数学函数。 比特币使用 SHA-256 函数。

比特币如何实现去中心化和分布式共识? 首先,比特币的发行不是由一个中央机构决定的,而是由算法决定的,这是矿工挖矿成功的奖励。 其次,比特币的交易记录,人人可查,不可篡改。 以及如何保护它? 比特币使用加密哈希函数。 哈希函数具有三大特点,即抗碰撞、隐藏和易解谜。 抗碰撞性保证交易记录不可篡改,保密性保证交易信息安全,易解谜性保证挖矿难度和可行性。

火币网如何交易比特币_比特币程序化交易_个人比特币交易

比特币交易和区块链。

所有比特币交易都包含在区块链中并且有据可查。 没有凭空产生的钱币,所有的钱币都可以追本溯源。 2009 年 1 月,中本聪挖出了比特币的第一个区块——创世区块。 比特币的最小单位是聪,1聪=0.000 000 01 BTC。

比特币程序化交易_个人比特币交易_火币网如何交易比特币

比特币交易和区块链图

比特币的区块大小为1M,其中包括(1)前一个区块的哈希值,用于追溯前一个区块; (2) 本区块的默克尔数哈希值,包括本区块的所有交易和基于货币的交易(对矿工的奖励); (3)随机数(32位),用于计算本区块的哈希值; (4) 该区块的哈希值需要满足一定的难度要求; (5) version number,当前区块使用的版本,之前计算hash值只是为了改变随机数,最新的研究可以改变版本号来计算这个区块的hash值,目前还在研究阶段; (6)时间戳记录这个区块产生的时间。

比特币交易以 Merkle 树的形式存储在区块链中,并对交易进行哈希处理,保证交易的安全性和不可篡改性。 具体到某笔交易,在比特币的底层,是由脚本运行的。 例如A到B的比特币交易脚本如下,这笔交易存在于某个区块中:

ScriptSig://输入

sig(A 的 SK, Mes)

比特币程序化交易_火币网如何交易比特币_个人比特币交易

A的PK

ScriptPubkey:// 输出

OP_DUP

OP_HASH160

455yrfa...(散列(B 的 PK))

OP_EQUALVERIFY

OP_CHECKSIG

B到C的交易脚本如下,这笔交易存在于另一个区块中:

比特币程序化交易_火币网如何交易比特币_个人比特币交易

ScriptSig://输入

sig(B 的 SK, Mes)

B的PK

ScriptPubkey:// 输出

OP_DUP

OP_HASH160

454sdf34...(散列(C 的 PK))

OP_EQUALVERIFY

火币网如何交易比特币_个人比特币交易_比特币程序化交易

OP_CHECKSIG

现在分析一下B给C的交易过程:B把自己公钥地址(B的PK)里的比特币转给C,之前B的PK里的比特币是从A转给B,B给C的,其实用的是输入B to C验证A给B的输出,如果验证通过,则B的公钥地址中的比特币现在属于C的公钥地址,即属于C。具体栈执行过程如下

个人比特币交易_火币网如何交易比特币_比特币程序化交易

比特币交易栈执行流程

(1) 先将B对C的交易信息签名入栈。 这个签名是由B的私钥和交易信息通过哈希运算生成的。

(2)将B的公钥压入栈中

(3) 复制B的公钥

(4)对top B的公钥进行二次哈希运算,第一次使用SHA-256函数,第二次使用椭圆曲线函数RIPEMD160

火币网如何交易比特币_比特币程序化交易_个人比特币交易

(5)检查上一步对公钥B进行二次哈希运算的结果是否与A输出给B的公钥B的哈希值一致。

(6)如果两个值一致去除,则进行下一步

(7)利用椭圆曲线函数验证栈顶两项的返回值是否为真。 如果为真,则交易成功,如果验证为假,则交易失败。 具体如何验证,使用的功能,如何实现验证? 可以在图中链接文件。

注意B的公钥地址中的比特币是所有节点都可以看到的,但是只有B的私钥可以用来消费这些比特币。

比特币的区块大小为 1M,每笔交易的大小约为 250 字节,因此每个区块最多可容纳 4000 笔交易。 平均而言,大约每 10 分钟生成一个区块,因此比特币网络每秒只能处理 7 笔交易。

在比特币交易中,没有零钱这回事。 比如A有10个比特币,需要支付8个比特币到B的地址。 A先支付8个比特币给B的公钥地址,然后再支付2个比特币给自己的另一个公钥地址。

全节点和轻量级节点。

全节点是完全有效的节点。 这些节点需要存储完整的共识区块链,需要永久在线。 全节点负责广播交易和验证交易的任务。 全节点必须维护一份完整的未被消费的比特币列表(UTXO,Unspended Transaction Outputs)(上例中B对C的交易过程是为了验证A对B的输出个人比特币交易,当交易完成后, A到B的输出是不在UTXO中的,B到C的输出是加到UTXO中的),这个链表最好放在内存中个人比特币交易,而不是硬盘中,这样节点在收到交易消息时,可以快速查看,运行脚本,验证签名是否有效。 比特币现有的区块链需要超过 200G 的存储空间。

轻量级节点是简单的支付验证客户端(SPV,Simple Payment Verification)。 在比特币系统中,大部分节点都是轻量级节点。 这些节点并不存储整个比特币区块链,而是存储他们关心的、需要验证的部分交易。 轻节点只验证那些与其相关的交易,因此它们必须依赖全节点来验证网络上的所有其他交易。 轻量级节点只需要几十兆的存储空间。