比特币中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为什么会发生改变的更多相关文章

  1. IDFA的值什么时候会发生改变

    在何种情况下 , 应用的IDFA值会发生改变? 近期工作中须要获得一个能够唯一地标示每个不同应用的ID,之前的苹果UDID已经不让使用了. 那么我们须要使用新的IDFA来引用.可是在某些情况下这个ID ...

  2. 点击checkbox后,$(this).attr('checked')得到的值不会发生改变

    这两天遇到一个问题,就是在点击checkbox后,$(this).attr('checked')得到的值要么是undefined,要么是checked,同一个表单一直点击却一点都不会发生改变,调试了一 ...

  3. 通过AWS的DHCP自动获取的IP地址是否会发生改变?

    针对您的问题,分析如下:1.在一个VPC内,通过AWS的DHCP自动获取的IP地址,在如何情况下会发生改变?例如我把vpc的内所有100个ec2实例全部关闭,再全部重新打开,是否会发生IP地址变化的情 ...

  4. 单击改变input的边框颜色

    input边框变色   今天布局页面的时候发现设计稿多了一项要求,就是点击input框的时候要求框框变色,以前没有遇到过,平时很多时候都用的:hover这次想着一样吧,看了之后发现不是想要的效果,ho ...

  5. Json解析数据导致顺序改变问题

    json解析的时候,通常顺序会发生改变,如果我们有保持原有顺序的需求的话可以通过如下方式 1.使用fastJson的Feature.OrderedField JSONObject respJson = ...

  6. 解决Android中,禁止ScrollView内的控件改变之后自动滚动 - 转

    问题: 最近在写一个程序界面,有一个scrollVIew,其中有一段内容是需要在线加载的. 当内容加载完成后,ScrollView中内容的长度会发生改变,这时ScrollView会自动下滚,如下图所示 ...

  7. python装饰器中@wraps作用--修复被装饰后的函数名等属性的改变

    Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的de ...

  8. nRF52832 改变ATT_MTU提高蓝牙数据发送速率(nRF5_SDK_14.2.0)

    nRF52832 作为一个低功耗蓝牙芯片,其数据发送发送速率一直都偏低(高就不叫低功耗了^_^),作为初学者在网上找了很多资料,终于找到通过修改ATT_MTU来提升发送速率的方法,最快能达到8.2KB ...

  9. 比特币钱包Armory使用指南

    转自:http://news.yibite.com/application/2014/0525/21603.shtml 比特币钱包Armory(https://bitcoinarmory.com/)是 ...

随机推荐

  1. 33_java之类加载器和反射

    01类加载器 * A.类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. * a 加载 * 就是指将class文件读入内存,并为之 ...

  2. linux下创建具有root权限的账户

    http://blog.chinaunix.net/uid-24631445-id-2981034.html

  3. Pyhton项目实践:将带有美国风格日期的文件改名为欧洲风格日期

    题目 项目要求:上千个文本文件,文件名包含美国风格的日期( MM-DD-YYYY),需要将它们改名为欧洲风格的日期( DD-MM-YYYY) 先写个创建一百个美国风格日期的文件 #! python # ...

  4. 使用phpexcel导出到xls文件的时候出现乱码解决

    <?php include 'global.php'; $ids = $_GET['ids']; $sql = "select * from crm_cost_end where id ...

  5. Nginx 图片服务器搭建

    安装Nginx >yum install -y nginx 安装vsftpd  http://www.cnblogs.com/eason-d/p/9057389.html 2: 创建目录 /us ...

  6. ORA-12528问题解决

    这个问题说明数据库没有Mount 最好先将系统日志一并清空,避免以下报错信息: ERROR:ORA-28056: Writing audit records to Windows Event Log ...

  7. XACT Q&A (转)

    XACT Q&A 传送门:http://blog.csdn.net/xoyojank/article/details/4098633

  8. 向ArcGIS的ToolBarControl中添加任意的windows组建的方法[转]

    向ArcGIS的ToolBarControl中添加任意的windows组建的方法[转] Link: http://www.cnblogs.com/mymhj/archive/2012/10/12/27 ...

  9. maven使用阿里云maven库

    在maven\conf\settings.xml中的mirrors添加 <mirror> <id>nexus-aliyun</id> <name>Nex ...

  10. MyEclipse10.0 配置 Tomcat1.7

    1 首先 从网上下载Tomcat1.7,然后放到本机目录. 2 然后在MyEclipse10.0菜单Preferences 指向Tomcat的路径,我本机路径是 D:\Program Files (x ...