文档章节

比特币的交易实例详述

LoSingSang
 LoSingSang
发布于 01/24 14:13
字数 1126
阅读 2
收藏 0

如需转载请注明出处https://my.oschina.net/feistel/blog/3005387

 

比特币的使用,实际上是发起一项交易的过程。
发布一项交易,有比特币区块链节点进行验证,并记录,当记录到一定数量(一般2000至3000个交易)时,将其打包成一个块(1MB大小),放进区块链中,那么该笔交易被比特币区块链所有节点(后面简称节点)所承认。

对于一笔交易形如(通常使用P2PKH类型):(后面有人话表述)

{
    "version": 1,
    "locktime": 0,
    "vin": [{
        "txid": "7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18",
        "vout": 0,
        "scriptSig": "3045022100884d142d86652a3f47ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e381301 0484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789 d172787ec3457eee41c04f4938de5cc17b4a10fa336a8d752adf",
        "sequence": 4294967295
    }],
    "vout": [{
            "value": 0.01500000,
            "scriptPubKey": "OP_DUP OP_HASH160 ab68025513c3dbd2f7b92a94e0581f5d50f654e7 OP_EQUALVERIFY OP_CHECKSIG "
        },
        {
            "value": 0.08450000,
            "scriptPubKey": "OP_DUP OP_HASH160 7f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a8 OP_EQUALVERIFY OP_CHECKSIG "
        }
    ]
}

txid:锁使用的 UTXO 的交易,未花费的交易输出:部分余额。用户所有的UTXO才是钱包“余额”。
vout:标识来自该交易的哪个 UTXO 被引用
scriptSig:解锁脚本,作用,它将允许输出(UTXO)被消费,形如<Signature> <公钥>
sequence:序列号

value:量
scriptPubKey:锁定脚本,更一般地说,它是一个加密难题,形如OP_DUP OP_HASH160 <公钥哈希> OP_EQUALVERIFY OP_CHECKSIG,上述:ab68025513c3dbd2f7b92a94e0581f5d50f654e7:表示公钥哈希。锁定脚本的作用是,设定成只有 比特币地址的公钥哈希值 才能使用这笔输出。

锁定脚本中:
OP_DUP,复制栈顶
OP_HASH160,计算栈顶公钥的公钥哈希值
OP_EQUALVERIFY,判断该公钥哈希是否是txid中锁定的公钥哈希,得到true或false
OP_CHECKSIG,检查用交易人的签名验证该公钥是否是他本人的

在交易传递到临近的节点前,每一个收到交易的比特币节点将会首先验证该交易,这将确保只有有效的交易才会 在网络中传播,而无效的交易将会在第一个节点处被废弃。

上述交易中的意思,用人话来说:
1.我用上次别人给我的钱txid作为我要使用的钱来买东西,我本次发起的交易称为 当前交易 ,此时比特币区块链的节点(简称节点)就会搜索该txid的交易,称为 上次交易 ,也就是上次谁给他钱的交易,看看是不是真的有这笔交易。
2.找到有这个交易后,用本次交易的公钥经过 RIPEMD160(SHA256(公钥)) 计算得到公钥哈希(即OP_HASH160操作),与上次交易中锁定脚本中的公钥哈希对比,看看是不是一样的,锁定脚本的意思就是把钱锁定(发给)这个公钥哈希上。
3.如果是一样的,节点认为该公钥哈希上确实有“未花费完的钱”,即OP_EQUALVERIFY操作。但是节点还不能确定我就是节点的持有人。
4.此时就需要OP_CHECKSIG阶段,签名和验证使用ECC的ECDSA算法。使用我的私钥+某个消息(可以是txid)进行ECDSA签名得到Signature,节点就拿着我的公钥+该某个消息进行ECDSA验证得到的结果与Signature对比,如果一致,节点就认为我拥有该公钥的控制权,我就是本人。此处ECDSA过程并非如此简单,涉及随机数k,签名值R、S等等,我只按照RSA简单的方式描述签名和验证的过程。
5.节点根据我的“余额”,判断我是否能够产生输出,即支付和找零。
6.如果能支付,则将交易量(钱),锁定到对方的公钥哈希上;并且剩余的钱锁定到自己的公钥哈希上,即找零。支付量 + 找零量 < 该txid量,差值为旷工费,旷工根据多少,按优先级处理成交的时间。
7.此次交易结束。

上述脚本的意思是,我发布一个交易,节点需要怎么做,都写在脚本中,而不需要节点问我一个,我回节点一个。脚本运行在堆栈中,是一个非图灵完备的系统,防止制造死循环,定时炸弹等攻击。

堆栈处理脚本过程:

参考:https://my.oschina.net/feistel/blog/3005399

如需转载请注明出处https://my.oschina.net/feistel/blog/3005387

© 著作权归作者所有

共有 人打赏支持
LoSingSang
粉丝 3
博文 62
码字总数 29869
作品 0
深圳
程序员
私信 提问
最危险的开源项目——比特币

一时间,关于比特币的信息充斥着互联网的各个角落,11月19日上午,比特币的价格又如同做了次过山车,最高触及900美元的高价,然后在30分钟内跌到 了650美元,但这仍然比18日的最高价569美元上...

oschina
2013/11/20
13.4K
81
区块链 100 讲:UTXO-你的比特币钱包里永远没有钱

比特币交易,是比特币系统中最重要的部分,在比特币交易过程中,有一个词经常被提及“UTXO”,有一种说法:你的比特币钱包里永远没有钱,但能拥有支配钱的权力。 如果有人告诉你,比特币世界...

yanyan
2018/07/10
0
0
比特币虚拟资产系统开发技术的过程详解

对于比特币虚拟资产系统开发(+V信ruiec2723)技术大家并不陌生,从2009年开始比特币这个词语就开始走向我们的大脑,记得那个时候大家都不以为意,10000比特币买披萨的事情到现在都会让很多人...

数字资产先生
2018/05/14
0
0
比特币现金(BCH)和比特币(BTC)之争到底在争些什么?

自2017年8月1日比特币现金(BCH)诞生以来,比特币现金(BCH)就经常被拿来和比特币做对比。许多人认为比特币现金(BCH)是比特币的直接竞争对手。随着比特币现金(BCH)不断的发展强大,比特币现金(...

lpy411
2018/05/25
0
0
BTC上涨是因它而起吗? | 比特币ETF

昨天路可对这次BTC上涨背后的诸多原因做了解释。但是,后台有币友提出少了一个原因:比特币ETF。 对于比特币ETF,我想许多币友应该还是很模糊的。所以,这篇文章主要向币友讲解一下有关比特币...

路可比特
2018/08/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Httpd 整合 Tomcat 步骤

环境:Tomcat8 + Httpd2.4 工作原理:借助于Tomcat的AJP连接器实现Apache与Tomcat的通信 配置步骤: 1. 配置httpd.conf 新增: Include conf/extra/mod_jk.conf 修改:添加 index.jsp <IfM...

ZeroneLove
昨天
1
0
Docker笔记3——容器命令(未写完,明天整理接着写)

未写完,明天整理接着写 新建并启动容器 docker run docker run [OPTIONS] IMAGE [COMMEND] [ARG...] OPTIONS: --name=[容器新名字] :为容器指定一个名称 -d:后台运行容器,并返回容器ID,...

HappyBKs
昨天
1
0
2018个人年终总结

感谢领导的信任和指导,新的一年获得了很多成长和提高,改掉了很多不好的习惯。 在这一年里,我在领导的帮助下,主要完成了以下功能: 1、完成上海银行版本投资营销相关功能的开发。 2、完成车...

万山红遍
昨天
12
0
保密工作与linux系统的发展

保密工作从性质上可以分成商业方面的保密和国家安全方面的保密。由于自己从事的是IT方面的工作,工作中必然会接触涉及到计算机信息方面的相关文件。加上单位已近通过武器装备科研生产单位二级...

linux-tao
昨天
3
0
Spark共享变量

概述 Spark程序的大部分操作都是RDD操作,通过传入函数给RDD操作函数来计算。这些函数在不同的节点上并发执行,但每个内部的变量有不同的作用域,不能相互访问,所以有时会不太方便,Spark提...

仟昭
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部