ULTRANET NODE

COMMAND-LINE INTERFACE

The following arguments are used with any commands that imply access to the account private key:

passwordThe password to an account. If the password is not set, then it will be requested during an execution of the command.

Argument value types:

ACCOUNTAccount public address; e.g., 0x0000fffb3f90771533b1739480987cee9f08d754
PASSWORDText string of any no. chars and longer than 1 char
UNTUNT tokens in form of float point number; e.g., 12.0456
PRIVATEKEYHexadecimal text string of account private key; e.g., 0x949d6fe0c479f8a152bb83935cd01d633540517e84f36f4c45fa17d3db3e4561
IPIP Address; e.g., 12.34.56.78
PORTTCP Port number; e.g., 3080
URLA text string that meets URL specifications; e.g., htttp://domain.com
PATHA text string of the local file system path in its native format; e.g., C:\Users\file.txt
AUTHORA lowercase text string where only [a...z] and [0...9] symbols are allowed and that complies with title-to-name mapping rules; e.g., 'ultranetorg'
PRODUCTA lowercase text string where only [a..z] and [0..9] symbols are allowed and that complies with title-to-name mapping rules; e.g., 'calculator'
TITLEAn arbitrary text string longer than 1 char; e.g., 'Ultranet Org.'
INTEGERInteger number; e.g., '82'
MANIFESTSingle-line or multiline text in product release manifest format

JOINING TO TEST0 NETWORK

Verification of emission transactions by ULTRANET node requires a user to configure a connection to Ethereum JSON-RPC API provider. This can be an instance of either some Ethereum client insrance or third-party services; e.g., Infura. The corresponding setting is located in Settings.xon file under the 'Nas' section:

Nas
{
	...
	Provider = 'url_to_Ethereum_REST_API_provider'
	...
}

The OS firewall should be configured to allow incoming connections for TCP ports 30800 and 30900 (for Test0 network). If a machine running DUN is connected to the Internet through a router, then the user needs to configure port forwarding (NAT) for TCP 30800 and 30900 ports (Test0 network) in his router's settings. Check your router manual for specific instructions.

If the user intends to participate in block generation, then this requires him to follow these steps:

1. Create account using the GUI or 'account new' or 'account import' command.
2. Deposit some funds (a higher amount gives a greater chance of being elected as a member) into this account using the 'unt emit' or 'unt transfer' command. These funds will be used as a bail.
3. Configure a candidate account in the Settings.xon. Full mode requires you to keep the password as plain text, so use it in safe environments only.

...
Candidate = 'candidate_account'
CandidatePassword = 'candidate_account_password'
...

4. Now, a node can be run by launching the 'dun' executable using the following command:

dun node

Windows users can also run a node with a graphical UI by launching the following executable:

UC.Net.Node.FUI.exe

ACCOUNT NEW

The "account new" command is used to create a new account.

dun account new

ACCOUNT IMPORT

The "account import privatekey" command imports a new account using the provided private key.

dun account import privatekey = PRIVATEKEY

Example:

dun account import privatekey = 0xf5eb914b0cdf95fb3df9bcf7e3686cb16d351edf772e577dd6658f841f51b848

MEMBERSHIP DECLARE

The "membership declare" command is used to declare a specified account as a potential member of block generators.

dun membership declare candidate = ACCOUNT [password = PASSWORD] bail = UNT rpc = IP:PORT
candidateUltranet account public address that the candidate is going to use to sign its blocks.
bailThe amount of ETH to be used as bail. The bail will be subtracted from the account balance and locked. A candidate can change its bail by sending a subsequent "candidacy declare" command with a bigger or smaller bail amount, or zero to cancel its declaration and re-deposit the last locked bail
rpcIP address and port of JSON RPC end-point of candidate's node server. Overrides candidate's node current IP address and default (3081) JSON RPC port.

Example:

dun membership declare candidate = 0x0000fffb3f90771533b1739480987cee9f08d754 password = thesuccessoroftheweb bail = 1.000 rpc = 12.34.56.78:3081

UNT EMIT

The "emit" command is used to convert ETH tokens in the Ethereum network to UNT tokens in the Ultranet network. The final amount of UNT depends on the current Emission Factor.

dun unt emit from{wallet = PATH [password = PASSWORD]} amount = UNT to{account = ACCOUNT [password = PASSWORD]}
from{...walletEthereum .json wallet file of account funds are debited from
amountAmount of ETH to be converted into UNT
to{...accountUltranet account public address to which funds are credited using the current UNT Emission Factor ratio

Example:

dun unt emit from{wallet = C:\aaaabbbbccccddddd111122223333.json password = thesuccessoroftheweb} amount = 1000 to{account = 0x0000fffb3f90771533b1739480987cee9f08d754 password = thesuccessoroftheweb}

UNT TRANSFER

The "transfer" command is used to send UNT tokens form one account to another.

unt transfer from = ACCOUNT [password = PASSWORD] to = ACCOUNT amount = UNT
fromAccount that public address funds are debited from
toAccount public address that funds are credited to
amountAmount of UNT to be transferred

Example:

unt transfer from = 0x0000fffb3f90771533b1739480987cee9f08d754 password = thesuccessoroftheweb to = 0x1111dae119f210c94b4cf99385841fea988fcfca amount = 1.000

AUTHOR BID

Author names shorter than 5 chars are distributed via auction. Once the first bid is confirmed, an auction is considered to have started and lasts for 1 year. Users can use the "author bid" command to make their own bid on the chosen author:

author bid by = ACCOUNT [password = PASSWORD] author = AUTHOR amount = UNT
byAccount public address that makes a bid and will own an author if successful.
authorAuthor name to bid on
amountAmount of bid in UNT

Example:

dun author bid by = 0x0000fffb3f90771533b1739480987cee9f08d754 password = thesuccessoroftheweb author = abc amount = 1.000

AUTHOR REGISTER

author register by = ACCOUNT [password = PASSWORD] author = AUTHOR title = TITLE years = INTEGER
byAccount public address that owns or is going to register an author
authorAuthor name to be registered
titleAuthor's title that must comply with title-to-name mapping rules
yearsNumber of years in [1 .. 255] range

Example:

dun author register by = 0x0000fffb3f90771533b1739480987cee9f08d754 password = thesuccessoroftheweb author = companyinc title = 'Company Inc.' years = 5

AUTHOR TRANSFER

author transfer from = ACCOUNT [password = PASSWORD] author = AUTHOR to = ACCOUNT
fromAccount public address that owns an author to transfer
authorAuthor name to transfer
toAccount public address of a new owner

Example:

dun author from account = 0x1111111111111111111111111111111111111111 password = thesuccessoroftheweb author = companyinc to = 0x2222222222222222222222222222222222222222

PRODUCT REGISTER

product register by = ACCOUNT [password = PASSWORD] under = AUTHOR product = PRODUCT title = TITLE
byAccount public address that owns 'author'
underAuthor name a product will belong to
productProduct name to register
titleProduct's title, which must satisfy title-to-author mapping rules

Example:

dun product register by = 0x1111111111111111111111111111111111111111 password = thesuccessoroftheweb author = companyinc product = application title = 'Application'

PRODUCT PUBLISH

product publish by = ACCOUNT [password = PASSWORD] manifest = MANIFEST
byAccount public address that owns an author that a publishing product release belongs to
manifestManifest text that describes a product release

Example:

dun product publish
by = 0x1111111111111111111111111111111111111111
password = thesuccessoroftheweb 
manifest = 'Author = uo
            Product = ousprototype
            Version = 0.0.0.1
            Build = Release
            Platform
            {
            	Name = Windows
            	Version = 6.1.[1511-21H2].*
            	Architecture = x64
            	Features = ''
            }
            
            Complete
            {
            	Core { ipfs://qmcslmfa44cmtkmegdchz4hcylx8klnszxpwvkq2tkmenk ftp://company.com/releases/app0.0.0.1 }
            	Deferred { ipfs://qmcslmfa44cmtkmegdchz4hcylx8klnszxpwvkq2tkmenk http://company.com/releases/addon0.0.0.1 }
            	Deferred { ipfs://qmcslmfa44cmtkmegdchz4hcylx8klnszxpwvkq2tkmenk { Language = de-de }}
            	Deferred { ipfs://qmcslmfa44cmtkmegdchz4hcylx8klnszxpwvkq2tkmenk { Language = ru-ru }}
            	Deferred { ipfs://qmcslmfa44cmtkmegdchz4hcylx8klnszxpwvkq2tkmenk { Language = zh-cn }}
            	Deferred { ipfs://qmcslmfa44cmtkmegdchz4hcylx8klnszxpwvkq2tkmenk { Language = hi-in }}
            }
            
            Incremental
            {
            	Core { ipfs://qmcslmfa44cmtkmegdchz4hcylx8klnszxpwvkq2tkmenk }
            }'