版本比较

密钥

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。
目录

一、需求描述

去中心化公司治理协作平台。类似Web2的钉钉和飞书。功能包括:

...

代码块
package 0x1.ExtensionPoint;
syntax = "proto3";

service IApp {
    rpc bootstrap();
    rpc mount(map<string, string>);
    rpc unmount(map<string, string>);
    rpc update(map<string, string>);
}

扩展点接口通过protobuf定义。

注意:

由于Move不支持合约动态调用合约代码,所以扩展点定义的接口都是通过JS实现。所有动态调用需求都由前端中转。

四、详细设计

1、扩展点管理

1.1 扩展点资源定义

代码块
languagerust
module ExtensionPoint {
   struct ExtensionPoint<ExtT> has key {
       id: u64, //扩展点的ID,按注册顺序自增
       name: vector<u8>, //名字,例如 DAOSpace.IApp/v1
       describe: vector<u8>, //描述
       protobuf: vector<u8>, //扩展点接口定义,通过protobuf定义
       created_at: u64, //创建时间
   }

   struct ExtensionPointRegistry has key{
       next_id: u64,
   }
}

1.2

...

扩展点合约接口

代码块
module ExtensionPoint {
    // 初始化
    public(friend) fun init()
    
    // 注册扩展点
    public(friend) fun registerExtensionPoint<ExtT>(name: vector<u8>, describe: vector<u8>, protobuf:vector<u8>): u64;
}

...

代码块
languagejson
{
    "id": 1, // 在DAOSpace注册的插件ID
    "name": "hello-world", // 插件名称
    "version": "v0.1.1" // 插件版本
    "icon": "ipfs://xxxxxxxxx/xxxxxxx.svg"
    "implements": [
        "0x1::ExtensionPoint::IApp" // 实现应用接口
     ],
    "required_caps": [
        "0x1::DAOSpace::DAOUpgradeModuleCap", // 需要DAO升级能力
        "0x1::DAOSpace::DAOMemberCap" // 需要DAO成员管理能力
    ],
    "contact": "./constract/Move.toml",
    "web": "./web/package.json"
}

3.2 应用插件前端开发

该微应用的前端为一个微前端应用,支持远程加载。应用插件的前端部分为一个微前端应用,支持远程加载,微前端框架选用阿里开源的qiankun。

...

五、参考资料

1、https://www.youtube.com/watch?v=hi88qOW8_WI

...