长安链SDK是业务模块与长安链交互的桥梁,支持双向TLS认证,提供安全可靠的加密通信信道。
长安链提供了多种语言的SDK,包括:Go SDK、Java SDK、Python SDK、Nodejs SDK方便开发者根据需要进行选用。
Node(节点):代表一个链节点的基本信息,包括:节点地址、连接数、是否启用TLS认证等信息
ChainClient(链客户端):所有客户端对链节点的操作接口都来自ChainClient
压缩证书:可以为ChainClient开启证书压缩功能,开启后可以减小交易包大小,提升处理性能
1.创建节点
设置节点信息,可用作创建与该节点连接的客户端
//创建节点func createNode(nodeAddr string,connCnt int)*NodeConfig{node:=NewNodeConfig(//节点地址,格式:127.0.0.1:12301 WithNodeAddr(nodeAddr),//节点连接数WithNodeConnCnt(connCnt),//节点是否启用TLS认证WithNodeUseTLS(true),//根证书路径,支持多个WithNodeCAPaths(caPaths),//TLS Hostname WithNodeTLSHostName(tlsHostName),)return node}
2.以参数形式创建ChainClient
更多内容请参看:sdk_client_test.go
注:示例中证书采用路径方式去设置,也可以使用证书内容去设置,具体请参看createClientWithCaCerts方法,
//创建ChainClientfunc createClient()(*ChainClient,error){if node1==nil{//创建节点1 node1=createNode(nodeAddr1,connCnt1)}if node2==nil{//创建节点2 node2=createNode(nodeAddr2,connCnt2)}chainClient,err:=NewChainClient(//设置归属组织WithChainClientOrgId(chainOrgId),//设置链ID WithChainClientChainId(chainId),//设置logger句柄,若不设置,将采用默认日志文件输出日志WithChainClientLogger(getDefaultLogger()),//设置客户端用户私钥路径WithUserKeyFilePath(userKeyPath),//设置客户端用户证书WithUserCrtFilePath(userCrtPath),//添加节点1 AddChainClientNodeConfig(node1),//添加节点2 AddChainClientNodeConfig(node2),)if err!=nil{return nil,err}//启用证书压缩(开启证书压缩可以减小交易包大小,提升处理性能)err=chainClient.EnableCertHash()if err!=nil{log.Fatal(err)}return chainClient,nil}
3.以配置文件形式创建ChainClient
注:参数形式和配置文件形式两个可以同时使用,同时配置时,以参数传入为准
func createClientWithConfig()(*ChainClient,error){chainClient,err:=NewChainClient(WithConfPath("./testdata/sdk_config.yml"),)if err!=nil{return nil,err}//启用证书压缩(开启证书压缩可以减小交易包大小,提升处理性能)err=chainClient.EnableCertHash()if err!=nil{return nil,err}return chainClient,nil}