| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> Bitcoin重大升级(Tapscript [BIP342],Taproot [BIP341],Schnorr签名 [BIP340]) -> 正文阅读 |
|
[区块链]Bitcoin重大升级(Tapscript [BIP342],Taproot [BIP341],Schnorr签名 [BIP340]) |
文章目录比特币如何进行交易的例如我们生活常见的像是银行卡、支付宝或者微信等平台都是存在个人账户的,我们所有的交易的输入输出都是围绕在这个账户,当然在加密货币领域也有许多,比如基于Account模型的以太坊等。 举例说明: 1.P2PKH 01 Schnorr签名 [BIP340]1.什么是Schnorr签名?正如前面关于比特币交易如何工作的部分所述,脚本语言控制着比特币的花费,并使用数字签名来转移比特币的所有权。比特币使用椭圆曲线数字签名算法(ECDSA)来验证加密签名(该算法不原生支持多签交易的,导致了2012年P2SH交易的标准化)。简而言之,Schnorr签名方案是一种更有效的签名方案。该签名方案是由Claus-Peter Schnorr在1989年开发的。 2.密钥聚合
简单来说,就是一笔交易中多个签名可以组合成一个,它通过将公钥和签名组成成“阀值公钥”和“阀值签名”,让其交易看上去跟普通交易没有区别。“阀值公钥”可以让参与者的公钥叠加在一起,而“阀值签名”可以让参与者的签名组合起来,根据约定条件进行支付。Schnorr签名算法可以使得多重签名更高效,同时由于其看上去跟普通交易一样,因此,也提升了隐私性。 3.Schnorr签名和ECDSA签名对比Schnorr签名数据比现有的ECDSA签名数据小11%,现有签名每个交易占用70-72个字节。由于Schnorr签名在交易中/在区块链上占据的空间较小(它们固定为64个字节),因此可以实现较小的交易数据和较低的费用。 ECDSA和Schnorr数字签名方案都依赖于离散对数问题。但Schnorr的好处是,与ECDSA相比,它使用的假设更少,并且有形式化的证明其是安全的。ECDSA缺乏正式的安全证明,并且依靠额外的假设来保证这一目标。因此,Schnorr是供密码学家使用的更清晰的框架。Schnorr至少比ECDSA安全,如果不是更安全的话。 02 Taproot [BIP341]1.什么是Taproot?Taproot提出扩展了Schnorr的功能,以实现更大的扩展性、效率和支付隐私性。正如我们在上面所解释的那样,Schnorr使比特币多签名交易看起来像是区块链上的标准交易,当与Schnorr结合使用时,Taproot(BIP 341)将进一步扩大交易的隐私性。在彻底了解Taproot之前我们要先了解什么是Merkelized抽象语法树(MAST)。 2.Merkelized抽象语法树(MAST)MAST是默克尔化抽象语法树(Merkelised Abstract Syntax Trees)的简称,最初由比特币开发者Johnson Lau博士于2016年提出。MAST使用新的见证程序,并使用Merkle树编码脚本中独立的分支。Merkle树是一种数据结构,树这一术语用于描述分支结构。它通常把图表顶部称为根,而图表底部称为叶,如下图所示。
MAST的独特优势在于,如果揭示了Merkle树中的任何数据,则可以使用Merkle根和一些其他数据(称为Merkle路径)来验证该特定数据是否包含在Merkle树中。树的其余部分(以及其他条件)仍保持散列和隐藏状态。这意味着,如果所有参与者都同意,则仅需要透露所满足的条件。有复杂交易任务的用户可以创建较小的交易,而带有大量亚脚本(sub-script)的更复杂的合约的效率收益则更大。与使用任何其他当前机制相比,MAST使得更多的条件分支成为可能。这打开了对更高级的智能合约的支持,而不必向比特币节点没有额外费用。 3.Taproot改进MASTTaproot是最初由Greg Maxwell,Peter Wuille和Andrew Poelstra提出的比特币提案。后来,IRC和bitcoin-dev邮件列表上的十个主要贡献者都接受了它。Schnorr增加了一个新的签名类型,Taproot在此基础上又推出了一个新的交易输出类型以及确定支付条件的新方法。 Taproot具有自己的Merkle树版本,称为脚本树(script tree)。参与者可以选择以下使用:1)作为常规签名的公钥,2)与脚本一起使用。首先,是默认的支出路径,在此路径上无法区分单方或多方公钥。对于替代的支出途径,除非我们支出,否则不会显示隐藏的脚本。可以将不同的脚本组织到Merkle树中,也可以通过显示其中一个子句来使用输出。如果我们使用主支出脚本花费交易,则只需提供Merkle证明,该证明由主支出脚本和替代支出脚本的哈希组成,足以证明主支出脚本在脚本树中。 Taproot使用MAST结构将条件隐藏在Merkle根下面。Merkle根本身会被密钥承诺(key commitment)隐藏起来,并可以通过密钥直接花费。只有一个密钥进入区块链,没有人能看到存在的其他条件。与Schnorr结合使用时,Tastroot输出隐藏了MAST结构。在Merkle树的顶部,有一个用于发布单个公钥和签名的选项。实际上,这使P2PKH和P2SH交易看起来相同。 通过MAST,可以对脚本中的操作进行编码,提升可编程性,当BTC交易发生时,只需要提供其分支运算并将分支哈希连接到固定大小的默克尔根上,从而减少交易数据,提升区块空间。而且MAST可以根据交易不同设置不同的条件,也就是实现智能合约功能。而且MAST结构可以使交易数据显著降低,但是随着脚步数量的增加,MAST结构的交易数据是对数增长不是线性增长,大大降低了数据大小。 4.Taproot亮点:扩容扩容两个字,总能在最近的公链竞争中听到。扩容的好处是,交易速度更快,GAS费用更低,这对比特币来说当然非常的重要。最初开发的时候,项目方的梦想是让比特币成为全球货币。不过,一个交易确认那么慢的东西,根本吸引不了大批的人去使用。所以,为了让比特币有支付属性,扩容升级是必须的。 在Taproot新方案中,Schnorr签名为比特币减少容量带来了技术支持。具体来看,Schnorr签名通过把多个公钥设计成一个签名,从而减少空间。数据来看,在字节占比上,Schnorr上的公钥占了32个字节,比原方法节约了1个字节。在签名长度上,Schnorr的长度是65个字节,比原方法节约了6-7个字节。Taproot就是通过这些小空间的节约给比特币的使用者节约了确认交易所需的时间和费用。 进一步来说,这次升级是Layer2扩展解决方案的进步,因为Taproot允许改进Layer2网络,例如位于比特币之上的闪电网络。Taproot将通过用点时间锁定合约(PLTC)替换哈希时间锁定合约(HTLC)来升级闪电网络功能。闪电网络是一种面向商业的服务,允许各方更快速、更便宜地进行比特币交易。使用PTLC意味着支付将使用常规公钥进行路由,提供类似于为多重签名钱包设计的隐私功能。PTLC还可以启用区块链托管条件,并改进预言机的使用,以促进支付的便利性。 03 Tapscript [BIP342]1.什么是Tapscript?Tapscript是Schnorr和Taproot的补充升级。作为比特币编程语言(脚本)的升级版,Tapscript更容易添加新功能,且提供基于Schnorr签名的批量验证(batch verifiability)。 Tapscript还补充了BIP 341(Taproot)中提出的对比特币脚本结构的改进,该结构需要更改某些操作码,而BIP 342则涉及需要进行的更改。理解Tapscript的另一种方法是考虑Taproot的Merkle树,其中每个叶子(leaf)都是一个脚本,可称之为叶子版本,类似于SegWit的脚本版本控制。但是不同之处在于,脚本不会在付款时显示,而只会在花费时显示。不同的叶子可以具有不同的版本,其中仅显示实际使用的叶子。Tapscript是Taproot下版本0的叶版本。 Tapscript与传统和SegWit的比特币脚本共享大多数操作,但有一些区别: 多签操作码OP_CHECKMULTISIG和OP_CHECKMULTISIGVERIFY被操作码OP_CHECKSIGADD代替,允许使用Schnorr进行签名批量验证。
使用Taproot/Tapscript,可以以批量验证的方式创建相同的多重签名策略,其脚本是:
许多操作码被重新定义为OP_SUCCESS操作码,它无条件使整个脚本有效,以简化软分叉升级。 与现在正使用的机制OP_NOP相比,新操作码OP_SUCCESS的引入更容易验证。以前无法使用的操作码通常返回“FALSE”状态,Tapscript会将它们返回“TRUE”状态。只要脚本中存在这些操作码,你就可以无条件地使用它,而实际的好处是可以将操作码重新定义为任意值,并且不需要向后兼容。这种用新的操作码扩展脚本的新机制,比现有的见证版本控制机制更易于协调和使用。后果是,它有望为将来比特币脚本添加更多有用的操作码开辟道路。
总结简而言之,Schnorr对可扩展性和交易隐私(而不是交易链接隐私)具有多个意义。效率的提高开放了更复杂的多重签名交易的使用,从而允许非常大的M-of-n方案和更高级的合同。与Taproot和Tapscript结合使用,Schnorr大大拓展了比特币的隐私性和可扩展性。 Taproot(BIP 341)提高了比特币脚本功能的隐私性、效率以及灵活性,使开发人员可以编写复杂的脚本,同时最大程度地减少对链上的影响。 在扩容方面,可节省复杂交易大量的交易费用,因为数据密集型脚本不再需要支付比标准的“支付到公钥哈希”交易更高的费用。网络上的交易越复杂,效率上的收益就越大。 Tapscript主要是比特币脚本的升级! 参考
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/22 22:55:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |