主页 > imtoken添加币种选哪个 > 没有脚本的脚本:比特币如何在没有智能合约的情况下支持智能合约

没有脚本的脚本:比特币如何在没有智能合约的情况下支持智能合约

imtoken添加币种选哪个 2023-03-22 07:32:08

比特币的能力是有限的。 同时,智能合约可能是资源密集型的。 因此,尽管比特币一直支持基本的智能合约功能,但两者从来都不是天作之合。

比特币合约交易员培训_比特币有智能合约功能吗_比特币合约交易中心

但最近由 Blockstream 数学家 Andrew Poelstra 牵头的一个话题可以帮助解决这个问题。 从他最近的“Scaling Bitcoin Stanford”演讲中得出的一个重要结论是,“无脚本脚本”有可能从比特币区块链中完全删除某些智能合约——同时仍然保持比特币的所有安全性。

比特币和智能合约

智能合约最早由数字货币大亨 Nick Szabo 在 1990 年代提出,本质上是一种自动执行的合约。 最典型的是,如果满足某些条件,他们会将钱从某人汇给某人。 例如,如果有人正在播放一首歌曲,流媒体公司会自动向艺术家支付费用。

虽然智能合约通常与以太坊等“第二代”区块链相关联,但比特币也一直支持基本的智能合约。 从某种意义上说,任何比特币交易在技术上都是“智能”合约:只要提供有效的加密签名,资金通常会在该条件下移动。 可以使用稍微更高级的智能合约(例如多重签名和时间锁)来启用第 2 层协议,例如闪电网络。

比特币合约交易员培训_比特币有智能合约功能吗_比特币合约交易中心

但是基于区块链的智能合约存在问题。 首先,流程变得越来越复杂,需要更多的资源来执行。 这是非常有问题的,因为它要求网络上的所有节点都需要执行合同——而不仅仅是合同中涉及的各方。

全网的执行也意味着全网都会对我的智能合约一清二楚,不会有任何秘密可言。 此外,这也不利于互换性。 如果智能合约因任何原因变得不受欢迎,所涉及的资金(在区块链上公开可见)就会受到损害。

随着智能合约变得越来越复杂,它们甚至可能成为安全风险。 例如,替代软件实现可能会使合约的细节略有不同,从而使网络上的所有节点都难以达成一致。 这些智能合约中的潜在缺陷也是公开的,允许黑客利用它们。

但是 Poelstra 等人。 认为其中许多问题可以通过将大量合同移出区块链来解决。 只有参与合约的各方才能执行此功能,而不是让网络上的所有节点都计算整个智能合约。

问题的关键是确保网络的其余部分仍然能够正确执行合同的结果:在满足所需条件之前不能付款。

比特币有智能合约功能吗_比特币合约交易中心_比特币合约交易员培训

Schnorr 签名

Poelstra 最初开始在 Mimblewimble 协议的背景下研究“less s”(他自己创造的一个短语)。 比特币的精简版提供更多的隐私和更好的可扩展性,但不支持脚本:比特币交易中的代码位允许最基本的智能合约功能。

因此,Poelstra 想出了如何在不使用区块链脚本的情况下获得脚本提供的实用程序:less s。

less s 的关键是常规加密签名可以间接揭示不属于包含签名的交易的内容。 换句话说,当有人签署一个正常的比特币交易时,它假设一个没有托管在区块链上的智能合约仍在忠实地执行。

这使得 Schnorr 签名成为可能。 这些类型的签名尚未在比特币协议上实现,但可以在一年左右的时间内部署。

比特币有智能合约功能吗_比特币合约交易中心_比特币合约交易员培训

Schnorr 签名允许的签名:几个签名可以在数学上合并为一个。 而且,重要的是对于这个用例,这个数学是“线性的”。 这基本上意味着可以对这些签名执行相对简单但非常有表现力的数学运算。

简化后,它的工作原理如下:

当然,私钥和签名实际上只是数字,后者来自前者。 我们举一个简单的例子来帮助理解。 假设一个私钥是10,私钥导出的Schnorr签名前半部分是10000。另一个私钥是15,Schnorr签名的后半部分是15000。在这个例子中,Schnorr签名是25000(或 10000 + 15000)。 有没有发现,所谓的Schnorr签名就是两个人的私钥生成的Schnorr签名的两部分之和(有点绕)。

由于签名的两半只是数字,因此可以在它们之间进行数学运算。 例如,在这个简化示例中,两半之间的差值为 5000(或 15000-10000)。

当然,它比这更复杂,但 Schnorr 签名的线性特性允许使用几个这样的数学“技巧”。

比特币合约交易中心_比特币有智能合约功能吗_比特币合约交易员培训

智能合约

例如:一个人(小明)想听一个艺术家(贝多芬)的第七交响曲。 毫无疑问,贝多芬是歌曲的所有者,如果(且仅当)贝多芬的签名被提供给托管歌曲的服务器,服务器将能够播放歌曲。 假设“歌曲签名”是7000,那么小明可以用比特币歌曲签名支付给贝多芬来听这首歌。 (他很想听这首歌。)

在这个简单的例子中比特币有智能合约功能吗,Ming 和 Beethoven 可以通过做两件事使这个交易自动进行。 首先,他们创建了一个相当普通的比特币交易,如果 Ming 和 Beethoven 都提供了一半的 Schnorr 签名以创建完整的 Schnorr 签名,Ming 会向 Beethoven 发送一个比特币。 (此步骤需要一些额外的安全措施以确保没有人破坏交易)

下一步有点复杂。

现在,贝多芬知道 Ming 的一半 Schnorr 签名是什么样子的; 比方说8000,贝多芬当然知道自己的歌曲签名是什么样子的,比如说:7000。所以贝多芬很容易计算出两者的差值For:1000。这就是所谓的适配器签名。 然后,贝多芬将这个适配器——1000——签给了小明。

比特币合约交易员培训_比特币有智能合约功能吗_比特币合约交易中心

这就是密码学的用武之地。

通过修改正常的签名验证方法,John 可以验证他刚刚收到的适配器签名(1000)确实是贝多芬的半 Schnorr 签名和她的歌曲签名之间的区别,即使他无权访问任何签名。

现在,验证适配器签名(1000)验证通过后,小明就可以将自己的一半 Schnorr 签名给贝多芬,因为一旦贝多芬用小明的一半签名创建了一个完整的签名并广播到比特币网络,那么,贝多芬同时比特币有智能合约功能吗,Fern 自动向小明展示她一半的 Schnorr 签名(8000)。

使用一半贝多芬的 Schnorr 签名,Bob 现在可以减去自适应签名:1000。通过从贝多芬的一半 Schnorr 签名(8000-1000)中减去自适应签名,Bob 得到贝多芬的“歌曲签名”:7000。OK,现在他可以听这首歌。

也就是说,通过广播向贝多芬支付一个比特币的交易,贝多芬自动将签名卖给了小明。

总结

从区块链的角度来看,交易受到了相当的监管。 除了“结算交易”之外,没有任何关于智能合约的信息记录在区块链上。 没有人会知道底层合约已执行,合约相关数据无需由相关方以外的任何人计算或存储。