
# Chaincode库接口
该静态库集成在BCS实例中。用户在开发链代码时，可以使用BCS提供的API接口文件对开发中的链码进行本地编译。
先将API接口文件下载（下载链接参见[资源下载](https://support.huaweicloud.com/devg-bcs/bcs_devg_0020.html#bcs_devg_0020__zh-cn_topic_0107538605_zh-cn_topic_0103308639_section28057671114457)）并解压到本地的GOPATH目录中，按照4.2.6章节的链代码示例代码来引用同态库。当链码开发完成后，将链码安装到BCS中时，链码会自动链接到BCS中的库代码，实现对链码端同态加密库的调用。
链码中调用同态加密库的引用路径为：import "ahe/PSW/api/ChainCode"
![](https://support.huaweicloud.com/devg-bcs/public_sys-resources/note_3.0-zh-cn.png)
请确保使用该引用路径，否则链码端调用同态加密库会失败。
#### ValidateInitBalance
- **接口原型**
  func ValidateInitBalance(BalanceInfo, PubKey string) (InitBalance string, err error)
  
- **功能描述**
  校验sdk.InitBalance生成的balanceinfo中余额证明的有效性。
  
- **输入说明**
  
  | 参数名         | 类型     | 描述        | 是否必须 |
  |:---|:---|:---|:---|
  | BalanceInfo | string | 初始余额数据    | 是    |
  | Pubkey      | string | 余额加密的公钥信息 | 是    |
     
  
- **输出说明**
  
  | 参数名         | 类型     | 描述     | 是否必须 |
  |:---|:---|:---|:---|
  | InitBalance | string | 初始余额密文 | 是    |
  | err         | error  | 错误信息   | 是    |
     
  
- **处理说明**
  验证余额有效后，返回余额的密文。
  
- **注意事项**
  这里用户余额真实性由用户的app逻辑保证，Chaincode端无法验证该用户的真实金额，只能验证该金额是大于0的范围。
  
 
#### ValidateTxInfo
- **接口原型**
  ValidateTxInfo(txInfo, cipherBalanceA, cipherBalanceB string) (newCipherBalanceA,newCipherBalanceB,newCipherTxA,newCipherTxB string,err error)
  
- **功能描述**
  校验PrepareTxInfo生成的Txinfo中交易证明的有效性。
  
- **输入说明**
  
  | 参数名            | 类型     | 描述                                                                                                                                                                                                                                | 是否必须 |
  |:---|:---|:---|:---|
  | txinfo         | string | 交易证明数据 说明： 交易信息数据包含有交易密文数据和交易证明数据，该信息来源于sdk.PrepareTxInfo返回的txinfo信息。 | 是    |
  | cipherBalanceA | string | A当前的交易余额（密文）                                                                                                                                                                                                                      | 是    |
  | cipherBalanceB | string | B当前的交易余额（密文）                                                                                                                                                                                                                      | 是    |
     
  
- **输出说明**
  
  | 参数名               | 类型     | 描述               |
  |:---|:---|:---|
  | newCipherBalanceA | string | 交易后待更新的A的余额      |
  | newCipherBalanceB | string | 交易后待更新的B的余额      |
  | newCipherTxA      | string | 交易金额（A的同态加密公钥加密） |
  | newCipherTxB      | string | 交易金额（B的同态加密公钥加密） |
  | err               | error  | 错误               |
     
  
- **注意事项**
  这里A是转账方，B是收款方。
  
 
