贡献填报实现跨平台存取的部署、难点是修改权限的问题1、fch的链上授权;2、freedrive实际控制的权限等话题。



  • 2020.6.28 社群开发组讨论要点 关键话题 贡献填报实现跨平台存取的部署、难点是修改权限的问题1、fch的链上授权;2、freedrive实际控制的权限。字节长度,直接说取前两位表示长度更清晰一点。整理人:修行者dty_rRbH。

    刘教授提出:sign.cash改版增加了:1)私钥授权页面的“不可撤销授权”;2)私钥授权页面的“知库”授权;3)发起交易的“附加信息"栏,方便用户自己填写op_return信息。

    大师提出:用秘签签名交易,必须满足这个三个二维码格式,字符串是吗?不能生hex吗?或者生成这个格式?

    f1f7ff10-16c4-498a-bdf3-30761c94c829-l4fa8a458b29c1327731c19225aa2d017-s-m09ed7a65c834c87c5255009049dce83f.jpg /Users/pro/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/ba92630ecd0321cbdfd4e291f7af2bb7/Favorites/data/l4fa8a458b29c1327731c19225aa2d017-s-m09ed7a65c834c87c5255009049dce83f.jpg

    e7d0529f-e3a9-4785-9fba-cc6a3940b02c-l1a81214b2841726f77473f75b4f032ad-s-mbef6c1683da10b721583af676206fd91.jpg /Users/pro/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/ba92630ecd0321cbdfd4e291f7af2bb7/Favorites/data/l1a81214b2841726f77473f75b4f032ad-s-mbef6c1683da10b721583af676206fd91.jpg

    刘教授回复:不一定是三个,每个输入或输出或附加信息是一个码。下面的字符可以直接拷贝到密签里面。按照这种方式提供二维码和字符内容,密签就可以识别了。dealType应该是指输入,还是输出。1是输入,2是输出seq指在输入或输出中是第几个。输入和输出应该是分开排序的。index只有输入才有,应该是在txid指向的交易中,utxo的索引号,第一个是0

    大师回复:我要说是不是必须生成三个二维码,生成一个可以不?

    刘教授回复:至少一个输入,一个找零输出,一个附加信息吧。你这里如果提供完整的交易的话,至少是三个码。用户用密签扫描或粘贴获得交易信息,然后签名。签名之后的交易需要在sign.cash上解码广播。

    大师回复:是的,签名以后的文本在秘签上,只需要在sign.cash上广播就行了。

    张三疯提出:fch的logo和filecoin好像的问题。

    刘教授解答:fch的logo寓意是一只飞翔的自由鸟,中间两横是翅膀不是简单的f蓝色也是象征自由的海天之蓝。这个叫自由鸟,南美的,据说圈养会死。现在的logo已经抽象地一致了,当初设计的时候就考虑到了。

    刘教授回复:不一定是三个,每个输入或输出或附加信息是一个码。下面的字符可以直接拷贝到密签里面。按照这种方式提供二维码和字符内容,密签就可以识别了。dealType应该是指输入,还是输出。1是输入,2是输出seq指在输入或输出中是第几个。输入和输出应该是分开排序的。index只有输入才有,应该是在txid指向的交易中,utxo的索引号,第一个是0

    大师回复:我要说是不是必须生成三个二维码,生成一个可以不?

    刘教授回复:至少一个输入,一个找零输出,一个附加信息吧。你这里如果提供完整的交易的话,至少是三个码。用户用密签扫描或粘贴获得交易信息,然后签名。签名之后的交易需要在sign.cash上解码广播。

    大师回复:是的,签名以后的文本在秘签上,只需要在sign.cash上广播就行了。

    张三疯提出:fch的logo和filecoin好像的问题。

    刘教授解答:fch的logo寓意是一只飞翔的自由鸟,中间两横是翅膀不是简单的f蓝色也是象征自由的海天之蓝。这个叫自由鸟,南美的,据说圈养会死。现在的logo已经抽象地一致了,当初设计的时候就考虑到了。
    刘教授回复:不一定是三个,每个输入或输出或附加信息是一个码。下面的字符可以直接拷贝到密签里面。按照这种方式提供二维码和字符内容,密签就可以识别了。dealType应该是指输入,还是输出。1是输入,2是输出seq指在输入或输出中是第几个。输入和输出应该是分开排序的。index只有输入才有,应该是在txid指向的交易中,utxo的索引号,第一个是0

    大师回复:我要说是不是必须生成三个二维码,生成一个可以不?

    刘教授回复:至少一个输入,一个找零输出,一个附加信息吧。你这里如果提供完整的交易的话,至少是三个码。用户用密签扫描或粘贴获得交易信息,然后签名。签名之后的交易需要在sign.cash上解码广播。

    大师回复:是的,签名以后的文本在秘签上,只需要在sign.cash上广播就行了。

    张三疯提出:fch的logo和filecoin好像的问题。

    刘教授解答:fch的logo寓意是一只飞翔的自由鸟,中间两横是翅膀不是简单的f蓝色也是象征自由的海天之蓝。这个叫自由鸟,南美的,据说圈养会死。现在的logo已经抽象地一致了,当初设计的时候就考虑到了。

    a98a1e73c818418cbac7a46f19343f83.jpg
    ace7ceeb-411b-4002-abeb-54c8dc9d4c75-image.png

    a47bbbf6-2634-44b6-9e96-cba0dc37a947-lfe390fee628ea1f3eb5b7768f1cb2ebb-s-m119bf21d66593dc2491aaa00d9ad9937.jpg /Users/pro/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/ba92630ecd0321cbdfd4e291f7af2bb7/Favorites/data/lfe390fee628ea1f3eb5b7768f1cb2ebb-s-m119bf21d66593dc2491aaa00d9ad9937.jpg

    54e94126-33fd-4b5f-a820-3bce0ccf36dc-l20b950dcc30f0b6cf51e429f99f65609-s-md6eefdfbd1c48a18f8d7e915c7971bab.jpg /Users/pro/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/ba92630ecd0321cbdfd4e291f7af2bb7/Favorites/data/l20b950dcc30f0b6cf51e429f99f65609-s-md6eefdfbd1c48a18f8d7e915c7971bab.jpg

    @facjas 提出:@pisa_n5oN @大师CID:master_SAe7问一下存储侧链的源码链接,能给一个么?换了个电脑 木有github了 。

    大师回复:存储侧链,你指的是什么?指的是:freedrive。

    @facjas 回复:我去学习一下,考虑一下如何接入。

    大师提供学习链接:https://github.com/xiaomicoin01/fch4jhttps://github.com/fchwallet/freedriveJ

    @facjas 回复:@大师CID:master_SAe7目前freedriveJ有没有在线可用的?

    大师回复:有,在github上有说明https://github.com/fchwallet/freedriveJ

    @pisa_n5oN 提到:现在线上的版本 只有这几个接口可用。 其他几个接口,要等到 第二版部署过去才有。

    @facjas 提出:@pisa_n5oN @大师CID:master_SAe7问一下存储侧链的源码链接,能给一个么?换了个电脑 木有github了 。

    大师回复:存储侧链,你指的是什么?指的是:freedrive。

    @facjas 回复:我去学习一下,考虑一下如何接入。

    大师提供学习链接:https://github.com/xiaomicoin01/fch4jhttps://github.com/fchwallet/freedriveJ

    @facjas 回复:@大师CID:master_SAe7目前freedriveJ有没有在线可用的?

    大师回复:有,在github上有说明https://github.com/fchwallet/freedriveJ

    @pisa_n5oN 提到:现在线上的版本 只有这几个接口可用。 其他几个接口,要等到 第二版部署过去才有。

    1e3426ac-c058-4020-ba61-0731915f877d-image.png

    @facjas 回复到:是否想过,搞个release版本呢?

    @pisa_n5oN 回复:等成型了,就发布一个release.现在还有很多需求会变化。

    刘教授提到:贡献填报现在是@随心 @一棵树上 在做吧?@facjas 你们沟通一下进展,实现跨平台存取。修改权限兼容的问题需要@pisa_n5oN 的进展。@大师CID:master_SAe7你这里在做的是知库,对吧?存储都是在freedrive上现在的难点是修改权限。

    大师回复:是的。

    @pisa_n5oN 回复:跨应用这个,大家还要多测测,很可能解析数据格式,大家会解析不对。

    大师回复:@pisa_n5oN @昌用CID:CY_vpAv这个权限上传需要判断,freedrive也需要有吧,就是知库有一层权限判断,freedrive也有权限判断。

    刘教授回复:权限有两步:1、fch的链上授权;2、freedrive实际控制的权限。

    @pisa_n5oN 回复:现在我们在考虑,用脚本本身来做,如果走通,这样应用层就简单很多,freedrive上要能够真实授予和控制权限才行。fch上的授权是应用层的共识规则,落实到freedrive的实际控制。

    大师回复:是不是这样的子:比如知库,我这边按照流程增加知识,不需要判断权限,freedrive判断权限就行了,知库也需要判断用户CID和在线CID是否有权限,然后再让其发布知识到freedrive。

    刘教授回复:不是。你的知库应用,用Acid经过了Xcid的授权,可以为Xcid创建知识条目。然后在链上得知Xcid还授予了Bcid知库权限。而Bcid的私钥存在于一棵树上的应用里。那么Acid创建知识条目时,就需要在freedrive写入时,给Bcid赋予实际的修改权限。(这个实现,@pisa_n5oN 正在做)。

    大师回复:那和我现在的理解是这样的:如果登陆CID(离线CID)没有给在线CID授权,是不允许去发布知识的,只有发现其有权限的情况下,在允许其发布知识到freedrive。

    刘教授回复:没有经过授权,不能以登录cid的名义发布知识。如果在线cid,经过了Acid、Bcid和Ccid的授权。实际上,它是可以分别为这三个cid发布知识的,在发布者里填上相应的cid就行了。授权是多对多的关系。一个cid可以给多个在线cid授权,比如多个应用。一个在线cid也可以接受多个cid的授权,比如服务商帮助多个作者发布。

    大师回复:OK,和我理解是一样的,就是应用层要做一次权限判断。

    刘教授回复:是的。发布交易是一个cid,知识条目里面填写的发布者是一个cid。理论上没有授权也可以随便填写别人的cid。只是人家不一定认。应用层做个甄别,有授权才允许发布,这样更有序一些。贡献填报的逻辑也是一样的。可以帮人填,对方授权或认证后才能产生实际效力。比如,正式进入评估流程,否则责权不明确。

    大师回复:明白了。

    刘教授提出:cid是密码经济的基本主体单位,通过cid主页归类和展示cid的所有信息。我整理了cid主页的主要内容,大部分已经可以实现。还不能实现的在前面加了星号。

    @facjas dplanet和@随心 的freecash.vip已经提供了部分内容,建议扩展为完整的cid主页,让每个cid安家落户。

    相关数据标注了相应的协议,协议的最新内容可以在协议列表中找到:https://bbs.cash/topic/235/。

    需要@facjas 、@大师CID:master_SAe7@pisa_n5oN 或@Skeyil1lLiaeyr₿ch 提供相应的链上数据解析和调用接口。

    https://shimo.im/docs/6vqXv9CXQ8W83ttj/《cid主页》,可复制链接后用石墨文档 App 或小程序打开

    随心提到:贡献填报的 数据哈希 标记长度字节才1位?是不是有问题?或者是我理解的不对 @昌用CID:CY_vpAv

    c40a8a0f-5af4-4435-999c-60ca965badeb-image.png

    刘教授回复:1个字节能够表示256,sha256的值,应该32字节或64字节就够了吧?

    @Skeyil1lLiaeyr₿ch 回复:从0x00到0xff这样 表示256吗?

    刘教授回复:用一个字节表示后面内容的长度,2个字节可以表示256*256=65536字节就是@Skeyil1lLiaeyr₿ch 说的。从0x00到0xff这样 表示256。

    @Skeyil1lLiaeyr₿ch 回复:应该不行,有一部分被opcode占用了吧。

    刘教授回复:好像不管这些,开始读取了data了,就按着这个顺序取,取完为止。@pisa_n5oN @大师CID:master_SAe7具体还是请@pisa_n5oN和@大师CID:master_SAe7说一下。

    随心回复:有点绕,比如 256的长度,保存成一个字节后是什么?FF是2个字节啊,按顺序读取,先要知道长度,如果读一个长度,只能读到一个F。

    刘教授回复:协议规定一个字节,读到的就是FF,8位,一个字节。具体等一下@大师CID:master_SAe7或@pisa_n5oN 回复。

    随心回复:不是,代码里面要根据长度读取的,比如前两个位置放到的长度字节,还是前1个位置放的是长度字节。

    @pisa_n5oN 回复:长度是 数值的 十六进制表示。

    随心问到:长度256,怎么表示?

    刘教授回复:协议给出的是1,就是一个字节表示长度。协议给出的是2,比如encrypted_pwd,就是2个字节表示长度,最长能够表示65536.

    随心回复:先不谈协议,我想知道 实际是怎么存的。

    @pisa_n5oN 回复:256 已经超了1个字节了。 最多是 0xff。
    cfc2153f-ca39-4b4e-84be-ac9c5c53316c-image.png
    随心问到:是啊,那这边1个字节表示,我也有点不明白。

    @pisa_n5oN 回复:长度,是整型值 的 十六进制表示, 是1个字节宽度。就是你标记的地方。

    随心问到:传给freedrive的是什么?

    刘教授回复:这是大师给的示例@随心
    b06edaaf-3d0b-4cb0-af86-6baab15f4ced-image.png

    随心回复:0c=14,就是两个长度啊。

    刘教授回复:1个字节0占4位,c占4位,加起来是1个字节。

    随心回复:但是代码解析的时候,需要知道长度,取前几位表示长度。

    刘教授回复:取1个字节代表长度。

    随心回复:没有取1个字节的说法吧,substring(0,2)。

    @pisa_n5oN 解释道:比如这个data_hash, 是 64的长度:1f6dc4adf42047b18b7e8282cd17375c41bca7c166e5d72f27b50faaa57831ce
    而 64的 十六进制是 0x40那么拼起来就是: 40 + 1f6dc4adf42047b18b7e8282cd17375c41bca7c166e5d72f27b50faaa57831ce
    就是:401f6dc4adf42047b18b7e8282cd17375c41bca7c166e5d72f27b50faaa57831ce
    而协议里面规定这个字段的长度字段的宽度是 1个字节,那么解析的时候,只需要解析1个字节, 0x40(64) 作为长度,然后再读取后面的64个字节的内容。

    刘教授回复:比如协议规定了content是4个字节,那么就取4个字节得到长度,例子中的长度是0000001e,占了4个字节。

    随心回复:那就是1个字节表示取前两位,2个字节表示前4位?8个字节表示取前16位?

    @pisa_n5oN 回复:是的。而且,多个字节的时候,还要规定是 大端还是小端我们用的是小端。

    刘教授回复:16进制的两位?4位?表述上在清晰一下。

    随心回复:明白了,不过这个文档对开发人员有歧义。最好方便开发,直接说前面几个位置放长度标识,或者在文档中加一句话,1个字节表示两个位置

    刘教授回复:1个字节可表示两个16进制数。

    @pisa_n5oN 解释道:变长编码 有2部分: 长度 和内容
    长度本身是数值 , 协议规定哪部分表示长度值,也就是长度值转成16进制后占的几个字节宽度。内容,就是本身字符串转 16进制即可,用的现在应用层都用的utf-8编码。

    随心回复:说清楚就知道了,但是有些其他人开发的话还是要问一下才知道。直接说取前两位表示长度更清晰一点@昌用CID:CY_vpAv。

    大师回复:说字节就行,一开始我也认为说长度比较容易让人理解,后来和pisa沟通的时候发现,其实用字节是最具备通用的,也不容易产出歧义的,@随心 这个你清楚了怎么算,自然就会知道取几位?

    随心回复:对此异议已经清楚!但是新的开发人员还是会来问一次。

    刘教授回复:data的字段不都是utf-8编码,有的是ascii,因为有的字段允许多语言,有的字段只用英语比较好。这样可以吧?@pisa_n5oN。

    刘教授回复:@随心 你跟我说几位,我就没搞清楚你的意思。我以为是一个字节=8位呢,你说的实际上是一个16进制的数,实际上是4位。

    @pisa_n5oN 回复:utf-8 兼容 英文的。只要应用层,用指定编码转换 就可以,

    大师回复:8位=4位二进制=1个16进制。

    刘教授回复:@pisa_n5oN 明白,有些字段是要限制多语言,只让写英语。

    随心回复:可以在文档中明确一下 1个字节表示取 前两位。

    @pisa_n5oN 回复:下午我们整理下,应该搞个完整示列,先前大家没对接,就没去搞今天彻底描述,整理出来。我记得先前有整理个 fch协议集合的 链接, 群里谁还有吗?

    刘教授回复:https://bbs.cash/topic/235/有更新,我都会更新这个帖子。

    @pisa_n5oN 回复:on chian , off chain.,貌似大家习惯这样来表示链上,链下。

    刘教授回复:on chian , off chain 表达不了我们的意思,op_returen是链上的,但里面的内容跟底层共识的效力是不同的,现在chain也有fch和freedrive了。

    @pisa_n5oN 回复:哦,明白,现在freedrive , 要解析下 metadata里,协议内容。返回给上层,这个drive_id 是什么协议的, 这样上层处理起来可能会更方便些。

    刘教授回复:@pisa_n5oN 我现在就是不熟悉freedrvie的基本逻辑。上午还在想,可能需要一个非常明确的freedrive协议。但我弄不了,需要你弄出个底稿来,我们一起来打磨一下。metadata里的内容需要解析出来,供调用,供检索。

    @pisa_n5oN 回复:好的。


Log in to reply