BSV上的一种可替换token的新方案:Oracle方案

问题

BSV有一个基于UTXO的层一token方案,但该方案无法完全在层一辨别token的真伪。有两种思路来解决这个问题:

  1. 在tx中携带历史tx链,但该方案引入了tx大小膨胀的问题。
  2. 在二层识别正确的UTXO集合,相当于把一大部分防伪工作放到了二层。

新方案的原理

这里要介绍的Oracle方案就是采取的第二种思路。该方案原理如下:

  1. Oracle维护合法的token UTXO集合。
  2. 当钱包收到一笔token UTXO时,向Oracle申请该UTXO的合法性签名。
  3. 当Oracle收到一个token UTXO的签名请求时,如果UTXO是合法的,那么对outpoint进行签名,并返回给请求方。

通过上述分析,因为token UTXO合法性问题可以完全交给层二做,那么层一的脚本可以做得非常简单,甚至只需要在P2PKH等普通脚本模板后面增加一个OP_RETURN并携带token ID、数量等描述数据即可。当然,为了增加互通性,需要有统一的描述数据格式标准。

潜在问题及解决方案

安全问题

如果只有一个Oracle,那么会出现单点故障或Oracle作恶的安全性问题。可以考虑通过引入多个Oracle服务提供商,形成市场竞争。这样既可以保证单个Oracle服务故障不影响整体服务,同时又能通过不同Oracle交叉验证token的合法性。

性能问题

因为token也采用UTXO格式,收发双方可以采用P2P的方式直接传递,发送方提供作为输入的token合法签名。接收方可以自行验证合法性,并根据需要立刻或延迟向Oracle获取输出的新token UTXO合法性签名。

token识别问题

开发者可能会开发各种不同的合约与token方案一起使用,各式各样的合约都可能会持有一种或多种token,Oracle如何识别合约中的token种类和数量呢?
让Oracle识别每种合约模板是不现实的,因为合约种类很多,模板种类随时都在增加。但让Oracle只识别不同合约中标准的token描述数据是可能的。Oracle可以把输入、输出中的token描述数据提取出来,判断token的流向和数量,依此来判断合法性,维护合法token UTXO集合。
也就是说,token描述数据是识别token的关键,这种数据可以嵌入到各种不同用途的UTXO中。Oracle通过识别token描述数据来维护token UTXO集,而不用关心是哪种合约模板。

基于Oracle token的智能合约

智能合约可以通过Oracle签名来判断token输入的真伪。为了增加安全性,合约可以用n/m的方式验证来自多个Oracle的签名。在此基础上,合约理论可以支持:token转账、合约分发token、原子交换等各种功能,这些功能组合起来可以实现类似以太坊上uniswap合约等更复杂的功能。

猜你喜欢

转载自blog.csdn.net/Edward_sv/article/details/109751531