Skip to content

LOVE20TKM/extension

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

246 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

扩展协议的使用场景

当 LOVE20 默认的行动激励方式无法满足行动需求时,可以开发并部署扩展协议,由扩展协议决定行动新的参与方式、验证方式与分配方式,以提升行动激励的公平与效率,并为行动增加新的玩法。

0. 原理

LOVE20 发起行动时,可以对行动设置白名单地址(不设置表示不限制参与地址),只有白名单地址才可以参与行动并获取激励。

扩展协议的工作原理,是将扩展协议的合约地址设置到行动的白名单地址中,让该扩展协议合约参与行动并拿到全部的行动激励,再根据扩展协议合约内部的规则进行激励的二次分配。

1. ExtensionCenter

ExtensionCenter 是扩展协议系统的用户管理合约,负责维护扩展协议与行动的关联关系,统一管理用户参与列表,并提供跨扩展协议的统一查询接口。所有扩展协议在初始化时都需要通过 ExtensionCenter 的 registerActionIfNeeded 注册行动,并在用户加入/退出时通过 ExtensionCenter 维护用户列表。

前端可以通过 ExtensionCenter 方便查询特定用户参与的所有扩展协议类行动列表。

2. 如何开发扩展协议

2.1. 开发扩展协议及工厂合约

基于 IExtension 开发具体扩展协议,基于 ILOVE20ExtensionFactory 开发扩展协议工厂合约。扩展协议合约建议至少具备一种“加入/退出”机制(面向用户的参与入口),可选择的相关基类如下:

  • 无需代币:ExtensionBaseRewardJoin
  • 需要代币:ExtensionBaseRewardTokenJoin
  • 自定义(自己实现加入退出机制):ExtensionBaseReward

自己实现时,需注意在行动阶段第一时间调用 initializeIfNeeded,确保扩展协议正常初始化;并在实现加入/退出时,先完成 ExtensionCenter 的 registerActionIfNeeded 调用,以便能够通过 ExtensionCenter 维护行动的用户列表。

2.2. 部署工厂合约

前端可以以工厂合约为基准,来支持各种不同类型的扩展协议。

前端维护可信扩展协议工厂合约列表,用于识别和处理不同的扩展协议行动。

2.3. 创建扩展合约

使用工厂合约创建具体行动所使用的扩展协议合约。

注意此时需转 1 个代币给扩展协议合约,用于后续 initializeIfNeeded 时作为合约参与行动的代币,以完成扩展协议合约与行动的关联。

About

used for Action.whiteListAddress

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •