Hi Guest

More contents, please log on!

Bitmere.com 区块链前沿 Content

智能合约与逆波兰表达式

卜以寒
31 0 0
想必大家对 1+1,3-4,5x6, 8/4,(1+6)x9,1+6x7,这些简单的数学四则运算都不陌生,有时候遇到买菜大姐, 这些菜称称,一共多少钱啊? 8块,给10块,哎,这还有3块,找个儿整。人民群众喜闻乐见,耳熟能详的四则运算,有个高级的称呼中缀表达式。

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

中缀因为操作符都在中间位置,那能放到后面去么?当然可以了。

这种把操作符置后的方式叫逆波兰表达式,即 RPN,更通俗的叫法是后缀表达式。

中缀表达式怎么和后缀表达式对应呢?

后缀表达式有什么优点?

相较于前缀表达式更易于转换,最左边一定为运算资源。

不用括号,依靠运算顺序就能确定运算符的优先级,运算更简洁。

更符合计算机的计算方式。 计算机通过从左至右读取后缀表达式,就可以将遇到的运算对象压入栈,在遇到运算符时就弹出运算资源,完成计算,再将结果压入栈。最后留在栈中的就是计算结果。

来点小例子,展示后缀表达式的神奇与方便。

计算 1 2 +, 即为中缀表达式的 1+2。

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

开始上正菜了,先从比较简单的比特币解锁脚本说起。

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

1B3C5xnvS9ijJRiCEMcrZsBS7FerCQwp9x 0.08269623个比特币,假设前一个地址的用户叫Neko,后一个地址的用户叫Sara。大家看它的输出脚本。

Niko给Sara的地址打钱就写这样的脚本:OP_DUP OP_HASH160  OP_EQUALVERIFY OP_CHECKSIG。

Sara怎么花出去呢?ta需要构造好这样的脚本  OP_DUP OP_HASH160  OP_EQUALVERIFY OP_CHECKSIG。

Sara构造好的脚本就是后缀表达式,怎么会呢?请看大B站视频。

智能合约雏形-比特币脚本

智能合约雏形-比特币脚本

智能合约雏形-比特币脚本

最后的输出结果是True时,说明Sara有权限构建这个交易,新的交易将被发送到网络上,转账成功。

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

OP_DUP OP_HASH160  OP_EQUALVERIFY OP_CHECKSIG

OP_DUP OP_HASH160  OP_EQUALVERIFY OP_CHECKSIG

OP_DUP OP_HASH160 [B] 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代码编译后的结果,是object的内容,而object与opcodes是一一对应的。

咱可以定义OP_DUP为0x76,OP_HASH160 为 0xa9,OP_EQUALVERIFY为0x88,OP_CHECKSIG 为 0xac,那 OP_DUP OP_HASH160  OP_EQUALVERIFY OP_CHECKSIG ,就转为了 76 a9  88 ac。

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

支持图灵完备的后缀表达式(支持循环),可以做更多的事情,同时也释放出了恶魔。

通过Solidity与后缀表达式转换

还有最重要的一点,不在使用UTXO模型,而是使用Account模型,每次执行合约时,记录当前的数据状态。

比特币验证了区块链的可行性,以太坊引入了智能合约,强烈的冲击传统的经济观念。Bitcoin是伟大的创举,Ethereum是天才的设计,下一个引领风骚会是谁呢?
BitMere.com is Information release platform,just provides information storage space services.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
You have to log in before you can reply Login | 立即注册

Points Rules

Write the first review

卜以寒 小学生
  • Follow

    0

  • Following

    0

  • Articles

    8

Promoted