calculate用法及搭配怎么读

calculate,英语单词,动词,意为“ 计算;以为;作打算; 计算;预测;认为;打算”。

来源于新华字典·百度汉语

发布时间 : 星期三 文章新视野大学英语第三版读写第二册unit2教(学)案更新完毕开始阅读

授课时间:第____周第____周

itself可能的事情,前景

  Segwit地址有几种类型。一个是以3开头的嵌套Segwit地址。根据该地址,无法判断它是多符号地址还是独立见证兼容地址。好处是钱包程序可以直接支付到这个地址,不需要修改。   

  另一种是原生Segwit地址,即以bc开头的地址,本质上是一种新的编码方式。   

  我们来回顾一下1开头的比特币地址是如何创建的:   

  计算hash160根据公开密钥生成密钥;添加一个固定头,用check计算Base58代码。简单概括,使用Base58编码的公钥哈希。   

  而bc地址使用Bech32码而不是Base58码。它的算法是:   

  计算hash160根据公开密钥生成密钥;使用Base32代码获得更长的代码;Bc用作编码和验证的识别码。实际上Bech32代码由两部分组成:一部分是类似bc的前缀,称为HRP(人类可读部分),另一部分是特殊的Base32代码,使用的是字母表QZRY 9 x 8 gf 2 TVD w0s 3 jn 54 khce 6 mua 7 l,中间用1连接。Bech32编码公钥的代码如下:

  不需要区分大小写,因为用于编码的字符表中没有大写字母;有固定前缀,可以任意设置,便于识别;生成的二维码更小。它的缺点是:   

  钱包程序必须升级,因为它与现有地址不兼容;1作为分隔符,但用的是字母L,容易混淆;地址更长,有42个字符。那为什么要引入Segwit地址呢?按照官方的说法,其目的是解决比特币交易的交易延展性攻击。   

  扩展攻击什么是扩展攻击?我们先来回顾一下比特币的区块链是如何保证交易有效且不被修改的:   

  每笔交易都必须签署支出输入(UTXO);所有事务的散列被计算为Merkle树并存储在块头中。我们再来看看每笔交易的细节。让我们假设有一个输入和一个输出。它类似于:   

  Tx=.输入#索引.签名.输出脚本.并且整个事务的散列可以直接从事务本身计算:   

  Tx-hash=dhash(tx)因为只有私钥的持有者才能正确签名,所以只要签名有效,Tx本身就应该是固定的。   

  但问题在于ECDSA签名算法。基于私钥的ECDSA签名算法计算出的签名实际上是两个整数,记为(r,s),但由于椭圆曲线的对称性,(r,-s mod N)实际上是一个有效的签名(N是椭圆曲线的固定参数之一)。换句话说,当对一个事务进行签名时,总是可以计算出两个有效签名,并且这两个有效签名也可以相互计算。   

  黑客可以在交易发出但未被破坏的时间内修改签名,因此它仍然是一个有效的交易。注意,黑客不能修改任何输入输出的地址和金额,只能修改签名。但是,由于签名的修改,整个事务的散列已经被改变。如果先将修改后的交易打包,虽然会丢弃原交易,交易安全性不受影响,但可以利用这种可延展性攻击来攻击交易所。   

  要解决可扩展攻击的问题,有两种方法。一个是规范化事务签名。因为在ECDSA签名之后总是有两个有效签名(r,s)和(r,-s mod N),所以那个签名只接受具有较小值的签名。正因如此,比特币引入了SCRIPT_VERIFY_LOW_S标志,只接受数值较小的签名。   

  另一种方法是将签名数据移出事务,这样事务本身的散列就不会改变。事务在没有签名的情况下计算的hash称为wtxid,因此引入了一个新的隔离见证地址。   

  以bc开头的独立见证地址使用Bech32代码;   

  比特币可扩展性攻击的原因是ECDSA签名总是有两个有效签名,可以相互计算;   

  标准ECDSA签名格式可以强制使用固定签名(例如,总是使用较小值的签名)。   

我要回帖

更多关于 calculate用法及搭配 的文章

 

随机推荐