@yeying-community/yeying-client-ts
    Preparing search index...

    Variable AssetConst

    Asset: GenService<
        {
            delete: {
                input: typeof DeleteAssetRequestSchema;
                methodKind: "unary";
                output: typeof DeleteAssetResponseSchema;
            };
            detail: {
                input: typeof AssetDetailRequestSchema;
                methodKind: "unary";
                output: typeof AssetDetailResponseSchema;
            };
            search: {
                input: typeof SearchAssetRequestSchema;
                methodKind: "unary";
                output: typeof SearchAssetResponseSchema;
            };
            sign: {
                input: typeof SignAssetRequestSchema;
                methodKind: "unary";
                output: typeof SignAssetResponseSchema;
            };
            update: {
                input: typeof UpdateAssetRequestSchema;
                methodKind: "unary";
                output: typeof UpdateAssetResponseSchema;
            };
        },
    > = ...

    整个资产仓库基于分布式数字身份和资产内容哈希驱动,并能够在不同资产仓库间转移

    开放的分散式仓库网络的接口设计,参考了现实世界中的仓库,逻辑如下: 1、数字资产有两个标识,一个是数字资产的身份标识,可以是分布式数字身份,也可以是用户自定义的身份ID,另一个是数字资产内容的哈希值; 2、数字资产入库,发送到指定存储网络中的节点,可以指定副本数量,一方面保证内容不会因为单个节点故障而丢失,另外也保证内容的可访问性; 3、存储复用,如果两份资产哈希值一样,分两种情况来看,如果资产的所有者一样,则仓库会主动告知身份持有者存在重复,如果资产的所有者不同,会增加引用; 4、授权数字资产,所有者和使用者立交易关系,确保使用者根据指定的策略访问数据,仓库会统计数字资产的使用情况,比如统计内容取(浏览)的次数评估内容热度 ,或者统计内容存的次数(收藏)评估内容质量,目的是更好的分配存储资源;

    仓库使用场景: 1、创作场景,知识产权证明 2、代码包分发场景,比如软件包,模型包等 3、数字资产,类似nft等

    资产定位逻辑:

    采用三元组唯一定位,(用户身份、命名空间、哈希值) 命名空间的定位逻辑:某个用户下面是唯一的,命名空间所有者,可以指定多个参与者,用于存储完成某项工作生成资产数据,这些资产数据属于命名空间所有者 资产的定位逻辑:每个命名空间是隔离的,同一个所有者,同一个命名空间,资产哈希值必须唯一 资产块的定位逻辑:每个命名空间是隔离的,用一个所有者,同一个命名空间,资产块是唯一的,资产块维持一个引用计数,其逻辑如下:

    • 当有一个新资产放入命名空间,则引用计数加1;
    • 当有一个老资产移出命名空间,则引用计数减1; 当某个资产块的引用计数为0,表示没有和资产仓库服务签约,只是临时存储,通常分块上传完成以后就会立即签约,但是考虑委托第三方服务生成的数据直接放到命名 空间,第三方服务没有命名空间所有者的私钥,无法和资产仓库完成签约,只能先上传,事后由命名空间所有者完成签名;

    from service yeying.api.asset.Asset