# 合约模板

# 单签验证合约

var publicKey pubkey = "e9108d3ca8049800727f6a3505b3a2710dc579405dde03c250f16d9a7e1e6e78" 

func unlockWithSig(signnature sig) {   
  verify(check_tx_sig(publicKey, signnature)) 
} 

验证是否是用指定的公钥进行的签名

  • 合约编译之后的字节码为:6c767c6b786c767c6bae7cac6c767c6b54796c767c6bae7cac6975
  • 合约对应的指令码为:
   0 FROMALTSTACK
   1 DUP
   2 SWAP
   3 TOALTSTACK
   4 OVER
   5 FROMALTSTACK
   6 DUP
   7 SWAP
   8 TOALTSTACK
   9 TXSIGHASH
  10 SWAP
  11 CHECKSIG
  12 FROMALTSTACK
  13 DUP
  14 SWAP
  15 TOALTSTACK
  16 4
  17 PICK
  18 FROMALTSTACK
  19 DUP
  20 SWAP
  21 TOALTSTACK
  22 TXSIGHASH
  23 SWAP
  24 CHECKSIG
  25 VERIFY
  26 DROP

# if语句使用示例

func If(b int64, c int64) {
  var a int64
  if b > c {
    a = b
  } else {
    a = c
  }
}

传入两个参数,将较大的参数赋值给函数内部变量

  • 合约编译之后的字节码为:040000000052795279a091616400000018757663000000187578
  • 合约对应的指令码为:
   0 DATA_4
   1 0
   5 2
   6 PICK
   7 2
   8 PICK
   9 GREATERTHAN
  10 NOT
  11 NOP
  12 JUMPIF
  13 24
  17 DROP
  18 DUP
  19 JUMP
  20 24
  24 DROP
  25 OVER

# 全局变量使用示例

var a int64 = 1

func globalParaAdd(b int64) {
  a = a + b
}
  • 合约编译之后的字节码为:6c767c6b7893
  • 合约对应的指令码为:
   0 FROMALTSTACK
   1 DUP
   2 SWAP
   3 TOALTSTACK
   4 OVER
   5 ADD
上次更新: 2021/10/28下午5:13:33