贡献填报实现跨平台存取的部署、难点是修改权限的问题1、fch的链上授权;2、freedrive实际控制的权限等话题。
-
2020.6.28 社群开发组讨论要点 关键话题 贡献填报实现跨平台存取的部署、难点是修改权限的问题1、fch的链上授权;2、freedrive实际控制的权限。字节长度,直接说取前两位表示长度更清晰一点。整理人:修行者dty_rRbH。
刘教授提出:sign.cash改版增加了:1)私钥授权页面的“不可撤销授权”;2)私钥授权页面的“知库”授权;3)发起交易的“附加信息"栏,方便用户自己填写op_return信息。
大师提出:用秘签签名交易,必须满足这个三个二维码格式,字符串是吗?不能生hex吗?或者生成这个格式?
/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
/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已经抽象地一致了,当初设计的时候就考虑到了。

/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
/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 提到:现在线上的版本 只有这几个接口可用。 其他几个接口,要等到 第二版部署过去才有。
@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
刘教授回复: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。
随心问到:是啊,那这边1个字节表示,我也有点不明白。@pisa_n5oN 回复:长度,是整型值 的 十六进制表示, 是1个字节宽度。就是你标记的地方。
随心问到:传给freedrive的是什么?
刘教授回复:这是大师给的示例@随心
随心回复: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 回复:好的。