Vector Release — Run a Node

Tangram
Tangram
Published in
6 min readNov 10, 2019

To learn more, visit https://github.com/tangramproject/Tangram.Vector

Vector Release — Phase 1

Running a Node

The guide below assumes that you have an understanding of port forwarding and some advanced computer knowledge. Please ensure you read the note below before moving on:

Process of setting up a node

It is important to note that at this stage, setting up a node is a tedious process. We recommend and suggest if you are not familiar with Port Forwarding and do not have a technical mindset, DO NOT TRY SETTING UP A NODE YET. This process will obviously be simplified and refined in the future (e.g. — Docker and other enhancements). If you have any doubt or confusion about how to setup a node and are unsure, DO NOTHING for this initial period. Wait for an updated and simplified procedure. Updates will be announced through the communication channels listed at the end of this post.

1. Why run a node?

Nodes are an important part of the Tangram network infrastructure, as clients will always send their transactions to nodes to have them validated.

  • Start the process of understanding the requirements and procedures for running a node;
  • Delve deeper into the technical capabilities and features;
  • Create your own trusted entry point to the Vector network;
  • More abstract benefits of technical, security and future decentralization goals.

2. Minimum hardware requirements

Tangram Vector is a live system, and the hardware requirements may change during each phase and with usage of the network.

  • CPU —Single Core(1-Thread)
  • RAM — 1GB RAM DDR4
  • OS — Any Linux distro

3. Network access

We recommend running a node on a VM, however, if you will run a node from “Home” then ensure you Port Forward to Port 8080 for TGMGateway.

4. Installing and building from source

TGMGateway as Daemon:

5. List of Dependencies

RavenDB

Tangram Vector stores the state of the ledger in a NoSQL Document Database.

Startup instructions for RavenDB:

Depending on your OS, you will download RavenDB from https://ravendb.net/download, follow the instructions in the root folder of RavenDB named readme

If you change your port in RavenDB, ensure that the port is changed to the same in Coin.API .

.NET Core 3.0 Installer (SDK)

Download the .Net Core 3.0 Installer from https://dotnet.microsoft.com/download/dotnet-core/3.0

Install .Net Core 3.0.

6. appsettings.json

Currently you will need to add your node’s Public IP and port in the Membership.API appsettings.json file in order to join the network.

Note: The port exposed corresponds to the Tangram Gateway, not the membership Micro-service itself.

example:

{
"Logging": {
"LogLevel": {
"Default": "Debug"
}
},
"AllowedHosts": "*",
"onion": {
"onion_service_address": "http://localhost:3001/",
"onion_socks_host": "127.0.0.1",
"onion_socks_port": 9050,
"onion_control_host": "127.0.0.1",
"onion_control_port": 9051
},
"Membership": {
"PublicHost": "xx.xx.xxx.xx" // IP address //,
"PublicPort": "8080",

"BootstrapNodes": [
"http://192.241.155.66:8080",
"http://157.245.94.117:8080"
]
}
}

Currently there exists two Bootstrap nodes with more being added in the future:

http://192.241.155.66:8080,
http://157.245.94.117:8080

7. Other preparation(s) before joining the network

Posted on Github README.md with updates to follow based on feedback and discussions.

8. Troubleshooting

You will find the .log file for each service within the root directory of the publish folder. Naming convention is <servicename_timestamp>

Security warning: Vector is the first release with consensus and as such should be treated as experimental! There are no guarantees made, and bugs and flaws are expected at this stage of development.

**Updating Cypher**

Whether you have downloaded and installed Cypher or not. Please ensure you follow the instructions below before interacting with the network:

Notes:

  1. Minor to major bugs, optimizations and other issues WILL ARISE;
  2. Minor to major issues will be patched based on priority, further investigation and discussions internally and with the community;
  3. We expect issues to arise based on unknown unknowns;
  4. Unpredictable setup(s), steps and patterns cause irregular situations and these are the issues and opportunities we want to identify and make consistent;
  5. Furthermore the premise of Vector Release — Phase 1, is identifying edge cases and achieving reliability in scenarios that don’t happen often in a simulation or real world scenarios.

Contribution and Support

If you’re thinking about starting a Tangram-related project and need support; we thank you for considering. If you have a few questions that need answering or a little more detail than some, feel free to get in touch through any of Tangram’s channels and the community members and managers will point you in the right direction.

If you’d like to contribute to Tangram Vector (Node code), please know we’re currently accepting issues, forks, fixes, commits and pull requests so that maintainers can review and merge into the main code base.

Process of submitting an issue

A complete list of bugs can be found here, please take a look at the known issues before submitting, in case of duplication. Connect with any of the Core and/or Community managers OR simply create an issue/pull request.

Tracking pains of setting up a node

To keep up with the pains of setting up a node and identifying areas where high impact and low effort or high effort etc. can be implemented throughout and make the barrier of setting up a node less complicated. We’ll keep note of where we can improve (generally), we need support from the community keeping tabs and highlighting these areas ideally in Github-#issues-manager, reddit, Tangram forum or #vector-testnet1.

Optimizations and Enhancements

The current issues highlighted in the link below are segmented into two parts and will be extended and expanded upon as time goes on:

  1. Enhancements for which are new requests or features which are planned to be developed and integrated and;
  2. Optimizations such as automatically starting micro-services so that developers and users do not have to manually start-up each micro-service.

It is important to understand the effort and impact that each optimization and enhancement will have in a set matrix, namely for users (usability and quality of life), technical (network, consensus and the overall ecosystem) and time (effort and the complexity of the solution). Understanding these three verticals allows us to triage and define the progression of an enhancement and optimization “issue” through the life-cycle of development and release.

Bug Bounty

A bug bounty will be enabled TWO — FOUR WEEKS after the release of Tangram Vector Phase 1 (running a node — this release). More details will be provided and the updated process and governance can be found in the link below with a “Threat Vector Cheat Sheet” of what the initial bug bounties will be focusing once announced.

Learn more

To learn more about Vector and Tangram, head to the Vector network wiki for further information:

Blockmania Consensus:

SWIM:

Misc:

Educational and knowledge transfer around the architecture of Tangram and more will be conducted through various mediums. Feel free to delve deep into the code at any stage.

If you’re interested, have questions and feedback:

Visit our website: www.tangrams.io

Read our blog: www.medium.com/@tangramd

Subscribe on Reddit: www.reddit.com/r/Tangrams

Discover us on Discord: www.discord.tangrams.io

Message us on Telegram: https://t.me/Tangrams

Follow us on Twitter: www.twitter.com/tangram

Watch on YouTube: https://www.youtube.com/channel/UCoe5hPG_zjltaG_j2n1Oh4Q

--

--

Tangram
Tangram

Tangram was created with a singular vision: to inspire, mobilize and empower a new generation of cypherpunks.