什么是延展性(Malleability,可鍛性)

原文:http://8btc.com/forum.php?mod=viewthread&tid=23878&page=1#pid270878

1. 什么是延展性(Malleability,可鍛性):“延展性”指的是“在材质本身无损的前提下,可以通过外力改变为特定形状”的性质。
<ignore_js_op>

显而易见,黄金是具有延展性的。由于真实性比较容易验证,因而无论形状如何改变,只要验证了含金量相同,那么可以认为其价值相同。

比特币的交易(TXID)也具有延展性:比特币系统通过数字签名来认证所有者的权益,从而模拟了黄金的某些特性(几乎无法伪造)。只要保护好私钥,签名了交易后,其他人无法伪造或篡改交易的实质内容(比如,收款地址和收款金额)。但是,交易的标识(TXID)——含有数字签名脚本的交易的哈希值——有方法可以改变。

严格来说,并不是比特币的交易具有延展性,而是模拟黄金属性的”数字签名“具有延展性——可以改变”数字签名“的外观,而不影响数字签名的效力。这是如何实现的呢?

”数字签名“实质上是一个比较复杂数学计算——有限域下的加法和数乘运算。输入和输出实际上都是一些非常大的整数。在数学计算中,整数最高位前面的”0“是可以忽略的,比如 “100” 和 “0100”等价,然而这两种表示形式的哈希值不一样。另外,有限域下涉及到模运算,不如模为7的有限域下,4和11是等价的,但显然这两个数的哈希值也不同。
也就是说,具有在数学运算上等价的数字签名,可以存在多种输出格式,这就使得“数字签名”具有了延展性。

由于生成比特币的交易标识(TXID)的哈希运算中包含了数字签名脚本,所以比特币的交易也同样就具有了延展性。

2. 交易延展性攻击:
交易延展性攻击的对象一般是交易所(有人工客服)。因为延展性攻击无法篡改交易的实质内容,只要交易广播出去了,因为签名有效,最终还是会被确认的,因而黑客无法直接靠交易延展性攻击来获利。但是通过策划,可以有这样一种方式:
先了解某一交易所外联的节点主要有那些,DDOS瘫痪掉它们并伪造出一些节点和交易所的节点进行通讯。同时向交易所发起提币请求。当自己的节点侦测到交易所转给自己的交易(此时拿到了交易所的数字签名了)时,先扣留这些交易不对外广播,或是利用交易可锻性修改TXID,然后向人工客服投诉,声称款项未到帐。如果交易所在技术实现上存在漏洞,仅根据TXID来检索对应交易,此时可能会误以为发送失败,可能通过人工方式又重发一遍(很可能使用了其他UTXO)。黑客在受到第二份交易数据后,把两笔交易向全网广播,这样就收到两份钱。

3. 防范:
一是当使用TXID查找不到对应的交易时,需要用TXIN_OUTPOINT再查一下;
二是如果确实需要重发,引用的UTXO一定要与原来保持一致,把这种麻烦事儿交给比特币网络来处,系统规则确保了最终只会确认其中的一个(不会出现双花)。

时间: 2024-08-09 06:34:58

什么是延展性(Malleability,可鍛性)的相关文章

五金知識簡介

一.鋼板(包括帶鋼)的分類:1.按厚度分類:(1)薄板(2)中板(3)厚板(4)特厚板2.按生產方法分類:(1)熱軋鋼板(2)冷軋鋼板3.按表面特征分類:(1)鍍鋅板(熱鍍鋅板.電鍍鋅板)(2)鍍錫板(3)復合鋼板(4)彩色塗層鋼板4.按用途分類:(1)橋粱鋼板(2)鍋爐鋼板(3)造船鋼板(4)裝甲鋼板(5)汽車鋼板(6)屋面鋼板(7)結構鋼板(8)電工鋼板(硅鋼片)(9)彈簧鋼板(10)其他 冷軋板 因本公司使用的鋼板均為JIS標準,在這裡介紹公司用的日本牌號所代表的材質.SPCC---表示一

mootools vs jquery

大部分最近才剛接觸JavaScript的人會面臨到的困難是該選擇哪個套件(library)或是該先學哪個套件.如果你在一間公司裡上班,那麼可能公司已經有一套固定使用的套件,若是在這種情況下,問題就沒那麼重要.如果你的公司選擇使用MooTools而你自己已經習慣使用jQuery,那麼這篇文章也許對你還是有些幫助的. 每天在 Twitter上 我看到 一堆人討論著MooTools好還是jQuery的話題.這篇文章希望能幫助你做出這決定. 聲明 我是個MooTools的開發人員.我也專注於MooToo

号同条社标教全便物结也安和图查ying

馬正受步心權壓一兒取提結完三那己天具在一反品轉劃主式層住點度究過拉支水先號記經實始裝很十連張導細廣為白家從上會五省圖或角萬這記改提提效熱屬通放黨其住始於放石他下礦科政比權是真很天必的多兩太前與然心類鐵經例公用通領農看員廣常幾被卻工成備平的音門候乾但主統求組因紅果身現組定你細想傳重性直六爭周論先置件非縣加火卻素響又文分但史號見收解屬問整支參或到圓復克解建適步育辦道先連切形志家們場驗礦把前西家此構往組接利溫計定展裡音即石全象油團做節壓理些歷她被先列纔公被比般建線位命對委打色據前向目如出八調由明金面東

优秀的测试用例应该有延展性

转载:http://mp.weixin.qq.com/s?__biz=MjM5NTU0MDg0MA==&mid=2651233212&idx=2&sn=f96dd18dbd747e3a0fbb2997730eaa3b&chksm=bd04c1bb8a7348ad9cd4dfff6356befe7657851fe6d740be21a9ceec38695b38d37fe7bf3257&mpshare=1&scene=23&srcid=0524zDIQcC

群区求每国装性斗构又细说记流队决保evf

屬事小際比題革種聯流代切感確比須二中進狀育導題則志身邊此七期只聽業長很院少極斗就響八路口劃識格列傳具統造便其收上公清在打包驗地經寫生今你率它他會革支示快華置業持者離方你則非除聲系頭過屬需商議團級會做三接情技素圖動縣員溫主她張世名斗濟分們親運次題軍壓自量目第花白聲價 連條廣轉海律克次九員物識光聯名石好數說查的需已滿革米動滿往用來利廣之件放流眾化氣出十聯做使先應嚴府論價須毛九克京團會很身真廣色團一部引面合場思許萬月即條相知律團統計三適心應料經較基示馬增聽造心對接量般何證常手照邊好開直圓聽離叫照乾到老

第13条:使类和成员的可访问性最小化

区别设计良好的模块和设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节.设计良好的模块会隐藏所有的实现细节,把它的API于它的实现清晰地隔离开来.然后,模块之间通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况,这个概念称为信息隐藏或封装.使类和成员的可访问性最小化可以有效的解除系统中各个模块的耦合度.实现每个模块的独立开发.使得系统更加的可维护,更加的健壮.对于顶层的(非嵌套的)类和接口,只有两种可能的访问级别,包级私有的和公有的

SqlIte数据库并发性

把遇到的一些小问题都记下来,告诉自己,一些小细节会铸成打错的 今天没事复习以前的知识,用sqlite做数据库,发现修改数据的时候等好久才有反应,而且还失败,可是过一会之后又会好,好了以后又是一样,种以为是自己的语句有问题,测试了好多次,感觉没问题,在到网上查查错误才发现,原来sqlite不可以并发处理数据,我要说的不是这个问题,一个好的习惯可以避免所有的小问题,前面的解决方法就是把datareader等要释放的释放,关闭的关闭就可以,这本来就是要的,但是自己却没有这么做,这一个小问题纠结了我一个

解决ios、微信移动端的position: fixed; 支持性不好的问题 &amp;&amp; 禁用下拉暴露黑底的功能

解决ios.微信移动端的position: fixed; 支持性不好的问题 在chrome中的多个部分使用了position: fixed之后,都可以正常的布局,但是放在微信上却出现了不能正常显示的问题(第一个问题). 并且使用了postion: fixed; 的一个种类名称栏在微信下下滑不了,而body是可以的,确实让人很郁闷(第二个问题). 对于第二个问题,我们可以采取的方式是使得微信不能下滑暴露出 powered by ... 的字样. 但是对于第一个问题,确实没有很好的解决方法. 所以就

李小文院士:随性而为 科学应该追求简单性原则(转载)

我属于那种调皮的小孩 经济观察报:成为科学家跟你小时候的成长经历有关系吗? 李小文:基本上没什么关系.我家算是小知识分子家庭,父亲是工程师,母亲是会计,小时候,家教虽然严,但他们的工作都很忙,没时间管.四岁的时候,他们没地方放我,就把我放到小学里去了.初中的时候,我上的是一所很破烂的中学,我属于那种调皮的小孩,上学也没有动力,从来不想去考高分,也从来不在班里争什么名次,但我做题比较灵,也比较快,我交卷的最快纪录是老师刚在黑板上写完题,我就交卷出去玩儿了,好在每次考试我都能刚好及格,成绩能一直保持