`

比特币脚本

 
阅读更多
每个比特币交易都有一个或多个输入和输出,每个输入或输出都有一个小的纯函数与之相关联,称为脚本,脚本可以包含简化形式交易的签名.

https://blog.csdn.net/ITleaks/article/details/79921693

脚本包含两个部分:一个签名和一个公钥,证明原地址的真正所有者创建了该支付交易
公钥:属于交易输出的收款人,表明交易创建者允许收款人获得的输出金额
ECDSA签名:对交易的Hash值进行ECDSA签名而得到的.


1.脚本是区块链上实现自动验证,自动执行合约的重要技术

2.比特币的脚本语言非常小,只能有256个指令,每个指令是一个字节长.这256个指令中,75个是保留指令,15个已废弃.

3.每一笔交易的每一项输出严格意义并不是指向一个地址,而是指向一个脚本,脚本类似一套规则,它约束接收方怎样才能花掉这个输出上锁定的资产

4.交易的合法性验证也依赖于脚本.目前它依赖于两类脚本:锁定脚本和解锁脚本

5.锁定脚本(Pubkey script):在输出交易上加上的条件,通过一段脚本语言来实现,位于交易的输出

6.解锁脚本(Signature script):只要满足锁定脚本要求的条件,才能花掉这个脚本上对应的资产,位于交易的输入

7.脚本引擎是检验交易的运算平台,可对解锁脚本和锁定脚本进行自动执行校验,另外脚本引擎也可以用来实现合约,像以太坊()EVM)实际上可以看成是比特币脚本引擎的扩展,它增加了图灵完备的运算能力

比特币的脚本主要有两种:
P2PKH(Pay-to-Public-Key-Hash):支付给公钥的哈希地址,接收方只需要使用地址对应的私钥对该输出进行签名,即可花掉该输出

P2SH(Pay-to-Script-Hash):支付脚本的哈希.以多重签名来举例,它要求该输出要有N把私钥中的M把私钥(M<=N)同时签名才能花掉该资产

OP_DUP:将堆栈头上的内容复制一份并压入堆栈

OP_HASH160;弹出堆栈头内容,先用SHA256对其做哈希处理,再用RIPEMD-160对结果做第二次哈希处理,结果压入堆栈

OP_EQUALVERIFY:弹出堆栈头的两项内容,如果两个内容一样,返回"真"值;否则返回"假"值

OP_CHECKSIG:用输入的公钥检查输入的签名,如果签名符合,返回"真"值,否则返回"假"值

OP_CHECKMULTISIG:用提供的多个公钥检查多重签名的正确性


脚本执行就是解释脚本内容,涉及读取脚本中的数据到堆栈stack, 读取stack的内容,生成数据并写入stack
1)largedata数据获取指令 OP_PUSHDATA4 [F0][00][00][E0] :
    脚本执行函数读取第一个字节,发现是OP_PUSHDATA4指令,便知道接下来4个字节空间存储的是数据的大小信息,于是取接下来的4个字节,拼接为一个32位数字,然后就知道数据的长度N,紧接着取N个字节放置到stack,这N个字节就是数据的内容

2)sig数据获取指令 [0F] <sig>:
    上一个操作执行完成后,执行函数又读取一个字节,发现是0F, 不是任何合法指令便认为是数据的大小信息,于是读取接下来16个字节的内容作为数据并

3)复制数据指令OP_DUP:
    上一个操作执行完成后,执行函数又读取一个字节,发现是OP_DUP, 该指令的规则是读取stack栈顶的数据并复制一份压入栈顶
分享到:
评论

相关推荐

    黄金加密锁

    黄金加密锁,支持五种加密算法。可随时解密,支持所有文件!

    PyPI 官网下载 | pybitcointools-1.1.15.tar.gz

    3. **脚本解析与构建**:库提供了解析和构建比特币脚本的功能,这对于理解交易逻辑和实现自定义智能合约至关重要。 4. **区块和交易信息处理**:pybitcointools能解析区块数据和交易详情,帮助开发者获取和分析比特...

    7 高级交易和脚本1

    时间锁是比特币脚本中引入的一种机制,它为交易添加了时间限制。两种主要的时间锁类型是 relative timelocks 和 absolute timelocks。Relative timelocks(相对时间锁)如 CHECKLOCKTIMEVERIFY (CLTV) 操作码,基于...

    bitcoinlib

    6. **脚本操作**:库内包含了对比特币脚本的操作,允许开发者编写和执行智能合约,这对于理解比特币的脚本系统及其在加密货币中的应用至关重要。 7. **钱包功能**:bitcoinlib还支持钱包的创建和管理,包括私钥的...

    前端开源库-bip65

    它引入了一种新的操作码(opcode)— OP_CHECKLOCKTIMEVERIFY(CLTV),用于在比特币脚本中实现交易的绝对锁定时间。CLTV的目的是为了增强比特币网络的安全性,防止某些恶意行为,如交易双花攻击。在BIP65之前,比特...

    比特币0.9.2版编译中文手册.pdf

    接着,安装perl系统,因为在比特币的编译过程中需要用到perl脚本。你可以从ActiveState官网下载ActivePerl的安装程序并安装。确保在安装过程中选择添加perl到系统路径。 随后,安装Python环境,因为比特币的编译也...

    前端开源库-bip65.zip

    BIP65本身是关于比特币脚本语言的一个变更,具体是引入了OP_CHECKLOCKTIMEVERIFY(CLTV)操作码。CLTV允许比特币交易设置一个时间锁,确保交易在特定时间之后才能被确认,这有助于防止某些类型的攻击,如“延展攻击...

    比特币隐私保护协议ValueShuffle:兼容保密交易的全面混合方案-可实现的-有问题请联系博主,博主会第一时间回复!!!

    ValueShuffle 是第一个与比特币拟议的 Confidential Transactions (CT) 兼容的 P2P 币混协议。它通过结合 CoinJoin、Stealth Addresses 和 CT,确保了参与者的匿名性和支付金额的机密性。此外,ValueShuffle 不需要...

    基于Python开发的轻量级比特币客户端Electrum源码分析

    该项目是一款基于Python的轻量级比特币客户端Electrum,由824个文件构成,涵盖333个Python源代码文件、121个QML界面文件、115个PNG图片文件、36个Shell脚本文件等。Electrum以其纯Python架构和高效性能,为用户提供...

    bitcoin源码分析文档

    在 Bitcoin 中,BIP(Bitcoin Improvement Proposal)是介绍比特币特性和信息的设计文档,由于比特币没有正式结构,BIP 是沟通想法的标准方式。BIP141、BIP 和 BIP147 是一些重要的 BIP。 数据结构 Bitcoin 源码...

    我们为什么做TPUSD

    ### 比特币技术的发展及其生态挑战 #### 一、比特币技术的演进与突破 自2009年诞生以来,比特币以其开创性的区块链技术引领了金融行业的革新。区块链技术不仅带来了分布式账本的概念,还通过去中心化、公开透明等...

    以太坊白皮书(以太坊:下一代智能合约和去中心化应用平台)中文版

    文件格式:PDF ...比特币的脚本语言不支持循环语句,会导致脚本空间利用上的低效率。以太坊技术拥有图灵完备的编程语言。 任何人都可以参与 以太坊允许任何人在它的公链上建立智能合约和去中心化应用程序。

    精选的可自动执行任务的优秀 Python 脚本列表 .zip

    马修斯附件唯一邮件 阿纳夫·丹德卡自动日历 JA埃尔南德斯自动电子邮件 苏维吉亚电池通知 克里希纳·夏尔马Better_CSV_Storage 巴尔加夫·库瓦迪亚比特币价格图形用户界面 (GUI) 阿米鲁·阿布CLI 计算器 威廉·...

    dotnet-BCCSpliter用于从BCC发送拆分BTC的命令行工具

    "dotnet-BCCSpliter用于从BCC发送拆分BTC的命令行工具" 这个标题表明这是一个基于.NET框架的命令行工具,名为BCCSpliter,其主要功能是处理比特币现金(BCC,也称为Bitcoin Cash)的拆分,并能将这些资产转换或发送...

    用impress.js做的关于bitcoin演示稿ppt动画效果下载

    【标题】"用impress.js做的关于bitcoin演示稿ppt动画效果下载" 提示我们这个压缩包内包含一个使用impress.js技术制作的比特币(Bitcoin)主题的演示文稿,其中运用了丰富的动画效果来增强讲解的生动性。impress.js是...

    Python库 | coincurve-15.0.0-cp36-cp36m-manylinux2010_i686.whl

    4. **ScriptPubKey与ScriptSig**:Coincurve也支持构造和解析比特币交易脚本,这是比特币交易验证的重要组成部分。 Coincurve库的使用,大大简化了开发者处理比特币相关问题的复杂度,使得Python成为开发比特币应用...

    侧链、驱动链和Rootstock双向挂钩设计(英文)1

    混合方法结合了侧链和驱动链的特点,例如,使用特定操作码或图灵完备脚本在比特币侧实现的侧链,或者利用反射和图灵完备脚本的实现。这些混合方法旨在平衡安全性、效率和去中心化程度。 在评估这些设计时,我们...

    PyPI 官网下载 | bitcoinfees-0.0.0.1.tar.gz

    此库可能提供了实时获取比特币交易费用的API接口,帮助开发者在构建与比特币相关的应用时,能准确估计交易成本,从而优化交易策略。 “bitcoinfees-0.0.0.1.tar.gz”是一个归档文件,采用tar.gz格式,这是Unix/...

    cpp-WANNAFIX是一个缓解最近WANNACRYRansomware攻击的脚本

    一旦成功利用,WANNACRY会加密受害者计算机上的文件,并在屏幕上显示一个赎金通知,要求支付比特币以换取解密密钥。 **WANNAFIX脚本的作用** WANNAFIX脚本的主要目标是对抗WANNACRY的传播和影响。它可能包含以下...

    Wicked Cool Shell Scripts

    9. 比特币和其他货币相关的脚本:作者有一个比特币地址信息检索器,说明书中可能包含金融数据处理的脚本。 10. 系统安全:可能包含一些简单的安全脚本,比如检查系统漏洞、安全日志分析等。 需要注意的是,由于...

Global site tag (gtag.js) - Google Analytics