
# 概述
合约主要用于操作账本上的数据。作为运行在区块链上的、特定条件下自动执行的代码逻辑，合约是用户利用区块链实现业务逻辑的重要途径，基于区块链特点，合约的运行结果是可信的，其结果是无法被伪造和篡改的。
![](https://support.huaweicloud.com/devg-bcs/public_sys-resources/note_3.0-zh-cn.png)
- 智能合约由用户自行编写上传并保证安全，请务必注意命令注入等相关安全问题。
- 为了确保代码在不同用户之间的一致性运行，华为云区块链引擎服务参考了成熟的开源社区方案（如Hyperledger Fabric）。用户在部署智能合约时，使用预配置的容器镜像进行处理，通过预配置的开发/编译工具（例如：javac、cpp、gcc等）减少环境差异带来的问题，确保智能合约能够在区块链网络上正确运行。华为云区块链引擎服务通过资源隔离等方式，降低了由此带来的安全风险。
- 为了保障链上数据的机密性，建议采用以下手段进行防护：
  - 数据加密：对链上存储的数据进行加密，只允许授权的参与方解密和查看数据。常用的加密方法包括对称加密和非对称加密。
  
  - 访问控制：实施严格的访问控制机制，确保只有被授权的用户或节点才能访问敏感数据。例如：不接入公网或使用VPC安全组等网络隔离手段限制访问。
  
  - 链下数据存储：对于特别敏感的数据，可以采用链下存储的方式，将数据存储在链下，并在区块链上记录其哈希值等摘要信息，以便在需要时验证数据的一致性和完整性。
   
 
基于合约SDK开发合约的流程如下：
1. 下载对应的合约SDK文件。
2. 配置SDK文件到本地合约项目。
3. 基于SDK提供的库函数进行合约开发。
华为云区块链提供Go、Solidity类型的合约示例供开发者使用，示例下载和开发参考如下：
表1华为云区块链引擎不同合约类型开发指南 
| 合约类型     | 合约SDK下载                                                                                                                                     | 开发指南                                                                                  |
|:---|:---|:---|
| Go       | [链接](https://huaweicloudchain.obs.cn-north-4.myhuaweicloud.com/contract/go-contract-sdk.zip)                                                | [参考文档](https://support.huaweicloud.com/devg-bcs/bcs_devg_01_006.html#bcs_devg_01_006) |
| Solidity | 不涉及                                                                                                                                         | [参考文档](https://support.huaweicloud.com/devg-bcs/bcs_devg_01_056.html#bcs_devg_01_056) |
| Java     | ``` <dependency> <groupId>com.huawei.huaweichain</groupId> <artifactId>contract-sdk</artifactId> <version>0.2.2</version> </dependency> ``` | [参考文档](https://support.huaweicloud.com/devg-bcs/bcs_devg_01_064.html#bcs_devg_01_064) |
   
