#run-time #module #session #player #finalized #nonce #hash

no-std multi-session-app

多会话应用运行时模块

1 个不稳定版本

0.8.3 2020年10月17日

#4#finalized

MIT 许可证

40KB
887

Celer 应用模块

CelerApp 是在 Substrate 上运行的,与 Celer 通用支付通道一起高度交互、安全且低成本的状态通道应用。通用支付通道是与特定应用无关的支付通道。此仓库提供了开发 dApps 链上运行时模块部分的示例。只有在玩家无法在链下达成共识并希望争议时,才需要进行链上操作。

CelerPay 和 CelerApp 通过简单的条件依赖接口松散连接。CelerApp 模块通过为 CelerPay 提供两个函数来用作支付条件:is_finalized 返回应用状态结果是否已最终确定;get_outcome 返回布尔值或数值结果。

// Simple interface of CelerApp with boolean outcome
// If app is finalized, return true value
// else, return false value
// dev: `args_query_finalization` is encoded value and you can take any type as argument.
pub fn is_finalized(args_query_finalization: Vec<u8>) -> Result<bool, DispatchError> {}

// If app outcome is true, return encode true value
// else, return encoded false value
// dev: `args_query_outcome` is encoded value and you can take any type as argument.
pub fn get_outcome(args_query_outcome: Vec<u8>) -> Result<Vec<u8>, DispatchError> {}

// Simple interface of CelerApp with numeric outcome 
// If app is finalized, return true value
// else, return false value
// dev: args_query_finalization is encoded value and you can take any type as an argument.
pub fn is_finalized(args_query_finalization: Vec<u8>) -> Result<bool, DispatchError> {}

// return encoded u32 value
// dev: args_query_outcome is encoded value and you can take any type as an argument.
pub fn get_outcome(args_query_outcome: Vec<u8>) -> Result<Vec<u8>, DispatchError> {}

您可以使用 Substrate 运行时模块或智能合约实现 CelerApp。

布尔值和数值结果运行时模块 布尔值和数值结果智能合约
部署选项 无分叉的运行时升级 最初智能合约部署或虚拟合约
运行时升级或部署的简便性 困难  简单
开发简便性 中等 简单
定制化程度  低
  • 无分叉运行时升级:区块链的运行时定义了区块链可以持有的状态,并定义了更改该状态的逻辑。Substrate 使得能够在不进行硬分叉的情况下部署增强的运行时功能(包括破坏性更改)。

  • 最初部署:由开发人员一次性部署,所有玩家可以重复共享。当玩家希望在链上争议时,无需部署或运行时升级额外的代码。

  • 虚拟合约:智能合约还可以作为由相关方虚拟事实性地实例化的虚拟合约存在于链外。虚拟智能合约只有在有人想要争议时才需要在链上部署,在这种情况下,CelerPay可以通过通过虚拟智能合约代码、初始状态和一个nonce计算出的唯一标识符找到调用is_finalizedget_outcomeAPI的位置。运行时模块条件不会是虚拟合约。

智能合约将支持未来。

依赖项

~7.5MB
~137K SLoC