全部产品
云市场
云游戏

环境搭建 MAC OS

更新时间:2019-03-14 15:27:29

本文介绍在MAC OS环境下如何快速搭建开发环境并开始一个简单的Demo工程。

安装配置 Java

您可以参考 Oracle 官方文档了解如何 安装 JDK(英文)。下载mac对应的img安装包,进行安装。

说明:默认情况下,建议使用 Java 8(英文) 环境。您也可以在 Java 7 或更高版本中使用 ,配置与 Java 8 相同。

安装Apache Maven,您需要先下载 Apache Maven 3.2.5更高版本(英文),然后在本地进行安装。可参考 Apache Maven 官方文档了解如何 安装 Maven(英文)。 在完成 Maven 安装后,配置以下环境变量:

M2_HOME:配置为 Maven 的安装路径。
PATH:增加 %M2_HOME%/bin 路径。
export M2_HOME=$(/usr/local/Cellar/maven/3.2.2/libexec)
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

安装IDEA

官网下载IDEA,下载之后,根据提示安装IDEA。

生成证书请求和私钥

我们需要如下几项内容:

  • 证书请求文件( csr.pem)
  • pkcs8格式的私钥文件(key_pkcs8.pem)
  • 私钥密码(ssl_key_password)
  • 证书文件(cert .pem)
  • 证书信任文件(trust.keystore)

下面我们将详细介绍,如何生成这些文件和内容。

  1. 执行命令 openssl req -newkey rsa:2048 -keyout key_pkcs10.pem -out csr.pem

    在该命令执行的过程中,系统会要求您填写如下信息:

    • PEM pass phrase:密码,该密码在下一步将私钥格式转换为中使用私钥信息标准格式(PKCS#8)时作为-passin参数的值。
    • Country Name (2 letter code):使用国际标准组织(ISO)国码格式,填写 2 个字母的国家代号,中国请填写 CN。
    • State or Province Name (full name):省份,例如填写 Zhejiang。
    • Locality Name (eg, city):城市,例如填写 Hangzhou。
    • Organization Name (eg, company):组织单位,例如填写公司名的拼音。
    • Organizational Unit Name (eg, section):例如填写 IT Dept。
    • Common Name (eg, your websites domain name):进行 SSL 加密的网站域名。 注意:

    这里并不是单指您的域名,而是直接使用 SSL 的网站名称,例如:pay.abc.com。

    不同的 URL 在这里被定义为不同的网站域名,例如:abc.com、www.abc.com、pay.abc.com 会被识别为 3 个不同的网站域名。

    这里的网站域名应该和邮件客户端软件设置的 SMTP/POP3 服务器名称一致。

    • Email Address:邮件地址,可以不填。
    • A challenge password:可以不填。
    • An optional company name:可以不填。
  2. 将证书申请步骤中的私钥文件由证书请求(PKCS#10)格式转换为私钥信息标准格式(PKCS#8)。

    # -passin参数请输入您上一步制作证书申请时的密码,-passout参数请设置新的ssl私钥密码,在配置客户端时会用到
    openssl pkcs8 -topk8 -in key_pkcs10.pem -passin pass:****** -out key_pkcs8.pem -passout pass:******
    

    注意:请务必保存好您的私钥文件key_pkcs8.pem,在 开始一个Demo 中您会需要它来初始化客户端。

  3. 上传证书申请csr.pem

    upload_cert_req

  4. 证书申请上传提交后,后台会进行审核,一般会有以下 2 种状态显示

    • 未申请:未申请使用该联盟链。
    • 通过:恭喜,成功加入该联盟链,可以下载已签名用户证书及开发 SDK。

    apply_succeed

开始一个Demo

本节为您讲解如何快速配置工程,完成第一个Demo开发。

  1. 登陆BaaS平台,在左侧导航栏选择 区块链列表,在列表中找到您希望访问的区块链,鼠标选中右侧 更多,并点击 下载签名证书下载SDKdownload_sdk

  2. 解压获得的client_sdk.zip包,压缩包中的Readme说明同样包含本文档的配置流程,方便您参考。

  3. 进行sdk.properties文件进行配置。这里展示默认配置方式,更多配置方式请参考 初始化客户端

    # client连接的主节点地址,主节点必须且只能配置1个 
    biz.sdk.primary=### IP配置不用修改 ###
    # 备份节点api地址,备份节点可以配置n个,n=3f:f=1,2,...
    # 主节点无法连接时,或切换连接备份节点,当主节点恢复时,⾃自动切回主节点 
    biz.sdk.backups=### IP配置不用修改 ###
    # client与节点连接使⽤用tls双向认证,需要配置x509证书 
    # pkcs8格式的ssl私钥⽂文件绝对路路径 
    biz.sdk.ssl_key=/path/key_pkcs8.pem
    # x509格式的ssl证书文件绝对路路径 
    biz.sdk.ssl_cert=/path/cert.pem
    # 上一步创建私钥时设置的ssl私钥密码 
    biz.sdk.ssl_key_password=******
    # trust store文件绝对路路径 
    biz.sdk.trust_store=/path/trust.keystore
    # trust store密码,默认为mychain,您无需修改
    biz.sdk.trust_store_password=mychain
    

    注意:将/path/替换为您文件的真实绝对路径。

  4. 在IDEA中创建一个新的maven项目,并在pom.xml文件中添加对应的依赖包。

     <dependencies>
         <dependency>
             <groupId>com.alipay.antblockchain</groupId>
             <artifactId>antblockchain-gl-biz-sdk</artifactId>
             <version>0.6.0.3</version>
             <scope>system</scope>
             <systemPath>{libdir}/client-sdk.jar</systemPath>
         </dependency>
         <dependency>
             <groupId>com.alipay.antblockchain.sdk.plus</groupId>
             <artifactId>antblockchain-sdk-plus</artifactId>
             <classifier>jar-with-dependencies</classifier>
             <version>0.6.0.3</version>
             <scope>system</scope>
             <systemPath>{libdir}/sdk-plus.jar</systemPath>
         </dependency>
         <dependency>
             <groupId>javax.validation</groupId>
             <artifactId>validation-api</artifactId>
             <version>1.1.0.Final</version>
         </dependency>
         <dependency>
             <groupId>org.hibernate</groupId>
             <artifactId>hibernate-validator</artifactId>
             <version>5.3.5.Final</version>
         </dependency>
         <dependency>
             <groupId>javax.el</groupId>
             <artifactId>javax.el-api</artifactId>
             <version>2.2.4</version>
         </dependency>
         <dependency>
             <groupId>org.glassfish.web</groupId>
             <artifactId>javax.el</artifactId>
             <version>2.2.4</version>
         </dependency>
         <dependency>
             <groupId>com.google.code.gson</groupId>
             <artifactId>gson</artifactId>
             <version>2.8.5</version>
         </dependency>
     </dependencies>
    

    注意:解压从BaaS平台下载的client-sdk.zip⽂文件,将内含的client-sdk.jar和sdk-plus.jar加⼊入到依赖⽬目录中,注意修改您的libdir为真实的路径

  5. 完成配置,您可以在项目的Main函数中创建一个SDK Client 实例,获取链上当前最新区块的交易信息。

    import java.io.FileInputStream;
    import java.util.List;
    import java.util.Properties;
    
    import com.alipay.mychain.gl.biz.common.Response;
    import com.alipay.mychain.gl.biz.sdk.Client;
    import com.alipay.mychain.gl.biz.sdk.ClientConfig;
    import com.alipay.mychain.gl.biz.sdk.ClientPropertyConfig;
    import com.alipay.mychain.gl.common.model.entity.TransactionDO;
    import com.alipay.mychain.gl.common.model.pojo.Block;
    
    public class App {
        public static void main(String[] args ) throws Exception{
            Properties p = new Properties();
            // 请将"/path/"替换为sdk.properties存放的真实绝对路径
            p.load(new FileInputStream("/path/sdk.properties"));
            // 构造客户端
            ClientConfig config = new ClientPropertyConfig(p);
            Client client = new Client(config);
    
            // 获取当前区块高度
            int height = client.getLatestBlockHeader().getData().getHeight();
    
            // 获取一个区块
            Response<Block> blockResponse = client.getBlock(height);
    
            // 获取区块上的交易信息
            List<TransactionDO> trans = blockResponse.getData().getTransactions();
    
            // 关闭客户端
            client.shutdown();
        }
    }
    

关于更多SDK的使用方法,请参考 SDK开发指南