主页 > 官网安卓版下载imtoken > 比特币脚本指南(一)

比特币脚本指南(一)

官网安卓版下载imtoken 2023-10-09 05:08:40

比特币脚本简介

脚本是一种类似于 Forth、基于堆栈、逆波兰、图灵不完整的语言。一一解释:

图灵不完整

图灵不完备语言功能有限,无法跳转或循环,因此不会进入无限循环。图灵完备性意味着程序可以解决给定资源和内存的任何问题。 Solidity 语言是图灵完备的。

为什么比特币脚本图灵不完整?

因为没有必要。

比特币脚本不像以太坊智能合约那么复杂。该脚本是图灵完备的,相当于为恶意方打开了一扇自由之门,可以随意创建复杂的交易,其后果就是耗尽比特币网络的算力,拖慢整个网络。

反向抛光

reverse-Polish 表达式的语法指定表达式必须作为 reverse-Polish 表达式给出。逆波兰表达式也称为后缀表达式。

意思是:

•3+4 成长为 34+。

较长的算术如下所示:

•5*3+4 增长到 534+*。

基于堆栈操作

栈是一种非常流行的数据结构,可以理解为线性结构,一堆那个。数据只能在一端插入或删除,称为栈顶。

或者这样理解:最后一个进去比特币合约交易指南,第一个出去。

如图所示,三本书是按什么顺序放在桌子上的?

那么,把这三本书从桌子上拿下来,按什么顺序?

最后一个进去,第一个出去,对吧?

有两个堆栈操作要理解:

•Push:入栈的动作

•Flick:从堆栈中移除的动作,LIFO,不要忘记。

图片来源:维基媒体

第四课

这很简单。 Bitcoin Script 类似于 Forth,也恰好是基于堆栈的。

脚本被定义和解析。进入下面的比特币交易。

插曲,比特币交易原理请参考:

请来加密行业的老外李磊韩美美。

假设 Alice 想再次将比特币转移给 Bob。

与法币交易不同,当 Alice 想给 Bob 两美元时,她必须先从钱包里取出两张钞票,然后再给 Bob。

比特币并非如此,因为比特币不是硬币,也不是实体。爱丽丝有几个证明她持有比特币。

还有:

•矿工将交易打包进出块的过程是确认交易的过程。作为服务商,矿工可以收取一定的费用。

•在法定货币体系中,纸币的来源一般是不被追查的。比如现在打开钱包,里面有35元:一个10元,一个20、,三个1元,两个50分币,10个一分币。你还记得这些纸币和硬币是怎么来的吗?通常不会那么小心。但是比特币不一样,每一笔交易都有清晰的记录。

现在回到 Alice 和 Bob 的例子。事务有两个方面:输入和输出。

交易输入

如上所述,每个比特币都有一条可循的路径。然后 Alice 首先查看之前的交易,例如,如果她想买东西,她的口袋里至少要有足够的钱。

Alice 环顾四周,发现前三笔交易刚好够(或多于)转移 Bob。我们将这三个事务称为 TX(0)、TX(1)和 TX(2))。三个事务的总和称为 TX(输入)。

如果用图表来解释,会是这样的:

是加法。

交易输出

输出表示 Bob 收到的比特币数量。

上面说了,Alice收集的比特币可能会大于转给Bob的金额,多余的比特币会以找零的形式返还给Alice,留着以后用。

p>

使用图片如果你解释一下比特币合约交易指南,它会是这样的:

这是最简单的例子,只有一个输出和一个变化。请注意,许多事务可能有多个输出。

比特币交易就是这样一个过程。但是,要使交易成功,必须满足一些条件。

交易条件

•TX(输入)> TX(输出)。

这个很简单,首先,1元买不到5元。其次,这里还涉及交易费用。在任何交易中,输入输出(包括找零)的差额就是矿工收取的交易费用。

交易费用=TX(输入)-[TX(输出)+零钱]

•输入端:TX(0)+TX(1)+TX(2)=TX(输入)。如果Alice的资金不够,矿工直接拒绝处理交易。

•Alice 将使用 Bob 的公共地址锁定转账金额。如果 Bob 想要得到比特币,他必须使用他的私钥来解锁它。

•当然,Alice 还必须证明她是她自己并且她已经花费了它。具体来说,就是用自己的数字签名(私钥)对交易进行签名。其他人可以使用 Alice 的公钥来验证签名信息,这意味着可以确定该交易是 Alice 自己发出的。这个“签名数据”记住了“的概念,后面会用到。

那么,整个事务应该怎么调用呢?

输入(包括签名数据)、输出数据放在一起,然后通过SHA-256哈希算法计算出来的结果就是交易的名字。

在下一节中,我们将深入幕后,看看交易的真实情况。

待续

p>