| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 2021-07-15 -> 正文阅读 |
|
[区块链]2021-07-15 |
四年来的第一次比特币升级刚刚被全世界的矿工们批准。这是利益相关者之间达成共识的罕见时刻。 撰文 |? Daiwei 01?Taproot回顾?比特币改进提案(BIPs)是为比特币引入新功能和信息的设计文档,而 Taproot 升级则是三个 BIPs 的汇编,这三个 BIPs 分别是 Schnorr 签名(BIP 340)、Taproot (BIP 341)和TapScript (BIP 342),这三个升级统称为 BIP Taproot,它将为比特币带来了更高效、更灵活、更私密的传输方式,其核心在于使用了 Schnorr 签名和 Merkel 抽象语法树(MAST)。 ▲调整公钥 Taproot的原理,简单来说,就是定义了一种输出和两种花费路径。如上图所示,有Alice和Bob两个参与者,Taproot的运作过程如下:
Taproot按照签名模式进行花费时,多个参与方和单个参与方在区块链上看起来都长得是一样的,所以许多区块链分析将不可用,从而为所有 Taproot 用户保留隐私。与此同时,Taproot的脚本花费模式让用户可以实现复杂的支出条件。Taproot可以有效压缩交易脚本字节数。签名模式下随着参与者增加,EDSA交易脚本大小线性增长,Taproot交易脚本大小保持不变。脚本模式下随着脚本数量的增加,EDSA交易脚本大小线性增长,Taproot交易脚本大小对数增长。 02Huffman Tree?给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 ? ▲哈夫曼树 哈夫曼树的构造过程是利用贪心的思想,每次选择权重最小的两个结点组合成新的节点,加入到原始集合,重复上述过程,直至结束。如上图所示,存在权重集合为 (1, 2, 3, 4, 5) ?的5个结点,构造哈夫曼树的过程如下:
可以看出,在哈夫曼树中,权重越大的结点离根越近,权重越小的结点离根越远。 03?Huffman Tree?在Taproot里的应用?Taproot相比于ECDSA多签算法,一大优势是Schnorr聚合签名可以将多个签名数据压缩合并成单个聚合签名。使用聚合签名技术后,交易脚本的字节数大大减少,可以有效减少交易费用的支出。当我们按照脚本模式进行花费时,借助MAST的树形结构,交易脚本大小随着脚本数量对数增长。然而利用Huffman Tree,可以通过改进MAST的构造过程,帮助我们进一步减少脚本花费模式下见证脚本的字节数,最终达到降低交易手续费的目的。 ▲抽象语法树 前文提到,当Taproot按照脚本模式进行花费时,需要提供脚本在MAST中的Proof。如上图,当我们想通过script_A进行花费,见证脚本中需要提供:
忽略前两项的字节数,可以看出,最后一项的字节数可以表示为 32*(d-1) ,d=3表示 script_A在MAST中的高度。换句话说,最后一项的字节数与脚本在MAST中高度线性相关。因此,对于 script_A, script_B, script_C 三个脚本,我们可以根据脚本使用频率赋予权重,构造哈夫曼树,作为MAST。最终,根据Huffman的特性,使用频率越高的 script , 在哈夫曼树中的高度越低,见证脚本中字节数越少,交易手续费越低。总而言之,交易手续费与交易脚本的字节数息息相关。Taproot的聚合签名可以帮助我们有效减少按签名模式花费时的交易脚本字节数,但是利用Huffman构造MAST可以进一步帮助我们减少按脚本模式花费时的交易脚本字节数。 本文为独家原创内容。未经NewBTC World授权不得转载,欢迎转发至朋友圈。? ?? 扫码关注我们 比特币(Bitcoin)第一中文社区,带你寻找 Layer2 时代新机遇! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/27 11:01:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |