开发前准备
链代码(Chaincode)又称智能合约,是用Go、Java或Node.js语言编写的程序,主要用于操作账本上的数据。链代码是运行在区块链上的、特定条件下自动执行的代码逻辑,是用户利用区块链实现业务逻辑的重要途径。基于区块链特点,智能合约的运行结果是可信的,其结果是无法被伪造和篡改的。
在使用区块链服务BCS时,用户需要开发自己的链代码和应用程序。用户的应用程序通过区块链网络中的Peer节点/节点调用链代码,用户链代码通过区块链网络的Peer节点/节点来操作账本数据。
- 智能合约由用户自行编写上传并保证安全,请务必注意命令注入等相关安全问题。
- 为了确保代码在不同用户之间的一致性运行,区块链服务参考了成熟的开源社区方案(如Hyperledger Fabric)。用户在部署智能合约时,使用预配置的容器镜像进行处理,通过预配置的开发/编译工具(例如:javac、cpp、gcc等)减少环境差异带来的问题,确保智能合约能够在区块链网络上正确运行。区块链服务通过资源隔离等方式,降低了由此带来的安全风险。
- 为了保障链上数据的机密性,建议采用以下手段进行防护:
- 数据加密:对链上存储的数据进行加密,只允许授权的参与方解密和查看数据。常用的加密方法包括对称加密和非对称加密。
- 访问控制:实施严格的访问控制机制,确保只有被授权的用户或节点才能访问敏感数据。例如:不接入公网或使用VPC安全组等网络隔离手段限制访问。
- 链下数据存储:对于特别敏感的数据,可以采用链下存储的方式,将数据存储在链下,并在区块链上记录其哈希值等摘要信息,以便在需要时验证数据的一致性和完整性。
开发环境准备
请根据自身业务选择Go或Java开发环境。推荐使用CloudIDE(支持在线、快速地构建链代码开发环境)。
Go开发环境准备:
- 安装Go开发环境。安装包下载地址为:https://go.dev/dl/。(请选择1.9.2之后的版本)
各个系统对应的包名(以1.11.12版本为例):
操作系统
包名
Windows
go1.11.12.windows-amd64.msi
Linux
go1.11.12.linux-amd64.tar.gz
- Windows下您可以使用.msi后缀的安装包来安装。默认情况下.msi文件会安装在“C:\Go”目录下。您可以将“C:\Go\bin”目录添加到Path环境变量中。添加后您需要重启命令窗口才能生效。
- Linux下,您需要将下载的二进制包解压至/usr/local目录。将/usr/local/go/bin目录添加至Path环境变量:
export PATH=$PATH:/usr/local/go/bin
安装完go语言后可以通过命令go version查看版本信息,以及通过go env命令来查看相关路径配置。
- 安装Go编辑器。编辑器可自行选择,推荐使用Goland:https://www.jetbrains.com/go/download。
Java开发环境准备:
仅适用于Fabric架构版本的区块链实例。
- 安装Java开发环境。下载JDK并安装(建议选择最新版本):https://www.oracle.com/technetwork/java/javase/downloads/index.html。
各个系统对应的包名(以15.0.2版本为例):
操作系统
包名
Windows
jdk-15.0.2_windows-x64_bin.exe
Linux
jdk-15.0.2_linux-x64_bin.tar.gz
- Windows下您可以使用 .exe后缀的安装包来安装。
- Linux下,您需要将下载的二进制包解压至/usr/local目录。
export PATH=$PATH:/usr/local/go/bin
配置环境变量(若无则新建):
- JAVA_HOME为jdk安装目录如“C:\Program Files (x86)\Java\jdk1.8.0_91”或“/usr/java/jdk1.8.0_91”(以下均略去双引号);
- CLASSPATH为“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; ”;
- 在Path中新增两条“%JAVA_HOME%\bin”和“%JAVA_HOME%\jre\bin”。
安装完jdk后,可以通过命令java -version查看版本信息。
- 安装Java编辑器。编辑器可自行选择,推荐使用IntelliJ IDEA。
下载源码包
下载Fabric源码包作为三方库。仅适用于Fabric架构版本的区块链实例。
请根据实际需求,选择下载对应版本的Fabric源码包:
https://github.com/hyperledger/fabric/tree/release-2.2
Fabric源码包选择和创建的区块链实例版本对应,即如果创建区块链实例时,Hyperledger Fabric增强版内核是v2.2(4.X.X版本),则Fabric源码包对应选择2.2版本。