zoukankan      html  css  js  c++  java
  • 区块链学习(3)交易(一)

    比特币中最吸引人的应该就是去中心化了,而交易是比特币系统中最重要的部分,先看下中心化的交易和去中心化的交易的区别。

    中心化的转账流程:Alice需要转账给Bob200人民币。由A银行计算手续费和检查Alice的状态并查看Alice的账户余额是否大于200+手续费接着A银行扣除手续费后将200人民币转到人行,由人行将钱转到B银行,接着B银行检查B的账户状态正常之后转账给Bob。下面再看看去中心化的比特币的转账。

    首先Alice向运行在全球众多节点上的区块链网络发送请求,矿工进行交易验证并打包在一个区块内,通过算力竞争,矿工Tom获得了记账权。接着由其他矿工对Tom的工作量进行确认,当多数矿工确认Tom就会获得比特币的奖励,Alice的交易就会连接到区块链上,最后Bob就会收到转账的比特币。接下来再具体看看比特币的交易

    比特币交易的本质是数据结构,这些数据结构中含有比特币交易参与者价值转移的相关信息。比特币区块链是全球分布式记账总账簿,每个比特币交易都是在比特币区块链上的一个公开记录。不管是支付宝还是其他的一些支付工具都仅仅是信息的交换,而比特币算是真正实现了价值在互联网上的流动。

    交易结构

    比特币交易是一个含有输入值和输出值的数据结构,比特币交易的基本单位是未经使用的一个交易输出(Unspent Transaction Output),简称UTXO。在比特币的世界里既没有账户,也没有余额,只有分散到区块链里的UTXO。当一个用户接收比特币时,金额被当作UTXO记录到区块链里。这样,一个用户的比特币会被当作UTXO分散到数百个交易和数百个区块中。而需要支付时钱包就会扫描区块链并合并所有用户的 UTXO。 前面已经说了UTXO是不可分割的,这就表明了在支付时UTXO会被当做一个整体消费掉。这时多余的比特币就会产生找零。比如你有20比特币的UTXO,去购买1比特币的咖啡,这笔交易必须消耗掉整个20比特币的UTXO并且产生两个输出:一个是支付了1比特币购买咖啡,另一个是支付19比特币的找零。被交易消耗的UTXO被称为交易输入,由交易创建的UTXO被称为交易输出。通过这种方式,一定量的比特币在不同所有者之间转移,并在交易链中消耗和创建UTXO。通过这种输入输出的方式就形成了交易链。下图的vin便是输入,vout就是输出。输入中的txid是指向交易包含的被花费的UTXO的哈希指针,scriptsig是解锁脚本,输出中的value代表了输出到这个地址的比特币的金额。scriptPubkey是锁定脚本。

    大多数交易包含交易费,交易费基于交易的尺寸,用千字节来计算,而不是比特币的价值。交易费高的交易,会有更高的交易处理的优先级。而交易费不足或者没有交易费的交易可能会被推迟,但交易费不是强制的。

    所以,其实并没有什么比特币,只有 UTXO。当我们说 Alice有20 个比特币的时候,实际上是说,当前区块链账本中,有若干笔交易的 UTXO 项收款人写的是Alice的地址,而这些 UTXO 项的数额总和是 20。

  • 相关阅读:
    MBR:How It Works Master Boot Record
    查看系统信息命令:uname
    随笔:Highcharts学习笔记
    关于邮箱模板样式设计的一些思考
    Android学习笔记之环境搭建
    [转]简要分析Ogre渲染队列的实现原理(一)
    [转]Improving link time with IncrediBuild,减少联合编译器的链接是时间
    [转]目前游戏行业内部主要几款游戏引擎的技术对比
    [转]行程编码(Run Length Encoding)和算术编码
    [转]简要分析Ogre的渲染队列实现原理(二)
  • 原文地址:https://www.cnblogs.com/mambakb/p/9597513.html
Copyright © 2011-2022 走看看