<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>GrichaMVP</title>
        <link>https://paragraph.com/@grichamvp</link>
        <description>Not just a validator, a guarantor of trust in the blockchain world!</description>
        <lastBuildDate>Wed, 29 Apr 2026 04:03:27 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>GrichaMVP</title>
            <url>https://storage.googleapis.com/papyrus_images/9488ffbec9f4774610f7382955b224158c0047be71b968addd37894d6e1d5559.jpg</url>
            <link>https://paragraph.com/@grichamvp</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Union instruction Run Node]]></title>
            <link>https://paragraph.com/@grichamvp/union-instruction-run-node</link>
            <guid>5OaJcqKnjGFPLWTVdByf</guid>
            <pubDate>Thu, 26 Sep 2024 17:39:28 GMT</pubDate>
            <description><![CDATA[Getting StartedThis guide is intended for validators running on bare-metal servers and explains how Union releases work. Check out the NixOS and the Kubernetes guide for more production-ready deployments. Validators are the backbone of the network. Becoming one requires significant token bonding and delegations, and is not intended for non-power users.Obtaining uniondNote Currently, directly downloading the uniond binary requires access to our private GitHub repository. We are not currently p...]]></description>
            <content:encoded><![CDATA[<h1 id="h-getting-started" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Getting Started</strong></h1><p>This guide is intended for validators running on bare-metal servers and explains how Union releases work. Check out the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/nixos/">NixOS</a> and the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/kubernetes/">Kubernetes</a> guide for more production-ready deployments.</p><p>Validators are the backbone of the network. Becoming one requires significant token bonding and delegations, and is not intended for non-power users.</p><h2 id="h-obtaining-uniond" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/getting-started/#obtaining-uniond"><strong>Obtaining uniond</strong></a></h2><p><strong>Note</strong> Currently, directly downloading the <code>uniond</code> binary requires access to our private GitHub repository. We are not currently providing the general public access to our GitHub repositories. If you don’t have access to our private GitHub repository, you can still run our node using the public Docker image.</p><p>You can obtain <code>uniond</code> from a recent <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/unionlabs/union/releases/latest">release</a>.</p><p><strong>Caution</strong> Double-check the version and architecture in the link before downloading.</p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/getting-started/#tab-panel-0"><strong>x86_64-linux</strong></a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/getting-started/#tab-panel-1">aarch64-linux</a></p></li></ul><pre data-type="codeBlock" text="curl --output uniond --location https://github.com/unionlabs/union/releases/download/$UNIOND_VERSION/uniond-release-x86_64-linux
"><code>curl <span class="hljs-operator">-</span><span class="hljs-operator">-</span>output uniond <span class="hljs-operator">-</span><span class="hljs-operator">-</span>location https:<span class="hljs-comment">//github.com/unionlabs/union/releases/download/$UNIOND_VERSION/uniond-release-x86_64-linux</span>
</code></pre><p><em>Where</em> <code>UNIOND_VERSION</code> is v0.24.0</p><p>Verify that the binary works on your server by running:</p><pre data-type="codeBlock" text="./uniond --help
"><code>./uniond <span class="hljs-operator">-</span><span class="hljs-operator">-</span>help
</code></pre><p>For convenience, we can add the binary to the <code>PATH</code>, to make it callable from anywhere.</p><pre data-type="codeBlock" text="mv ./uniond /usr/bin/
"><code>mv ./uniond <span class="hljs-operator">/</span>usr<span class="hljs-operator">/</span>bin<span class="hljs-operator">/</span>
</code></pre><h3 id="h-using-docker" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/getting-started/#using-docker"><strong>Using Docker</strong></a></h3><p>We also provide containers in our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/orgs/unionlabs/packages/container/package/uniond-release">package registry</a>.</p><pre data-type="codeBlock" text="docker pull ghcr.io/unionlabs/uniond-release:$UNIOND_VERSION
"><code>docker pull ghcr.io/unionlabs<span class="hljs-operator">/</span>uniond<span class="hljs-operator">-</span>release:$UNIOND_VERSION
</code></pre><p><em>Where</em> <code>UNIOND_VERSION</code> is v0.24.0</p><p>When running the container, make sure to map a volume to the path passed in <code>--home</code> options to ensure data persistence. From here on the guide assumes the usage of a regular binary. The <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/docker-compose/">docker-compose</a> section is more suited for docker users.</p><p><strong>Caution</strong> <code>uniond</code> is a stateful application and interacts with the file system. Make sure to use <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.docker.com/storage/volumes/">volumes</a>.</p><h2 id="h-initialization" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/getting-started/#initialization"><strong>Initialization</strong></a></h2><p>We’ll need to set up a few configuration files and obtain the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/genesis.json">genesis.json</a> before we can run the node.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/genesis.json">https://docs.union.build/genesis.json</a></p><p>First, set some environment variables, which are used throughout initialization.</p><pre data-type="codeBlock" text="export CHAIN_ID=union-testnet-8export MONIKER=&quot;Unionized Goblin&quot;export KEY_NAME=aliceexport GENESIS_URL=&quot;https://union.build/genesis.json&quot;
"><code>export CHAIN_ID<span class="hljs-operator">=</span>union<span class="hljs-operator">-</span>testnet<span class="hljs-operator">-</span>8export MONIKER<span class="hljs-operator">=</span><span class="hljs-string">"Unionized Goblin"</span>export KEY_NAME<span class="hljs-operator">=</span>aliceexport GENESIS_URL<span class="hljs-operator">=</span><span class="hljs-string">"https://union.build/genesis.json"</span>
</code></pre><p>Then we’ll have <code>uniond</code> initialize our data and configuration directories. By default, <code>/User/{USER}/.uniond</code> is used.</p><pre data-type="codeBlock" text="uniond init $MONIKER --chain-id $CHAIN_ID
"><code>uniond <span class="hljs-keyword">init</span> <span class="hljs-variable">$MONIKER</span> <span class="hljs-operator">--</span>chain<span class="hljs-operator">-</span>id <span class="hljs-variable">$CHAIN_ID</span>
</code></pre><h3 id="h-seeds" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/getting-started/#seeds"><strong>Seeds</strong></a></h3><p>Next, edit <code>~/.union/config/config.toml</code>. We’ll set the seeds to ensure your node can connect to the peer-to-peer network.</p><p>For <code>union-testnet-8</code> replace <code>seeds = &quot;&quot;</code> with:</p><pre data-type="codeBlock" text="seeds = &quot;c2bf0d5b2ad3a1df0f4e9cc32debffa239c0af90@testnet.seed.poisonphang.com:26656&quot;
"><code><span class="hljs-attr">seeds</span> = <span class="hljs-string">"c2bf0d5b2ad3a1df0f4e9cc32debffa239c0af90@testnet.seed.poisonphang.com:26656"</span>
</code></pre><h3 id="h-genesis-configuration" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/getting-started/#genesis-configuration"><strong>Genesis Configuration</strong></a></h3><p>Download the <code>genesis.json</code> and copy it to your <code>uniond</code> home directory.</p><pre data-type="codeBlock" text="curl $GENESIS_URL | jq &apos;.result.genesis&apos; &gt; ~/.union/config/genesis.json
"><code>curl $GENESIS_URL <span class="hljs-operator">|</span> jq <span class="hljs-string">'.result.genesis'</span> <span class="hljs-operator">></span> <span class="hljs-operator">~</span><span class="hljs-operator">/</span>.union/config<span class="hljs-operator">/</span>genesis.json
</code></pre><h3 id="h-registration" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/getting-started/#registration"><strong>Registration</strong></a></h3><p>To join as a validator, you need to submit a registration transaction. You can do this from the command line on your validator node.</p><p>First, add a wallet that holds Union tokens.</p><pre data-type="codeBlock" text="uniond keys add $KEY_NAME --recover
"><code>uniond <span class="hljs-keyword">keys</span> add $KEY_NAME --recover
</code></pre><p><strong>Caution</strong> For production usage, we recommend not storing the wallet on a server.</p><p>To submit the registration transaction and become a validator, you must submit a <code>create-validator</code> transaction:</p><pre data-type="codeBlock" text="uniond tx staking create-validator \  --amount 1000000muno \  --pubkey $(uniond tendermint show-validator) \  --moniker $MONIKER \  --chain-id $CHAIN_ID \  --from $KEY_NAME \  --commission-max-change-rate &quot;0.1&quot; \  --commission-max-rate &quot;0.20&quot; \  --commission-rate &quot;0.1&quot; \  --min-self-delegation &quot;1&quot;
"><code>uniond <span class="hljs-built_in">tx</span> staking create<span class="hljs-operator">-</span>validator \  <span class="hljs-operator">-</span><span class="hljs-operator">-</span>amount 1000000muno \  <span class="hljs-operator">-</span><span class="hljs-operator">-</span>pubkey $(uniond tendermint show<span class="hljs-operator">-</span>validator) \  <span class="hljs-operator">-</span><span class="hljs-operator">-</span>moniker $MONIKER \  <span class="hljs-operator">-</span><span class="hljs-operator">-</span>chain<span class="hljs-operator">-</span>id $CHAIN_ID \  <span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-keyword">from</span> $KEY_NAME \  <span class="hljs-operator">-</span><span class="hljs-operator">-</span>commission<span class="hljs-operator">-</span>max<span class="hljs-operator">-</span>change<span class="hljs-operator">-</span>rate <span class="hljs-string">"0.1"</span> \  <span class="hljs-operator">-</span><span class="hljs-operator">-</span>commission<span class="hljs-operator">-</span>max<span class="hljs-operator">-</span>rate <span class="hljs-string">"0.20"</span> \  <span class="hljs-operator">-</span><span class="hljs-operator">-</span>commission<span class="hljs-operator">-</span>rate <span class="hljs-string">"0.1"</span> \  <span class="hljs-operator">-</span><span class="hljs-operator">-</span>min<span class="hljs-operator">-</span><span class="hljs-built_in">self</span><span class="hljs-operator">-</span>delegation <span class="hljs-string">"1"</span>
</code></pre><p><strong>Note</strong> If your own node isn’t set up to accept RPC request, you can send them to another node via the <code>--node</code> option.</p><h2 id="h-systemd-service" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/getting-started/#systemd-service"><strong>Systemd Service</strong></a></h2><p>We recommend running <code>uniond</code> as a systemd service. Create a file in <code>/etc/systemd/system</code> called <code>uniond.service</code>. Make sure to replace $USER with your username.</p><pre data-type="codeBlock" text="[Unit]Description=uniond[Service]Type=simpleRestart=alwaysRestartSec=1User=$USERExecStart=/usr/bin/uniond start[Install]WantedBy=multi-user.target
"><code>[Unit]Description<span class="hljs-operator">=</span>uniond[Service]Type<span class="hljs-operator">=</span>simpleRestart<span class="hljs-operator">=</span>alwaysRestartSec<span class="hljs-operator">=</span>1User<span class="hljs-operator">=</span>$USERExecStart<span class="hljs-operator">=</span><span class="hljs-operator">/</span>usr<span class="hljs-operator">/</span>bin<span class="hljs-operator">/</span>uniond start[Install]WantedBy<span class="hljs-operator">=</span>multi<span class="hljs-operator">-</span>user.target
</code></pre><p>You should be able to view the node logs by executing</p><pre data-type="codeBlock" text="sudo journalctl -f --user uniond
"><code>sudo journalctl <span class="hljs-operator">-</span>f <span class="hljs-operator">-</span><span class="hljs-operator">-</span>user uniond
</code></pre><p>It’s then recommended to back up these files from <code>~/.union/config</code> in a secure location:</p><ul><li><p><code>priv_validator_key.json</code></p></li><li><p><code>node_key.json</code></p></li></ul><h1 id="h-docker-compose" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Docker Compose</strong></h1><p>This guide assumes you are familiar with running a Union validator. If not, start with the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/joining-testnet/getting-started/">validator guide</a>.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.docker.com/compose/">docker-compose</a> is a tool for running containers in a declarative manner. This allows for better automation, upgrades, and monitoring.</p><h2 id="h-configuration" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/docker-compose/#configuration"><strong>Configuration</strong></a></h2><p>Our base <code>compose.yml</code> is fairly simple:</p><pre data-type="codeBlock" text="services:  node:    image: &quot;ghcr.io/unionlabs/uniond-release:$UNIOND_VERSION&quot;    volumes:      - ~/.union:/.union      - /tmp:/tmp    network_mode: &quot;host&quot;    restart: unless-stopped    command: start --home /.union
"><code>services:  node:    image: <span class="hljs-string">"ghcr.io/unionlabs/uniond-release:$UNIOND_VERSION"</span>    volumes:      <span class="hljs-operator">-</span> <span class="hljs-operator">~</span><span class="hljs-operator">/</span>.union:<span class="hljs-operator">/</span>.union      <span class="hljs-operator">-</span> <span class="hljs-operator">/</span>tmp:<span class="hljs-operator">/</span>tmp    network_mode: <span class="hljs-string">"host"</span>    restart: unless<span class="hljs-operator">-</span>stopped    command: start <span class="hljs-operator">-</span><span class="hljs-operator">-</span>home <span class="hljs-operator">/</span>.union
</code></pre><p>Pay special attention to the <code>volumes</code> key. Here we map an already initialized <code>~/.uniond</code> directory to the <code>node</code> service. The <code>~/.uniond</code> directory should contain a <code>config</code> and <code>data</code> directory. To properly set these up, check out the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/joining-testnet/getting-started/">validator guide</a>.</p><h2 id="h-monitoring" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/docker-compose/#monitoring"><strong>Monitoring</strong></a></h2><p>We suggest adding additional monitoring services, such as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.datadoghq.com/">datadog</a>.</p><h1 id="h-nixos" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>NixOS</strong></h1><p>NixOS deployments can use our <strong>module</strong> to easily manage their validator. It creates a systemd service with a production configuration</p><p><strong>Caution</strong> The current example does not support remote signers yet. We will expand the guide once <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/strangelove-ventures/horcrux">horcrux</a> support is implemented.</p><h2 id="h-configuration" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/nixos/#configuration"><strong>Configuration</strong></a></h2><p>Below is an example configuration.nix which can be used in production.</p><p><strong>Caution</strong> The example currently uses <code>git+ssh://</code> syntax rather than <code>github:</code> syntax because our repository is not public yet. Once it is, this will be simplified. When this happens, <code>GIT_LFS_SKIP_SMUDGE</code> will also no longer be required.</p><pre data-type="codeBlock" text="{  inputs = {    nixpkgs.url = &quot;github:NixOS/nixpkgs/nixos-unstable&quot;;    union.url = &quot;git+ssh://git@github.com/unionlabs/union&quot;;  };  outputs = {self,nixpkgs,union, ... }:    {      nixosConfigurations.testnet-validator =        let          system = &quot;x86_64-linux&quot;;          pkgs = importnixpkgs { inherit system; };        in        nixpkgs.lib.nixosSystem {          inherit system;          modules = [            union.nixosModules.unionvisor            {              system.stateVersion = &quot;23.11&quot;;              # Base configuration for openstack-based VPSs              imports = [ &quot;${nixpkgs}/nixos/modules/virtualisation/openstack-config.nix&quot; ];              # Allow other validators to reach you              networking.firewall.allowedTCPPorts = [ 80 443 26656 26657 ];              # Unionvisor module configuration              services.unionvisor = {                enable = true;                moniker = &quot;your-testnet-moniker&quot;;              };              # OPTIONAL: Some useful inspection tools for when you SSH into your validator              environment.systemPackages = with pkgs; [                bat                bottom                helix                jq                fastfetch                tree              ];            }          ];        };    };}
"><code>{  inputs <span class="hljs-operator">=</span> {    nixpkgs.url <span class="hljs-operator">=</span> <span class="hljs-string">"github:NixOS/nixpkgs/nixos-unstable"</span>;    union.url <span class="hljs-operator">=</span> <span class="hljs-string">"git+ssh://git@github.com/unionlabs/union"</span>;  };  outputs <span class="hljs-operator">=</span> {<span class="hljs-built_in">self</span>,nixpkgs,union, ... }:    {      nixosConfigurations.testnet-validator <span class="hljs-operator">=</span>        let          system <span class="hljs-operator">=</span> <span class="hljs-string">"x86_64-linux"</span>;          pkgs <span class="hljs-operator">=</span> importnixpkgs { inherit system; };        in        nixpkgs.lib.nixosSystem {          inherit system;          modules <span class="hljs-operator">=</span> [            union.nixosModules.unionvisor            {              system.stateVersion <span class="hljs-operator">=</span> <span class="hljs-string">"23.11"</span>;              # Base configuration <span class="hljs-keyword">for</span> openstack<span class="hljs-operator">-</span>based VPSs              imports <span class="hljs-operator">=</span> [ <span class="hljs-string">"${nixpkgs}/nixos/modules/virtualisation/openstack-config.nix"</span> ];              # Allow other validators to reach you              networking.firewall.allowedTCPPorts <span class="hljs-operator">=</span> [ <span class="hljs-number">80</span> <span class="hljs-number">443</span> <span class="hljs-number">26656</span> <span class="hljs-number">26657</span> ];              # Unionvisor module configuration              services.unionvisor <span class="hljs-operator">=</span> {                enable <span class="hljs-operator">=</span> <span class="hljs-literal">true</span>;                moniker <span class="hljs-operator">=</span> <span class="hljs-string">"your-testnet-moniker"</span>;              };              # OPTIONAL: Some useful inspection tools <span class="hljs-keyword">for</span> when you SSH into your validator              environment.systemPackages <span class="hljs-operator">=</span> with pkgs; [                bat                bottom                helix                jq                fastfetch                tree              ];            }          ];        };    };}
</code></pre><p>You can then deploy the configuration by running</p><pre data-type="codeBlock" text="GIT_LFS_SKIP_SMUDGE=1 nixos-rebuild switch --flake .\#testnet-validator --target-host user@validator.domain -L
"><code>GIT_LFS_SKIP_SMUDGE<span class="hljs-operator">=</span><span class="hljs-number">1</span> nixos<span class="hljs-operator">-</span>rebuild switch <span class="hljs-operator">-</span><span class="hljs-operator">-</span>flake .\#testnet<span class="hljs-operator">-</span>validator <span class="hljs-operator">-</span><span class="hljs-operator">-</span>target<span class="hljs-operator">-</span>host user@validator.domain <span class="hljs-operator">-</span>L
</code></pre><h2 id="h-upgrading" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/nixos/#upgrading"><strong>Upgrading</strong></a></h2><p>To upgrade to newer versions, simply run</p><pre data-type="codeBlock" text="nix flake updateGIT_LFS_SKIP_SMUDGE=1 nixos-rebuild switch --flake .\#testnet-validator --target-host user@validator.domain -L
"><code>nix flake updateGIT_LFS_SKIP_SMUDGE<span class="hljs-operator">=</span><span class="hljs-number">1</span> nixos<span class="hljs-operator">-</span>rebuild switch <span class="hljs-operator">-</span><span class="hljs-operator">-</span>flake .\#testnet<span class="hljs-operator">-</span>validator <span class="hljs-operator">-</span><span class="hljs-operator">-</span>target<span class="hljs-operator">-</span>host user@validator.domain <span class="hljs-operator">-</span>L
</code></pre><p>This will pull in the latest changes to union configurations and prepare your node for future upgrades.</p><h1 id="h-node-configuration" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Node Configuration</strong></h1><p>After successfully running your node with <code>uniond</code>, you can refer to this guide to aid you in configuring your node.</p><p>This is not a complete guide to all node configuration options, this is intended to help ensure that your node is fully operational.</p><p>This guide will assume that you’re starting at the root of your Union node configuration (located at <code>~/.union/</code> by default or <code>~/.unionvisor/home</code> if you’re using Unionvisor).</p><h2 id="h-client-configuration" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/node-configuration/#client-configuration"><strong>Client Configuration</strong></a></h2><p>Located in <code>config/client.toml</code>, this file is host to client settings.</p><h3 id="h-the-network-chain-id" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/node-configuration/#the-network-chain-id"><strong>The Network Chain ID</strong></a></h3><p>Update this value to ensure that your client is supplied with the correct chain ID.</p><p>For the Union Testnet, this value should be <code>&quot;union-testnet-8&quot;</code>.</p><pre data-type="codeBlock" text="# The network chain IDchain-id = &quot;union-testnet-8&quot;
"><code><span class="hljs-meta prompt_"># </span><span class="bash">The network chain IDchain-<span class="hljs-built_in">id</span> = <span class="hljs-string">"union-testnet-8"</span></span>
</code></pre><h3 id="h-hostport-for-the-tendermint-rpc" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/node-configuration/#hostport-for-the-tendermint-rpc"><strong>Host/Port for the Tendermint RPC</strong></a></h3><p>This will determine which address your client will listen for Tendermint RPC request on.</p><p>This will default to <code>&quot;tcp://localhost:26657&quot;</code>, setting this to <code>&quot;tcp://0.0.0.0:26657&quot;</code> will ensure it’s listening on every available network interface.</p><pre data-type="codeBlock" text="# &lt;host&gt;:&lt;port&gt; to Tendermint RPC interface for this chainnode = &quot;tcp://0.0.0.0:26657&quot;
"><code># <span class="hljs-operator">&#x3C;</span>host<span class="hljs-operator">></span>:<span class="hljs-operator">&#x3C;</span>port<span class="hljs-operator">></span> to Tendermint RPC <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title"><span class="hljs-keyword">for</span></span> <span class="hljs-title"><span class="hljs-built_in">this</span></span> <span class="hljs-title">chainnode</span> = "<span class="hljs-title">tcp</span>:<span class="hljs-comment">//0.0.0.0:26657"</span>
</span></code></pre><h2 id="h-app-configuration" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/node-configuration/#app-configuration"><strong>App Configuration</strong></a></h2><p>Located in <code>config/app.toml</code>, this file is host to app settings.</p><h3 id="h-minimum-gas-price" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/node-configuration/#minimum-gas-price"><strong>Minimum Gas Price</strong></a></h3><p>Located under the “Base Configuration” section of <code>config/app.toml</code>.</p><p>While optional, you may wish to ensure your node receives a minimum fee when processing transactions. Whatever you choose for this value, ensure it uses the correct denom. For the Union Testnet, the correct denom is <code>muno</code>.</p><pre data-type="codeBlock" text="# The minimum gas prices a validator is willing to accept for processing a# transaction. A transaction&apos;s fees must meet the minimum of any denomination# specified in this config (e.g. 0.25token1;0.0001token2).minimum-gas-prices = &quot;0muno&quot;
"><code><span class="hljs-comment"># The minimum gas prices a validator is willing to accept for processing a# transaction. A transaction's fees must meet the minimum of any denomination# specified in this config (e.g. 0.25token1;0.0001token2).minimum-gas-prices = "0muno"</span>
</code></pre><h3 id="h-pruning" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/node-configuration/#pruning"><strong>Pruning</strong></a></h3><p>Located under the “Base Configuration” section of <code>config/app.toml</code>.</p><p>Several options are available here, ensure you’ve selected the one that best fits your nodes storage capabilities.</p><pre data-type="codeBlock" text="# default: the last 362880 states are kept, pruning at 10 block intervals# nothing: all historic states will be saved, nothing will be deleted (i.e. archiving node)# everything: 2 latest states will be kept; pruning at 10 block intervals.# custom: allow pruning options to be manually specified through &apos;pruning-keep-recent&apos;, and &apos;pruning-interval&apos;pruning = &quot;default&quot;
"><code># default: the last <span class="hljs-number">362880</span> states are kept, pruning at <span class="hljs-number">10</span> <span class="hljs-built_in">block</span> intervals# nothing: all historic states will be saved, nothing will be deleted (i.e. archiving node)# everything: <span class="hljs-number">2</span> latest states will be kept; pruning at <span class="hljs-number">10</span> <span class="hljs-built_in">block</span> intervals.# custom: allow pruning options to be manually specified through <span class="hljs-string">'pruning-keep-recent'</span>, and <span class="hljs-string">'pruning-interval'</span>pruning <span class="hljs-operator">=</span> <span class="hljs-string">"default"</span>
</code></pre><h2 id="h-node-configuration" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/node-configuration/#node-configuration"><strong>Node Configuration</strong></a></h2><p>Located in <code>config/config.toml</code>, this file is host to many settings.</p><h3 id="h-consensus" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/node-configuration/#consensus"><strong>Consensus</strong></a></h3><p>To achieve a low target block time, the Union team asks validators to make the following changes to their configuration.</p><p>Located in the <code>consensus</code> TOML table under the “Consensus Configuration Options” section.</p><pre data-type="codeBlock" text="# How long we wait for a proposal block before pre-voting niltimeout_propose = &quot;3s&quot;# How much timeout_propose increases with each roundtimeout_propose_delta = &quot;500ms&quot;# How long we wait after receiving +2/3 prevotes for “anything” (ie. not a single block or nil)timeout_prevote = &quot;1s&quot;# How much the timeout_prevote increases with each roundtimeout_prevote_delta = &quot;500ms&quot;# How long we wait after receiving +2/3 precommits for “anything” (ie. not a single block or nil)timeout_precommit = &quot;1s&quot;# How much the timeout_precommit increases with each roundtimeout_precommit_delta = &quot;500ms&quot;# How long we wait after committing a block, before starting on the new# height (this gives us a chance to receive some more precommits, even# though we already have +2/3).timeout_commit = &quot;1s&quot;
"><code># How long we wait <span class="hljs-keyword">for</span> a proposal <span class="hljs-built_in">block</span> before pre<span class="hljs-operator">-</span>voting niltimeout_propose <span class="hljs-operator">=</span> <span class="hljs-string">"3s"</span># How much timeout_propose increases with each roundtimeout_propose_delta <span class="hljs-operator">=</span> <span class="hljs-string">"500ms"</span># How long we wait after receiving <span class="hljs-operator">+</span><span class="hljs-number">2</span><span class="hljs-operator">/</span><span class="hljs-number">3</span> prevotes <span class="hljs-keyword">for</span> “anything” (ie. not a single <span class="hljs-built_in">block</span> or nil)timeout_prevote <span class="hljs-operator">=</span> <span class="hljs-string">"1s"</span># How much the timeout_prevote increases with each roundtimeout_prevote_delta <span class="hljs-operator">=</span> <span class="hljs-string">"500ms"</span># How long we wait after receiving <span class="hljs-operator">+</span><span class="hljs-number">2</span><span class="hljs-operator">/</span><span class="hljs-number">3</span> precommits <span class="hljs-keyword">for</span> “anything” (ie. not a single <span class="hljs-built_in">block</span> or nil)timeout_precommit <span class="hljs-operator">=</span> <span class="hljs-string">"1s"</span># How much the timeout_precommit increases with each roundtimeout_precommit_delta <span class="hljs-operator">=</span> <span class="hljs-string">"500ms"</span># How long we wait after committing a <span class="hljs-built_in">block</span>, before starting on the <span class="hljs-keyword">new</span># height (<span class="hljs-built_in">this</span> gives us a chance to <span class="hljs-function"><span class="hljs-keyword">receive</span> <span class="hljs-title">some</span> <span class="hljs-title">more</span> <span class="hljs-title">precommits</span>, <span class="hljs-title">even</span># <span class="hljs-title">though</span> <span class="hljs-title">we</span> <span class="hljs-title">already</span> <span class="hljs-title">have</span> +2/3).<span class="hljs-title">timeout_commit</span> = "1<span class="hljs-title">s</span>"
</span></code></pre><h3 id="h-rpc-listening-address" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/node-configuration/#rpc-listening-address"><strong>RPC Listening Address</strong></a></h3><p>Located in the <code>rpc</code> TOML table under the “RPC Server Configuration Options” section.</p><p>You’ll want to ensure your node is configured to accept rpc connections. To do so, set this value to the appropriate address.</p><p>For example, to listen on every available network interface - set this to <code>&quot;tcp://0.0.0.0:26657&quot;</code>.</p><pre data-type="codeBlock" text="# TCP or UNIX socket address for the RPC server to listen onladdr = &quot;tcp://0.0.0.0:26657&quot;
"><code><span class="hljs-comment"># TCP or UNIX socket address for the RPC server to listen onladdr = "tcp://0.0.0.0:26657"</span>
</code></pre><h3 id="h-p2p-listening-address" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/node-configuration/#p2p-listening-address"><strong>P2P Listening Address</strong></a></h3><p>Located in the <code>p2p</code> TOML table under the “P2P Configuration Options” section.</p><p>You’ll want to ensure your node is configured to accept p2p connections. To do so, set this value to the appropriate address.</p><p>For example, to listen on every available network interface - set this to <code>&quot;tcp://0.0.0.0:26656&quot;</code>.</p><pre data-type="codeBlock" text="# Address to listen for incoming connectionsladdr = &quot;tcp://0.0.0.0:26656&quot;
"><code># Address to listen <span class="hljs-keyword">for</span> incoming connectionsladdr = <span class="hljs-string">"tcp://0.0.0.0:26656"</span>
</code></pre><h3 id="h-external-address" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/node-configuration/#external-address"><strong>External Address</strong></a></h3><p>Located in the <code>p2p</code> TOML table under the “P2P Configuration Options” section.</p><p>If you’ve configured a domain name for your node, this is the place to inform your node of it.</p><pre data-type="codeBlock" text="# Address to advertise to peers for them to dial# If empty, will use the same port as the laddr,# and will introspect on the listener or use UPnP# to figure out the address. ip and port are required# example: 159.89.10.97:26656external_address = &quot;example.com:26656&quot;
"><code># <span class="hljs-selector-tag">Address</span> <span class="hljs-selector-tag">to</span> advertise <span class="hljs-selector-tag">to</span> peers for them <span class="hljs-selector-tag">to</span> dial# If empty, will use the same port as the laddr,# and will introspect on the listener or use UPnP# <span class="hljs-selector-tag">to</span> <span class="hljs-selector-tag">figure</span> out the <span class="hljs-selector-tag">address</span>. ip and port are required# example: <span class="hljs-number">159.89</span>.<span class="hljs-number">10.97</span>:<span class="hljs-number">26656ex</span>ternal_address = <span class="hljs-string">"example.com:26656"</span>
</code></pre><h3 id="h-seeds" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/node-configuration/#seeds"><strong>Seeds</strong></a></h3><p>Located in the <code>p2p</code> TOML table under the “P2P Configuration Options” section.</p><p>Seed nodes help orchestrate initial connections to the network. For union-testnet-8, the seed nodes are:</p><pre data-type="codeBlock" text="seeds = &quot;c2bf0d5b2ad3a1df0f4e9cc32debffa239c0af90@testnet.seed.poisonphang.com:26656&quot;
"><code><span class="hljs-attr">seeds</span> = <span class="hljs-string">"c2bf0d5b2ad3a1df0f4e9cc32debffa239c0af90@testnet.seed.poisonphang.com:26656"</span>
</code></pre><h3 id="h-seed-mode" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.union.build/infrastructure/node-operators/node-configuration/#seed-mode"><strong>Seed Mode</strong></a></h3><p>Located in the <code>p2p</code> TOML table under the “P2P Configuration Options” section.</p><p>If you’d like to be a seed node, be sure to set this to <code>true</code>.</p><p><strong>Caution</strong> If you plan for your node to be a validator, it should not also be a seed node.</p><pre data-type="codeBlock" text="# Seed mode, in which node constantly crawls the network and looks for# peers. If another node asks it for addresses, it responds and disconnects.## Does not work if the peer-exchange reactor is disabled.seed_mode = false
"><code># Seed mode, in which node constantly crawls the network and looks <span class="hljs-keyword">for</span># peers. If another node asks it <span class="hljs-keyword">for</span> addresses, it responds and disconnects.## Does not work <span class="hljs-keyword">if</span> the peer<span class="hljs-operator">-</span>exchange reactor <span class="hljs-keyword">is</span> disabled.seed_mode <span class="hljs-operator">=</span> <span class="hljs-literal">false</span>
</code></pre>]]></content:encoded>
            <author>grichamvp@newsletter.paragraph.com (GrichaMVP)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/ae455dd6bda155acf03c555dae5909ff831e2cd5453babffdceef0a6f34c0545.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[0G Labs: Redefining Decentralization with Cutting-Edge Technology]]></title>
            <link>https://paragraph.com/@grichamvp/0g-labs-redefining-decentralization-with-cutting-edge-technology</link>
            <guid>UhuIZod8H3vqIW3pToD5</guid>
            <pubDate>Wed, 14 Aug 2024 13:53:28 GMT</pubDate>
            <description><![CDATA[0G Labs is an emerging player in the web3 space, focused on creating a revolutionary modular blockchain integrated with artificial intelligence (AI). The project recently made headlines by successfully raising $35 million in a pre-seed funding round, significantly exceeding typical amounts for such rounds. This funding will enable 0G Labs to pursue its ambitious goals of addressing key challenges in scalability, security, and decentralization.Overview of 0G Labs0G Labs aims to develop a modul...]]></description>
            <content:encoded><![CDATA[<p>0G Labs is an emerging player in the web3 space, focused on creating a revolutionary modular blockchain integrated with artificial intelligence (AI). The project recently made headlines by successfully raising $35 million in a pre-seed funding round, significantly exceeding typical amounts for such rounds. This funding will enable 0G Labs to pursue its ambitious goals of addressing key challenges in scalability, security, and decentralization.</p><h2 id="h-overview-of-0g-labs" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Overview of 0G Labs</h2><p>0G Labs aims to develop a modular blockchain that separates data processing into distinct storage and publishing channels. This innovative design allows transactions to interact only with the necessary parts of the network, enhancing efficiency and reducing the load on validators. The integration of AI is intended to optimize network functionality and address the blockchain trilemma.</p><p>Key features of 0G Labs include:</p><ul><li><p><strong>Modular Architecture</strong>: Enables flexibility and scalability for various decentralized applications (dApps).</p></li><li><p><strong>AI Integration</strong>: Enhances transaction efficiency and overall network performance.</p></li><li><p><strong>Decentralization Commitment</strong>: Maintains a decentralized structure to foster security and trust within the ecosystem.</p></li></ul><h2 id="h-funding-and-investor-interest" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Funding and Investor Interest</h2><p>The recent funding round attracted investments from over 40 prominent crypto institutions, including Hack VC, Animoca Brands, OKX Ventures, and Delphi Digital. Originally aiming to raise $5 million, the overwhelming interest from investors led to a substantial oversubscription of the round. This reflects the growing confidence in 0G Labs&apos; potential to contribute meaningfully to the blockchain landscape.</p><h2 id="h-partnership-opportunities" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Partnership Opportunities</h2><p>0G Labs is actively seeking partnerships with companies that align with its vision. Collaborating with 0G Labs offers numerous benefits, such as:</p><ul><li><p><strong>Access to Innovative Technology</strong>: Partners can leverage advanced solutions for data accessibility and scalability.</p></li><li><p><strong>Development Support</strong>: Ongoing assistance to help partners enhance their projects and minimize operational costs.</p></li></ul><h2 id="h-community-engagement" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Community Engagement</h2><p>To foster community involvement, 0G Labs encourages active participation through various initiatives, including airdrops and testing phases. Community members can engage by following 0G Labs on platforms like Twitter, Telegram, and Discord, as well as participating in quests and tasks on platforms like Galxe to earn rewards and recognition.</p><h2 id="h-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h2><p>With its ambitious goals and innovative approach, 0G Labs is poised to redefine the blockchain industry. By addressing critical challenges through AI integration and community engagement, the project is well-positioned to lead the way in developing scalable, secure, and decentralized applications. As 0G Labs continues to evolve, it will be exciting to observe the opportunities it creates for its partners and the broader blockchain community.</p>]]></content:encoded>
            <author>grichamvp@newsletter.paragraph.com (GrichaMVP)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/e90634f9de169906702a14bf65e1d831cb47510d69f6364ea29a8b1a5ab947ca.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>