bips/bip-0ZZZ.mediawiki,位于 vault · jl2012/bips

  • jl2012
  • 发布于 2025-03-28 22:18
  • 阅读 19

该 BIP 提议在 Merklized Script Version 0 中引入一个新的操作码 OP_PUSHTXDATA,允许智能合约访问交易的各种数据,如输入索引、交易费用、版本号、锁定时间以及输入输出的详细信息。这为实现更复杂的 covenant 和 vault 机制提供了基础。

跳至内容

jl2012/ bips Public

forked from bitcoin/bips

折叠文件树

文件

vault

搜索此仓库

/

bip-0ZZZ.mediawiki

复制路径

BlameMore 文件操作

BlameMore 文件操作

最近提交

jl2012jl2012

更新 BIP114 并添加与 Merklized Script Version 0 相关的 BIP

2017年9月8日

ce4a698 · 2017年9月8日

历史

历史

打开提交详情

查看此文件的提交历史。

144 行 (122 loc) · 4.89 KB

/

bip-0ZZZ.mediawiki

顶部

文件元数据和控制

  • 预览

  • 代码

  • Blame

144 行 (122 loc) · 4.89 KB

Raw

复制原始文件

下载原始文件

目录

编辑和原始操作

  BIP: ZZZ
  Layer: Consensus (soft fork)
  Title: OP_PUSHTXDATA
  Author: Johnson Lau <jl2012@xbt.hk>
  Comments-Summary: No comments yet.
  Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0ZZZ
  Status: Draft
  Type: Standards Track
  Created: 2017-07-19
  License: BSD-3-Clause
           CC0-1.0
## 目录<br>Permalink: 目录<br>- 摘要<br>- 动机<br>- 规范<br>- 原理<br>- 示例<br>- 向后兼容性<br>- 部署<br>- 参考实现<br>- 致谢<br>- 参考文献<br>- 版权

摘要

Permalink: 摘要

此 BIP 在 Merklized Script Version 0 中定义了一个新的操作 OP_PUSHTXDATA

动机

Permalink: 动机

Covenant: 输出必须遵循预先指定的模式

Vault: 需要一个额外的步骤来花费深度冷存储

微调的交易签名,例如“费用必须至少为每重量单位 100 satoshis”,“输出数量不得大于输入数量”,“仅签署 2 个输出”,“输出 X 和 Y 的值不得相同”

(待完成)

规范

Permalink: 规范

以下规范适用于 MSV0scriptKeyCode,以及 MSV0P2WPKV0scriptWitCode

定义了一个新的操作 OP_PUSHTXDATA,其值为 0xbb。 顶部堆栈项 必须 是一个从 0 到 15 的 CScriptNum,否则评估失败。 该值确定要推送的 TXDATA 的类型。 如果 TXDATA 类型小于 10,则从堆栈中删除它,并将单个值返回到堆栈顶部。 所有返回的值都是 CScriptNum

TXDATA 类型 名称 返回到堆栈的值
0 TXDATA_THIS_VIN_INDEX 当前输入的索引
1 TXDATA_VIN_SIZE 交易中的输入数量
2 TXDATA_VOUT_SIZE 交易中的输出数量
3 TXDATA_THIS_VIN_VALUE 当前输入的值(以 satoshi 为单位)
4 TXDATA_FEE 交易支付的费用(以 satoshi 为单位)
5 TXDATA_VERSION 交易 nVersion 转换为无符号整数
6 TXDATA_LOCKTIME 交易 nLockTime
7 TXDATA_BASE_SIZE 没有见证序列化的交易大小(以字节为单位)
8 TXDATA_TOTAL_SIZE 带有见证序列化的交易大小(以字节为单位)
9 TXDATA_WEIGHT 交易权重

如果 TXDATA 类型大于或等于 10,则第二个最高的堆栈项是一个 CScriptNum,用于确定 index。 如果 index 值小于 -1,脚本 必须 失败。 如果 index 值为 -1,则将其评估为当前输入的索引。 删除顶部两个堆栈项,并根据 TXDATA 类型和 index 将一个或多个项返回到堆栈。 如果指定的输入或输出不存在,脚本 必须 失败。

TXDATA 类型 名称 第一个返回值 第二个返回值 第三个返回值
10 TXDATA_VIN_PREVOUT 指定输入的 prevout 哈希 指定输入的 prevout 索引
11 TXDATA_VIN_SEQUENCE 指定输入的 nSequence
12 TXDATA_VIN 指定输入的 prevout 哈希 指定输入的 prevout 索引 指定输入的 nSequence
13 TXDATA_VOUT_VALUE 指定输出的值
14 TXDATA_VOUT_SCRIPTPUBKEY 指定输出的 scriptPubKey
15 TXDATA_VOUT 指定输出的值(以 satoshi 为单位) 指定输出的 scriptPubKey

例如,如果类型是 TXDATA_VIN,则从堆栈中删除 2 个项目,并将 3 个项目返回到堆栈,其中 nSequence 作为最终的顶部堆栈值。

prevout 索引,nSequence 和输出值作为 &lt;code>CScriptNum 返回。 prevout 哈希作为 32 字节的小端值返回,具有与交易序列化中使用的相同字节序列。 scriptPubKey 作为实际脚本返回。 例如,如果 scriptPubKeyP2WSH,则返回的向量大小为 34 字节(0x0020{32 bytes hash})。 如果 scriptPubKey 的大小大于 520 字节,则脚本 必须 失败。

原理

Permalink: 原理

示例

Permalink: 示例

向后兼容性

Permalink: 向后兼容性

作为软分叉,旧软件将继续运行而无需修改。 但是,未升级的节点会将 MSV0P2WPKV0 程序视为任何人都可以花费的脚本。

部署

Permalink: 部署

具体细节待定。

参考实现

Permalink: 参考实现

https://github.com/jl2012/bitcoin/commits/vault

致谢

Permalink: 致谢

参考文献

Permalink: 参考文献

版权

Permalink: 版权

本文档根据 BSD 3-clause 和 Creative Commons CC0 1.0 Universal 双重许可。

  • 原文链接: github.com/jl2012/bips/b...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
jl2012
jl2012
江湖只有他的大名,没有他的介绍。