Skip to content
This repository has been archived by the owner on Feb 21, 2024. It is now read-only.

Commit

Permalink
Merge pull request #16 from masa-finance/v1.01
Browse files Browse the repository at this point in the history
V1.01
  • Loading branch information
teslashibe authored Feb 23, 2022
2 parents 6c6ee5c + 4a05149 commit 56eaa13
Show file tree
Hide file tree
Showing 6 changed files with 165 additions and 202 deletions.
Binary file removed .DS_Store
Binary file not shown.
10 changes: 9 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,12 @@
**/geth
**/keystore
**geth.ipc
# geth node build files
**/build/bin
# geth node build files

# OS generated files #
######################
*.DS_Store
**.DS_Store
.DS_Store
.DS_Store?
211 changes: 155 additions & 56 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,63 +1,53 @@
# Masa Testnet Node V1.0

## Get An OpenVPN File
You must must be connected to our OpenVPN network in order to join the Masa Testnet and access bootnodes and node IP's. Please reach out to an admin on Discord (https://discord.gg/SXwRKNMc) to get an OpenVPN file! Please download the OpenVPN Connect client to connect to the Masa Testnet cluster [here](https://openvpn.net/vpn-client/)

### Check you can access the node IP range througe OpenVPN
Check your routing table by running `netstat -rn` from the command line to ensure you can access the Masa Testnet. You will see `172.16.239/24 10.254.0.17 UGSc utun4` if you have OpenVPN setup correctly.
```sh
netstat -rn

Internet:
Destination Gateway Flags Netif Expire
default 192.168.1.1 UGScg en0
10.254.0.1/32 10.254.0.17 UGSc utun4
10.254.0.16/30 10.254.0.18 UGSc utun4
10.254.0.17 10.254.0.18 UH utun4
127 127.0.0.1 UCS lo0
127.0.0.1 127.0.0.1 UH lo0
169.254 link#6 UCS en0 !
172.16.239/24 10.254.0.17 UGSc utun4
```

# Masa Testnet Node V1.01
## Release Date
February 22nd, 2022
## Roadmap & Todo's
The Masa Node UI is in alpha and will get incremental releases, please report all bugs you find to [email protected] or submit an issue [here](https://github.com/masa-finance/masa-node-v1.0/issues)
# Run With Docker
This guide will get you up and running using docker. If you want to us the geth binary please navigate to the bottom section of the page [here](#run-with-geth).
## Get Docker
1. Install Docker (https://www.docker.com/get-started)
- If your Docker distribution does not contain `docker-compose`, follow [this](https://docs.docker.com/compose/install/) to install Docker Compose
- Make sure your Docker daemon has at least 4G memory
- Required Docker Engine 18.02.0+ and Docker Compose 1.21+


## Install The Masa Testnet Node v1.0
- Required: Docker Engine 18.02.0+ and Docker Compose 1.21+
## Install The Masa Testnet Node v1.01
The Docker compose file also launches the Node UI which can be accessed at the following URL
`http://localhost:3000`

Navigate here to interact with the node
```
git clone https://github.com/masa-finance/masa-node-v1
cd masa-node-v1
git clone https://github.com/masa-finance/masa-node-v1.0
cd masa-node-v1.0
```
Directory structure
### Directory structure
```
masa-node-v1/
├── network
│ ├── testnet
│ ├── genesis.json
├── node
│ ├── data
├── node-ui
├── src
│ ├── ui
│ ├── geth files
│ ├── ...
├── docker-compose.yml
├── genesis.json
```


## Run Docker
1. Run ` PRIVATE_CONFIG=ignore docker-compose up -d`
```sh
cd masa-node-v1
cd masa-node-v1.0
PRIVATE_CONFIG=ignore docker-compose up -d
```
1. Run `docker ps` to verify that you masa-node container is **healthy**
1. Run `docker logs <container-name> -f` to view the logs for a particular container

1. __Note__: to attach geth to your node Javascript console (use the same container id or name from `docker ps`
```sh
docker exec -it masa-node-v10_masa-node_1 geth attach /qdata/dd/geth.ipc
docker exec -it masa-node-v10_masa-node_1
geth attach /qdata/dd/geth.ipc

Welcome to the Geth JavaScript console!

instance: Geth/node1-istanbul/v1.9.24-stable-d5ef77ca(quorum-v21.7.1)/linux-amd64/go1.15.5
Expand All @@ -72,46 +62,155 @@ masa-node-v1/
```sh
docker-compose down
```

## Troubleshooting Docker
1. Docker is frozen or containers crash and reboot
- Check if your Docker daemon is allocated enough memory (minimum 4G)
### Additional Bootnodes
Masa operates several bootnodes, one is already included in the Docker file by default. If you are having issues connecting to the bootnode please use an alternaitve from the list below.

We are also looking for community run bootnodes to add to our list. Please reach out to us on Discord or Submit a PR to this repo if you want to add a bootnode to the community list.
#### Masa Bootnodes
```
enode://ac6b1096ca56b9f6d004b779ae3728bf83f8e22453404cc3cef16a3d9b96608bc67c4b30db88e0a5a6c6390213f7acbe1153ff6d23ce57380104288ae19373ef@54.146.254.245:21000
enode://91a3c3d5e76b0acf05d9abddee959f1bcbc7c91537d2629288a9edd7a3df90acaa46ffba0e0e5d49a20598e0960ac458d76eb8fa92a1d64938c0a3a3d60f8be4@54.158.188.182:21000
enode://d87c03855093a39dced2af54d39b827e4e841fd0ca98673b2e94681d9d52d2f1b6a6d42754da86fa8f53d8105896fda44f3012be0ceb6342e114b0f01456924c@34.225.220.240:21000
enode://fcb5a1a8d65eb167cd3030ca9ae35aa8e290b9add3eb46481d0fbd1eb10065aeea40059f48314c88816aab2af9303e193becc511b1035c9fd8dbe97d21f913b9@52.1.125.71:21000
```
#### Community Bootnodes
Submit a PR to add a bootnode to the community list [here](https://github.com/masa-finance/masa-node-v1.0/pulls).
## Node Syncing
It can take some time for your node to fully sync to the Masa Testnet 2.0 - please be patient while your node catches up with the most recent blocks.
## Node UI
### Specification
- Next.js & Typescript
- React.js & Typescript
- Docker for deployment
### Config
Next.js is launched in Docker using the following `Dockerfile`
- The Node UI runs when you deploy using the Docker compose files above
Navigate to you local host to interact with the Masa Node
`http://localhost:3000`
# Run With Geth
To run from source follow these steps
## Clone the repository and build the source:
```
git clone https://github.com/masa-finance/masa-node-v1.0
cd masa-node-v1.0/src
make all
```
**`make all` must be run from within the src folder**
## Run the tests:
```
make test
```
## Add PATH
### Method 1
Binaries are placed in `$REPO_ROOT/build/bin`. You must add the `bin` folder to `PATH` to make `geth` and `bootnode` easily invokable from the command line. For example, if `Users/yourname/masa-node-v1.0` is the location you have cloned the masa-node repository to on your computer. In your terminal run
```
sudo nano /etc/paths
or
export PATH=$PATH:$REPO_ROOT/build/bin
```
Remember to source your $PATH or restart the terminal. Run `echo $PATH` from the command line to check that the `PATH` has been added correctly.

For example;
```
# Naively Simple Node Dockerfile
echo $PATH
FROM node:14.17-alpine
gives the following response
RUN mkdir -p /home/app/ && chown -R node:node /home/app
WORKDIR /home/app
COPY --chown=node:node . .
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/quorum/build/bin:/Users/yourname/masa-node/build/bin:/usr/local/go/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands
```
### Method 2
The second way to make geth and bootnode easily invokable is to copy the binaries located in `$REPO_ROOT/build/bin` to a folder already in your `PATH` file such as `/usr/local/bin`.
### Method 3

USER node
You can also supplement `PATH` by adding add `PATH=$PATH:$REPO_ROOT/build/bin` to your `~/.bashrc`, `~/.bash_aliases`, or `~/bash_profile` file.
## Testing PATH
When you run geth from the command line from an arbitrary folder you will get the following output on the terminal.
```
geth
returns
INFO [12-08|05:37:18.131] Starting Geth on Ethereum mainnet...
INFO [12-08|05:37:18.131] Bumping default cache on mainnet provided=1024 updated=4096
INFO [12-08|05:37:18.131] Running with private transaction manager disabled - quorum private transactions will not be supported
INFO [12-08|05:37:18.132] Maximum peer count ETH=50 LES=0 total=50
INFO [12-08|05:37:18.160] Set global gas cap cap=25000000
INFO [12-08|05:37:18.160] Running with private transaction manager disabled - quorum private transactions will not be supported
INFO [12-08|05:37:18.160] Allocated trie memory caches clean=1023.00MiB dirty=1024.00MiB
INFO [12-08|05:37:18.160] Allocated cache and file handles database=/Users/brendanplayford/Library/Ethereum/geth/chaindata cache=2.00GiB ...
...
INFO [12-08|05:37:18.751] Started P2P networking self=enode://162cfffb34b0c3e76abeb9f31541737fcd3b622e35fa3b0080a14dfb9d2a53168ac3abf10122b79d3b8d7d55516982e0f903d179916ccb51abe5cd00de1bdb07@127.0.0.1:30303
INFO [12-08|05:37:18.752] IPC endpoint opened url=/Users/brendanplayford/Library/Ethereum/geth.ipc isMultitenant=false
INFO [12-08|05:37:18.752] Security Plugin is not enabled
Fatal: Consensus not specified. Exiting!!
```
## Initialize the node
Navigate to the `node` directory and initialize the first node.
The repo directory includes the `genesis.json` file that is used to connect to the Masa protocol at the following path `../genesis.json`

RUN yarn install --frozen-lockfile
RUN yarn build
Run the following command
```
cd node
geth --datadir data init ../genesis.json
```
You will get the following output;
```
INFO [12-09|18:22:24.031] Running with private transaction manager disabled - quorum private transactions will not be supported
INFO [12-09|18:22:24.035] Maximum peer count ETH=50 LES=0 total=50
INFO [12-09|18:22:24.063] Set global gas cap cap=25000000
INFO [12-09|18:22:24.064] Allocated cache and file handles database=/Users/brendanplayford/masa/masa-node-v1.0/node/data/geth/chaindata cache=16.00MiB handles=16
INFO [12-09|18:22:24.135] Writing custom genesis block
INFO [12-09|18:22:24.140] Persisted trie from memory database nodes=7 size=1.02KiB time="280.583µs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [12-09|18:22:24.141] Successfully wrote genesis state database=chaindata hash="69b521…fb4c77"
INFO [12-09|18:22:24.141] Allocated cache and file handles database=/Users/brendanplayford/masa/masa-node-v1.0/node/data/geth/lightchaindata cache=16.00MiB handles=16
INFO [12-09|18:22:24.204] Writing custom genesis block
INFO [12-09|18:22:24.205] Persisted trie from memory database nodes=7 size=1.02KiB time="162.437µs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [12-09|18:22:24.205] Successfully wrote genesis state database=lightchaindata hash="69b521…fb4c77"
```

EXPOSE 3000
CMD [ "yarn", "start" ]
## Set your node identity
Set your own identity of your node on the Masa protocol to be easily identified in a list of peers.

For example; we name our node 'MasaMoonNode' by setting the flag `--identity MasaMoonNode` will set up an identity for your node so it can be identified as MasaMoonNode in a list of peers.
**Update your flag `--identity MasaMoonNode` to be unique**
## Start the node
In the `node` directory, start the node by running the following command:
```
PRIVATE_CONFIG=ignore geth --identity MasaMoonNode --datadir data --bootnodes enode://91a3c3d5e76b0acf05d9abddee959f1bcbc7c91537d2629288a9edd7a3df90acaa46ffba0e0e5d49a20598e0960ac458d76eb8fa92a1d64938c0a3a3d60f8be4@54.158.188.182:21000 --emitcheckpoints --istanbul.blockperiod 1 --mine --miner.threads 1 --syncmode full --verbosity 5 --networkid 190250 --rpc --rpccorsdomain "*" --rpcvhosts "*" --rpcaddr 127.0.0.1 --rpcport 8545 --rpcapi admin,db,eth,debug,miner,net,shh,txpool,personal,web3,quorum,istanbul --port 30300
```
### Running
`cd node-ui`
### Additional Bootnodes
Masa operates several bootnodes, one is already included in the comnand above by default. If you are having issues connecting to the bootnode please use an alternaitve from the list below.

Build the image
`docker build -t masa-node-ui .`
We are also looking for community run bootnodes to add to our list. Please reach out to us on Discord or Submit a PR to this repo if you want to add a bootnode to the community list.
#### Masa Bootnodes
```
enode://ac6b1096ca56b9f6d004b779ae3728bf83f8e22453404cc3cef16a3d9b96608bc67c4b30db88e0a5a6c6390213f7acbe1153ff6d23ce57380104288ae19373ef@54.146.254.245:21000
Check the local built image
`docker image ls`
enode://91a3c3d5e76b0acf05d9abddee959f1bcbc7c91537d2629288a9edd7a3df90acaa46ffba0e0e5d49a20598e0960ac458d76eb8fa92a1d64938c0a3a3d60f8be4@54.158.188.182:21000
Start the docker container
`docker run -p 3000:3000 masa-node-ui`
enode://d87c03855093a39dced2af54d39b827e4e841fd0ca98673b2e94681d9d52d2f1b6a6d42754da86fa8f53d8105896fda44f3012be0ceb6342e114b0f01456924c@34.225.220.240:21000
enode://fcb5a1a8d65eb167cd3030ca9ae35aa8e290b9add3eb46481d0fbd1eb10065aeea40059f48314c88816aab2af9303e193becc511b1035c9fd8dbe97d21f913b9@52.1.125.71:21000
```
#### Community Bootnodes
Submit a PR to add a bootnode to the community list [here](https://github.com/masa-finance/masa-node-v1.0/pulls).
## Node Syncing
It can take some time for your node to fully sync to the Masa Testnet 2.0 - please be patient while your node catches up with the most recent blocks.
## Node UI
You must be running Docker to run the Node UI with geth
### Specification
- React.js & Typescript
- Docker for deployment
## Run The Masa Node UI
Follow these instructions to run the Node UI with geth
```
cd masa-node-v1.0
cd src
cd ui
docker-compose up ui
```
Navigate to you local host to interact with the Masa Node
`http://localhost:3000`
2 changes: 1 addition & 1 deletion genesis.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"alloc": {
"0xed9d02e382b34818e88b88a309c7fe71e65f419d": {
"balance": "8000000000000000000000000000"
"balance": "4000000000000000000000000000"
},
"0xca843569e3427144cead5e4d5999a3d0ccf92b8e": {
"balance": "4000000000000000000000000000"
Expand Down
Loading

0 comments on commit 56eaa13

Please sign in to comment.