美文网首页
Algorand智能合约(二)- TEAL语言

Algorand智能合约(二)- TEAL语言

作者: 飞驰2019 | 来源:发表于2020-01-30 12:07 被阅读0次

    通过前文我们可以知道,Algorand通过提供layer1智能合约,使得对交易的程序化审批成为可能。在定义审批逻辑时,需要用到其提供的一门特殊的语言,即TEAL。TEAL的全称为Transaction Execution Approval Language,意即交易执行审批语言。顾名思义,TEAL的职能仅限于定义审批交易的逻辑,这一点与以太坊等平台有很大不同。考虑到这一点,TEAL被设计成一门非图灵完备的语言,这对TEAL程序的安全性性能都大有裨益。

    一段程序的执行通常可以看作从输入到输出的过程,TEAL程序也不例外,其输入即为交易信息(交易双方地址,交易金额等),其最终输出则为0或者一个非0的整数,分别意味着拒绝交易和放行交易。最简单的TEAL程序类似int 1,即永远返回一个非0的值(这里为1)。在这种情况下,无论实际内容为何,交易始终会被放行(这样的合约显然既不安全,也没有实际意义)。

    TEAL采用了栈式风格的语法,这意味着在进行任何运算时,都需要将参数进行显式的入栈。以下通过一个简单的例子进行说明,假设我们需要计算如下内容:

                                                                         (1 + 2)  * 3

    在栈式风格下,其执行过程如下图所示:                    

1 + 2

            

3 * 4

    在TEAL中,对参数入栈,算术运算等操作的支持以操作码的形式体现。根据功能的不同,共分为以下几类:

    1. 运算类,包含算术运算,逻辑运算和加密操作    

    算术运算: +  -  *  /  ...

    逻辑运算:&&  || ==  !=  ...

    加密操作:sha256  keccak256  sha512_256 ...

    2. 加载参数(入栈)类,包含加载常量,交易信息(交易双方地址,交易金额等)和全局信息(交易费用等)

    加载常量:intc bytec arg ...

    加载交易信息:txn gtxn

    加载全局信息:global       

    3. 流程控制类    

    限于篇幅,这里仅列出了部分操作码,完整的操作码列表可以在官方文档找到。关于TEAL的使用模式及具体案例,会在下一篇中进行介绍。

相关文章

网友评论

      本文标题:Algorand智能合约(二)- TEAL语言

      本文链接:https://www.haomeiwen.com/subject/kmvvthtx.html