如提示”订阅链失败,与节点连接失败,请检查节点端口是否开放”,需检查以下几点:
1.链节点端口是否开放2.所订阅的链的节点部署的ip和端口是否和生成节点证书时填写的一致;导入外部证书时,填写的ip和端口是否与已启动的链一致。3.链是否为容器启动,容器启动的链不能用容器启动的管理台订阅,因为网络是不通的。4.外部导入的tls证书是否正确5.申请和导入节点证书时,ip地址不能填127.0.0.1如提示”订阅链失败,证书错误,请检查用户证书是否正确”,需检查以下几点:
1.一般导入外部链容易出现,请检查是否全部证书导入正常,是否和链使用的证书为同一套。如提示”订阅链失败,tls握手失败,请检查证书是否正确”,需检查以下几点:
1.一般导入外部链容易出现,请检查TLS证书是否正确导入,是否是订阅组织下的用户。如提示”订阅链失败,chainId错误,请检查chainId是否正确”,需检查以下几点:
管理平台调用合约后,会同步查询该交易txID,确认是否成功出块,如果查不到会导致该问题,可能由以下原因导致
检查投票组织下是否有用户,如果没有请申请用户证书,如果是导入的组织,请导入该组织下用户证书
合约部署失败可能由以下几个原因引起:
目前还不支持修改
需检查以下几点:
与节点建立连接失败,可能由以下原因导致:
交易发送者用户身份错误,具体表现为签名证书配置错误,sdk_config.yml中的user_sign_key_file_path和user_sign_crt_file_path配置,需和链用户保持一致
创建合约需线下多签,多签用户不足,或多签用户证书配置错误,javasdktest中的多签用户为TestBase中的adminUser1、adminUser2、adminUser3,需为这个三个用户配置正确的证书和私钥
应用项目中,使用sdkjar包可通过maven仓库直接依赖,需注意一下几点:
长安链采用Go语言开发
智能合约目前支持Go、Solidity、RUST、C++、TinyGo
建议开发语言:rust,合约内可以引用大多数外部依赖(如:含随机数的不可用)。建议开发工具:vscode,+插件:rust-analyzer
funcPutState(keystring,fieldstring,valuestring)ResultCode实际存储到leveldb的key为:contractName+“#”+key+field
长度限制:key:64、field:64、value:1M
且key、field符合正则^[a-zA-Z0-9._-]+$,只能为英文字母、数字、点、横杠、下划线
两个参数的原因:一个逻辑性的命名空间概念,key作为namespace一般为有规律的值
不同组织间的CA证书可以使用同一个。但是不建议这样做,建议是一个组织一个CA证书。
证书的组织字段和trust_roots的org_id字段,无强制联系。
合约代码部署也是一个交易。发送给某个节点后,该节点会把交易广播到自己的网络中。其他节点也就有了这个交易了。交易上链需要各个节点达成共识,其他共识节点也会执行该交易。
可使用cmc工具可获取nodeid:./cmccertnid-h,是对证书的公钥进行SHA2_256,再base58编码后形成nodeid
长安链的用户标识体系分为以下两大类:
暂不支持,某条链只能选择其中一种模式。
长安链的组织证书即配置trust_root里面的证书,用来验证交易发起者或链参与者是否为该链的联盟成员。trust_root中可以配置组织根证书或组织中间证书。建议使用组织中间证书,以免根证书遗失或不慎泄露造成的不便。
长安链的节点证书分为两类。一类是TLS证书,一类是sign证书。TLS证书用于跟客户端建立TLS链接以及节点间通信。sign证书用于签名验签等,通常在创建交易和共识投票过程中使用。上述证书均需通过CA证书签发获得。通过建链脚本生成的节点证书为consensus和common两套,均包括上述TLS和sign证书。其中,配置使用的是consensus(共识节点),而common(同步节点)作为预留。
长安链的用户证书从角色上分为admin、client和light三类。
上述每种角色的用户从用途上分为TLS和sign两种,主要作用分别是:
理论上没有上限
证书的有效期可以通过openssl查看opensslx509-inca-sign.crt-noout-text
长安链的客户端与节点通信,节点间通信均建议使用TLS通信。其中,客户端与节点间的TLS通信可选择是否开启,节点间TLS通信则必须开启。
用户可以通过修改配置文件chainmaker.yml选择是否开启TLS。(长安链仅支持选择客户端与节点间是否启用TLS链接)
#RPCTLSsettingstls:#TLSmode,canbedisable,oneway,twoway.mode:disable#RPCTLSprivatekeyfilepathpriv_key_file:../config/wx-org1.chainmaker.org/certs/node/consensus1/consensus1.tls.key#RPCTLSpublickeyfilepathcert_file:../config/wx-org1.chainmaker.org/certs/node/consensus1/consensus1.tls.crt将mode设置为disable即可关闭TLS。将mode的设置为oneway(单向认证)或twoway(双向认证)即可开启TLS。
链权限可以动态配置。长安链通过发起权限管理类系统合约实现权限修改。该系统合约交易符合当前权限策略要求,并经过共识和落块,则新配置就会生效。
长安链把共识节点降级为同步节点,只需要在链上将该共识节点的nodeId从censensus列表中删除。删除共识节点nodeid的cmc命令参考
长安链目前支持同态加密、零知识证明、层级加密等算法,并基于隐私合约方案在长安链上原生支持基于TEE的硬件可信计算环境方案,后续还会逐渐丰富扩展。