Merge pull request #17 from FISCO-BCOS/release-3.0.0 sync code from release-3.0.0
Merge pull request #17 from FISCO-BCOS/release-3.0.0
sync code from release-3.0.0
群/环签名客户端,通过向服务端发起请求生成签名,并将签名上链,然后调用群/环签名预编译合约实现签名的链上认证。关于群/环签名的开发示例,架构如下:
注意:当前分支为v3.x版本group-signature-client,仅适配于FISCO BCOS 3.0+; FISCO BCOS 2.0+ 适配版本请手动切换至master-2.0分支
部署服务端
群/环签名客户端要访问签名服务,因此需要先部署服务端,详细步骤可参考操作文档。
部署FISCO BCOS
客户端可将群/环签名上链,若要使用链上验证功能,需要部署FISCO BCOS,并开启隐私模块开关。
FISCO BCOS详细搭建步骤可参考搭建第一个区块链网络。
依赖部署完毕后,就可以拉取代码,编译并配置客户端。详细步骤如下:
编译客户端
git clone https://github.com/FISCO-BCOS/group-signature-client # 进入客户端目录 cd group-signature-client # 编译客户端需安装jdk v1.8及以上,gradle v4.6及以上 ./gradlew build # 编译成功后会生成目标目录dist
配置客户端
(1) 配置RPC服务:dist/conf/conn.json
dist/conf/conn.json
(2) 配置日志:dist/conf/log4j.properties,dist/conf/clog.ini
dist/conf/log4j.properties
dist/conf/clog.ini
(3) 配置区块链节点信息:dist/conf/node
dist/conf/node
dist/conf/
config-sample.toml
config.toml
nodes/127.0.0.1/sdk
ca.crt
sdk.crt
sdk.key
配置完客户端后就可以开始体验它的相关功能了。
接口说明详见群签名接口文档,以下命令在dist目录下执行。
(1)创建群
创建群组group1,创建群时使用了A类型线性对。
# 参数说明 # 启动客户端程序:java -cp 'apps/*:lib/*:conf' org.fisco.bcos.groupsig.app.Main # args[0] : 调用的接口名称 # args[1:]: 调用的接口参数 java -cp 'apps/*:lib/*:conf' org.fisco.bcos.groupsig.app.Main create_group 'group1' '123' '{"linear_type":"a", "q_bits_len":256, "r_bits_len":256}'
(2)群成员加入
在group1中加入群成员member1。
java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.groupsig.app.Main join_group 'group1' 'member1'
(3) 生成群签名
生成群group1中成员member1对信息“hello”的群签名。
java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.groupsig.app.Main group_sig 'group1' 'member1' 'hello'
(4) 产生群签名,将签名信息上链
首先生成群group1成员member1对信息“hello”的群签名,然后使用AMOP将群签名信息写到链上,返回合约地址。
java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.groupsig.app.Main deploy_group_sig 'group1' 'member1' 'hello'
(5) 链上验证群签名
示例:验证部署于地址为0xd6c8a04b8826b0a37c6d4aa0eaa8644d8e35b79f合约处的群签名有效性(返回群签名验证结果true/false)。
java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.groupsig.app.Main group_sig_verify '0xd6c8a04b8826b0a37c6d4aa0eaa8644d8e35b79f'
接口说明详见环签名接口文档。
(1) 初始化环
调用127.0.0.1 8005端口的群签名服务(群签名RPC服务部署方法参考群/环签名RPC ),初始化环ring1(环成员公/私钥长度默认为1024bits)。
java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.groupsig.app.Main setup_ring 'ring1'
(2) 加入环成员
在环ring1中加入一个环成员,可重复执行该命令来生成多个环成员。
java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.groupsig.app.Main join_ring 'ring1'
(3) 生成环签名
为环ring1的位置0处的环成员生成对消息“hello”环签名,假设当前的环成员大于4。
java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.groupsig.app.Main ring_sig 'hello' 'ring1' '0' '4'
(4) 生成环签名,并将签名信息上链
首先生成环ring1位置0成员对消息“hello”的环签名,然后使用AMOP将环签名信息写到链上,返回合约地址。
java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.groupsig.app.Main deploy_ring_sig 'hello' 'ring1' '0' '4'
(5) 环签名信息链上验证
示例:验证部署于地址为0x2426edaa1173f65cd7d62c93c935bfde329d247c处合约中的环签名有效性,返回验证结果。
java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.groupsig.app.Main ring_sig_verify '0x2426edaa1173f65cd7d62c93c935bfde329d247c'
由于环签名的签名长度以及签名/验证时间与环成员数目呈线性关系,为防止超gas,每个环的环成员数量不能超过32个。
群签名算法签名和验证时间与群成员数目无关,具有良好的可扩展性。
群签名算法签名长度与线性对参数设置有关,不同线性对的公私钥长度和签名长度(字节)如下:
详见接口文档。
FISCO BCOS开源社区是国内活跃的开源社区,社区长期为机构和个人开发者提供各类支持与帮助。已有来自各行业的数千名技术爱好者在研究和使用FISCO BCOS。如您对FISCO BCOS开源技术及应用感兴趣,欢迎加入社区获得更多支持与帮助。
group-signature-client的开源协议为APACHE LICENSE 2.0. 详情参考LICENSE。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
group-signature-client
群/环签名客户端,通过向服务端发起请求生成签名,并将签名上链,然后调用群/环签名预编译合约实现签名的链上认证。关于群/环签名的开发示例,架构如下:
注意:当前分支为v3.x版本group-signature-client,仅适配于FISCO BCOS 3.0+; FISCO BCOS 2.0+ 适配版本请手动切换至master-2.0分支
代码结构
部署依赖
部署服务端
群/环签名客户端要访问签名服务,因此需要先部署服务端,详细步骤可参考操作文档。
部署FISCO BCOS
客户端可将群/环签名上链,若要使用链上验证功能,需要部署FISCO BCOS,并开启隐私模块开关。
FISCO BCOS详细搭建步骤可参考搭建第一个区块链网络。
编译与配置
依赖部署完毕后,就可以拉取代码,编译并配置客户端。详细步骤如下:
编译客户端
配置客户端
(1) 配置RPC服务:
dist/conf/conn.json(2) 配置日志:
dist/conf/log4j.properties,dist/conf/clog.ini(3) 配置区块链节点信息:
dist/conf/nodedist/conf/目录下的config-sample.toml拷贝成config.tomlnodes/127.0.0.1/sdk目录下的ca.crt、sdk.crt和sdk.key文件拷贝dist/conf/node目录下config-sample.toml详细配置说明可参考配置中注释使用客户端
配置完客户端后就可以开始体验它的相关功能了。
群签名示例
接口说明详见群签名接口文档,以下命令在dist目录下执行。
(1)创建群
创建群组group1,创建群时使用了A类型线性对。
(2)群成员加入
在group1中加入群成员member1。
(3) 生成群签名
生成群group1中成员member1对信息“hello”的群签名。
(4) 产生群签名,将签名信息上链
首先生成群group1成员member1对信息“hello”的群签名,然后使用AMOP将群签名信息写到链上,返回合约地址。
(5) 链上验证群签名
示例:验证部署于地址为0xd6c8a04b8826b0a37c6d4aa0eaa8644d8e35b79f合约处的群签名有效性(返回群签名验证结果true/false)。
环签名示例
接口说明详见环签名接口文档。
(1) 初始化环
调用127.0.0.1 8005端口的群签名服务(群签名RPC服务部署方法参考群/环签名RPC ),初始化环ring1(环成员公/私钥长度默认为1024bits)。
(2) 加入环成员
在环ring1中加入一个环成员,可重复执行该命令来生成多个环成员。
(3) 生成环签名
为环ring1的位置0处的环成员生成对消息“hello”环签名,假设当前的环成员大于4。
(4) 生成环签名,并将签名信息上链
首先生成环ring1位置0成员对消息“hello”的环签名,然后使用AMOP将环签名信息写到链上,返回合约地址。
(5) 环签名信息链上验证
示例:验证部署于地址为0x2426edaa1173f65cd7d62c93c935bfde329d247c处合约中的环签名有效性,返回验证结果。
注意事项
由于环签名的签名长度以及签名/验证时间与环成员数目呈线性关系,为防止超gas,每个环的环成员数量不能超过32个。
群签名算法签名和验证时间与群成员数目无关,具有良好的可扩展性。
群签名算法签名长度与线性对参数设置有关,不同线性对的公私钥长度和签名长度(字节)如下:
接口说明
详见接口文档。
贡献代码
加入社区
FISCO BCOS开源社区是国内活跃的开源社区,社区长期为机构和个人开发者提供各类支持与帮助。已有来自各行业的数千名技术爱好者在研究和使用FISCO BCOS。如您对FISCO BCOS开源技术及应用感兴趣,欢迎加入社区获得更多支持与帮助。
License
group-signature-client的开源协议为APACHE LICENSE 2.0. 详情参考LICENSE。