主页 > imtoken官方版下载安卓最新版 > 比特币账户结构

比特币账户结构

比特币交易

1.进行交易时,需要将比特币发送到收款人地址

2.你想花的比特币,要么来自之前别人发给你的比特币,要么是你挖出来的。这样的每一笔钱都称为UTXO(未花费的交易输出)

3.在一个事务中,发送的部分是输入,接受的部分是输出

4.在广播交易时,节点会检查输入是否是真实有效的UTXO(每个节点监控所有UTXO)

5.一旦你使用了一个 UTXO,你必须把它全部花掉。除了给收件人之外,你还可以选择把零钱给你自己的另一个地址,这样就创建了两个新的UTXO

6.每个UTXO都有一个使用条件,即提供地址地址对应的私钥做的签名供识别

7.上一个区块生成后,每个挖矿节点在内存和交易池中删除上一个区块已经打包的交易,将收到但未打包的交易打包,并开始不断计算,试图做一个合格的哈希

8.所有输入BTC减去输出BTC就是矿工的费用

@ >

UTXO的缺点

1.可以表达的状态很少

UTXO 只能是已使用或未使用的状态,没有多阶段合约或需要任何其他内部状态的脚本的空间,这意味着 UTXO 只能用于构建简单的一次性合约十年前的比特币账户,UTXO 是更像是一个二进制控件

2.区块链盲目性

UTXO的脚本只能看到自己的历史轨迹,看不到区块链的数据全貌,导致功能扩展受限,需要在花费比特币的过程中仔细组合UTXO,这也导致复杂的系统状态逻辑,不适合设计智能合约的基础架构

3.价值盲目

基于账户模型的余额在消费过程中可以任意按值访问,只依赖于程序可以表示的最小精度UTXO脚本无法提供非常精细的金额控制。 2 UTXO 要求必须进行所有移动。如果要达到目标值量,对组合UTXO算法的要求会比较高。使用了许多不同面额的UTXO,并且要求方面尽可能准确。另外,要求输入输出的数量尽量少

比特币交易构成

p>

一笔交易包括:

1.版本号

表示事务使用了哪些函数

2.输入

定义将花费哪些硬币

3.输出

定义硬币的去向

4.时间锁

定义交易何时生效

比特币交易的输入内容:

每个输入包含四个字段:

1.父交易ID:每个交易都有一个哈希值用于索引交易

2.父交易的输出字段:该交易中UTXO的输出序号

3.签名脚本:UTXO的解锁脚本,主要是签名和公钥

4.序列号

比特币交易的输出内容:

每个输出包含两个字段:

金额和公钥脚本

金额字段是以 satoshis 传输的比特币数量,以小端序排列

公钥脚本,加锁脚本(加锁脚本,主要是公钥哈希值+签名验证脚本只有提供解锁脚本(主要是公钥本身+签名值)才​​能解锁和使用。公钥脚本为类似于签名脚本。可以理解为锁定接收者的盒子,只能通过钥匙掌握。接收者打开。

比特币交易时间锁定

在大多数事务中,设置为0表示立即执行

如果每个输入的序号全部为ffffffff,则时间锁不生效

时间锁按小端顺序占用4个字节

在实践中,时间锁的主要问题:

1.时间锁到期后,无法保证交易执行,可能手续费不够

2.交易的发起者可以使用相应的输入,在锁期结束前让交易成功上链,有时间锁的交易会在时间锁到期后变成无效交易

为什么比特币全节点这么少?

每个用户有一个节点吗?

不是,矿场、矿池等机构的存在

节点的维护不是免费的,所有节点都需要加载所有历史数据,这意味着会消耗大量的硬盘空间、带宽、电力、时间、能源等,比特币专业用户(矿、专业人士、交易所、大商户、比特币服务商),有实力和动力维持至少一个优质节点

有意见认为:低速节点是有害的,浪费网络资源十年前的比特币账户,对安全没有实质性帮助(用完关机就像吸血一样);只有高速、专业的节点才有利于比特币网络