美文网首页
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