# 合约概述

# Summoner简介

Summoner是一种类似Go语言的用于表达合约程序的高级语言,专门用来编写运行在Bytom 2.0上的合约程序,合约的主要特征如下:

  • 类Go语言的设计,基本的语法、程序结构都类似于Go语言
  • 静态类型(编译时已知变量类型)
  • Bytom采用BUTXO结构,每个BUTXO包含,资产编号assetID、资产数量amount和脚本script。

Summoner扩展了script,可以在script放入资产数据,从而获得全局状态。

# Summoner程序结构

合约程序由以下要素构成:

  • 声明部分:声明引入的全局库,当前版本暂无
  • 全局类型定义:定义全局数据类型
  • 函数定义(声明):定义(声明)函数,位置无关

一个Summonner程序由一个合约组成,合约由全局状态数据及函数组成。合约定义形式如下:

var (variables)

func functionName(parameters) {statements}

var 为关键字,表示变量定义; variables为变量定义列表,表示该合约全局状态数据列表,可表示该合约锁定资产数量。

每一个函数描述了合约锁定资产的解锁方法,一个合约可以有多个函数。

func为关键字;

functionName为标识符,表示函数名;

parameters表示函数参数列表;

函数体内的每一条statements可为声明语句、表达式语句、验证或锁定等built-in语句。

示例如下:

var a int64 = 12345678

func globalParaAdd(b int64) {
  a = a + b
}
上次更新: 2021/11/2下午4:26:38