主页 > imtoken最新官网客服 > 以太坊智能合约和逆波兰表达式

以太坊智能合约和逆波兰表达式

imtoken最新官网客服 2023-02-23 06:45:40

1+1、3-4、5*6、8/4、(1+6)*9、1+6*7这四个简单的数学运算想必大家都不陌生,有时候遇到买菜的阿姨,这些菜都称重了,一共是多少? 8元,我给10元,哎,还剩3元,找一个整的。 百姓喜闻乐见,熟悉的四种算术运算都有高级称谓中缀表达。

以太坊智能合约部署_以太坊智能合约代码_以太坊智能合约转不出去币

为什么是中缀,而不是前缀、后缀、上缀、下缀?

既然中缀运算符都在中间,那能不能放在后面呢? 当然。

以太坊智能合约代码_以太坊智能合约部署_以太坊智能合约转不出去币

这种将运算符放在运算符之后的方式称为反向波兰表达式或 RPN,通常称为后缀表达式。

中缀表达式如何对应后缀表达式?

以太坊智能合约部署_以太坊智能合约转不出去币_以太坊智能合约代码

以太坊智能合约代码_以太坊智能合约部署_以太坊智能合约转不出去币

后缀表达式有什么优点?

让我们举一个小例子来展示后缀表达式的方便和神奇。

计算 1 2 +

以太坊智能合约代码_以太坊智能合约部署_以太坊智能合约转不出去币

以太坊智能合约代码_以太坊智能合约转不出去币_以太坊智能合约部署

计算1 2 + 4 *,即中缀表达式的(1+2)*4,这里不需要括号。

以太坊智能合约代码_以太坊智能合约转不出去币_以太坊智能合约部署

先说正题,先从比较简单的比特币解锁脚本说起。

先看一笔交易,从地址1K87TMWzsQLzdZb4kUmKAcrCWnQqdVW5QJ走

1K87TMWzsQLzdZb4kUmKAcrCWnQqdVW5QJ 14.47个比特币,假设前一个地址的用户叫Neko,后一个地址的用户叫Sara。 我们看一下它的输出脚本。

以太坊智能合约代码_以太坊智能合约部署_以太坊智能合约转不出去币

以太坊智能合约代码_以太坊智能合约部署_以太坊智能合约转不出去币

Niko 在向 Sara 的地址汇款时写了这样一个脚本:OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG。

Sara 是怎么花钱的? ta需要构造这样一个脚本:OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG

Sara构造的脚本是后缀表达式,怎么可能呢? 观看下面的视频。

当最终输出为 True 时,表示 Sara 有权构造此交易,新交易将被发送到网络,转账成功。

以太坊智能合约部署_以太坊智能合约转不出去币_以太坊智能合约代码

比特币转账,不像银行,进入银行账户,而是一个一个输出脚本

OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG

OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG

OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG

OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG

以太坊智能合约转不出去币_以太坊智能合约代码_以太坊智能合约部署

OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG(1个地址可以有多个输出脚本)

比特币地址没有银行那样的余额概念。 一个地址的余额取决于该地址有多少个输出脚本,每个输出脚本的余额是聚合的。 这就是UTXO模型,Unspent Transaction Output以太坊智能合约部署,未花费的交易输出。

绕了这么大一圈,回到以太坊智能合约,以太坊的智能合约语言是Solidity,与后缀表达式的风格有很大区别。 当我们使用remix.ethereum.org将合约部署到区块链时,我们部署的是Solidity代码编译的结果,也就是对象的内容,对象和操作码是一一对应的。

以太坊智能合约部署_以太坊智能合约转不出去币_以太坊智能合约代码

我们可以定义OP_DUP为0x76,OP_HASH160为0xa9,OP_EQUALVERIFY为0x88,OP_CHECKSIG为0xac,则OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG转换为

76 a988 交流。

为了支持智能合约,以太坊在比特币的基础上做了如下改进:

比特币验证了区块链的可行性,以太坊引入智能合约,强烈冲击传统经济理念。 比特币是伟大的创新以太坊智能合约部署,以太坊是天才的设计,谁会是下一个领导者?