Home
Write
Language
Login
zerodot618
@39696134
08-BTC-脚本
编程
2022-12-06 02:56
Words count: 9239
北京大学公开课《区块链技术于应用》笔记,由肖臻老师讲授,主要讲解区块链的基本概念和实现原理。

交易实例

10421047-bb1b9a5878e88c74.png
上图是比特币的一个交易实例。该交易有一个输入两个输出。左上角写着 Output,其实是这个交易的输入。右边两个输出,上面 Unspent 即没有花出,下面 Spent 表示已花出。该交易已经收到了 23 个确认,所以回滚的可能性很小了。

下面是这个交易的输入输出脚本,输入脚本包含两个操作,分别把两个很长的数压入栈里。比特币使用的脚本语言是非常简单的,唯一能访问的内存空间就是一个堆栈。不像通用的编程语言,像 C 语言 C++那样有全局变量、局部变量、动态分配的内存空间,它在这里就是一个栈,所以叫做基于栈的语言。这里输出脚本有两行,分别对应上面的两个输出。每个输出有自己单独的一段脚本。

交易结构

10421047-428b7f06a13c8fa7.png
上图是交易结构的具体内容。首先看一下交易的一些宏观信息:

  • txid - transaction ID,交易ID。
  • hash - 该交易的哈希值。
  • version - 使用的比特币协议的版本。
  • size - 该交易的大小。
  • locktime - 用来设定交易的生效时间。此处的 0 表示立即生效。绝大多数情况下,locktime 都是 0。如果是非零值,那么该交易要过一段时间才能生效。比如要等 10 个区块以后才能被写入区块链里。
  • vin、vout - 是输入输出部分,下面会详细讲解。
  • blockhash - 是这个交易所在区块的哈希值。
  • confirmations - 该交易已经有多少个确认信息。
  • time - 是交易产生的时间。
  • blocktime - 是这个区块产生的时间。(time 和 block time 都是指很早的一个时间到现在过了多 少秒)

交易的输入

10421047-cad3613f8f337e83.png
上图是交易的输入结构,是一个数组结构。意味着,一个交易可以有多个输入,在这个例子中只有一个输入。每个输入都要说明该输入花的币是来自之前哪个交易的输出,所以前两行给出输出币的来源。

  • txid - 表示之前交易的哈希值。
  • vout - 表示之前交易里的第几个输出。所以这里表示花的币来自于哈希值为 c0cb...c57b 的交易中第 0 个输出。
  • scriptSig:表示输入脚本,输入脚本最简单的形式就是给出 signification 就行了,证明你有权利花这个钱。下文中 scriptSig 就写成 input script(输入脚本)。如果一个交易有多个输入,每个输入都要说明币的来源,并且要给出签名,也就是说比特币中的一个交易可能需要多个签名。
- 90.0 % More to go -
Pay 0.0000060 BTC (≈$0.7309) to continue reading
and receive early reader revenue (Rules)
This post is a virtural product selling on Quill, IT WILL NOT REFUND once paid. Please pay with caution.
Pay to Read
Already paid? Try to Login
0 0
0 times bought
•
0 times reward
Comments 0
zerodot618
@39696134
Subscribing: 0 Subscribers: 2
Subscribe
Related Posts
Defi乐高之借贷协议(2)--MarginFi 隐身3个月通关编程实战项目,升级进取型思维分享。 macOS系统多开Google Chrome浏览器 从小白到科学家(二)之脱胎换骨 Invoke the closed source contract tutorial with MetaMask
Rules Stats Help Github Twitter Discord

Login

Read, write, and earn crypto rewards.

Connect Wallet
zerodot618
@39696134
Subscribing: 0 Subscribers: 2
Subscribe
Related Posts
Defi乐高之借贷协议(2)--MarginFi 隐身3个月通关编程实战项目,升级进取型思维分享。 macOS系统多开Google Chrome浏览器 从小白到科学家(二)之脱胎换骨 Invoke the closed source contract tutorial with MetaMask
Rules Stats Help Github Twitter Discord