LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 小乔和你聊聊区块链的事儿(640)

小乔和你聊聊区块链的事儿(640)

2020-05-01 乔辞念安 来源:区块链网络

加密货币提供了世界上第一种智能合约编程语言。这种语言称之为脚本,它允许用户在不同的条件下编码硬币。不过,虽然这是一个革命性的概念,但并不容易使用,尤其是对于更复杂的支出条件。无论是编写一个复杂的合同,还是验证合同是否完成了它应该做的事情,都容易出现人为错误。然而,尤其是在涉及到资金的情况下,正确解释这些条件至关重要。在过去的一年里,加密货币工程师Andrew Poelstra、Pieter Wuille和Sanket Kanjalkar着手改进这一点。他们的“新”编程语言“Miniscript”将脚本剥离到最基本的部分,从而消除了复杂性,并应该使加密货币上的编程对所有相关人员来说都更加简单和安全。


Blockstream研究总监兼Miniscript联合设计师AndrewPoelstra在接受《加密货币》杂志采访时说:“从理论上讲,Miniscript比脚本更具局限性。”。“但它可以做人们实际使用脚本的所有事情。”每一个加密货币交易都由两个主要部分组成:输入和输出,这两个部分都由代码组成。输入“解锁”硬币,输出“锁定”硬币,指定在何种条件下可以在随后的交易输入中解锁。这样的要求通常包括有效的密码签名,但有更多的可能性;例如,在硬币可以被花费之前,也许必须经过一定的时间,或者必须包括特定的秘密号码。交易中的代码是用Script创建的,Script是一种专门为加密货币设计的编程语言。剧本的灵感来自于福思,一种在20世纪60年代发明的编程语言,最初设计用于操作射电望远镜。不过,脚本经过了调整,使其更适合加密货币。


例如,脚本没有生成“循环”的操作码(指令):该语言不支持执行相同的计算次数不受限制。在加密货币中,不需要执行相同的计算无限次,因为加密货币节点实际上并不计算事务——它们验证事务。(关于这种情况的更多技术解释,请参阅区块流工程师Russell O'Connor的文章。)脚本也是“非类型化的”,这意味着计算结果可以用不同的方式解释和使用。例如,有效签名的结果可以是“真”,但“真”可以依次解释为数字“1”并随后在数学公式中使用:“真”加上“真”等于“2”,例如,这意味着如果至少需要两个有效签名,则可以提供足够的签名。


这就引出了本文中脚本最重要的特性:很难“推理”,这实质上意味着计算结果可以用多种方式进行解释。例如,即使签名无效,也可以编写脚本,以使事务因其他原因仍然有效。Poelstra解释说:“加密货币脚本中有操作码,它们做了非常荒谬的事情。“例如,将签名解释为真/假值,并在此基础上进行分支;将布尔值转换为数字,然后索引到堆栈中,并基于该数字重新排列堆栈。具体的规则是如何做到这一点的。”


这会使脚本很难使用。特别是如果使用(“解锁”)硬币的要求变得更加复杂,交易的作者可能会无意中在代码中包含一些内容,允许硬币在不同的条件下使用,而不是预期的。相反,交易的接受者可能没有注意到这样一个怪癖,并将他的硬币丢失给一个注意到的攻击者。下面是一个具体的例子,说明这些问题如何限制脚本的有用性。Blockstream绿色钱包有一个标准的“cosigning”设置。wallet用户控制两个密钥中的一个,而Blockstream控制另一个。这些资金有两种用途。首先,当用户想要花硬币时,他们会签署交易,并要求Blockstream也签署交易。Blockstream通常会这样做,尽管这可能需要用户确认他们确实希望通过第二种方式进行交易,如电子邮件确认。但Blockstream的终端可能会出问题——也许公司消失或丢失了密钥,或者因为其他原因无法签署。在这种情况下,用户仍然有一个使用加密货币的后备解决方案:在timelock过期后,他们可以在预定的时间过后创建一个有效的事务。也许一个月吧。

好啦,今天的内容小乔就给大家讲到这里啦,下面我们来一起看看数字货币的数据:


最后祝大家天天开心,生活愉快!

—-

编译者/作者:乔辞念安

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...