CKB一种去中心化的时间Oracle

CKB中可以获取到Inputs中Live Cell的创建时间,但是无法获取当前交易所在区块的时间戳。当需要获取时间信息时,可以使用两步机制,例如在去中心化借贷场景中,存款方在提取UDT时,先生成取款单,然后再进行取款操作,根据取款单的时间计算利息。而对于还款的情况会更复杂,要考虑用户提前提交还款单后,可能存在迟迟不确认还款的情况,最终还款时利息会少很多,需要设计一种复杂机制来处理这种情况。两步机制会造成中间状态的问题

在这里通过使用时间Oracle的方法来获得当前的时间,避免这种两步操作,降低合约的复杂度。

时间Oracle可以一小时更新一次或者10分钟等更新一次。实时性要求,跟时间Oralce的更新频率有关。


源码:GitHub - u2/ckb-time-oracle

已经部署在测试网

const time_type_id = "0x63eb41aadea32411547cdd9b62f7347b3c719cd1ae17f28123765d9098af7c96";

const time_cell_dep =  {
    outPoint: { txHash: "0x46093a1cbe8657478bccbc5f664c075fd7dfac961bbc754c660f65922fadecaf", index: 0 },
    depType: 0,
}

const time_script = {
  codeHash: "0x63eb41aadea32411547cdd9b62f7347b3c719cd1ae17f28123765d9098af7c96",
  hashType: "type",
  args: "0x7ac202f08b41448259ca387eee84ac4c285a33124628841ad7ee1815c61ec49108d1374b76cb5104ace0e2394b5d873f05c7ed8e8659d54b4cc29a98bf66b820";
};
2 Likes