zeniq-smart-chain

module
v0.6.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 23, 2024 License: Apache-2.0

README

Zeniqsmart Node

zeniqd

This repository contains the code of the full node client of zeniqsmart, an EVM&Web3 compatible sidechain for Zeniq.

zeniqsmartd needs a zeniqd.

~/.zeniq/zeniq.conf

server=1
rpcbind=127.0.0.1
rpcallowip=127.0.0.1/0
rpcport=57319
rpcuser=zeniq
rpcpassword=zeniq123

rpcuser, rpcpassword must be the same as for ~/.zeniqsmartd/config/app.toml further down.

Start zeniqd with

./src/zeniqd -printtoconsole

and let it sync.

zeniqsmartd

zeniqsmartd init my_moniker_here

This creates:

~/.zeniqsmartd/config
~/.zeniqsmartd/data

For the first node, edit

~/.zeniqsmartd/config/app.toml
~/.zeniqsmartd/config/config.toml
~/.zeniqsmartd/config/genesis.json

For subsequent nodes copy and override above 3 files in, then edit.

  • ~/.zeniqsmartd/config/config.toml is read by the Tendermint library.

    One should change this line in each copy of config.toml:

    moniker = "my_moniker_here"

    There needs to be at least one seed in config.toml. In the following example the node ID is via zeniqsmartd show-node-id in 192.168.0.40, generated from ~/.zeniqsmartd/config/node_key.json (which was created with zeniqsmartd init my_moniker_here).

    seeds = "ae00280df2729f655f35016bf95162c6cf71ab50@192.168.0.40:28888"
    persistent_peers = "ae00280df2729f655f35016bf95162c6cf71ab50@192.168.0.40:28888"
    
  • ~/.zeniqsmartd/config/app.toml configures the Tendermind application, i.e. the zeniqsmartd proper.

    • cc-rpc-epochs and cc-rpc-fork-block are consensus-relevant and must be the same in all nodes
    • watcher-speedup will fetch epoch history from other smart nodes
    get_logs_max_results = 10000
    retain-blocks = -1
    retain_interval_blocks = 100
    use_litedb = false
    with-syncdb = false
    blocks_kept_ads = 10000
    blocks_kept_db = -1
    sig_cache_size = 20000
    trunk_cache_size = 200
    prune_every_n = 10
    recheck_threshold = 1000
    # there must be a zeniqd running (on the same machine)
    mainnet-rpc-url = "http://127.0.0.1:57319"
    mainnet-genesis-height = 121900
    mainnet-rpc-username = "zeniq"
    mainnet-rpc-password = "zeniq123"
    watcher-speedup = true
    zeniqsmart-rpc-url = "https://smart3.zeniq.network:9545"
    # consensus-relevant: [[mainnetHeight>=184464,n>=6,>=n*1200],...]
    cc-rpc-epochs = [ [184464, 6, 7200], [185184, 144, 172800], [185472, 1008, 1209600] ]
    cc-rpc-fork-block = 11000011
    

New app.toml settings:

  • cc-rpc-epochs see below
  • cc-rpc-fork-block see below
  • blocks-behind = 0, 0 being default, can be set other than 0 to keep a running backup. The sync alway keeps the given number of blocks behind the current head of validators.
  • 'update-of-ads-log = false', can be set true temporarily to create text files updateOfADS<height>.txt in the ~/.zeniqsmartd/data/app folder showing which 'key=value/old' changes (keys that got a new value over an old one) happened at that height. This overlaps with with-syncdb, which stores in a db but without the old value.

Start via

zeniqsmartd start

~/.zeniqsmartd/data contains the network data. The sync takes 3-9 days.

CCRPC

zeniqsmartd implements crosschain in one direction from Zeniq mainchain to the smart chain by calling the Zeniq RPC function "crosschain" regularly per epoch:

  • cc-rpc-epochs defines at what mainchain height which epoch length in blocks starts getting valid. n=1008 blocks would be about 1 week corresponding to one epoch length.
  • cc-rpc-fork-block is the smart height when this feature is activated in zeniqsmartd Make this a nn earlier than the first main height in cc-rpc-epochs.

In Zeniq mainchain a transaction with a special output's scriptPubKey OP_FALSE OP_VERIFY OP_RETURN <agentdata> that makes the input unusable in mainchain, i.e. burns it there, is called a crosschain transaction further down.

The steps taken by zeniqsmartd are these:

::

n=1008 # epoch 2n # 2016 fetch nn_n = 1060/3 # every 3 seconds smart, every 10 min main nnmin = 2nnn_n # search back to find cc tx, a failure would be very probably with the min value nn = 3nnmin # a safer value nn/n == 1200 # in cc-rpc-epochs=[[main,n,nn]] make nn = 1200n

Directories

Path Synopsis
cmd
internal
rpc
api
api/filters
Package filters implements an ethereum filtering system for block, transactions and log events.
Package filters implements an ethereum filtering system for block, transactions and log events.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL