用btcdeb工具学会Bitcoin Script中应当要学会的指令--中山大学软件工程学院专选课区块链原理与技术实验Lab7

  • 如何将两个数字相加/相减/相乘/相除/取大/取小
    • OP_ADD
    • OP_SUB
    • OP_MUL
    • OP
  • 如何取一个数字的负数/绝对值/SHA256
    • OP_NEGATE
    • OP_ABS
    • OP_SHA256
  • 如何复制 stack 顶部的元素
    • OP_DUP
  • 如何终止程序的执行,并返回成功/失败作为执行的最终结果
    • 始终失败:OP_RETURN
    • 基于条件使交易失败: OP_IF OP_RETURN OP_ENDIF <normal_operations>
      • // 把数字6压入堆栈
        OP_PUSHDATA1 06 
        
        // 将数字5压入堆栈
        OP_PUSHDATA1 05 
        
        // 检查前两个元素是否相等,将结果(0或1)压入堆栈
        OP_EQUAL 
        
        // 根据结果选择执行路径:如果前两个元素相等(即堆栈的顶部现在是1),则执行 OP_RETURN。否则继续。
        OP_IF 
            OP_RETURN 
        OP_ENDIF 
        
        // 正常的操作
        OP_1 
        
    • 使交易成功:<some_operations> OP_1
      • // 假设我们的操作是将两个数字相加
        
        // 将数字3压入堆栈
        OP_PUSHDATA1 03 
        
        // 将数字4压入堆栈
        OP_PUSHDATA1 04 
        
        // 将堆栈的前两个数字相加
        OP_ADD 
        
        // 将1压入堆栈
        OP_1 
        
  • 如何实现分支判断
    • 如果堆栈顶部的元素为非零,执行后面的指令,否则跳过: OP_IF [instructions] OP_ENDIF
    • 如果堆栈顶部的元素为零,执行后面的指令,否则跳过: OP_NOTIF [instructions] OP_ENDIF
    • 例:btcdeb ‘[1 2 3 OP_IF OP_ADD OP_ELSE OP_MUL OP_ENDIF]’

猜你喜欢

转载自blog.csdn.net/weixin_64123373/article/details/133863716