8. FAQ
8.1. 合约开发建议采用哪种开发语言?建议使用的开发工具是什么?
建议开发语言:rust,合约内可以引用大多数外部依赖(如:含随机数的不可用)。 建议开发工具:vscode,+ 插件:rust-analyzer
8.2. 智能合约中PutState有两个参数是什么意思?
func PutState(key string, field string, value string) ResultCode
实际存储到leveldb的key为:contractName + “#” + key + field
长度限制: key:64、 field:64、 value:1M
且key、field符合正则
^[a-zA-Z0-9._-]+$
,只能为英文字母、数字、点、横杠、下划线两个参数的原因:一个逻辑性的命名空间概念,key作为namespace一般为有规律的值
8.3. 不同组织间有没有共同的ca?
不同组织间的CA证书可以使用同一个。但是不建议这样做,建议是一个组织一个CA证书。
# 各组织不同CA配置
trust_roots:
- org_id: "wx-org1.chainmaker.org"
root: "ca1.crt"
- org_id: "wx-org2.chainmaker.org"
root: "ca2.crt"
- org_id: "wx-org3.chainmaker.org"
root: "ca3.crt"
# 各组织相同CA配置
trust_roots:
- org_id: "wx-org1.chainmaker.org"
root: "ca1.crt"
- org_id: "wx-org2.chainmaker.org"
root: "ca1.crt"
- org_id: "wx-org3.chainmaker.org"
root: "ca1.crt"
8.4. 组织间的数据能否实现哪些数据可以公开给对方,哪些数据不能公开给对方
上链数据均共享。可以根据场景需要,采用混合加密、分层身份加密、同态加密、零知识证明等方式保护数据隐私
8.5. 合约代码是否需要每个组织节点都部署?
合约代码部署也是一个交易。发送给某个节点后,该节点会把交易广播到自己的网络中。其他节点也就有了这个交易了。交易上链需要各个节点达成共识,其他共识节点也会执行该交易。