知识库成功上线 、 a在知识库发布的知识被B删除了风险讨论 、作者授权修改如何实现的等话题讨论。



  • 2020.6.10讨论话题,关键词 知识库成功上线 、 a在知识库发布的知识被B删除了风险讨论 、作者授权修改如何实现的讨论、知识库域名选择讨论、完成知库端口换成80,域名:http://www.explorerfch.wang/大师回复:http://www.explorerfch.wang:9001/   知库建立完成。
    群里所有开发者做出回应恭喜大师。
    pisa建议:搞个国外服务器,用80端口吧。
    刘教授提议:接下来,知库的使用者如果想看到CY_vpAv发布的知识,该怎么做?另外,知识条目的更新删除权限现在是怎么样的?不用担心他人误删自己发布的知识吧?@pisa_n5oN @大师。
    @大师回复:现在发布者只能看到自己发布的知识,我就怕a发布的知识被B删除了,所在在程序界面上做了控制,自己管理自己的知识。
    pisa_n5oN 回复:不会误删或者修改他人的内容的情况,除非有修改权限(底层通过,非标utxo锁定脚本控制的)。
    刘教授回复:可以测试一下,看看。@pisa_n5oN 也就是越权的交易,不会被记账,对吧?
    pisa_n5oN回复:是的,只有授权过才有修改权限。
    刘教授提出:作者授权修改如何实现?风险大不大。实现的话相当于可以合作编辑了。
    pisa_n5oN 回复:是的,一会到公司我整理下,讨论下。
    大师回复:这个授权好像没有考虑到,怎么授权也是一个问题。
    刘教授提出:作者在创建交易里增加输出授权?还是在更新交易中随时可以增加输出授权?另外,如何收回授权?这些问题考虑讨论一下。输出如果有金额的话,可以用金额数字表示授权情况。之前Pisa有考虑,只是没有具体到细节。
    pisa_n5oN 回复:是的,锁定脚本中填上对应的fch地址,收回也类似,就是去掉对应地址。
    刘教授回复:那就是每次更新都必须填上所有有权限地址,并且以最新更新的权限为准,对吧?在一个drive_id系列里面。
    大师回复:我觉得可以,就是在知识里面的address中增加修改知识的地址,只有在地址里面的才可以删除或者修改。
    pisa_n5oN 回复:是的,对外授权的接口,我们封装下就可以,只是还没给出来。
    大师提出:@pisa_n5oN 我理解的这个做法没问题吧
    刘教授回复大师:对,用cid就行。并且每次修改时,给出之前的授权cid,用户可以增删。
    大师回复:是的,慢慢等文档了,思想成熟了,做起来就快了。
    isa_n5oN提出:协作有两大部分功能:一个是权限(锁定脚本控制),一个是内容的格式协议。我们慢慢来,一点点实现。
    刘教授@isa_n5oN:格式是否可以直接采用markdown?
    pisa_n5oN回复:可以的类似git,git是现有应用里,最接近区块链概念的应用。分支就是分叉,每次提交就是tx。
    刘教授回复:git可以多借鉴。
    刘教授@大师 :如果现在没有开放权限设置,能够保证不会被误删,@大师 可以把所有条目提供给用户。最好是有一个自己内容的展示,用于编辑管理。一个公共的展示或搜索(可搜索作者、标题或内容里的词),以便应用知识。
    大师回复:是的,有考虑,首页的检索就是搞着知识搜索用的。
    刘教授提出:这样大家可以一方面创作知识,另一方面做些答题游戏之类的应用,来使用知识了。等更多作者和应用者加入进来,协作会更广,需求会更多。《知库》成熟之后,各位教授、博士、老师们就可以用知库创作和传播知识了。还可以把知库当题库、微博、公众号来使用。可以采用CID签名登录,目前密签、freecash.vip网页钱包、微信机器人FCH小可爱、fchwallet都可以签名。知库电脑上操作好些,移动端页面不好用。可以把自己的题库放在上面。不过,注意,这是完全公开的。目前,只能是纯文本,暂时还没有格式和图片,相关协议已经有了,正在一步步实现。
    宋士超提议:知识库域名选配的问题一个freecash.wiki 一个 fch.wiki。
    刘教授提出:涉及到协议的应用和更改,一起讨论好些。
    pisa_n5oN回复:这样子存freedrive的数据,就没有意义了。
    202FC5CD-1A76-4628-B6BC-36682D0D537A.jpeg
    一棵树回复:假设后期100M的文件。 签名哪里 传100M的数据?
    pisa_n5oN回复:你现在的问题是 签名慢,这个有办法解决的哦。 不能为了绕过这个问题,而修改协议。我觉得这样逻辑上不合理。
    一棵树上回复:你别说本地签名 光复制 都很慢。
    pisa_n5oN回复:ecdsa签名数据,是没有效率问题的哦。签名大文件,一定是用本地库签名, 不是调用rpc。
    一棵树上回复:那样要获取私钥。
    pisa_n5oN回复:当然啊,不签名,那么谁都可以存垃圾数据到freedrvie了。
    一棵树上回复:目前私钥传输 安全 对我来说。 不想做。 太危险。
    刘教授回复大师: 私钥不用传输吧?本地签名,传递签名就行了吧。
    pisa_n5oN回复:签名,咋会传输私钥。
    一棵树上回复:节点一台 。 18一台。。 两台之间 不需要传输吗?
    pisa_n5oN回复:你签名好后传回去就好了啊。 而且你应该有多个地址来做的。你要签名 100M得大文件,最好是在本地签名,如果不是本地签名,那么久要先把数据传递到私钥那台机器,签好名再返回给你。这些处理是不是你内部处理的?会有什么问题?为了效率,你2台机器 局域网就可以。
    一棵树上回复:另外假设, 通过密签。 这块 你又准备怎么解决。复制一大块数据?
    pisa_n5oN回复:你如果偏要远程分成不同局域网,这效率损失谁也解决不了。
    一棵树上回复:所以我就把 文件的存储。。 metadata 和 data 掉下方向。
    pisa_n5oN回复:掉下方向的结果是,上层协议变了。如果你只是自己一个人用这份数据,那我没话说。
    一棵树上回复:明白了。你先把那个错误处理下。
    pisa_n5oN回复:freeedrive是存,要协作的数据。这是重点支持的方向。 你想想是不是?
    一棵树上回复:metadata 放长数据,你那里报错。
    pisa_n5oN回复:抱歉,freedrive处理不了哦。freedrive开源代码网站https://github.com/SimbaBlock/xsv 
    pisa_n5oN回复:freedrive整个框架都在git上, 可以不依赖我们这边的接口来操作。但是你只要按照协议来,依然是可以协作的。或者你可以和大师沟通下,他那边是已经完整对接了freedrive。
    刘教授回复:1)数据需要按照协议共享,才有上链的价值,否则不如存在中心服务器上了。2)协议也可以是多元的,可以改变协议,不予之前协议兼容,就是分叉,也可以分叉,市场中看哪种协议更容易实现和获得市场支持。https://shimo.im/docs/9E9mzuV5uAgc7C2X/  《FOCP5V1_文件引用》。
    大师提出:FOCP5V1_文件引用 这个协议是不是变了。
    34F7D3BB-D7AA-41AF-9B86-E196CF8D9CCE.jpeg 77DDB361-FCD1-4FFC-8B32-8A3E00D621B4.jpeg
    pisa_n5oN回复:应该可以多个,数组应该可以。
    刘教授回复大师:今天做了修改,把data仅仅存放文件,其他字段移到matedata了。关于发布者的规则删掉了。master字段可以放引用该文件的原文件的data_hash也帮我推敲一下逻辑,看是否需要修改。master我修改明确了。
    3B876185-ED93-4566-95AC-933D92D69C13.jpeg
    pisa_n5oN回复:我和大师都误解了,原来是datahash。
    刘教授回复:是我之前没想明白。这里需要给出的是引用源。
    pisa_n5oN回复:那名称是不是换个,master给人感觉是cid或者地址之类的。
    刘教授回复:实际上,可以多个引用源引用。不过,一般是第一个引用源引用是存入的。存入之后,其他引用源只需要引用,应该不需要在修改master字段。名字可以换个中文我改成”引用源“吧。https://shimo.im/docs/9E9mzuV5uAgc7C2X 这是标准链接可以编辑。
    大师回复:一个文件引用另一个文件?这个怎么关联上的?
    刘教授回复:在引用的文件里的引用位置注明:描述应用端展示时,按照data_hash找到被引用文件,插入该位置。
    大师回复:如果文件中有多个引用,这个地方是不是多个。
    刘教授回复大师:是的,每个引用一个位置一个地方也可以有多个引用,连续放置就可以了。描述1描述2描述3
    @pisa_n5oN 问到:这些引用文件在哪里呢?
    大师回复:freedrive上。
    @pisa_n5oN 询问:就只是引用文件的 hash?
    刘教授回复:引用和被引用的都在freedrive上。
    @pisa_n5oN 询问:如果是在freedrive上,直接用drive_id作为引用标识呢?
    刘教授回复:按照data_hash是可以定位到具体的文件的吧。
    @pisa_n5oN 回复:可以。
    大师提问:是不是不是data_hash错了,应该drive_id吧。
    刘教授回复:用drive_id有问题,还要进一步确认是哪个data_hash。drive_id里面有一系列更新的文件。
    大师回复:你应用肯定保持最新的,难道还要应用旧的?
    pisa_n5oN 回复:如果是data_hash , 如何索引 引用文件呢? 好像建立不起来?得把所有 data文件,hash后,保存起来,提供查询?
    刘教授回复:确实需要建立data_hash的索引,因为data_hash才能定位到同一个内容还有一种情况,是同一个文件,保存在两个drive_id里面了。此时,一个data_hash实际指向了两个位置。不过,既然hash一样,文件应该是一样的,存取哪一个都可以。我们再好好考虑一下。
    pisa_n5oN 回复:这个引用,是不是类似 写一个文章的时候,对应的是参考资料?
    刘教授回复:如果改变的话,有些问题,比如我发了一篇文章,提供了一个图片说明某个事情,别人看的时候是A图片。但我后面可以通过更新图片换成B图片。图片和原文件的唯一性被破坏了。不是参考资料,就是把文章的一部分,因为技术原因,存放在另一个地方。
    pisa_n5oN 回复:是这个意思,那用drive-id不合适。如果drive_id有版本的概念就好了。这样就不会变化。
    刘教授回复:如果要修改的话,就是一个新的文件版本了。而不能修改文件的一部分。
    大师回复:如果这样的话,是不是考虑文件一旦上传就不允许修改了。如果修改就让他重新上传一个新的,新生一个driveid。
    刘教授提出:用data_hash,作为同一个文件的唯一识别是可以的,只是要处理,当同一份文件存在多个交易中的情况。好像也没太大问题,反正文件是同一个文件,多个副本,用哪个都是一样的。
    pisa_n5oN 回复:我想想这个设计。昌用老师说的的确是个问题。但是data_hash , 又需要额外建立很多索引来查询,感觉挺费资源的。
    刘教授回复大师:@大师 这个不仅涉及文件引用协议,也关系到整个freedrive的寻址方式。
    pisa_n5oN 回复:drive_id里 有update_id. update_id 相当于是版本。
    刘教授回复:drive_id便于标记统一文件的不同更新。也是有用的。data_hash则是标识文件的最可靠参数,用data_hash定位确定的文件是最合适的。
    大师提出:如果两个不同的作者上传了同一个文件会有影响吗。
    pisa_n5oN 回复:恩,好像是data_hash更直观,但是建立关系,我们要想想。 update_id 不够直接。
    刘教授回复:如果hash完全相同,应该没问题。是的,data_hash是不会错的。其他就容易出现更多问题。用data_hash做索引,对某个data_hash可以记录它出现在了哪些drive_id里面。这里涉及到信息世界的寻址问题,可以分两种寻址方式,一种是基于主体的寻址,即根据cid(地址或公钥)寻址;一种是基于客体寻址,即根据hash寻址,主体相关的任何信息都可以获得唯一的hash值。
    pisa_n5oN 发起讨论话题:这里的主要问题是引用一个固定的内容。
    这个固定内容的表示方式:

    1. data_hash ,   
      优点: 直观,
      缺点: 需要额外建立几乎系统里所有的hash索引来提供搜索, 当freedrive上内容很多的时候,这个建立索引可能会比较费资源。
                其次还有个缺点,这部分data_hash索引的data 可能没有额外的信息( 比如格式之类的...!) 
      2)drive_id 
      优点: 索引统一,本身已经建立了,可以复用,表示方式也比较统一
      缺点: drive_id 包含的内容可能会变化,导致引用内容可能随着时间推移,内容不固定。
      基于以上分析。可以结合2者
      还是用drive_id的表示,但是, 可以把drive_id的 锁定脚本设置为 没有任何人可以继续花,这样这个drive_id 就固定了。   
      所以在准备drive_id的时候,还可以把更多的信息放进去,这样可以丰富引用的内容。
      freedrive 里 的drive_id实际是 sha256(txid + vout) .任何人没法继续修改的 drive_id , 有2个好处
      1, 统一的表示方式
      2,丰富的引用内容
      刘教授回复:drive_id还有一个问题,就是不能跟其他存储系统通用。data_hash可以通用,存在其他系统中也可以。现在协议都是用data_hash,也是考虑这个问题。drive_id用于可编辑更新或协作的文件存储是很有用的,可以作为辅助。最底层的用data_hash应该更稳固一些。现在freedrive内容比较少,索引占用资源大的问题应该不严重吧。
      pisa_n5oN 提出:有人想存100m的视频内容了?
      刘教授回复:索引问题跟文件的大小关系不大吧?
      pisa_n5oN 提出:你要建立索引关系,至少要把每个data取出来,保存,然后算hash保存起来。这就是负担。而drive_id本身已经算了hash,其实可以复用。数据相同,datahash就会相同,当引用的时候,可能丢失了部分引用信息。driveid是唯一的,因为utxo是唯一的。对于提供服务的服务商只能链上解析。我再想想,能否解析的时候一并把datahash也建立起索性关系,貌似也可以!那这样的话,其实这个引用代表是datahash还是有更多信息的driveid(可变的和不可变的)由用户决定呢!是不是更自由一点?由用户决定。
      刘教授提出:跟应用的类型有关在文件引用协议里是要定位到唯一的被引用文件。格式在源文件里其他类型对文件的调用,比如在线协作,可能需求就不一样了。
      张三疯提问:我想问一下,如果用户想存大文件你们哪来的空间?那解决了什么疼点呢?刘教授回复:1、节点运营商提供,后续是要收费的。只要用户愿意出钱,空间不是问题。节点之间也有竞争市场化的。2、解决了安全性不那么高,有比较大的数据的分布式存储。去中心的程度,由用户自己定。想要安全一些,就多付费几个节点存储,想要廉价一些少付费就是了。是主链存储的安全与本地存储的便利之间的权衡。我付费存储在分布式系统里,在任何应用中,只要我授权就可以调用数据。数据是自己的,权利是自己的。免费的是最贵的,付出的代价是自己的私有数据和自由选择的权利。如果我的好友关系和通话记录是按照通用协议,存放在我可以控制的分布式系统里,就不需要依赖微信了。可以在各种社交app间自由转换。
      pisa_n5oN 提出:现在freedrive是不关心存的什么内容的,不去解析具体的metadata 和 data里的内容的,如果用data_hash , 底层需要解析 data, metadata了。应该是服务商需要解析。
      刘教授@pisa_n5oN :只解析metadata,可以吧?data的内容太多样,不用管。每笔交易都有且只有一个data_hash,可以考虑单独处理。
      大师回复:完成知库端口换成80,域名:http://www.explorerfch.wang/ ,同步更新:知识发布接口和UTXO查询接口,登陆知库即可看到。@昌用CID:CY_vpAv 你说的这个我们在考虑一下,等大家都达成一致,我就开发这个接口,这个接口相对来说比较简单。

Log in to reply