比特币的TxHash为什么会发生改变
比特币中TxHash为什么会变化?
一直不理解比特币的Tx在被打包确认之前TxHash为什么会发生变化,这次终于找到了依据.
交易可延展性
虽然交易签名后,签名当前不会覆盖经过哈希处理以创建事务哈希的事务中的所有数据。因此,虽然不常见,但网络上的节点可能会以散列无效的方式更改您发送的事务。请注意,这只会更改哈希值; 交易的输出保持不变,比特币将转到他们的预期收件人。然而,这确实意味着,例如,在任何情况下接受一系列确认块数不够的交易是不安全的,因为后来的交易将取决于先前交易的哈希值,并且这些哈希值可以被更改,直到它们在链上被确认为止。
签名可延展性
可延展性的第一种形式是签名本身。每个签名都只有一个DER编码的ASN.1八位位组表示,但OpenSSL不会强制执行此操作,只要签名没有严重错误,它就会被接受。[1]此外,对于每个ECDSA签名(r,s),签名(r,-s(mod N))是同一消息的有效签名。[2]
从块363724开始,BIP66软分叉使得块链中的所有新事务都必须严格遵循DER编码的ASN.1标准。目前仍在努力关闭DER签名中其他可能的延展性。
任何有权访问相应私钥的人都可以更改签名。 这句话的意思是私钥拥有者对同一笔交易反复签名,他们每次签名都不一样,但是都是有效的.
scriptSig Malleability
比特币中使用的签名算法不会签署全部的scriptSig来创建签名。虽然签署整个scriptSig是不可能的 - 签名本身就是签名 - 这意味着可以添加额外的数据,然后再将所需的签名和公钥推送到栈上。比如可以添加OP_DROP,执行效果和完全没有添加一样。
正在考虑防止scriptSig延展性。当前在其scriptSig中具有除数据推送操作之外的任何操作的事务被认为是非标准的并且不会被广播,并且最终该规则可以扩展为强制执行后堆栈具有恰好一个项目。但这样做可能会影响以后对比特币的扩展。
BIP62
BIP_0062是2014年初提出的比特币改进方案,旨在解决延展性问题。它旨在找到所有可能的延展性方法并逐一修复它们。BIP被撤销,因为发现这对于延展性阻止的用例(例如[闪电网络](https://en.bitcoin.it/wiki/Payment_channels)是不够的[4](https://en.bitcoin.it/wiki/Transaction_malleability#cite_note-4) 5 6 BIP文件本身包含作者可以想到的所有延展性方法。
Segwit
隔离见证是对比特币的更新,其目的之一是修复所有形式的可塑性。仅花费segwit输出的交易不易受延展性影响。
比特币的TxHash为什么会发生改变的更多相关文章
- IDFA的值什么时候会发生改变
在何种情况下 , 应用的IDFA值会发生改变? 近期工作中须要获得一个能够唯一地标示每个不同应用的ID,之前的苹果UDID已经不让使用了. 那么我们须要使用新的IDFA来引用.可是在某些情况下这个ID ...
- 点击checkbox后,$(this).attr('checked')得到的值不会发生改变
这两天遇到一个问题,就是在点击checkbox后,$(this).attr('checked')得到的值要么是undefined,要么是checked,同一个表单一直点击却一点都不会发生改变,调试了一 ...
- 通过AWS的DHCP自动获取的IP地址是否会发生改变?
针对您的问题,分析如下:1.在一个VPC内,通过AWS的DHCP自动获取的IP地址,在如何情况下会发生改变?例如我把vpc的内所有100个ec2实例全部关闭,再全部重新打开,是否会发生IP地址变化的情 ...
- 单击改变input的边框颜色
input边框变色 今天布局页面的时候发现设计稿多了一项要求,就是点击input框的时候要求框框变色,以前没有遇到过,平时很多时候都用的:hover这次想着一样吧,看了之后发现不是想要的效果,ho ...
- Json解析数据导致顺序改变问题
json解析的时候,通常顺序会发生改变,如果我们有保持原有顺序的需求的话可以通过如下方式 1.使用fastJson的Feature.OrderedField JSONObject respJson = ...
- 解决Android中,禁止ScrollView内的控件改变之后自动滚动 - 转
问题: 最近在写一个程序界面,有一个scrollVIew,其中有一段内容是需要在线加载的. 当内容加载完成后,ScrollView中内容的长度会发生改变,这时ScrollView会自动下滚,如下图所示 ...
- python装饰器中@wraps作用--修复被装饰后的函数名等属性的改变
Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的de ...
- nRF52832 改变ATT_MTU提高蓝牙数据发送速率(nRF5_SDK_14.2.0)
nRF52832 作为一个低功耗蓝牙芯片,其数据发送发送速率一直都偏低(高就不叫低功耗了^_^),作为初学者在网上找了很多资料,终于找到通过修改ATT_MTU来提升发送速率的方法,最快能达到8.2KB ...
- 比特币钱包Armory使用指南
转自:http://news.yibite.com/application/2014/0525/21603.shtml 比特币钱包Armory(https://bitcoinarmory.com/)是 ...
随机推荐
- [Delphi] 调用ocx
function RegisterDllServer(FileName: string): boolean; var nDllAddr: integer; bstr: string; ProcAddr ...
- gridview发布后,编辑改为edit 原因是未安装 dotNetFx40LP_Full_x86_x64zh-Hans中文语言包
https://www.microsoft.com/zh-cn/download/details.aspx?id=3324
- 可视化库-Matplotlib-3D图(第四天)
1. 画三维图片图 axes = Axes3D(fig)这一步将二维坐标转换为三维坐标,axes.plot_surface() import matplotlib.pyplot as plt impo ...
- Spring 3.1 entityManagerFactory java.lang.NoSuchFieldError: NULL Error
This means there is a version mismatch--most likely with spring classes. So make sure all your sprin ...
- JAVA程序中使用正则表达式
import java.util.regex.Matcher;import java.util.regex.Pattern; /** * @author Administrator 测试正则表达式 * ...
- 响应式设计的思考:媒体查询(media query)
Jason Grigsby发表了篇文章,<CSS Media Query for Mobile is Fool’s Gold>对媒体查询(media query)吐槽,大意是在移动设备上使 ...
- swarm调度
Swarm filters Configure the available filters 过滤器分为两类,即节点过滤器和容器配置过滤器. 节点过滤器对Docker主机的特性或Docker守护程序的配 ...
- Create a Basic Shader in Shader Forge
[Create a Basic Shader in Shader Forge] 1.打开ShaderForge.Window-> Shader Forge.(打开速度较慢) 2.通过NewSha ...
- 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
实现EXCEL导入功能:web网站,excel导入用OLEDB同样会报错:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 报错信息: Exception caught. ...
- bootstraptable为行中的按钮添加事件