在linux系统中运行Pantheon与Java以太坊客户端

西瓜妹 百科
2019-08-18 17:56:15

  这是安装Pathon,Ethereum的Java客户端部分系列文章的第一篇文章:

· Linux
· macOS
· windows

在工具栏中使用一些强大的工具对于Java开发人员来说至关重要,而以太坊区块链开发人员的关键工具之一就是网络客户端。这是与区块链进行数据通信的软件。client:spin启动节点,充当对等发现代理,查看其他人参与网络,并验证和发送事务。

本指南可帮助您安装和设置在使用Java进行以太网编程时所需的核心部分。虽然有一些很棒的网络客户端,但Pantheon是唯一一个用Java编写的客户端。

Pantheon是一个用Java编写的开源Apache 2.0许可的以太坊客户端。它与主网兼容,具有模块化架构,并具有隐私和权限功能以及新的共识算法。

这是在Linux / macOS / Windows上安装和配置Pantheon客户端的一系列分步指南中的第一个。本指南重点介绍Linux操作系统,但您可以使用macOS上的许多命令和步骤进行一些基本修改。

Pantheon与Docker

 

在安装之前,我建议任何人第一次使用我们的Docker镜像来设置和安装Pantheon。这样做的要求是安装Docker并使用Linux或macOS。您可以使用单个docker命令来运行Pantheon的mainnet,local或rinkeby版本,然后使用curl或类似工具来获取或将数据发布到正在运行的节点。

对于快速临时测试,本指南使用/ tmp / pantheon / dev /,/ tmp / pantheon / mainnet /,/ tmp / pantheon / rinkeby /作为安装卷,每次启动时都会自动清除。您可以改为创建其他文件夹,但无论选择哪个选项,请确保先创建文件夹。

$ mkdir -p /tmp/pantheon/dev/
$ mkdir -p /tmp/pantheon/mainnet/
$ mkdir -p /tmp/pantheon/rinkeby/

这里有些例子:

主网节点:

docker run pegasyseng/pantheon:latest

启用了Websockets和HTTP RPC服务的本地测试节点:

docker run -p 8545:8545 -p 8546:8546 --mount 
type=bind,source=/tmp/pantheon/dev,target=/var/lib/pantheon pegasyseng/
pantheon:latest --miner-enabled --miner-coinbase 
fe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-cors-origins="all" 
--rpc-ws-enabled --network=dev

Rinkeby节点:

docker run -p 30303:30303 --mount type=bind,
source=/tmp/pantheon/rinkeby,target=/var/lib/pantheon 
pegasyseng/pantheon:latest --network=rinkeby

当节点运行时,您可以使用另一个终端窗口与节点交互。

例如,使用curl调用eth-chainid rpc方法:

curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],
"id":1}' localhost:8545

Linux入门

 

有两种安装方法:

安装二进制代码包,请按照本节的说明跳过下一步。

从源代码构建,跳到本节。

要求:对于这两种方法,Pantheon需要在您的计算机上安装Java JDK。当前版本的Pantheon需要安装Java JDK 11+。

二进制安装

如果运行专用网络,请记住至少有4GB的RAM,并查看其他安装类型的进一步要求。

下载Pantheon二进制安装文件https://bintray.com/consensys/pegasys-repo/pantheon/_latestVersion#files

您可以使用wget执行此操作

$ sudo apt install wget
$ cd ~/bin/
$ wget   https://bintray.com/consensys/pegasys-repo/
download_file?file_path=pantheon-1.1.4.tar.gz -O pantheon-1.1.4.tar.gz
$ wget https://bintray.com/consensys/pegasys-repo/
download_file\?file_path\=pantheon-1.1.4.tar.gz -O pantheon-1.1.4.tar.gz

$ HOME / bin /和$ HOME / .local / {bin,opt,usr}是单个用户使用的计算机上本地用户二进制文件的推荐安装文件夹。其他选项可用,例如/ opt / local /或/ usr / local / bin /,具体取决于您的本地设置和首选项。阅读此Stack Exchange线程以获取更多详细信息。

2、解压压缩文件:

$ tar -xzf pantheon-1.1.4.tar.gz
$ cd pantheon-1.1.4

将1.1.4替换为您下载的版本。

确认下载没有损坏并检查版本。输出应返回Pantheon和JDK版本。

$ bin/pantheon --version
pantheon/v1.1.4/linux-x86_64/oracle_openjdk-java-11

从源代码构建

有两个选项:在本地或在VM上安装和运行。

本指南重点介绍本地解决方案。

1、克隆Pantheon代码库

$ cd ~/bin/
$ git clone --recursive https://github.com/PegaSysEng/pantheon.git

2、构建Pantheon

$ cd pantheon/
$ ./gradlew build -x test

3、选择分发版本并检查版本。

$ cd build/distributions/
$ tar -xzf pantheon-1.1.4.tar.gz
$ cd pantheon-1.1.4/
$ bin/pantheon --version
$ bin/pantheon --help

配置

Pantheon无需其他配置即可正常运行。由--network命令行标志设置的每种不同网络类型(包括主网)都会自动加载相应的默认配置。

如果需要更改设置,可以在节点或网络级别配置这些选项。网络级设置在genesis文件中定义,并由连接到该特定网络的每个Node加载。而节点级别设置在节点配置文件中或通过命令行标志进行修改。

启动Pantheon

完成上述步骤后,您可以继续使用常规的“启动Pantheon”指南进行此分发。

为了快速预览,这可能是在使用docker运行的dev网络节点上的HTTP请求。

$ docker run -p 8545:8545 --mount type=bind,source=/tmp/pantheon/dev,
target=/var/lib/pantheon pegasyseng/pantheon:latest --miner-enabled 
--miner-coinbase fe3b557e8fb62b89f4916b721be55ceb828dbd73 
--rpc-http-cors-origins="all" --rpc-http-enabled --network=dev

这是您构建调用eth_chainId方法的请求的方法。

String payload='{"jsonrpc":"2.0","method":"eth_chainId","params":[],
"id":1}';
String requestUrl="http://localhost:8545";
sendRequest(requestUrl, payload);

方法实现:

public static String sendRequest(String requestUrl, String payload) {
    try {
        URL url = new URL(requestUrl);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();

        connection.setDoInput(true);
        connection.setDoOutput(true);
        connection.setRequestMethod("GET");
        connection.setRequestProperty("Accept", "application/json");
        connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
        OutputStreamWriter outputWriter = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");

        outputWriter.write(payload);
        outputWriter.close();

        BufferedReader buffer = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        StringBuffer jsonString = new StringBuffer();
        String line;
        while ((line = buffer.readLine()) != null) {
                jsonString.append(line);
        }
        buffer.close();

        connection.disconnect();
        return jsonString.toString();
    } catch (Exception e) {
            throw new RuntimeException(e.getMessage());
    }
}

该请求应返回以下结果:

{
  "jsonrpc" : "2.0",
  "id" : 1,
  "result" : {
    "startingBlock" : "0x0",
    "currentBlock" : "0x2d0",
    "highestBlock" : "0x66c0"
  }
}


本文地址: https://www.xiguacaijing.com/news/baike/2019/11871.html
声明:本文经授权发布,除注明来源外,均为西瓜财经用户投稿,不代表西瓜财经立场。转载请注明:西瓜财经(xiguacaijing.com)
提醒:投资有风险,入市需谨慎。若内容涉及投资建议,仅供参考勿作为投资依据。谨防以“区块链”名义进行非法集资。
赞助商