1.5合约应用案例

版权声明:忠于祖国,忠于人民 https://blog.csdn.net/boss2967/article/details/83063300

φ合约应用原理

  • 脚本
    每个比特币交易都有一个或多个输入和输出,每个输入或输出都有一个小的纯函数与之相关联,称为脚本,脚本可包含简化形式交易的签名。
  • 终结
    每个交易都有一个锁定时间,使得该交易处于特定状态并且可被新交易替换,直至锁定时间来临。预定时间可以是块索引或时间戳(这两个因素使用同一个内存项,小于5亿是块索引,大于5亿是时间戳)。当一个交易的锁定时间到了,则称之为终结。
    每个交易的输入都有一个序列号,对于正常发送币的交易,该序列号为UNIT_MAX,锁定时间为0。如果锁定时间还未达到,但所有的序列号为UNIT_MAX,则该交易也被认为是终结。序列号用来发布交易的新版本,无须验证其他输入的签名。例如:在一个交易中,每个输入都来自于不同的一方,每个输入的序列号都是0,这些序列号可以独立增加。
  • 签名模式
    • SIGHASH_ALL: 这是默认模式。它指示一个交易除输入脚本之外,所有部分都被签名。对输入脚本进行签名显然是不可能的,那样将无法构建一个交易,所以脚本总是不被签名。尽管如此,需要注意的是,输入的其他属性如输出、序列号等都会被签名。直观地说,它的意思是“如果每个人都把他们的钱放进去,并且输出的正是我想要的,那么我也同意把我的钱放进去。”
    • SIGHASH_NONE:输出没有被签名,可以是任何内容。使用这种模式意味着“如果每个人都把他们的钱放进去,我也同意把我的钱放进去,但我不关心输出的是什么。”这种模式使得其他输入方可以通过改变输入序列号来更新交易。
    • SIGHASH_SINGLE:与SIGHASH_NONE一样,输入被签名,但序列号没有被签名。因而其他人可以创建交易的新版本,然而,唯一的输出也要被签名。该模式说明“如果输出的正是我想要的,那么我同意把钱放进去,但我不关心其他人的输入。”
    • SIGHASH_SINGLE:与SIGHASH_NONE一样,输入被签名,但序列号没有被签名。因而其他人可以创建交易的新版本,然而,唯一的输出也要被签名。该模式说明“如果输出的正是我想要的,那么我同意把钱放进去,但我不关心其他人的输入。”

示例

  • 示例1:提供押金证明
  • 示例2:担保和争端调解
  • 示例3:保证合约
  • 示例4:使用外部状态
  • 示例5:跨链交易
  • 示例6:支付证明合约
  • 示例7:特定对象的快速调整(微)支付
  • 示例8:多方去中心化彩票

猜你喜欢

转载自blog.csdn.net/boss2967/article/details/83063300
1.5