- 浏览: 769641 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
每个比特币交易都有一个或多个输入和输出,每个输入或输出都有一个小的纯函数与之相关联,称为脚本,脚本可以包含简化形式交易的签名.
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栈顶的数据并复制一份压入栈顶
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栈顶的数据并复制一份压入栈顶
发表评论
-
chaintips
2019-07-02 09:07 3181.invalid 该分支包含至少一块无效区块。 2.head ... -
比特币RPC
2019-02-13 08:10 401代码详解:https://mistydew.github.io ... -
比特币命令行参数
2019-02-03 09:04 429-?:提示常用的命令行参数并退出 -version:打印版本然 ... -
比特币消息类型
2019-01-27 09:28 6321.VERSION:当主动连接上对方时,发送version消息 ... -
外带数据
2019-01-07 08:08 405外带数据:保存在区块链但不进行货币交易的信息,比如需要永久保存 ... -
watch-only 地址
2019-01-06 16:34 476watch-only 地址:监控某一个地址,只能看不能花,相当 ... -
签名模式
2019-01-05 09:24 737交易的签名方式可以通过SIGHASH符号来控制,该符号附加在签 ... -
Script(脚本)字段
2018-12-28 07:57 4621.常见关键字段 OP_0/OP_FA ... -
coinbase交易
2018-12-26 22:14 529coinbase交易:用于凭空产生比特币 1.只有一个输入,该 ... -
根据地址查询私钥
2018-12-26 09:44 698字符串转私钥 1.先将字符串decode base58,获取C ... -
难度值
2018-12-26 07:45 501难度值:它决定了节点需要经过多少次哈希运算才能产生一个合法的区 ... -
即时支付
2018-12-23 16:52 669即时支付:直接发给主节点让主节点快速确认的交易 1.手续费最 ... -
椭圆曲线密码算法
2018-12-21 08:06 694椭圆曲线密码(Elliptic Curve Cryptogra ... -
Merkle树
2018-12-19 21:17 381Merkle哈希数是一类基于 ... -
SHA256
2018-12-19 21:07 538SHA256是构造区块链所用的主要密码哈希函数.无论是区块的头 ... -
比特币交易
2018-12-16 14:16 447交易类型 TX_NONSTANDARD 非标准的交易 TX_P ... -
Bloom过滤器
2018-12-16 09:47 341Bloom filter:是一种节省空间,高效率的数据表示和查 ... -
BerkeleyDB和LevelDB
2018-12-15 08:40 10Berkeley DB:作为比特币的钱包数据库(存储walle ... -
BerkeleyDB和LevelDB
2018-12-15 08:40 1974Berkeley DB:作为比特币的钱包数据库(存储walle ... -
P2P消息通信
2018-12-12 23:23 3001.启动的时间先与程序 ...
相关推荐
黄金加密锁,支持五种加密算法。可随时解密,支持所有文件!
3. **脚本解析与构建**:库提供了解析和构建比特币脚本的功能,这对于理解交易逻辑和实现自定义智能合约至关重要。 4. **区块和交易信息处理**:pybitcointools能解析区块数据和交易详情,帮助开发者获取和分析比特...
时间锁是比特币脚本中引入的一种机制,它为交易添加了时间限制。两种主要的时间锁类型是 relative timelocks 和 absolute timelocks。Relative timelocks(相对时间锁)如 CHECKLOCKTIMEVERIFY (CLTV) 操作码,基于...
6. **脚本操作**:库内包含了对比特币脚本的操作,允许开发者编写和执行智能合约,这对于理解比特币的脚本系统及其在加密货币中的应用至关重要。 7. **钱包功能**:bitcoinlib还支持钱包的创建和管理,包括私钥的...
它引入了一种新的操作码(opcode)— OP_CHECKLOCKTIMEVERIFY(CLTV),用于在比特币脚本中实现交易的绝对锁定时间。CLTV的目的是为了增强比特币网络的安全性,防止某些恶意行为,如交易双花攻击。在BIP65之前,比特...
接着,安装perl系统,因为在比特币的编译过程中需要用到perl脚本。你可以从ActiveState官网下载ActivePerl的安装程序并安装。确保在安装过程中选择添加perl到系统路径。 随后,安装Python环境,因为比特币的编译也...
BIP65本身是关于比特币脚本语言的一个变更,具体是引入了OP_CHECKLOCKTIMEVERIFY(CLTV)操作码。CLTV允许比特币交易设置一个时间锁,确保交易在特定时间之后才能被确认,这有助于防止某些类型的攻击,如“延展攻击...
ValueShuffle 是第一个与比特币拟议的 Confidential Transactions (CT) 兼容的 P2P 币混协议。它通过结合 CoinJoin、Stealth Addresses 和 CT,确保了参与者的匿名性和支付金额的机密性。此外,ValueShuffle 不需要...
该项目是一款基于Python的轻量级比特币客户端Electrum,由824个文件构成,涵盖333个Python源代码文件、121个QML界面文件、115个PNG图片文件、36个Shell脚本文件等。Electrum以其纯Python架构和高效性能,为用户提供...
在 Bitcoin 中,BIP(Bitcoin Improvement Proposal)是介绍比特币特性和信息的设计文档,由于比特币没有正式结构,BIP 是沟通想法的标准方式。BIP141、BIP 和 BIP147 是一些重要的 BIP。 数据结构 Bitcoin 源码...
### 比特币技术的发展及其生态挑战 #### 一、比特币技术的演进与突破 自2009年诞生以来,比特币以其开创性的区块链技术引领了金融行业的革新。区块链技术不仅带来了分布式账本的概念,还通过去中心化、公开透明等...
文件格式:PDF ...比特币的脚本语言不支持循环语句,会导致脚本空间利用上的低效率。以太坊技术拥有图灵完备的编程语言。 任何人都可以参与 以太坊允许任何人在它的公链上建立智能合约和去中心化应用程序。
马修斯附件唯一邮件 阿纳夫·丹德卡自动日历 JA埃尔南德斯自动电子邮件 苏维吉亚电池通知 克里希纳·夏尔马Better_CSV_Storage 巴尔加夫·库瓦迪亚比特币价格图形用户界面 (GUI) 阿米鲁·阿布CLI 计算器 威廉·...
"dotnet-BCCSpliter用于从BCC发送拆分BTC的命令行工具" 这个标题表明这是一个基于.NET框架的命令行工具,名为BCCSpliter,其主要功能是处理比特币现金(BCC,也称为Bitcoin Cash)的拆分,并能将这些资产转换或发送...
【标题】"用impress.js做的关于bitcoin演示稿ppt动画效果下载" 提示我们这个压缩包内包含一个使用impress.js技术制作的比特币(Bitcoin)主题的演示文稿,其中运用了丰富的动画效果来增强讲解的生动性。impress.js是...
4. **ScriptPubKey与ScriptSig**:Coincurve也支持构造和解析比特币交易脚本,这是比特币交易验证的重要组成部分。 Coincurve库的使用,大大简化了开发者处理比特币相关问题的复杂度,使得Python成为开发比特币应用...
混合方法结合了侧链和驱动链的特点,例如,使用特定操作码或图灵完备脚本在比特币侧实现的侧链,或者利用反射和图灵完备脚本的实现。这些混合方法旨在平衡安全性、效率和去中心化程度。 在评估这些设计时,我们...
此库可能提供了实时获取比特币交易费用的API接口,帮助开发者在构建与比特币相关的应用时,能准确估计交易成本,从而优化交易策略。 “bitcoinfees-0.0.0.1.tar.gz”是一个归档文件,采用tar.gz格式,这是Unix/...
一旦成功利用,WANNACRY会加密受害者计算机上的文件,并在屏幕上显示一个赎金通知,要求支付比特币以换取解密密钥。 **WANNAFIX脚本的作用** WANNAFIX脚本的主要目标是对抗WANNACRY的传播和影响。它可能包含以下...
9. 比特币和其他货币相关的脚本:作者有一个比特币地址信息检索器,说明书中可能包含金融数据处理的脚本。 10. 系统安全:可能包含一些简单的安全脚本,比如检查系统漏洞、安全日志分析等。 需要注意的是,由于...