当事人生成规则

发布时间 2023-03-29 20:59:51作者: 月夜魂归

笔记软件在2023/3/29 20:49:12推送该笔记

两种类型语法规则

// 变量定义
BtPerson:
    'person' name=ID
    // //当事人的属性可以有一般属性和资产属性
    (attributes+=Attribute|personAsset+=PersonAsset)*;

单行

ConstructorOrInit.Init.BtPerson.push({
                 "name": element.name,
                 "model":"Single",
                 "value": generateExpression(element.value, ctx)
             })

多行

ConstructorOrInit.Constructor.BtPerson.push({
                 "name": element.name,
                 "model":"multi",
                 "value": generateExpression(element.value, ctx)
             })

生成规则

  1. 如果当事人为单行规则(无属性),采用定义一个{id:address}的当事人结构体

  2. 如果当事人为多行规则(有属性),为当事人进行构造函数定义,在多行规则里,当事人的初始化或赋值,只能选择一种

  3. 不论是单行还是多行都会

    • 生成map(address=>number) pendingReturns​变量支持用户实现退款 (提供_asyncWithdraw(person,money)函数)

    • 如果当事人被初始化,为该当事人创建实例(只有合约创建者可以进行初始化)

    • 如果当事人被赋值

      • 如果是被赋值为_caller或_anyone,那么指代将_caller = msg.sender(没有必要)
      • 其他情况,在构造函数内部,进行构造说明
    • 如果当事人有资产存在,为该资产添加owner属性,并对该资产的所有变量进行初始化操作,且仅允许该当事人对资产进行添加和更改

标准语法:

当事人:person name [Attribute] [PersonAsset]