Skip to content

Commit 1477748

Browse files
committed
Updates README.md to make it easier to setup the powpeg node.
1 parent c5bc8bc commit 1477748

File tree

2 files changed

+117
-22
lines changed

2 files changed

+117
-22
lines changed

README.md

Lines changed: 75 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,71 @@ This node is used by Rootstock PowPeg signatories to interact with the Bridge co
2121
## Software installation help
2222
Disclaimer: this documentation will be specific for macOS operating system.
2323

24-
### **Java JDK 1.8**
24+
### Quick Setup
25+
26+
1. Install Java OpenJDK 1.8 from the binaries (if it is not installed yet)
27+
1. You can download it from here: `https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u-2021-05-08-08-14/OpenJDK8U-jdk_x64_mac_hotspot_2021-05-08-08-14.tar.gz`
28+
1. `cd` to the directory where you want to download it. It could be like `cd /Library/Java/JavaVirtualMachines/`
29+
2. Download it like this: `sudo curl -o adoptopenjdk-8.tar.gz -L https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u-2021-05-08-08-14/OpenJDK8U-jdk_x64_mac_hotspot_2021-05-08-08-14.tar.gz`
30+
3. Unzip it like this: `sudo tar -zxvf adoptopenjdk-8.tar.gz`
31+
4. The unzipped directory could be named like this `jdk8u302-b01`. Run an `ls` command to see it.
32+
2. Add it to the `.bash_profile`.
33+
1. Open the `.bash_profile` file with `nano` like this `nano ~/.bash_profile` and add the following 2 `export` lines:
34+
2. `export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk8u302-b01/Contents/Home/bin`
35+
3. `export PATH="$JAVA_HOME/bin:$PATH"`
36+
4. Save it and run the command: `source ~/.bash_profile` and restart the terminal. After this, the `java -version` command should return info.
37+
2. Install bitcoind
38+
1. `cd` to the directory where you want to download it. It could be `/Library/Bitcoin` (if it doesn't exit, you can create it running the command `sudo mkdir /Library/Bitcoin`)
39+
2. You can download version 0.18.1 (ideal for regtest) from here: `https://bitcoincore.org/bin/bitcoin-core-0.18.1/bitcoin-0.18.1-osx64.tar.gz`
40+
3. You can download version 24.0.1 `https://bitcoincore.org/bin/bitcoin-core-24.0.1/bitcoin-24.0.1-x86_64-apple-darwin.tar.gz`
41+
4. Download it like this: `sudo curl -o bitcoind18.tar.gz -L https://bitcoincore.org/bin/bitcoin-core-0.18.1/bitcoin-0.18.1-osx64.tar.gz`
42+
5. Unzip it like this: `sudo tar -zxvf bitcoind18.tar.gz`
43+
6. Run the `ls` command to see the actual name of the unzipped directory. It should be like `bitcoin-0.18.1`
44+
7. Add the path `export PATH="$PATH:/Library/Bitcoin/bitcoin-0.18.1/bin"` to the `/.zshrc` file
45+
1. Open the `.zshrc` file with nano like this: `nano ~/.zshrc` and add the following line in it and save it: `export PATH="$PATH:/Library/Bitcoin/bitcoin-0.18.1/bin"`
46+
8. Run `source ~/.zshrc` command, close and reopen the terminal.
47+
9. Running an instance of bitcoind
48+
1. To run it in regtest mode, run this command: `bitcoind -deprecatedrpc=generate -addresstype=legacy -regtest -printtoconsole -server -rpcuser=rsk -rpcpassword=rsk -rpcport=18332 -txindex -datadir=/Library/Bitcoin/data`
49+
2. You can also put this command into an `bitcoin-regtest.sh` file, make it executable with `sudo chmod +x bitcoin-regtest.sh` and run it like `./bitcoin-regtest.sh`
50+
3. To run it in regular mode, simply run the command: `bitcoind`
51+
10. Generate some blocks
52+
1. To generate, for example, 200 regtest bitcoin blocks, run: `./btc-regtest.sh generate 200`
53+
3. Create a `powpeg-project` folder anywhere you like
54+
1. For example: `mkdir /Library/powpeg-project`
55+
4. Setup the rskj project
56+
1. `cd` to the `powpeg-project` directory: `cd /Library/powpeg-project`
57+
2. Clone it from here: `https://github.com/rsksmart/rskj`
58+
1. `git clone https://github.com/rsksmart/rskj.git`
59+
2. `cd` to the cloned `rskj` directory: `cd rskj`
60+
3. Run the `configure.sh`
61+
1. You will probably have to make it executable first with: `sudo chmod +x configure.sh`
62+
2. And run it from a terminal like this: `./configure.sh`
63+
5. Setup this project (powpeg-node: `https://github.com/rsksmart/powpeg-node`)
64+
1. `cd` to the `powpeg-project` directory: `cd /Library/powpeg-project`
65+
2. `git clone https://github.com/rsksmart/powpeg-node.git`
66+
3. `cd` to the cloned `powpeg-node` directory: `cd powpeg-node`
67+
4. Run the `configure.sh` file present in the root directory
68+
1. You will probably have to make it executable with: `sudo chmod +x configure.sh`
69+
2. And run it from a terminal like this: `./configure.sh`
70+
5. Make a copy of the `development-settings.gradle.sample` file and rename it to `DONT-COMMIT-settings.gradle`
71+
1. Remove the line `# Sample configuration to build rskj from the directory /home/user/another/dir/rskj`
72+
2. Remove the line `# Rename it to DONT-COMMIT-settings.gradle for use in your local environment`
73+
3. Replace the `'/home/user/another/dir/rskj/'` with the relative or absolute path where the `rskj` project is, for example: `/Library/powpeg-project/rskj`
74+
6. Create a `fed.conf` file and set it up
75+
1. Check the config file sample in `src/main/resources/config/fed-sample.conf`, copy it, rename it to `fed.conf` and update it as you need.
76+
7. Optionally create a `logback.xml` file for the logging
77+
1. Check the config file sample in `src/main/resources/config/logback-sample.xml`, copy it, rename it to `logback.xml` and update it as you need, adding or removing classes and their log level.
78+
8. Build the powpeg project
79+
1. Run: `./gradlew clean build`
80+
2. To build it without running the tests, run: `./gradlew clean build -x test`
81+
3. `cd` into `/Library/powpeg-project/powpeg-node/build/libs/` directory to see the version of the `federate-node-SNAPSHOT-<version>-all.jar` file, so you can run it in the following step.
82+
9. Run the project
83+
1. Resetting the rsk db (replace `<version>` with the actual version of the `.jar`): `java -cp /Library/powpeg-project/powpeg-node/build/libs/federate-node-SNAPSHOT-<version>-all.jar -Drsk.conf.file=/Library/powpeg-project/powpeg-node/src/main/resources/config/fed-sample.conf -Dlogback.configurationFile=/Library/powpeg-project/powpeg-node/logback.xml co.rsk.federate.FederateRunner --regtest --reset`
84+
2. Without resetting the rsk db (replace `<version>` with the actual version of the `.jar`): `java -cp /Library/powpeg-project/powpeg-node/build/libs/federate-node-SNAPSHOT-<version>-all.jar -Drsk.conf.file=/Library/powpeg-project/powpeg-node/src/main/resources/config/fed-sample.conf -Dlogback.configurationFile=/Library/powpeg-project/powpeg-node/logback.xml co.rsk.federate.FederateRunner --regtest`
85+
86+
### Setup Details
87+
88+
#### **Java JDK 1.8**
2589

2690
Although optional we recommend to install jenv to manage different Java versions, to do that run: `brew install jenv`
2791

@@ -49,7 +113,7 @@ Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)
49113

50114
*If not, try closing the terminal and open a new one cause sometimes it stays cached.*
51115

52-
### Bitcoind
116+
#### Bitcoind
53117

54118
To install version `24.0.1` follow instructions listed [here](https://bitcoincore.org/en/releases/24.0.1/)
55119

@@ -59,12 +123,10 @@ It should output ```Bitcoin server starting```
59123

60124
Run `bitcoin-cli stop` afterwards.
61125

62-
63-
64-
## Setting up the project
126+
#### Setting up the project
65127
Create a directory (for example, “powpeg-project”) to hold the rskj node, the powpeg node and further configurations.
66128

67-
### Fetch the code
129+
##### Fetch the code
68130

69131
Inside the `powpeg-project` directory clone the powpeg-node repository.
70132

@@ -76,7 +138,7 @@ git clone https://github.com/rsksmart/powpeg-node
76138
cd powpeg-node
77139
```
78140

79-
### [Optional] Verify the code
141+
##### [Optional] Verify the code
80142

81143
Before anything, you must ensure the security chain of the source code. For that, you must go through the following steps. For Linux based OS (Ubuntu for example) it’s recommended to install `gnupg-curl` to download the key through HTTPS.
82144

@@ -141,18 +203,15 @@ configure.sh: OK
141203
sha256sum: WARNING: 19 lines are improperly formatted
142204
```
143205

144-
### Configure
206+
##### Configure
145207

146208
Run configure script to configure secure environment.
147209

148210
```bash
149211
./configure.sh
150212
```
151213

152-
153-
154-
### Required configurations
155-
214+
##### Required configurations
156215

157216
**1. Pegnatory private key**
158217

@@ -164,7 +223,6 @@ Set the desired value to it. (For example, `String generator = “federator1”;
164223

165224
- Run the class to generate a privateKey, publicKey, publicKeyCompressed, address and nodeId
166225

167-
168226
You should get an output like the following:
169227

170228
```
@@ -255,24 +313,19 @@ includeBuild('<ABSOLUTE-PATH-TO-RSKJ-SOURCE-CODE>') {
255313
}
256314
```
257315

258-
259-
260-
### [Optional] Import and configure the project
316+
##### [Optional] Import and configure the project
261317

262318
To import the project to IntelliJ IDEA go to `File > New > Project from existing sources...` Select `powpeg-node/build.gradle` and import.
263319

264-
265-
266-
267-
### Build
320+
##### Build
268321

269322
Then clean and build project using:
270323

271324
```bash
272325
./gradlew clean build
273326
```
274327

275-
### Run bitcoind
328+
##### Run bitcoind
276329

277330
Create a new directory called datadir inside powpeg-project. In the next step you need to replace `<PATH_TO_DATA_DIR>` with this directory absolute path.
278331

@@ -320,7 +373,7 @@ This should return an integer.
320373

321374
- For more references, check **[https://github.com/BlockchainCommons/Learning-Bitcoin-from-the-Command-Line](https://github.com/BlockchainCommons/Learning-Bitcoin-from-the-Command-Line)**
322375

323-
### Run PowPeg node!
376+
##### Run PowPeg node!
324377

325378
You can run it either with the FedRunner configuration from IntelliJ or manually from the command line.
326379

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<configuration INFO="false" scan="true" scanPeriod="3600 seconds">
4+
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
5+
<Target>System.out</Target>
6+
<encoder>
7+
<pattern>%date{yyyy-MM-dd-HH:mm:ss.SSSS} %p [%c{1}] %m%n</pattern>
8+
</encoder>
9+
</appender>
10+
11+
<appender name="FILE-AUDIT"
12+
class="ch.qos.logback.core.rolling.RollingFileAppender">
13+
<file>/Users/your-user/path_to_logs/logs/rsk.log</file>
14+
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
15+
<Pattern>
16+
%date{yyyy-MM-dd-HH:mm:ss.SSS} %p [%c{1}] %m%n
17+
</Pattern>
18+
</encoder>
19+
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
20+
<fileNamePattern>./logs/rskj-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
21+
<maxFileSize>100MB</maxFileSize>
22+
<maxHistory>7</maxHistory>
23+
<totalSizeCap>1GB</totalSizeCap>
24+
</rollingPolicy>
25+
</appender>
26+
27+
<logger name="federatorSupport" level="TRACE"/>
28+
<logger name="JsonRpcCustomServer" level="TRACE"/>
29+
<logger name="web3" level="TRACE"/>
30+
<logger name="bridge" level="TRACE"/>
31+
<logger name="BtcToRskClient" level="TRACE"/>
32+
<logger name="BridgeSupport" level="TRACE"/>
33+
<logger name="co.rsk.peg.BridgeStorageProvider" level="ERROR"/>
34+
<logger name="jsonrpc" level="TRACE"/>
35+
36+
<!-- more classes...-->
37+
38+
<root level="INFO">
39+
<appender-ref ref="stdout"/>
40+
<appender-ref ref="FILE-AUDIT"/>
41+
</root>
42+
</configuration>

0 commit comments

Comments
 (0)