创建第一个合约

更多的调测方式请查看后面的“调测”章节
在govm文件夹下创建一个临时文件,如tmp
在tmp文件夹里创建一个文件,如app.go
在app.go里输入如下代码

  package app

  import core "github.com/lengzhao/govm/app/chain1/ae4a05b2b8a4de21d9e6f26e9d7992f7f33e89689f3015f3fc8a3a3278815e28c"

  type tApp struct {
  }

  func run(user, in []byte, cost uint64) {
      core.Event(tApp{}, "start_app", user, in)
  }

合约功能:打印一条日志,打印用户和入参信息
代码说明:

  • Import core */ae4a05b2b8a4de21d9e6f26e9d7992f7f33e89689f3015f3fc8a3a3278815e28c:
    • 引用接口模块,ae4a05b2b8a4de21d9e6f26e9d7992f7f33e89689f3015f3fc8a3a3278815e28c为系统对外提供的功能模块,名字固定不变。
    • core为别名,方便后续代码中使用该模块。
    • 禁止import合约系统外的模块,所有引用的模块只能是以github.com/lengzhao/govm/app/chain开头的
  • type tApp struct:定义一个私有结构体,可以用于写日志,读写数据库。只有私有结构体才能够操作日志和读写数据库。
  • func run(user, in []byte, cost uint64):这个是智能合约的调用入口,user为合约的调用者,in为用户携带的函数入参,cost为用户支付的费用(如卖票的合约,cost就相当于票价)
  • core.Event(tApp{}, "start_app", user, in):使用系统接口,发送一个事件(该接口默认只是打印一条日志。)