2 个版本
0.8.5 | 2020年12月3日 |
---|---|
0.8.4 | 2020年10月17日 |
#2 在 #finalized
39KB
851 行
Celer 应用模块
CelerApp 是高度交互、安全和低成本的跨链应用,在 Substrate 上运行,并与 Celer 通用支付通道 一起使用。通用支付通道是与特定应用无关的支付通道。此存储库提供了开发 dApp 的链上运行时模块部分的示例。当玩家无法在链下达成共识并需要争议时,才需要链上操作。
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_finalized
和get_outcome
API 的位置。运行时模块条件不是虚拟合约。
*智能合约将支持未来。
依赖项
~7.5MB
~139K SLoC