<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://betaardordocs.jelurida.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Almonte</id>
	<title>ArdorDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://betaardordocs.jelurida.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Almonte"/>
	<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/Special:Contributions/Almonte"/>
	<updated>2026-05-14T17:21:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Getting_started&amp;diff=13045</id>
		<title>Getting started</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Getting_started&amp;diff=13045"/>
		<updated>2022-06-07T22:41:23Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|title=Getting started&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki&lt;br /&gt;
|description=Ardor documentation homepage - Getting started with the Ardor platform&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
[https://www.jelurida.com/ardor Ardor] is a blockchain-as-a-service multi-chain platform that evolved from the time-tested and energy-efficient [https://www.jelurida.com/nxt Nxt blockchain]. The Ardor mainnet launched on 01 January 2018. Through this documentation, you will learn all about the extensive capabilities of the Ardor platform. Begin developing your knowledge by reading about each of Ardor’s distinctive [[Features]] or consider trying the technology yourself by following some [[Basic tutorials|Basic Tutorials]]. For developers, documentation is provided for each of Ardor’s more than 250 [[API|APIs]] that can be used to quickly and cost-effectively deploy dApps and smart contracts that integrate your business processes with the Ardor blockchain. Check this site regularly for new content and updates as additional features are released. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Download Ardor== &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
Before we begin, if you haven’t already done so, you may wish to check that you have the correct (usually most recent) version of [https://adoptopenjdk.net/ Java] installed on your computer. You can use any compatible Java available for your platform. The minimum required version is Java 8. The recommended version is Java 11. We usually test with OpenJDK 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
To start with Ardor/[https://www.jelurida.com/ignis Ignis], you must first download the client, also known as a &amp;quot;wallet&amp;quot;, on your machine. The client is distributed as a binary package for the following platforms:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
[[File:200px-Windowslogo.jpg|100px|frameless|link=Getting_started#Windows]][[File:200px-AppleLogo.jpg|100px|frameless|link=Getting_started#MacOS]][[File:200px-Linuxlogo.jpg|130px|frameless|link=Getting_started#Linux]][[File:200px-RaspberryPi_Logo.png|100px|frameless|link=Getting_started#Raspberry_Pi]][[File:200px-Android.png|100px|frameless|link=Getting_started#Android]]&lt;br /&gt;
&lt;br /&gt;
==Client Installation == &amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;accordion&amp;quot; id=&amp;quot;accordion-win&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion-win&amp;quot; heading=&amp;quot;===Windows===&amp;quot;&amp;gt;&lt;br /&gt;
#Download the Windows installer for the latest official Ardor Client {{NRSVersion}} from {{NRSWinInstaller}}. If you want to test the latest testnet-only version {{NRSVersionExperimental}} that includes the snapshotting and pruning functionality, refer to the Universal Zip Package.&lt;br /&gt;
#Ardor&#039;s Windows client comes as an .exe file. After downloading it, you can verify its integrity by performing an [[Faq#How_to_verify_authenticity_of_Ardor_installations|integrity check]]&lt;br /&gt;
#Run the installer and follow the instructions on the screen. Note that you can select either the testnet or mainnet during installation, if further details are needed please follow the [[How_to_download_the_ardor_client_wallet|step-by-step guide]]. Once installed icons will be created by default in your desktop and Start Menu.&lt;br /&gt;
#You can now run the Ardor software by clicking on the Ardor icon. After a few seconds, the Ardor wallet will open in its own window.&lt;br /&gt;
#If you already have created an Ardor account, click on &#039;Returning User&#039; to introduce your passphrase. If you need to create your Ardor account, [[How_to_create_an_account_on_the_Ardor_Platform|click here for instructions to Create a New Ardor Account]].&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;accordion&amp;quot; id=&amp;quot;accordion-mac&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion-mac&amp;quot; heading=&amp;quot;===MacOS===&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
#Download the Mac installer for the latest official Ardor Client  {{NRSVersion}} from {{NRSMacInstaller}}. After downloading, [[Faq#How_to_verify_authenticity_of_Ardor_installations|verify its signature]]. After downloading, check the SHA256 hash of the package for security. If you want to test the latest testnet-only version {{NRSVersionExperimental}} that includes the snapshotting and pruning functionality, refer to the Universal Zip Package.&lt;br /&gt;
#Open the MacOS terminal.&lt;br /&gt;
#Navigate to the Mac installer you just have downloaded.&lt;br /&gt;
#Execute the command &amp;lt;code&amp;gt;sudo xattr -c ardor-installer-{{NRSVersion}}.dmg&amp;lt;/code&amp;gt;. Type your passphrase&lt;br /&gt;
#Run the installer package (Ardor&#039;s Mac installer comes packaged in .dmg format) and follow the instructions on screen &lt;br /&gt;
## Select the language [[File:MacInstaller_2.png|none|border|400px]]&lt;br /&gt;
## Click on &#039;Next&#039; to begin with the installation [[File:MacInstaller_3.png|none|border|400px]]&lt;br /&gt;
## Accept the terms of the license agreement [[File:MacInstaller_4.png|none|border|400px]]&lt;br /&gt;
## Select the installation path [[File:MacInstaller_5.png|none|border|400px]]&lt;br /&gt;
## Select the packages you want to install [[File:MacInstaller_6.png|none|border|400px]]&lt;br /&gt;
## Check the options [[Tutorial_on_setting_up_the_ardor_testnet|See the tutorial for setting up the Ardor testnet]] [[File:MacInstaller_7.png|none|border|400px]]&lt;br /&gt;
## Once installed, click on finish [[File:MacInstaller_9.png|none|border|400px]]&lt;br /&gt;
#You can now run the Ardor software clicking on the &amp;quot;ardor.app&amp;quot; in Applications. If you already have created a Ardor account, click in &#039;Returning User&#039; to introduce your passphrase. If you need to create your Ardor account, [[How_to_create_an_account_on_the_Ardor_Platform|click here for instructions to Create a New Ardor Account]].&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;accordion&amp;quot; id=&amp;quot;accordion-linux&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion-linux&amp;quot; heading=&amp;quot;===Linux===&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
Here is the guide to installing the Ardor Client on a Linux 64-bit platform. 32-bit installation instructions are very similar; you just might need to download the 32-bit version of Java instead of the 64-bit one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can use these instructions on your Linux VPS as well.&lt;br /&gt;
&lt;br /&gt;
====Set up Java==== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
You can skip this step if you already have Java installed. Otherwise, you can install it via your distribution repository doing the following (for Ubuntu/Debian builds):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt update &lt;br /&gt;
sudo apt install openjdk-11-jre-headless&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
You can also use `openjdk-8-jre-headless` or any other Java 8+ compatible version.&lt;br /&gt;
&lt;br /&gt;
====Install and run the Ardor Client==== &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Using the Unix installer===== &amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
You can execute the Unix installer executable compatible with most Linux distributions from [https://www.jelurida.com/ardor-client.sh ardor-client.sh] and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;wget https://www.jelurida.com/ardor-client.sh&lt;br /&gt;
sh ardor-client.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Using the Universal Zip Package===== &amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
You can follow the more generic instructions as explained below:&lt;br /&gt;
#Change to your home folder and download the latest client (version {{NRSVersion}} or the experimental {{NRSVersionExperimental}}):&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;cd ~&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;wget {{NRSDownload}}&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;wget https://www.jelurida.com/ardor-client.zip.asc&amp;lt;/code&amp;gt; and verify that the signature is correct: &amp;lt;code&amp;gt;gpg --with-fingerprint ardor-client.zip.asc&amp;lt;/code&amp;gt;&lt;br /&gt;
#Unzip it:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;unzip ardor-client.zip&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;cd ardor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Using the experimental version is as follows: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;cd ~&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;wget {{NRSExperimentalDownload}}&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;wget https://www.jelurida.com/ardor-client-experimental.zip.asc&amp;lt;/code&amp;gt; and verify that the signature is correct: &amp;lt;code&amp;gt;gpg --with-fingerprint ardor-client-experimental.zip.asc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Run the Ardor client===== &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
#Now it&#039;s time to start the software. You may start it by executing &amp;lt;code&amp;gt;./run.sh&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;./run.sh --daemon&amp;lt;/code&amp;gt; for running the Ardor node in the background, which you will find in the ardor directory. The server will be active as soon as you see in the window a text similar to this: &amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;Ardor server {{NRSVersion}} started successfully.&amp;lt;/code&amp;gt; This shell window will be running the Ardor server and print all the Ardor log messages, so it needs to stay running!&amp;lt;br /&amp;gt;&lt;br /&gt;
#Open http://localhost:27876/ from a web browser to access the Ardor Client. Please note that, if it&#039;s the first time you run Ardor in your machine, the Ardor blockchain will need to be downloaded until it is up to date. Depending on your network connection speed, this may take a few hours. The Ardor Client will show you a progress bar as the blockchain downloads. Now you can visit the [[How_to_create_an_account_on_the_Ardor_Platform|click here for instructions to Create a New Ardor Account]].&lt;br /&gt;
#*NOTE: If you&#039;ve installed the client on a dedicated server or VPS, you should change &amp;quot;localhost&amp;quot; to your Server/VPS IP.&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;accordion&amp;quot; id=&amp;quot;accordion-pi&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion-pi&amp;quot; heading=&amp;quot;===Raspberry Pi===&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
For installing the Ardor client on a Raspberry pi, you can refer to the description of [https://medium.com/@mrv_89306/solar-powered-ardor-blockchain-node-aa680a976c50 an implementation with the Ardor client powered by solar panels]&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;accordion&amp;quot; id=&amp;quot;accordion-android&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion-android&amp;quot; heading=&amp;quot;===Android===&amp;quot;&amp;gt;&lt;br /&gt;
Click on the [[Android_Full_Node|Android Full Node installation guide]] and follow the instructions.&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;accordion&amp;quot; id=&amp;quot;accordion-docker&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion-docker&amp;quot; heading=&amp;quot;===Docker Image===&amp;quot;&amp;gt;&lt;br /&gt;
There is an Ardor Node Docker image available in the Docker Hub: [https://hub.docker.com/r/jeluridaswiss/ardor Ardor Docker Image]. Deploying this image requires knowledge about docker and management of containers. Please refer to the tutorial [[Deploying_the_Ardor_Node_Docker_Image|Deploying the Ardor Node Docker Image]]&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Need help?&#039;&#039;&#039;=== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Need help during the download or development process? Contact us on the [https://talk.jelurida.com Ardor &amp;amp; Nxt Technical forum], and take a look at the [[Faq|FAQ]]. You can also reach us by opening a ticket in our [https://desk.zoho.eu/portal/jelurida/home helpdesk]&lt;br /&gt;
&lt;br /&gt;
==Lightweight Contracts documentation== &amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
Lightweight Contracts represent a framework for developing a layer of automation on top of the existing Ardor APIs, refer to the official documentation to read more about this feature:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot; style=&amp;quot;float:none; border:1px solid black;width:95%;background-color:#F6F0F0;padding:2px;&amp;quot;&amp;gt;&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding-left:50px;&amp;quot;| &#039;&#039;&#039;[[Lightweight_Contracts|Lightweight Contracts documentation]]&#039;&#039;&#039; &lt;br /&gt;
|}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Login to Ardor== &amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
There are different ways to log in to Ardor to create an account. It is explained in the [[Login_Page_Tutorial|Login Page Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Getting your first ARDR== &amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
With the Ardor client installed, it is now time to start transacting. To do that, we need to get some tokens, be it ARDR, IGNIS, or any other child chain. The Ardor mainnet is live and actual tokens are in circulation across numerous major exchanges. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
Note the tokens we will be using in the next examples are from testnet. These tokens are not traded in exchanges and have no monetary value -- they exist only as a convenience for developers and those willing to experiment with the features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
The process for receiving testnet tokens is simple. Ask for them in the [https://ardorforum.org Ardor Forum], contact us on the [https://ardornxt.slack.com slack] channel #helpdesk. There is an external [https://www.ardor.world/faucet_ardor/ faucet] as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Exchanges === &amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
* [https://www.jelurida.com/ardor/explorers Currently trading ARDR]   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Next steps== &amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
Learn how to use the Ardor platform by following the [[Basic_tutorials|basic tutorials]] or start reading about Ardor&#039;s extensive built-in [[Features]].&lt;br /&gt;
&lt;br /&gt;
=== Staking === &amp;lt;!--T:94--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
The process of staking in Ardor is called [[Forging_(f)|Forging]]. Once you have more than 1.000 ARDR you can start forging, thus earning the transaction fees when a block is generated by your node. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
Furthermore, you can also opt-in the [[Node_Reward_Program|Node Reward Program]] by just setting up a node with both the API and peer ports open to the Internet and a public and static IP address.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Feedback and errors== &amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
If an error in this documentation is found, we would love to be aware to correct it as soon as possible. Please write a question to [mailto:info@jelurida.com info@jelurida.com] and we will take care.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Latest documentation changes and updates&amp;quot;&amp;gt;&lt;br /&gt;
{{Special:SimpleChanges/days=150,limit=100,bots,hideminor,namespace=0}}&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Ardor_Software_Change_Log&amp;diff=13044</id>
		<title>Ardor Software Change Log</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Ardor_Software_Change_Log&amp;diff=13044"/>
		<updated>2022-06-06T11:12:02Z</updated>

		<summary type="html">&lt;p&gt;Almonte: Added 2.4.2 change log&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Ardor Software Change Log&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, Ardor version, change log&lt;br /&gt;
|description=Full change log of the Ardor blockchain&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.4.2===&lt;br /&gt;
Bugfix release, all nodes are recommended to upgrade.&lt;br /&gt;
&lt;br /&gt;
Increased base target threshold to 2000% when detecting forks for peer blockchain state. Added a property nxt.forkBaseTargetPercentage=2000 to allow configuring this threshold.&lt;br /&gt;
&lt;br /&gt;
Broadcast transaction from the light client to many peers without validation only after successful validation by the main peer.&lt;br /&gt;
&lt;br /&gt;
Added a checkpoint after the 2.4.1 hardfork. Do not connect to older version peers.&lt;br /&gt;
&lt;br /&gt;
Fixed trading royalties info dialog, other minor issues.&lt;br /&gt;
&lt;br /&gt;
Updated Jetty to version 9.4.46.&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.4.1===&lt;br /&gt;
&lt;br /&gt;
This is a mandatory upgrade for all Ardor mainnet nodes. A hardfork has been scheduled at block 2307000, expected on May 1st, 2022, in order to activate on mainnet the new features that were recently enabled on testnet:&lt;br /&gt;
per-transaction-type asset control, asset trade royalties, deactivation of MPG child chain. There are no other notable changes since 2.4.0e&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.4.0e===&lt;br /&gt;
&lt;br /&gt;
This experimental release is a mandatory upgrade for the Ardor 2.0 testnet. It can also be used on mainnet. A testnet hardfork has been scheduled for block 9800000, expected on March 20, 2022.&lt;br /&gt;
&lt;br /&gt;
The new features to be enabled at the hardfork on testnet are Per-Transaction Type Asset Control, and Asset Trade Royalties.&lt;br /&gt;
&lt;br /&gt;
Per-transaction type asset control. When setting up asset control, it is now possible to specify different phasing requirements for different transaction types. The setPhasingAssetControl API now accepts a multivalue transactionType parameter specifying the types to which the asset control will be applied (or removed, if voting model is NONE). Possible values are: ASSET_TRANSFER, ASSET_DELETE, ASK_ORDER_PLACEMENT, BID_ORDER_PLACEMENT, ASK_ORDER_CANCELLATION, BID_ORDER_CANCELLATION, DIVIDEND_PAYMENT, ASSET_PROPERTY_SET, ASSET_PROPERTY_DELETE, SET_ASSET_CONTROL. If no types are specified, by default the asset control is applied to the following types: ASSET_TRANSFER, ASSET_DELETE, ASK_ORDER_PLACEMENT, BID_ORDER_PLACEMENT, DIVIDEND_PAYMENT, consistent with the original asset control implementation. Setting control for some transaction type removes any previous control for that specific transaction type. At any time, there is at most one control per transaction type, while the same control can apply to multiple transaction types.&lt;br /&gt;
&lt;br /&gt;
The asset control can still be set only by the asset issuer, and the initial setting, when no transaction types have been set under control yet, still requires that the asset issuer holds all asset shares. Once asset control has been set for at least one transaction types, it is not required that the issuer holds all shares, but the SET_ASSET_CONTROL transaction type itself could be restricted by specifying asset control phasing requirements for it.&lt;br /&gt;
&lt;br /&gt;
An API change was necessary, the getPhasingAssetControl API now returns an array of controls objects instead of a single controlParams.&lt;br /&gt;
&lt;br /&gt;
Asset trade royalties. The asset issuer can now receive royalties, calculated as a fixed percentage from each trade of the asset, which is subtracted from the amount (in child chain coins) that the asset seller receives and gets added automatically to the asset issuer account.&lt;br /&gt;
&lt;br /&gt;
Setting or changing the royalties percentage can be done only be the asset issuer and requires that he owns all shares of the asset. The asset issuer can also disable royalties by setting the percentage to 0, and disabling does not require ownership of all shares.&lt;br /&gt;
&lt;br /&gt;
The new [[Asset_Exchange#Set_Asset_Trade_Royalties|setAssetTradeRoyalties]] API is used to configure royalties, with the percentage specified in royaltiesPercentage parameter. The maximum allowed is 50%.&lt;br /&gt;
&lt;br /&gt;
For open API public nodes, the default API result size limits and database query timeouts can now be bypassed for hosts as configured in the new nxt.unlimitedBotHosts property. The default is to ignore the limits for localhost, set to * to allow all hosts, but be aware of potential DoS issues.&lt;br /&gt;
&lt;br /&gt;
The MPG child chain will be disabled on testnet at this hardfork, and on mainnet at the mainnet hardfork which is to be scheduled with the next release. MPG balances and transaction history will be preserved for now, but no more transactions of any type will be possible with MPG tokens.&lt;br /&gt;
&lt;br /&gt;
A shell script contrib/ardor-ramdisk.sh has been added, for running Ardor with the database stored in memory on tmpfs, backed up and restored to/from persistent storage under contrib/ramdisk-backups. Run the script with no arguments for more help.&lt;br /&gt;
&lt;br /&gt;
Bugfixes in Contract Manager, Transaction voucher processing, and others.&lt;br /&gt;
&lt;br /&gt;
Added support for READ_ONLY mode of the ContractRunner.&lt;br /&gt;
&lt;br /&gt;
Added support for Ledger Speculos emulator, use the nxt.ledger.speculosHostname and nxt.ledger.speculosPort parameters to configure.&lt;br /&gt;
&lt;br /&gt;
Updated Jetty to version 9.4.45.&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.3.4===&lt;br /&gt;
&lt;br /&gt;
This stable release is an optional but recommended upgrade for all users. The Ledger Nano X and S hardware wallets are now identified correctly by both the desktop wallet and the browser wallet.&lt;br /&gt;
&lt;br /&gt;
When a contract processTransaction invocation submits multiple transactions, and the contract runner account ARDR balance is lower than the balance needed to cover the referenced transaction deposit for all transactions, the contract runner will not submit any transaction in order to prevent partial expiry of transactions.&lt;br /&gt;
&lt;br /&gt;
The default deadline for transactions submitted by the contract runner is now configurable using the defaultDeadline contract runner attribute.&lt;br /&gt;
&lt;br /&gt;
Fixed running the contracts unit tests from an Ardor installation.&lt;br /&gt;
&lt;br /&gt;
The IntelliJ ContractManagerPlugin has been updated and is now being built using gradle. See &amp;lt;code&amp;gt;addons/plugins/ContractManagerPlugin/README&amp;lt;/code&amp;gt; for details.&lt;br /&gt;
&lt;br /&gt;
The content of a loaded voucher is now properly escaped.&lt;br /&gt;
&lt;br /&gt;
Verification of transaction bytes when locally signing transactions of type [[Asset_Exchange/en#Set_Asset_Property|setAssetProperty]] and [[Accounts#Set_Account_Property|setAccountProperty]] now works properly.&lt;br /&gt;
&lt;br /&gt;
The table paging widget has a new &amp;quot;Go To ...&amp;quot; numeric field to enable locating historical records without paging.&lt;br /&gt;
&lt;br /&gt;
Fixed connectivity issues: don&#039;t blacklist peers on normal shutdown.&lt;br /&gt;
&lt;br /&gt;
Added tool for creating Genesis JSONs from current blockchain balances. See &amp;lt;code&amp;gt;nxt.tools.GenesisCreator&amp;lt;/code&amp;gt; for usage instructions.&lt;br /&gt;
&lt;br /&gt;
Added tool to print shuffling recipients, run &amp;lt;code&amp;gt;com.jelurida.ardor.client.api.ShufflingRecipients&amp;lt;/code&amp;gt; (edit serverUrl and adminPassword if necessary).&lt;br /&gt;
&lt;br /&gt;
To prevent DoS or performance issues, database queries executed during API calls on open API nodes when adminPassword is not provided will timeout and fail with errorCode 25 if the query exceeds a preset number of seconds. This can be set with the new nxt property &amp;lt;code&amp;gt;nxt.openApiQueryTimeout&amp;lt;/code&amp;gt;, default is 1 second, set to 0 to disable the timeout.&lt;br /&gt;
&lt;br /&gt;
Allow filtering of logged stacktraces by exception class and message prefix, configurable using the &amp;lt;code&amp;gt;nxt.disabledThrowableStackTraces&amp;lt;/code&amp;gt; property, see the &amp;lt;code&amp;gt;nxt-default.properties&amp;lt;/code&amp;gt; file for the exact syntax.&lt;br /&gt;
&lt;br /&gt;
Various UI fixes.&lt;br /&gt;
&lt;br /&gt;
Updated Jetty to version 9.4.40.&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-3.0.0e===&lt;br /&gt;
&lt;br /&gt;
This is the first release of the Ardor pruning and snapshotting feature. It is experimental and for testnet use only. A new testnet has been created, starting from a snapshot of the current testnet as of Dec 8, 2020. Users having testnet balances as of the snapshot height, block 6248612, should have the same initial balances on this new testnet. The 3.0.0e release cannot be used with the current 2.3.3 mainnet or testnet however.&lt;br /&gt;
&lt;br /&gt;
To enable pruning of child chain transactions, the &amp;lt;code&amp;gt;nxt.pruneChildChains=true&amp;lt;/code&amp;gt; property must be set (default is false). If this is enabled, child chain transactions are not processed during blockchain download and are pruned from storage during normal operation. During download, only the parent Ardor chain is processed; when the download is finished, the blockchain state (consisting of child chain balances, asset holdings, aliases, etc - everything an account owns) is loaded from a state snapshot, downloaded from the network and confirmed by at least 720 blocks or as set in &amp;lt;code&amp;gt;nxt.stateSnapshotConfirmations&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The peer networking port for the 3.0 testnet is 16874 and the API port is 16876 (SSL port 16877, if enabled). The different ports allow this version to be run in parallel with 2.3.3 mainnet or testnet instances.&lt;br /&gt;
&lt;br /&gt;
Block times have been set to 30 s for this testnet.&lt;br /&gt;
&lt;br /&gt;
Users familiar with running Ardor nodes are invited to join the 3.0 testnet by installing this release and report any issues in our support forum, https://talk.jelurida.com&lt;br /&gt;
&lt;br /&gt;
Apart from the major new pruning and snapshotting feature, there should be no difference in functionality compared to 2.3.3.&lt;br /&gt;
&lt;br /&gt;
The changes in Ardor version 3 to help developers that built on Ardor 2 migrate their applications to Ardor 3 are described in the following link [https://www.jelurida.com/resources/ardor-3.0-introduction Ardor 3.0 explained]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.3.3===&lt;br /&gt;
&lt;br /&gt;
This stable release is an optional but recommended upgrade for all users.&lt;br /&gt;
&lt;br /&gt;
*[[Tutorial_on_custom_bundlers_for_child_chain_transactions|Bundlers UI]] fixes and improvements.&lt;br /&gt;
&lt;br /&gt;
*Support specifying the &amp;lt;code&amp;gt;sha256&amp;lt;/code&amp;gt; hash of the admin password in the &amp;lt;code&amp;gt;nxt.properties&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;nxt.adminPasswordHash&amp;lt;/code&amp;gt;, instead of the actual [[API#Admin_Password|admin password]].&lt;br /&gt;
&lt;br /&gt;
*[[General_notes#Roaming_and_Light_Client_Modes|Light client]] fixes and improvements.&lt;br /&gt;
&lt;br /&gt;
*Allow specifying JVM options and PID file location using &amp;lt;code&amp;gt;ARDOR_JVM_OPTS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ARDOR_PID_FILE&amp;lt;/code&amp;gt; environment variables.&lt;br /&gt;
&lt;br /&gt;
*[[Lightweight_Contracts#Contract_Runner_fees_and_funds|Contract runner fee]] calculation fixes.&lt;br /&gt;
&lt;br /&gt;
*Added a checkpoint after the GPS hard fork, no longer accept connections from peers version older than 2.3.2.&lt;br /&gt;
&lt;br /&gt;
*[[Node_Processes_Configuration|Node processes UI]] improvement - allow deleting the encrypted config file.&lt;br /&gt;
&lt;br /&gt;
*Performance improvements based on load testing of asset and coin exchange transactions.&lt;br /&gt;
&lt;br /&gt;
*Added &amp;lt;code&amp;gt;run-taxreport.sh&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;run-taxreport.bat&amp;lt;/code&amp;gt; scripts to simplify running the tax reporting tool.&lt;br /&gt;
&lt;br /&gt;
*Added filter selector to list all/my standby shufflers.&lt;br /&gt;
&lt;br /&gt;
*Improved account ledger to distinguish fee from generated block, fee from next blocks and fee from shuffling penalty.&lt;br /&gt;
&lt;br /&gt;
*Enhanced [[Transactions#Get_Unconfirmed_Transactions|getUnconfirmedTransactions]] and [[Transactions#Get_Unconfirmed_Transaction_Ids|getUnconfirmedTransactionIds]] APIs to also return the transactions in the waiting pool if the request parameter includeWaitingTransactions=true is specified.&lt;br /&gt;
&lt;br /&gt;
*Fixed an UI bug in setting up account control with zero maximum fees which resulted in no fees limit being set at all. Users who have already tried setting zero max fees should check their account control settings and if necessary do it again`.&lt;br /&gt;
&lt;br /&gt;
*[[Changelly_Integration|Changelly]] and [https://changehero.io ChangeHero]] Exchange UI improvements.&lt;br /&gt;
&lt;br /&gt;
*Various other bugfixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
*Updated Jetty to version 9.4.35. Old libraries in lib folder must be deleted if installing manually.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.3.2===&lt;br /&gt;
&lt;br /&gt;
This stable release is a mandatory update for mainnet. A hardfork to enable new functionality and activate the GPS child chain is scheduled for block 1453000 expected on Sep 22, 2020.&lt;br /&gt;
&lt;br /&gt;
At the hardfork height, the GPS asset (assetID: 3123987739214429747) will be migrated to a child chain. Existing asset exchange orders for the GPS asset will be cancelled, further transactions with it will be disabled, and a snapshot of the asset balances as of that height will be used to automatically distribute the tokens of the newly enabled GPS child chain.&lt;br /&gt;
&lt;br /&gt;
The following new features, already available on testnet, will be activated on mainnet after the hardfork:&lt;br /&gt;
&lt;br /&gt;
*Allow sending zero fee child chain transactions even from accounts not yet registered on the blockchain.&lt;br /&gt;
*Allow setting up account control with zero max fees.&lt;br /&gt;
*The AEUR child chain will become permissioned, thus disabling further transactions with AEUR after the hardfork.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Locally generated SSL keystore&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To simplify the setup of SSL certificates and a Java keystore required to enable https communication. The node auto-generates certificates and keystore in case none were provided. The auto-generated keystore can be used to setup Https communication quickly on a local node. When the nxt.apiSSL property is set to true and the keystore location is not specified or the nxt.keyStorePath property is pointing to a missing file, the node will automatically generate a key pair, a local root certificate and an SSL certificate signed by it, to form a valid certificate chain. The node will create a keystore containing these artifacts according to the format and password specified in nxt.keyStoreType and nxt.keyStorePassword correspondingly. The local root certificate is saved using the same path as the keystore file with a file suffix &amp;quot;-ca.crt&amp;quot;. Import this certificate as a trusted CA into the browser keystore to make enable the browser to validate the auto-generated certificate chain.&lt;br /&gt;
&lt;br /&gt;
When using light client or while downloading the blockchain, the local node forwards API calls to a random remote node and confirms each API response with up to three additional remote nodes. This functionality which was previously implemented by the wallet is now implemented by the node itself to make it faster and more reliable.&lt;br /&gt;
&lt;br /&gt;
A new API - [[Networking#Get_API_Proxy_Reports|getAPIProxyReports]] - provides information about the light client remote API calls and their confirmations.&lt;br /&gt;
&lt;br /&gt;
Improved retrieval of prunable transactions and bootstrapping of archival nodes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lightweight contracts framework improvements&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two new callbacks were added to the contract interface init and shutdown. init can be used by contract developers to perform static initialization tasks used during the lifetime of the contract, while shutdown can be used to reclaim resources used by the contract before shutting it down. When starting a node the init callback is invoked on all contracts loaded by the contract runner. Similarly, when shutting down the node the shutdown callback is invoked. When uploading a new version of an existing contract, when loading the new contract reference the contract runner will first shutdown the existing version of the contract then initialize the new version.&lt;br /&gt;
&lt;br /&gt;
It now possible to submit transactions from processRequest callback. Transactions returned using context.createTransaction() are automatically broadcast to the node by the contract runner.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;New sample contracts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Trading bot &amp;lt;code&amp;gt;CoinExchangeTradingBot.java&amp;lt;/code&amp;gt; is a contract which performs market making on the coin exchange and asset exchange. Contract runners can define the holdings (coin or asset) on which to submit buy and sell orders and the percentage difference from a base exchange rate loaded from coinmarketcap, which serves as a sample data source. The bot can be configured to compete with other traders or issue orders according to the base exchange rate to provider liquidity.&lt;br /&gt;
&lt;br /&gt;
The account balance notifier &amp;lt;code&amp;gt;AccountBalanceNotifier.java&amp;lt;/code&amp;gt; monitors the account balances of configured holdings and raises an alert in case their holding balance drops below some minimum limit. The notifier can be used to monitor an account performing market making to alert the operator in case a holding balance is exhausted.&lt;br /&gt;
&lt;br /&gt;
The chain monitor contract &amp;lt;code&amp;gt;ChainMonitor.java&amp;lt;/code&amp;gt; monitors specific aspects of the blockchain operations. It submits an alert to one or more notification services in case a problem with the blockchain operation is detected.&lt;br /&gt;
&lt;br /&gt;
Notification service contracts &amp;lt;code&amp;gt;SlackNotifier.java, TelegramNotifier&amp;lt;/code&amp;gt; are utility contracts used for posting messages from other contracts to Slack and Telegram respectively.&lt;br /&gt;
&lt;br /&gt;
Updated Jetty to version 9.4.31.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.3.1e===&lt;br /&gt;
&lt;br /&gt;
This experimental release is a mandatory upgrade for all testnet nodes, and for all mainnet nodes already running 2.3.0e.&lt;br /&gt;
&lt;br /&gt;
Fixed transaction validation and bundler rate propagation for not yet enabled child chains.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.3.0e===&lt;br /&gt;
&lt;br /&gt;
This experimental release is a mandatory upgrade for all testnet nodes. It can also be used on mainnet.&lt;br /&gt;
&lt;br /&gt;
On testnet, a hardfork is scheduled for block 4949000, expected on 18.06.2020.&lt;br /&gt;
&lt;br /&gt;
Features that will be activated only on testnet at this hardfork are the new GPS child chain, and the child chain control for AEUR (see details below). All other new features do not require a consensus change and can therefore be used on both testnet and mainnet immediately, but should still be considered experimental.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HD Wallet Integration&#039;&#039;&#039;: This release introduces Hierarchical Deterministic (HD) wallets to Ardor, and&lt;br /&gt;
enables the integration of hardware wallet devices such as Ledger.&lt;br /&gt;
&lt;br /&gt;
Functionality to derive multiple public/private key pairs and account addresses based on the BIP32 specification is now integrated into the wallet.&lt;br /&gt;
&lt;br /&gt;
This HD wallet functionality allows the creation of a practically unlimited number of accounts all from a single secret &amp;quot;seed&amp;quot;. The user only needs to have this seed to be able to access and use all HD accounts derived from it. On the blockchain, HD accounts are indistinguishable from standalone accounts, and there is no way for a third party to determine which HD addresses are derived from the same seed, unless it has access to either the seed or the master public key.&lt;br /&gt;
&lt;br /&gt;
Hardware based key derivation, transaction signing, encryption and token generation are now supported by the Ledger hardware wallet. For more information see: [[Connect Ledger Nano S or Nano X to your Ardor Wallet|Connect Ledger Nano S or Nano X to your Ardor Wallet]]&lt;br /&gt;
&lt;br /&gt;
Software based key derivation is compatible with the Ledger hardware wallet so that given the same seed, the same key pairs can be derived using hardware or using software.&lt;br /&gt;
&lt;br /&gt;
The wallet defaults to the following standard BIP44 derivation paths:&lt;br /&gt;
* &amp;lt;code&amp;gt;m/44&#039;/16754&#039;/0&#039;/0&#039;&amp;lt;/code&amp;gt; for mainnet&lt;br /&gt;
* &amp;lt;code&amp;gt;m/44&#039;/16754&#039;/0&#039;/1&#039;&amp;lt;/code&amp;gt; for testnet&lt;br /&gt;
All keys generated by the wallet are direct child keys of these paths.&lt;br /&gt;
&lt;br /&gt;
An account address derived from a seed with a specific path generates a pair of private/public keys from which the account address is derived. These HD accounts do not have an account secret phrase associated with them like existing standalone accounts. All API calls which accept the secretPhrase parameter now also accept the privateKey parameter, which allows a derived account to be used the same way as a standalone account simply by replacing the secretPhrase parameter with a privateKey parameter in all API calls. The GetAccountId API now includes the privateKey in the response, to be used to calculate privateKey from a secretPhrase.&lt;br /&gt;
&lt;br /&gt;
New APIs were added to support the HD account functionality. GetLedgerMasterPublicKey connects directly to a Ledger device to load the public information of a BIP32 node given a BIP32 path parameter. Use this API to load a serialized master public key from the Ledger device to be used for offline child account derivation.&lt;br /&gt;
&lt;br /&gt;
*[[Bip32#Derive_Account_From_Seed|DeriveAccountFromSeed]] uses software based seed derivation to derive the full information of a BIP32 node from the combination of a seed mnemonic, a seed passphrase and a BIP32 path. Use this API to load the information of a specific BIP32 node.&lt;br /&gt;
*[[Bip32#Derive_Account_From_Master_Public_Key|DeriveAccountFromMasterPublicKey]] uses a serialized master public key obtained using any of the other APIs and a child index to derive the public key of a child BIP32 node. Use this API to derive the public key of a child account without exposing any private information.&lt;br /&gt;
&lt;br /&gt;
For passphrase accounts, the private key is calculated using sha256 hash plus some bit manipulation (clamp), therefore every passphrase can be converted to a private key but a private key cannot be converted back to a passphrase. Whenever entering a passphrase in the wallet it is possible to enter the 64 characters private key hex string instead. To enter old 64 character passphrase composed of exactly 64 characters hex string, prefix it with the string &amp;quot;&#039;&#039;Passphrase:&#039;&#039;&#039;&amp;quot; (without quotes).&lt;br /&gt;
&lt;br /&gt;
When loading accounts from a hardware wallet or a software seed the wallet loads accounts sequentially starting from index 0 until finding an account without a registered public key or until loading 20 accounts. This behavior can be customized using the wallet login page. The APIs themselves does not restrict the range of child keys which can be used by applications.&lt;br /&gt;
&lt;br /&gt;
The wallet login Page was redesigned, new tabs were added &amp;quot;Seed&amp;quot; for software based account derivation and &amp;quot;Hardware&amp;quot; for loading accounts from a hardware wallet. The passphrase and account login options are still available. QR code scanning tab was replaced with a widget available for specific fields.&lt;br /&gt;
&lt;br /&gt;
When launching the wallet for the first time, a walkthrough tour is displayed to present the various login options. Each of the login options has its own specific tour activated using a &#039;?&#039; button on the top bar. Additional tour is displayed on the dashboard after login.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BIP39 compatible secret generator&#039;&#039;&#039;&lt;br /&gt;
The old 12 words passphrase generator used for passphrase creation was replaced with a BIP39 compatible seed generator which can be used to generate seed or passphrase of 12 to 24 words with an internal checksum.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Public key creation for standby shuffler&#039;&#039;&#039; &lt;br /&gt;
Standby shuffler can now use a master public key to derive a new public key for each shuffling it joins so that it can never run out of public keys. The Seed login option or a new &amp;quot;BIP32 Calculations&amp;quot; dialog can be used to generate a master public key for use by the standby shufflers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GPS Child Chain&#039;&#039;&#039;&lt;br /&gt;
A new GPS child chain will be added, migrating the existing GPS asset (asset id 3123987739214429747 on mainnet, 8016986501463341146 on testnet) to a child chain token. On testnet, the migration will happen at the testnet hardfork block. On mainnet, the migration will be scheduled for the next hardfork block. At the time of the migration, the GPS asset will be frozen, existing bid and ask orders cancelled, and further transactions with it will be disabled. The GPS token balances of the GPS child chain will be based on 1:1 snapshot of the GPS asset at that height.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Child Chain Control&#039;&#039;&#039;&lt;br /&gt;
The child chain control functionality as described at [[Child Chain Control]] is now available on the Ardor blockchain, making it a unique hybrid public-permissioned platform. Child chains can now be made permissioned, allowing only authorised users to submit transactions on them, while still being a part of the public blockchain and relying on its consensus mechanism.&lt;br /&gt;
&lt;br /&gt;
New APIs have been added to grant, revoke, or query account permissions on permissioned child chains: GetAccountPermissions, AddAccountPermission, RemoveAccountPermission, GetChainPermissions.&lt;br /&gt;
&lt;br /&gt;
On testnet, the AEUR child chain will become permissioned at the testnet hardfork block, to be used for future testing of child chain control. On mainnet, it will become permissioned at the next mainnet hardfork block, thus disabling further transactions with AEUR.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Node Configuration&#039;&#039;&#039;&lt;br /&gt;
Configuration of &amp;lt;code&amp;gt;nxt.properties&amp;lt;/code&amp;gt; is now supported from inside the wallet using the new node configuration page. New GetConfiguration and SetConfiguration APIs have been added. Add-ons that make use of their custom properties in the &amp;lt;code&amp;gt;nxt.properties&amp;lt;/code&amp;gt; file can define a getConfigProperties method returning the configuration metadata for such properties, to allow those to be displayed and edited from the node configuration page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LedgerLogger add-on&#039;&#039;&#039;&lt;br /&gt;
The new LedgerLogger add-on allows logging of Account Ledger records of selected accounts to a flat csv file, ledgerlog.csv, optionally decrypting message attachments if the private keys of these accounts have been provided. In addition to enabling the add-on by setting nxt.addOns=LedgerLogger, users should set nxt.ledgerTrimKeep=0 to enable logging of ledger entries even before the default trim height, set nxt.ledgerLogUnconfirmed=0 to only log confirmed balance changes, and set nxt.LedgerAccounts to a list containing the accounts to be included in the output. Optionally, the log can be limited using the nxt.LedgerLogger.from and nxt.LedgerLogger.to properties to define a date range in a &#039;yyyy-MM-dd HH:mm:ss Z&#039; format. To decrypt message attachments, the secret phrase or the private key of each account can be provided respectively in the nxt.secretPhrase.&amp;lt;account&amp;gt; or nxt.privateKey.&amp;lt;account&amp;gt; property. A full rescan or re-download is needed to actually generate the ledgerlog.csv file after the add-on has been enabled and configured.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Improved Bundler fee rate calculator&#039;&#039;&#039;&lt;br /&gt;
When submitting a child chain transaction without specifying a fee, users can now specify a transactionPriority parameter, displayed as a slider in the UI. Transaction with higher priority will use a fee higher than the best bundler rate, based on the higher rates announced by other bundlers, thus increasing the chances of the transaction to get bundled. The bundlers to be considered can still be filtered using the nxt.bestBundlerRateWhitelist property.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other improvements&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Light client networking&lt;br /&gt;
Implemented bootstrap of API proxy - try to connect to known peers and if this fails, connect to trusted nodes to get latest open API peers. The purpose is to either have a node serving the proxy at start, or to know that the network is down, and also to fix the problems caused by old initial peers.&lt;br /&gt;
&lt;br /&gt;
Default bootstrap node is defined in nxt.properties: nxt.proxyBootstrapNodes=ardor.jelurida.com;&lt;br /&gt;
&lt;br /&gt;
The new BootstrapAPIProxy API can be used to refresh the latest open API peers from the bootstrap node.&lt;br /&gt;
&lt;br /&gt;
Added a new property nxt.stopDownloadHeight to allow forcing the blockchain download to stop once a certain height is reached.&lt;br /&gt;
&lt;br /&gt;
Added a new GetEpochTime API, to return the blockchain epoch time given a unix timestamp. Added unixtime to GetTime response.&lt;br /&gt;
&lt;br /&gt;
The APIs returning expected transactions now return both bundled and non-bundled transactions.&lt;br /&gt;
&lt;br /&gt;
The Node JS module provided with the installation no longer depends on the availability of the JQuery and JSDom modules thus making it easier to integrate with 3rd party libraries. The latest version is now published on https://www.npmjs.com/package/ardor.&lt;br /&gt;
&lt;br /&gt;
Improved prunable data retrieval, genesis block loading, database shutdown. Improved keeping track of remaining bundler fees limit.&lt;br /&gt;
&lt;br /&gt;
Optimize checkpoint calculation by using hash of checkpoint block bytes instead of hashing all intermediate transactions.&lt;br /&gt;
&lt;br /&gt;
Performance optimizations in trimming of the derived tables to speed up blockchain download.&lt;br /&gt;
&lt;br /&gt;
Trimming frequency can now be modified per table by setting a frequency modifier property nxt.trimFrequencyMultiplier, which contains a list of dash-separated pairs [schema.]table_name-frequency.&lt;br /&gt;
&lt;br /&gt;
When attaching a message to a transaction, the boolean parameters messageIsText and messageToEncryptIsText, if supplied, are now used also when the message data is uploaded as a file, overriding the mime type auto detection.&lt;br /&gt;
&lt;br /&gt;
Support multiple file parameters in the API requests that accept file uploads.&lt;br /&gt;
&lt;br /&gt;
Usability of the wallet was enhanced for small screen form factor. Tables use horizontal scrollbar when necessary and some widgets change their look when the screen width is reduced.&lt;br /&gt;
&lt;br /&gt;
Wallet static resources, Html and Javascript files, are now downloaded in parallel to significantly reduce the startup time.&lt;br /&gt;
&lt;br /&gt;
Branded Account Prefix&lt;br /&gt;
When specifying a recipient address users can use any alphabetic prefix they like before the first &#039;-&#039; symbol. The default prefix is determined by the account address used during login and the default for the login account can be defined in the device settings dialog. The default setting is &amp;quot;ARDOR&amp;quot;. When using a branded account prefix the account addresses returned by API calls&lt;br /&gt;
still use the &amp;quot;ARDOR&amp;quot; prefix regardless of the branded account value.&lt;br /&gt;
&lt;br /&gt;
Updated Jetty to version 9.4.29 and Bouncy Castle to 1.65.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Backward Compatibility&#039;&#039;&#039;&lt;br /&gt;
The SplitSecret API now accepts a &amp;quot;privateKey&amp;quot; parameter. The existing &amp;quot;secretPhrase&amp;quot; parameter was renamed to &amp;quot;secret&amp;quot; since it can represent seed words as well. Similarly the response of the CombineSecret API now returns the attribute &amp;quot;secret&amp;quot; instead of &amp;quot;secretPhrase&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Server APIs and client side code will no longer accept as parameter a hex string with an odd length.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.2.6===&lt;br /&gt;
&lt;br /&gt;
This is a stable release, introducing multiple enhancements and bugfixes. It is a recommended upgrade for production use.&lt;br /&gt;
&lt;br /&gt;
On testnet, upgrade before block 3250000 (expected Nov 7, 2019) is mandatory due to the activation of the following new features that require a hard fork:&lt;br /&gt;
&lt;br /&gt;
Allow sending zero fee child chain transactions even from accounts not yet registered on the blockchain.&lt;br /&gt;
&lt;br /&gt;
Allow setting up account control with zero max fees. This completely removes the risk that an attacker who obtains the passphrase of an account placed under account control may slowly waste its funds on fees, however the transactions fees for such an account will need to be sponsored, i.e. its transactions must be bundled by some bundler for free.&lt;br /&gt;
&lt;br /&gt;
The above features will be available on testnet after block 3250000, and will also become enabled on mainnet at the next scheduled hard fork.&lt;br /&gt;
&lt;br /&gt;
The node processes management add-ons:&lt;br /&gt;
&lt;br /&gt;
*SaveForgingEncrypted &lt;br /&gt;
*StartForgingEncrypted&lt;br /&gt;
*SaveFundingMonitorsEncrypted&lt;br /&gt;
*StartFundingMonitorsEncrypted&lt;br /&gt;
*SaveBundlingEncrypted&lt;br /&gt;
*StartBundlingEncrypted,&lt;br /&gt;
*SaveStandbyShufflingEncrypted&lt;br /&gt;
*StartStandbyShufflingEncrypted,&lt;br /&gt;
&lt;br /&gt;
have been replaced respectively with:&lt;br /&gt;
&lt;br /&gt;
*ForgingEncryptedConfig&lt;br /&gt;
*FundingMonitorsEncryptedConfig&lt;br /&gt;
*BundlingEncryptedConfig&lt;br /&gt;
*StandbyShufflingEncryptedConfig&lt;br /&gt;
&lt;br /&gt;
If you have enabled any of those in the &#039;&#039;&#039;nxt.properties&#039;&#039;&#039; file, the nxt.addOns property must be updated with the new add-on classname.&lt;br /&gt;
&lt;br /&gt;
For add-ons in the nxt.addons package, such as the process management add-ons, specifying the full Java package name is now optional, i.e. if only the class name is specified in the nxt.addOns property, it is assumed to be in the nxt.addons package.&lt;br /&gt;
&lt;br /&gt;
Each of the new add-ons exports two http APIs, to allow saving the encrypted configuration and starting the corresponding process.&lt;br /&gt;
&lt;br /&gt;
The EncryptedConfig add-ons now by default use files under the conf/processes directory to save the encrypted processes configuration, overwriting existing files if needed. An alternative location can be specified using the nxt.addons.EncryptedConfig.path property. When using the API, the config file can also be saved under any other path, as long as it does not overwrite an existing file.&lt;br /&gt;
&lt;br /&gt;
Client-side encryption is also supported by the SaveEncrypted add-on APIs. If the config data is already encrypted, the &#039;&#039;dataAlreadyEncrypted=true&#039;&#039; request parameter must be set, and there is no need to submit the encryptionPassword.&lt;br /&gt;
&lt;br /&gt;
All of the above forging, bundling, funding monitors, and standby shuffling process management add-ons are now fully supported by the wallet UI. A &amp;quot;Processes&amp;quot; page has been added, accessible under the cogwheel menu, from which the configuration of currently running forgers, bundlers, funding monitors or standby shufflers can be saved to an encrypted configuration file, and restored again after a node restart by supplying the encryption password. The corresponding add-ons must first be enabled in the nxt.properties file in order for the option to save/start them to appear in the Processes page.&lt;br /&gt;
&lt;br /&gt;
A tutorial and documentation is available at:&lt;br /&gt;
[[Node_Processes_Configuration|Node Processes Configuration]]&lt;br /&gt;
&lt;br /&gt;
The wallet UI now allows attaching an unencrypted message also to transactions that do not have a recipient.&lt;br /&gt;
&lt;br /&gt;
Multiple UX improvements to reduce or automate the switching between chains that is sometimes needed when the user tries to access a feature or submit a transaction not supported on the current chain.&lt;br /&gt;
&lt;br /&gt;
The Standby Shufflers UI has been improved to show the numbers of shuffling recipient accounts remaining and currently in use.&lt;br /&gt;
&lt;br /&gt;
The Funding Monitors UI, available under the cogwheel menu / Monitors, now allows starting a funding monitor for assets or monetary system currencies, not only for child chain coins. Funding monitors for such holdings must be run&lt;br /&gt;
on a chain that allows asset transfer or currency transfer transactions, i.e. not on the parent Ardor chain.&lt;br /&gt;
&lt;br /&gt;
The startFundingMonitor and getFundingMonitor APIs now support an optional includeHoldingInfo parameter, to request the asset or currency info to be included in the response json.&lt;br /&gt;
&lt;br /&gt;
Setting up https on a public node running Ardor has been made simple, without the need for a reverse proxy. The new pem.to.pkcs12.keystore.certbot.hook.sh script can be used to convert an SSL certificate issued by Let&#039;s Encrypt to a keystore file that the Ardor node can use. The run.sh script now supports authbind, if started with the --authbind modified, to allow the Ardor software to listen on port 443 without having to run it as root. A detailed tutorial putting everything together is available at:&lt;br /&gt;
[[Configuring_HTTPs_on_a_standalone_Ardor_installation|Configuring HTTPs on a standalone Ardor installation]]&lt;br /&gt;
&lt;br /&gt;
A new managePeersNetworking API has been added, to allow disabling or enabling the node peer networking at runtime. It takes a single &amp;quot;operation&amp;quot; parameter, with possible values: &amp;quot;enable&amp;quot;, &amp;quot;disable&amp;quot;, and &amp;quot;query&amp;quot;, and requires the adminPassword when run on a public node.&lt;br /&gt;
&lt;br /&gt;
A new property has been added, nxt.deleteProcessedVotes=true, to optionally disable the deletion of votes records when trimming the votes table. Note that even if votes are not deleted, re-calculation of poll results may require data that are no longer available (such as account or asset balances at the time of poll finish), unless a blockchain rescan is done, this is why the default is still to delete old votes records.&lt;br /&gt;
&lt;br /&gt;
The compact.sh script has been improved to better reduce the database size. A new property has been added, nxt.disableCompactOnShutdown=false to allow disabling database compact on shutdown, for faster restarts during development.&lt;br /&gt;
&lt;br /&gt;
The export/import functionality for contacts and approval models, as used in the browser based wallet UI, is now available and compatible with the JavaFX based desktop wallet too.&lt;br /&gt;
&lt;br /&gt;
The Contract Runner doesn&#039;t require anymore an initial configuration on nxt.properties or an external JSON file. Instead, it can be bootstrapped from the new Processes page or from an uploaded configuration file. The recommended configuration procedure is now the Processes page as it provides a persistent configuration using encryption instead of plain text files. It also helps with the initial configuration. When you open the Save modal window for Contract Runner under the Processes page you are presented with a basic minimum configuration like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-XXXX-XXXX-XXXX-XXXXX&amp;quot;,&lt;br /&gt;
  &amp;quot;autoFeeRate&amp;quot;: true,&lt;br /&gt;
  &amp;quot;validator&amp;quot;: false,&lt;br /&gt;
  &amp;quot;params&amp;quot;: {}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The accountRS will match the currently logged in account, but you can change it. You only need to enter the passphrase for the account and then the encryption password. The UI will take care of adding the passphrase to the configuration file before encrypting it locally and sending to the node for persistent storage. In order to start the contract runner use the Start button under the Processes page. After restarting the node you only need to start it again.&lt;br /&gt;
&lt;br /&gt;
The Contract Runner can now calculate the best fee when sending transactions instead of relying on a fixed fee ratio. There is a new &#039;autoFeeRate&#039; boolean property to enable this new feature. If set to true (default: false), the contract runner will calculate the best fee available based on the current bundlers. This should be equivalent to the &amp;quot;Calculate Fee&amp;quot; button on the wallet. When autoFeeRate is set to false, or the best fee cannot be obtained, the contract runner will revert to using the usual &amp;quot;feeRateNQTPerFXT.&amp;lt;Chain Name&amp;gt;&amp;quot; properties.&lt;br /&gt;
&lt;br /&gt;
Two new optional properties for the contract runner allow filtering out bundlers used to retrieve the best available fee when autoFeeRate is activated.&lt;br /&gt;
&lt;br /&gt;
Bundlers with an effective balance below the property minBundlerBalanceFXT are not considered for the best fee calculation. The default for this property is to use the same value as the global property nxt.minBundlerBalanceFXT.&lt;br /&gt;
&lt;br /&gt;
Also, bundlers with a fee limit currently below the property minBundlerFeeLimitFQT are also not considered for the best fee calculation. Again, the default for this property is to use the same value as the equivalent global property.&lt;br /&gt;
&lt;br /&gt;
For more detailed information please check the updated documentation at: [[Lightweight_Contracts|Lightweight contracts]]&lt;br /&gt;
&lt;br /&gt;
Added ChangeHero as an integrated exchange in the wallet.&lt;br /&gt;
&lt;br /&gt;
Node.js module fixes and improvements.&lt;br /&gt;
&lt;br /&gt;
Various UI improvements and bugfixes. Updated the icons to Font Awesome Pro 5.11.2 (commercial version). Android related UI fixes.&lt;br /&gt;
&lt;br /&gt;
Updated H2 to version 1.4.200. If using a custom nxt.dbParams or nxt.dbUrl properties, remove any MVCC settings from them, MVCC is now the default and not configurable.&lt;br /&gt;
&lt;br /&gt;
Updated Jetty to version 9.4.22.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.2.5 === &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
This is a bugfix release, addressing an issue with the Standby Shuffler add-on. The recipient public keys were incorrectly generated with an \r character appended to the user-supplied secret phrases, resulting in actual recipient accounts different from what was displayed in the UI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
For users of the Standby Shuffler add-on who already had their shuffling recipient account affected by this issue, a simple RecoverFunds API has been added. Use that API with the secretPhrase of the intended shuffling recipient account to automatically transfer your shuffled coins to the correct recipient.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Fixed version update hash validation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.2.4 === &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
This release introduces the StandbyShuffler add-on, a new feature intended to simplify the use of our flagship privacy feature, fully decentralized and trustless Shuffling.&lt;br /&gt;
&lt;br /&gt;
==== New feature: StandbyShuffler ==== &amp;lt;!--T:7--&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
A StandbyShuffler, as opposed to a regular Shuffler, does not start a new shuffling immediately, but runs in the background and waits for other users to start a shuffling which matches the StandbyShuffler parameters - holding (coin, asset or currency), minimum and maximum amounts, and number of participants. When such a shuffling is created, the StandbyShuffler joins it automatically. A StandbyShuffler is configured on start with a number of recipient public keys to use as recipients in each shuffling it joins, and shuts down once all have been used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Running a StandbyShuffler requires a full node, not just a light client. To enable the StandbyShuffler add-on, add &amp;lt;code&amp;gt;nxt.addons.StandbyShuffling&amp;lt;/code&amp;gt; to the list of enabled add-ons in the &amp;lt;code&amp;gt;nxt.addOns&amp;lt;/code&amp;gt; property. This add-on registers three [[Shuffling#Start_StandbyShuffler|new APIs]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;StartStandbyShuffler&#039;&#039;&#039; - start a StandbyShuffler. The secretPhrase of the shuffling account must be supplied. The holdingType and holding parameters define the coin, asset or currency for which to listen for shufflings being started. The optional minAmount, maxAmount and minParticipants parameters can be used to limit which shufflings to join. The recipientPublicKeys parameter holds one or more public keys, used one at a time as a recipient account public key each time a shuffling is joined. This can be specified either as a multi-value parameter, or a single text value holding multiple public keys separated by newlines. The feeRateNQTPerFXT parameter specifies what rate to use when calculating the child chain fees for each shuffling transaction submitted. Since the market rate can change between when the StandbyShuffler is started and an actual shuffling is joined, one should use a high enough rate to make sure shuffling transactions of the StandbyShuffler account are always bundled.&lt;br /&gt;
* &#039;&#039;&#039;GetStandbyShufflers&#039;&#039;&#039; - returns a list of all StandbyShufflers running on the node, optionally filtered using holdingType, holding and account parameters. If not running locally, a secretPhrase or admin password are required.&lt;br /&gt;
* &#039;&#039;&#039;StopStandbyShuffler&#039;&#039;&#039; - stops the StandbyShuffler for a specified account and holding or all StandbyShufflers running on the node if account is not specified. If not running locally, a secretPhrase or admin password are required. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
An UI for starting, observing, or stopping StandbyShufflers has been added under Shuffling / My StandbyShufflers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
To automate starting the configured StandbyShufflers when the node is restarted, a set of StartStandbyShuffling, SaveStandbyShufflingEncrypted, and StartStandbyShufflingEncrypted add-ons has been provided.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
StartStandbyShuffling automatically starts one or more StandbyShufflers as defined in a file set in the &amp;lt;code&amp;gt;nxt.startStandbyShufflingFile&amp;lt;/code&amp;gt; property. The format of this JSON file is the same as the JSON output of GetStandbyShufflers, with secretPhrase field added for each StandbyShuffler, thus the simplest way to generate it is first to setup StandbyShufflers as required and then save and edit the GetStandbyShufflers response.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Alternatively, to avoid keeping the secretPhrase and recipient public keys in a plain text file, the SaveStandbyShufflingEncrypted add-on can be used to save the StandbyShufflers configuration JSON in an encrypted file, and the StartStandbyShufflingEncrypted add-on to start them by submitting the decryption password through the API.&lt;br /&gt;
&lt;br /&gt;
==== Added ChangeNOW ==== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Added ChangeNOW as an integrated exchange in the wallet, allowing exchange of Ignis and Ardor to any coin supported by ChangeNOW.&lt;br /&gt;
&lt;br /&gt;
==== More features and improvements ==== &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
*Permanently disallowed outgoing transactions from the new @ArdorBurnAccount, see announcement at https://www.jelurida.com/ardor-burn-account&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
*Pause forging if there are not enough connected peers from which to download the blockchain, as defined in &amp;lt;code&amp;gt;nxt.numberOfForkConfirmations&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nxt.testnetNumberOfForkConfirmations&amp;lt;/code&amp;gt;, unless &amp;lt;code&amp;gt;nxt.isOffline=true&amp;lt;/code&amp;gt;. This is to avoid building a fork if the node is temporarily disconnected. To disable this behavior, set &amp;lt;code&amp;gt;nxt.pauseForgingOnNoConnection=false&amp;lt;/code&amp;gt; (default is true).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
*Do not allow accounts under account control to start a Funding Monitor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
*The SaveBundlingEncrypted, SaveForgingEncrypted, SaveFundingMonitorEncrypted APIs now require admin password when running on a remote node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
*Added a list of full transaction hashes with chain ids to the response of the getUnconfirmedTransactionIds API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
*Added a new bundling filter, &amp;lt;code&amp;gt;nxt.addons.TransactionTypeBundler&amp;lt;/code&amp;gt;, which bundles only transactions of the transaction types specified in the filter parameter. The parameter must be a comma separated list of &amp;lt;code&amp;gt;&amp;lt;type&amp;gt;:&amp;lt;subtype&amp;gt;&amp;lt;/code&amp;gt; pairs with the &amp;quot;type&amp;quot; and &amp;quot;subtype&amp;quot; of the whitelisted transaction types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
*Improved propagation of bundler rates between peers and calculation of best bundler rates. The [[Transactions#Calculate_Fee|CalculateFee]], [[Forging#Get_Bundler_Rates|GetBundlerRates]], and all [[Create_Transaction|CreateTransaction APIs]] now take both minBundlerBalanceFXT and minBundlerFeeLimitFQT parameters, with defaults based on the &amp;lt;code&amp;gt;nxt.minBundlerBalanceFXT&amp;lt;/code&amp;gt; (default 1000 ARDR) and &amp;lt;code&amp;gt;nxt.minBundlerFeeLimitFXT&amp;lt;/code&amp;gt; (default 10 ARDR) properties. Bundlers with effective balance lower than minBundlerBalanceFXT, or remaining fee limit or available ARDR balance lower than minBundlerFeeLimitFQT, are excluded from the best rates calculation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
*Shamir secret sharing passphrases can now be used to sign transaction vouchers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
*Updated Jetty to version 9.4.18. This release fixes a Jetty bug which causes a server hang after high load, therefore an update is highly recommended.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
*The [https://www.jelurida.com/sites/default/files/JPLv1.2-Ardor.pdf Jelurida Public License] has been updated to version 1.2, to clarify that Ardor code is not portable to Nxt clones unless the JPL requirements for Ardor are also satisfied (article 3.4.2 of the General Conditions), and to require that airdrops, including the fact that they are done in order to satisfy the [https://www.jelurida.com/sites/default/files/JPLv1.2-NRS.pdf JPL], are announced at least a month before the planned snapshot date (article 2.2 of the Special Conditions).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.2.3 === &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
This release adds multiple usability enhancements, optimizations and bug fixes. For users of 2.2.1 or 2.2.2, upgrade is optional but highly recommended.&lt;br /&gt;
&lt;br /&gt;
==== New feature: Shamir Secret Sharing ==== &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
Shamir Secret Sharing support is now enabled for both client and server. It allows splitting a passphrase into N pieces out of which only K are required to restore the original secret. This technique is useful to protect the full passphrase from key loggers on the client workstation and from eavesdropping during transport to a remote node. Shamir Secret Sharing is also useful for the creation of fragmented backups, by storing each piece in a different physical place or with a different trusted party, with at least K of them required to recover the full passphrase.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Secret share splitting and combining is supported both on the server side using the node APIs, and client side in the wallet, so that secrets split on one side can be combined on the other.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Client side:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
* When printing a paper wallet, a new dialog enables setting the total number of secret pieces to generate from a passphrase, and the number of secrets required to re-combine a passphrase. These secrets are then printed into separate pages of the paper wallet. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
* For all dialogs which accept entry of a passphrase the user can now check the &amp;quot;Shared Secret&amp;quot; checkbox, then enter or scan the required number of secret pieces to combine the original passphrase in memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Server side:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
Any API which accepts the &amp;quot;secretPhrase&amp;quot; parameter can now accept instead  multiple &amp;quot;sharedPiece&amp;quot; parameters which the node will combine into the original passphrase in memory. A node can keep some of the secrets in its configuration file while accepting other secrets using API parameters. To configure this setup for account address X, split your passphrase into several pieces then list some of the pieces in a semicolon separated list as the value of the property nxt.secretPhrasePieces.X. When using the API, submit the parameter sharedPieceAccount=X where X is the account address, and also submit the remaining required pieces using multiple sharedPiece parameters. This configuration enables you to start forging, bundling, etc, on a remote node without ever transmitting the full account passphrase to it over the internet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
New APIs for Shamir Secret Sharing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
* Use the splitSecret API to split a passphrase into pieces.&lt;br /&gt;
* Use the combineSecret API to combine secret pieces to the original passphrase.&lt;br /&gt;
&lt;br /&gt;
====Contracts==== &amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
Due to enhancements to the underlying API caller infrastructure all lightweight contracts have to be recompiled and redeployed in order for a contract runner running this version to be able to execute them correctly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Any other code using the API callers must also be recompiled.&lt;br /&gt;
&lt;br /&gt;
====UI improvements==== &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
* When loading a transaction voucher it is now possible to attach an encrypted message to yourself, and to recalculate the transaction fee. It is now also possible to not immediately broadcast voucher transaction, for the purpose of offline signing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
* The coin exchange displays the inverse rate in the &amp;quot;Buy&amp;quot; dialog, and as a tooltip when hovering with the mouse over any price field. Expected orders and order cancellations (unconfirmed or phased) are displayed in the order book with a special icon to their left. Left pane balances are updated with each new block. &lt;br /&gt;
The order of columns was changed so that the &amp;quot;Sum&amp;quot; column displays the coin to buy, clicking the &amp;quot;Sum&amp;quot; column updates the amount to buy accordingly. Red warning is displayed when typing an amount to buy which requires larger balance than the available balance. Total field is limited to 8 decimals.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
* The dashboard transaction view was improved to reduce appearances of duplicate transactions when the transaction moves from unconfirmed to confirmed status.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
* Support login by alias and recipient alias for any alias. If not an account alias, map the alias to the alias owner account. Since any alias owned by an account can now be used as an alias to the account, this release deprecates the so-called &amp;quot;account&amp;quot; aliases, and we will remove support for them in the next release.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
* Approximate leasing expiration date is displayed in the Account Leasing tab.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
* A new Account Properties tab has been added to the account info modal, displaying all properties set on the account.&lt;br /&gt;
&lt;br /&gt;
====Networking and performance improvements==== &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
As a result of our extensive load testing efforts, this release includes several network stability improvements and performance optimizations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
New add-ons to simplify automated and secure running of tasks on remote nodes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
* A set of custom add-ons to automate forging, bundling, and funding monitors has been include in this release.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
* The StartForging add-on reads the passphrases stored in a plain text file, as defined in the property nxt.startForgingFile, one passphrase per line, and automatically starts forging with each of these accounts when the server is started. Since passphrases are stored unencrypted, this add-on should only be used on well secured servers, or with accounts of insignificant value, or in test environments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
* For a secure way of starting forging with multiple accounts on a remote server, the SaveForgingEncrypted add-on can be used to store the passphrases of forging accounts in an encrypted file, and the StartForgingEncrypted add-on to start forging with them by only submitting to the server the password necessary to decrypt this file. Note that at runtime, the forging account passphrases will still be kept in server memory, but when using these add-ons will never need to be stored on disk, and will not need to be re-submitted to the server each time forging needs to be started. These add-ons are useful when forging on a fully trusted node, and having to restart forging remotely without a risk of exposing the passphrases in transit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
* The StartBundling add-on reads a list of Bundlers stored in a JSON formatted file, as defined in the property nxt.startBundlingFile. The exact JSON can be initially generated by manually starting the bundlers configured as desired, including any custom bundling rules, and using the GetBundlers API to retrieve the list of bundlers in JSON format. The only manual modification required is to add a &amp;quot;secretPhrase&amp;quot; parameter to the JSON for each bundler, with the corresponding account secret phrase. On server start, the StartBundling add-on will automatically start all bundlers as configured.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
* Similarly to the above forging add-ons, the SaveBundlingEncrypted and StartBundlingEncrypted add-ons can be used to store the JSON configuration of bundlers in an encrypted instead of plain text file, and start the bundlers on submitting the decryption password to the server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* Finally, for automating funding monitors, the StartFundingMonitors add-on will automatically start all funding monitors configured in a JSON formatted file, as defined in the property nxt.startFundingMonitorsFile. The JSON can be generated by manually starting the funding monitors as desired, and using the GetFundingMonitor API to retrieve the list of monitors in JSON format. Again, the secretPhrase parameter needs to be manually added to the JSON for each funding monitor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
* The SaveFundingMonitorsEncrypted and StartFundingMonitorsEncrypted add-ons allow storing the JSON configuration of funding monitors in an encrypted instead of plain text file, and starting the funding monitors by submitting only the decryption password to the server.&lt;br /&gt;
&lt;br /&gt;
====Other improvements==== &amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
* The CalculateFee API now also returns the required child chain fee based on the best bundling rate available, as feeNQT.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* The JPLSnapshot add-on has been ported to Ardor. It can be used to generate a JPL-compliant snapshot of Ignis child chain balances.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
* Starting a funding monitor or shuffler with feeRateNQTPerFXT=0 is now allowed.&lt;br /&gt;
&lt;br /&gt;
====Library updates==== &amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* Updated Jetty to version 9.4.17, Bouncy Castle to 1.61, and H2 database to 1.4.199. With the new H2 release, using MVStore mode is the default. However, conversion of existing databases to MVStore format is not automatic. To migrate to the new storage format, the easiest way is to use the compact.sh or compact.bat script, which should take a few minutes, and will also improve the database performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.2.2 === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
This is a bug fix and usability enhancements release.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Users still using version 2.2.0e or earlier must upgrade immediately as they are already on a fork, and their nodes are blacklisted by this release.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
Anyone who did not upgrade to 2.2.1 prior to block 543000 must manually delete and re-download the blockchain from scratch, after upgrading.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
Users using version 2.2.1 are not required to upgrade.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Contracts&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
* Added an &#039;&#039;&#039;includeContract&#039;&#039;&#039; parameter to the &#039;&#039;&#039;getContractReferences&#039;&#039;&#039; API to return metadata about the actual contract being referenced.&lt;br /&gt;
* The contract runner now removes the last block when started to make sure trigger transactions in the last block are processed in case processing stopped before processing the contracts for this block.&lt;br /&gt;
* Contract unit tests now use simpler methods for verifying transactions submitted by a contract.&lt;br /&gt;
* The contract manager now waits until the transactions it submitted are included in a new block before exiting.&lt;br /&gt;
* Contracts with an inner interface and an inner class implementing it are now supported.&lt;br /&gt;
* The contract processRequest callback now supports initializing a randomness source and accessing the last block.&lt;br /&gt;
* Fail gracefully when a contract submits the messageToEncrypt parameter without a passphrase. Contract devs should encrypt the message first then submit the encrypted data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;UI Enhancements&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
* Contract selection widget and contract parameter specification template were added to dialogs which specify a recipient field. This enhancement simplifies the task of configuring a contract trigger transaction.&lt;br /&gt;
* The Contracts page now provides simple runtime statistics about contract execution when clicking on any of the invocation types in the Invocation column.&lt;br /&gt;
* Each chain now has a chain description displayed in the wallet and when switching between chains.&lt;br /&gt;
* Login by account using an Ignis alias is now supported by deleting the ARDOR prefix then typing &#039;@&#039; in front of an existing alias name which is mapped to an account id.&lt;br /&gt;
* &amp;quot;Fat Finger&amp;quot; warning for amount and fee is now defined and enforced per chain. Reasonable default values were defined. Use the account settings page to adjust these values for the current chain.&lt;br /&gt;
* Dialogs now support more than one warning per form submit. For example in case both the amount and the fee are too high, both warnings are  displayed one after the other.&lt;br /&gt;
* The wallet no longer warns about assets and currencies with more than 6 decimals.&lt;br /&gt;
* The Changelly menu items was moved from a top level menu to the settings menu to provide more screen real estate for the mobile app.&lt;br /&gt;
* Increase and delete shares links are displayed in the &amp;quot;My Assets&amp;quot; page only when these actions are allowed.&lt;br /&gt;
* Vouchers with unicode parenthesis are now parsed correctly.&lt;br /&gt;
* The desktop wallet now displays a file chooser dialog before downloading a cloud data item or message attachment to the local workstation.&lt;br /&gt;
* The transaction and block info dialogs now display the raw transaction and block json in a separate tab.&lt;br /&gt;
* Coin exchange layout improvements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Others&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
* Fixed an initialization issue that could cause some custom add-ons to deadlock on start. &lt;br /&gt;
* Fixed false positive unsigned bytes verification error when cancelling ARDR buy order.&lt;br /&gt;
* The getPeers and dumpPeers APIs now also allow filtering by version, optionally including newer versions.&lt;br /&gt;
* Added a checkpoint at block 545555.&lt;br /&gt;
* Updated Jetty to version 9.4.14.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.2.1 === &amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
This release adds support for the new Max Crowdfund (formerly Dominium) child&lt;br /&gt;
chain, token name MPG, to be activated at block 543000 expected to be reached on&lt;br /&gt;
January 10, 2019.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
At the same block, the new Lightweight Contracts and Asset Properties features&lt;br /&gt;
will also become enabled on mainnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
Transactions with asset 6066975351926729052 (old CtC) will be disabled and open&lt;br /&gt;
orders cancelled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
Revealing a secret using the &#039;&#039;&#039;ApproveTransaction&#039;&#039;&#039; API will now approve all phased &lt;br /&gt;
by hash transactions which specified the hash of this secret regardless if they&lt;br /&gt;
are listed in the phasedTransaction parameter or not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
A new &#039;&#039;&#039;GetHashedSecretPhasedTransactions&#039;&#039;&#039; API will return a list of phased by hash&lt;br /&gt;
transactions with &#039;&#039;phasingHashedSecret&#039;&#039; and &#039;&#039;phasingHashedSecretAlgorithm&#039;&#039; as &lt;br /&gt;
specified.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
This is a stable release and a mandatory upgrade for all nodes, with block&lt;br /&gt;
543000 (Jan 10) as final deadline.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Lightweight Contracts&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
Contract validations now use Java annotations. The following annotations are&lt;br /&gt;
available:&lt;br /&gt;
*&#039;&#039;&#039;@ValidateContractRunnerIsRecipient&#039;&#039;&#039; - checks that the contract runner account is the recipient of the trigger transaction.&lt;br /&gt;
*&#039;&#039;&#039;@ValidateContractRunnerIsSender&#039;&#039;&#039; - checks that the contract runner account is the sender of the transaction.&lt;br /&gt;
*&#039;&#039;&#039;@ValidateChain&#039;&#039;&#039; - checks that the chain of the trigger transaction is in the accept array and is not in the reject array.&lt;br /&gt;
*&#039;&#039;&#039;@ValidateTransactionType&#039;&#039;&#039; - checks that the type of the trigger transaction is one of the types in the accept array and is not one of the types in the reject array. A new TransactionTypeEnum class lists all available transaction types and sub types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
See the HelloWorldForwarder sample contract for usage example of the validations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
The contract runner &#039;&#039;&#039;getSupportedContracts&#039;&#039;&#039; API was enhanced to return more meta-data about the running contracts including the supported invocation types, contract invocation parameters, and contract validations. &lt;br /&gt;
This information can be used by clients to provide better user experience by analyzing the contract capabilities and helping the user properly trigger the contract. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
Contracts can override the built-in duplicate checks for transactions submitted by a contract by overriding the &#039;&#039;&#039;isDuplicate&#039;&#039;&#039;() method. Oracle contracts should implement this method to make sure they do not submit the same transaction more than once with different data. See for example the &#039;&#039;&#039;IgnisArdorRates&#039;&#039;&#039; contract.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
Added &#039;&#039;&#039;uploadContractRunnerConfiguration&#039;&#039;&#039; API to let contract runner node admin upload the contract runner config after starting the node. This way contract runner nodes no longer need to store the contract runner  account passphrase or other sensitive data on the node itself. Instead, they can upload it after starting the node from the contracts page in the wallet. The format of the uploaded configuration file is the same as the existing contracts.json format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
To prevent a contract runner from locking user funds permanently in the contract runner account in case the contract does not execute, contract transactions can be submitted with phasing by hashed secret. The contract runner will submit its own transactions using the same hashed secret and other phasing parameters. The trigger transaction, and transactions submitted by the contract in response, are either approved together or rejected together. If a transaction is not approved when reaching its finish height, its funds are  released back to the sender.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
To assist with generating secure secrets to hash, a new secret generator wizard was added to the wallet approval modals dialog. Generated secrets are not saved by the client. A secret can be reproduced by the client in case it was lost, using the account passphrase used when generating it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
The parameter injection introduced in version 2.2.0e was replaced with a more robust solution based on an interface. In the new design, invocation, setup and runner parameters are defined using an inner interface decorated with the &#039;&#039;&#039;@ContractParametersProvider&#039;&#039;&#039; annotation. &lt;br /&gt;
For each contract parameter create a default method which defines its name, data type and default value, decorated with a contract parameter annotation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;@ContractInvocationParameter&#039;&#039;&#039; - specified by a trigger transaction or voucher.&lt;br /&gt;
*&#039;&#039;&#039;@ContractSetupParameter&#039;&#039;&#039; - specified by the contract reference.&lt;br /&gt;
*&#039;&#039;&#039;@ContractRunnerParameter&#039;&#039;&#039; - specified by the contract runner configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:94--&amp;gt;&lt;br /&gt;
To load the contract parameters from inside your contract code use the following statement:&lt;br /&gt;
*Params params = context.getParams(Params.class);&lt;br /&gt;
Where Params is the inner interface decorated with &#039;&#039;&#039;@ContractParametersProvider&#039;&#039;&#039; annotation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
Due to interface changes introduced by this release, all existing contracts will have to be redeployed on testnet and contract runners using a previous version won&#039;t be able to run contracts deployed using the current version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;UI Enhancements&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
A contracts page was added to the wallet to list the information provided by the getSupportedContracts API. This page is available only when the wallet is connected to a contract runner node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
Asset properties UI was implemented accessible from the &amp;quot;Asset Properties&amp;quot; link on the asset exchange page. Users can use it to set, update, and delete asset properties.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
When entering recipient address in the client wallet use the @ prefix to point to an existing Ignis alias which stores the account id. In previous versions the alias was loaded from the current chain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
The contacts button to the right of the recipient field now lists all the remembered accounts in addition to the defined contacts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt;&lt;br /&gt;
Updating to this release from 2.2.0e may cause a one time shutdown on first start in order to fully apply the database changes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.2.0e === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
This is an experimental release, and a MANDATORY upgrade for all testnet nodes.&lt;br /&gt;
It can also be used on mainnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
Added Asset Properties feature, to be activated at block 455000 on testnet only.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
Asset Properties allow attaching metadata to assets, in the form of name/value&lt;br /&gt;
pairs. The property name can be up to 32 characters, and property value up to&lt;br /&gt;
160 characters in length. Anyone can set a property on an asset. Only the asset&lt;br /&gt;
issuer, or the setter of the property, can delete a property. The setter of a&lt;br /&gt;
property can edit it by setting a new property with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
New APIs: &#039;&#039;&#039;SetAssetProperty&#039;&#039;&#039;, &#039;&#039;&#039;DeleteAssetProperty&#039;&#039;&#039;, &#039;&#039;&#039;GetAssetProperties&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
Implemented freezing of assets and currencies, to be used for tokens that are&lt;br /&gt;
scheduled to become child chains, or need to be deactivated for other reasons.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
Freezing of arbitrary assets or currencies is not (and will not be) supported.&lt;br /&gt;
The freezing of a particular holding must first be enabled in a new release,&lt;br /&gt;
and is then triggered at a predefined height, optionally specified as asset&lt;br /&gt;
property for assets, or account property for currencies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
After the freeze height, no further transactions with the frozen holding are&lt;br /&gt;
possible (with the exception of setting or deleting asset properties). Freezing&lt;br /&gt;
is not reversible.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
Implemented migration of a frozen asset or currency to a new child chain. The&lt;br /&gt;
migration of a particular holding must first be enabled in a new release, and&lt;br /&gt;
is then triggered at a predefined height, optionally specified as asset property&lt;br /&gt;
for assets, or account property for currencies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:111--&amp;gt;&lt;br /&gt;
Implemented loading of account balances for new child chains. The Dominium child&lt;br /&gt;
chain will be launched on testnet at or after block 455000, with testnet&lt;br /&gt;
balances allocated to developer accounts only.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:112--&amp;gt;&lt;br /&gt;
Fixed loading transaction voucher which contains attached encrypted message.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:113--&amp;gt;&lt;br /&gt;
Node log file name changed from nxt.log to ardor.{n}.log where {n} is the log&lt;br /&gt;
file number. The current log file is always named ardor.0.log. Up to 10 log&lt;br /&gt;
files are kept.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
The windows startup script run.bat no longer relies on the windows registry&lt;br /&gt;
when looking up the Java version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:115--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Lightweight Contracts&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:116--&amp;gt;&lt;br /&gt;
The contract runner now executes contracts in their own sandbox which restricts&lt;br /&gt;
the contract permissions based on a standard Java policy file named ardor.policy&lt;br /&gt;
By default contracts allowed to connect to any address, and read, write and &lt;br /&gt;
delete files in the temp folder of the contract runner workstation. Direct &lt;br /&gt;
access to the local workstation, or the local blockchain not through the APIs&lt;br /&gt;
is blocked by default. The contract runner operator can grant additional &lt;br /&gt;
permissions per contract or for all contracts submitted by a specific account. &lt;br /&gt;
See examples in ardor.policy file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
Added support for deployment and verification of single source file contract &lt;br /&gt;
which compiles into multiple class files. The contract classes are automatically &lt;br /&gt;
packaged into a Jar file when deployed to the blockchain. Similarly verification&lt;br /&gt;
of the contract unpacks the Jar and compares individual class files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:118--&amp;gt;&lt;br /&gt;
Parameter injection is now supported using the ContractInvocationParameter,&lt;br /&gt;
ContractSetupParameter and ContractRunnerParameter annotations. This reduces&lt;br /&gt;
contract boiler plate code for reading parameters. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:119--&amp;gt;&lt;br /&gt;
Contract class selector was added to the contract manager plugin. Users &lt;br /&gt;
upgrading from a previous release will need to redeploy the IntelliJ plugin &lt;br /&gt;
after installing this version. The plugin version should be 2.2.0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:120--&amp;gt;&lt;br /&gt;
Contract runner parameters can be specified in the nxt.properties file using&lt;br /&gt;
the addon.contractRunner. prefix. The contracts.json configuration file is now&lt;br /&gt;
only used when specifying secret contract runner parameters so can be ignored&lt;br /&gt;
in most configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:121--&amp;gt;&lt;br /&gt;
It is no longer required to define contracts which do not setup parameters in &lt;br /&gt;
the contract.uploader.json file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:122--&amp;gt;&lt;br /&gt;
See: https://ardordocs.jelurida.com/Lightweight_Contracts for more details and &lt;br /&gt;
examples.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:123--&amp;gt;&lt;br /&gt;
Due to interface changes introduced by this release, all existing contracts will&lt;br /&gt;
have to be redeployed on testnet and contract runners using a previous version&lt;br /&gt;
won&#039;t be able to run contracts deployed using the current version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:124--&amp;gt;&lt;br /&gt;
On testnet only, after block 455000 the average block time will be reduced to&lt;br /&gt;
10 seconds. This is to allow faster testing and development, and to test the&lt;br /&gt;
feasibility of reducing block time should the need arise on mainnet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.1.2 === &amp;lt;!--T:125--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:126--&amp;gt;&lt;br /&gt;
This is a critical bugfix release. IMMEDIATE update is mandatory for everyone.&lt;br /&gt;
Fixed validation of string fields length in transaction attachments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:127--&amp;gt;&lt;br /&gt;
This is a stable release and should be used for mainnet nodes too, however&lt;br /&gt;
lightweight contracts are still available only on testnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:128--&amp;gt;&lt;br /&gt;
Changelly exchange integration is now available in the Ardor wallet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:129--&amp;gt;&lt;br /&gt;
[[Changelly_Integration|Changelly Integration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:130--&amp;gt;&lt;br /&gt;
Javadoc is now available for sample contracts and API callers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.1.0e === &amp;lt;!--T:131--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:132--&amp;gt;&lt;br /&gt;
This is an experimental release. It is a mandatory upgrade only for testnet&lt;br /&gt;
nodes, but can also be run on mainnet. On testnet, a hardfork to enable the&lt;br /&gt;
lightweight contracts feature has been scheduled at height 341500.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:133--&amp;gt;&lt;br /&gt;
First release of lightweight contracts and transaction vouchers.&lt;br /&gt;
Refer to the nxt wiki for official documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:134--&amp;gt;&lt;br /&gt;
The bundling of transactions has been significantly enhanced to support more&lt;br /&gt;
flexible bundling filters and fee calculations rules. Multiple bundling filter&lt;br /&gt;
classes can be defined in the nxt.availableBundlingFilters property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:135--&amp;gt;&lt;br /&gt;
The following predefined bundling filters are available by default:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:136--&amp;gt;&lt;br /&gt;
nxt.addons.PersonalBundler - bundles only the transactions of the bundler&lt;br /&gt;
account.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:137--&amp;gt;&lt;br /&gt;
nxt.addons.AccountPropertyBundler - bundles only transactions sent by accounts&lt;br /&gt;
which have the &amp;quot;bundling&amp;quot; property set on them by the bundler account.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:138--&amp;gt;&lt;br /&gt;
nxt.addons.AssetBundler - bundles only transactions involving the specified&lt;br /&gt;
asset.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:139--&amp;gt;&lt;br /&gt;
nxt.addons.CurrencyBundler - bundles only transactions involving the specified&lt;br /&gt;
MS currency.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:140--&amp;gt;&lt;br /&gt;
nxt.addons.PurchaseBundler - bundles only purchases of digital goods sold by the&lt;br /&gt;
specified account.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:141--&amp;gt;&lt;br /&gt;
nxt.addons.QuotaBundler - bundles transactions until reaching a quota per sender&lt;br /&gt;
and transaction type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:142--&amp;gt;&lt;br /&gt;
The startBundler API has been modified to accept an optional &amp;quot;bundlingRulesJSON&amp;quot;&lt;br /&gt;
parameter, in which the list of bundling rules can be defined in JSON format.&lt;br /&gt;
Alternatively, a single bundling rule can be defined using a &amp;quot;feeCalculatorName&amp;quot;&lt;br /&gt;
and one or more &amp;quot;filter&amp;quot; parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:143--&amp;gt;&lt;br /&gt;
A new addBundlingRule API has been added to allow clients without JSON support&lt;br /&gt;
to run bundlers with more than one rule, by adding rules to an already started&lt;br /&gt;
bundler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:144--&amp;gt;&lt;br /&gt;
More than one filter is allowed per rule. The rule is executed only if all&lt;br /&gt;
filters allow the transaction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:145--&amp;gt;&lt;br /&gt;
The lists of available bundling filters and fee calculators can be retrieved&lt;br /&gt;
using the new getBundlingOptions API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:146--&amp;gt;&lt;br /&gt;
The Bundlers page has been enhanced to support the new bundling rules and&lt;br /&gt;
filters features in the client UI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:147--&amp;gt;&lt;br /&gt;
Account property with name &amp;quot;nrs_recipient_ui_options&amp;quot;, set by the recipient on&lt;br /&gt;
itself is now used to configure the modal when sending funds to that account.&lt;br /&gt;
This can be used instead of the &amp;quot;#merchant:&amp;quot; account description and allows&lt;br /&gt;
control over the message encryption, such as disabling it for exchange accounts.&lt;br /&gt;
The value of the nrs_recipient_ui_options property is a JSON object with fields:&lt;br /&gt;
- - message_format: same as the format specifier in the #merchant account&lt;br /&gt;
description&lt;br /&gt;
- - encrypt_message: default value for the encrypt message box&lt;br /&gt;
- - encrypt_message_disabled: if true, the encrypt message box is disabled&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:148--&amp;gt;&lt;br /&gt;
Don&#039;t show permanent message option on ARDR chain since permanent messages are&lt;br /&gt;
disabled there. Fixed verification of prunable messages on ARDR.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:149--&amp;gt;&lt;br /&gt;
IGNIS is now the default chain when loading the wallet for the first time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:150--&amp;gt;&lt;br /&gt;
Support compilation with Java 10 and language level 9.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:151--&amp;gt;&lt;br /&gt;
Updated translation resources and removed old translations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:152--&amp;gt;&lt;br /&gt;
Added a checkpoint at height 221000.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:153--&amp;gt;&lt;br /&gt;
Renamed the BITSWIFT child chain to BITS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:154--&amp;gt;&lt;br /&gt;
Updated Jetty to version 9.3.24 and Bouncy Castle to 1.60. Delete the old lib&lt;br /&gt;
folder if installing on top.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.0.14 === &amp;lt;!--T:155--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:156--&amp;gt;&lt;br /&gt;
Multiple client UI bugfixes and enhancements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:157--&amp;gt;&lt;br /&gt;
Correct coin order cancellation fee calculations when the exchange coin is ARDR&lt;br /&gt;
and correct fee coin label in the buy and cancel modals.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:158--&amp;gt;&lt;br /&gt;
Format amount and fee according to chain decimals in transactions tables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:159--&amp;gt;&lt;br /&gt;
Fixed server calculated exchange rate to display according to locale numeric&lt;br /&gt;
formatting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:160--&amp;gt;&lt;br /&gt;
Added the buy orders side to the coin exchange, improved layout of the coin&lt;br /&gt;
exchange page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:161--&amp;gt;&lt;br /&gt;
Fixed update of account balances per chain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:162--&amp;gt;&lt;br /&gt;
Fixed alias offer to any account. Fixed decryption of DGS goods.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:163--&amp;gt;&lt;br /&gt;
Added Ardorgate EULA and privacy policy checkboxes and links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:164--&amp;gt;&lt;br /&gt;
Improved the &amp;quot;not enough funds&amp;quot; error message.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:165--&amp;gt;&lt;br /&gt;
Fixed sending of transactions when running as light client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:166--&amp;gt;&lt;br /&gt;
Added UI for blacklisting bundlers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:167--&amp;gt;&lt;br /&gt;
Do not process or propagate bundler rates when running as light client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:168--&amp;gt;&lt;br /&gt;
Do not load genesis block json when running as light client, for faster initial&lt;br /&gt;
startup.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.0.13 === &amp;lt;!--T:169--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:170--&amp;gt;&lt;br /&gt;
Bundlers page UI improvements and bugfixes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:171--&amp;gt;&lt;br /&gt;
Added AccountPropertyBundler add-on, which only bundles transactions sent by&lt;br /&gt;
accounts having the &amp;quot;bundling&amp;quot; property set on them by the bundler. To enable,&lt;br /&gt;
set nxt.bundlingFilter=nxt.addons.AccountPropertyBundler. This will apply to&lt;br /&gt;
all bundlers started on this node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:172--&amp;gt;&lt;br /&gt;
Added minimumFeeFQT field to the response for all Create Transaction APIs,&lt;br /&gt;
indicating the minimum required fee in ARDR, regardless of the actual fee&lt;br /&gt;
specified by the sender.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:173--&amp;gt;&lt;br /&gt;
Desktop wallet performance optimizations to reduce excessive load.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:174--&amp;gt;&lt;br /&gt;
Local signing and validation bugfixes, other minor code improvements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.0.12 === &amp;lt;!--T:175--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:176--&amp;gt;&lt;br /&gt;
Fixed setting the ecBlock parameter used when doing local signing for remote&lt;br /&gt;
nodes, light clients, and mobile clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:177--&amp;gt;&lt;br /&gt;
Coin exchange totals are now trimmed according to the chain decimals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.0.11 === &amp;lt;!--T:178--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:179--&amp;gt;&lt;br /&gt;
This release blacklists peers older than 2.0.10, and adds a checkpoint at&lt;br /&gt;
height 6000.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:180--&amp;gt;&lt;br /&gt;
Changed Open Coin Orders to My Coin Orders in the Coin Exchange, sort orders&lt;br /&gt;
per chain then per rate descending, added pagination.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:181--&amp;gt;&lt;br /&gt;
Always make prunable messages prunable regardless of their length, if the&lt;br /&gt;
&amp;quot;message is never deleted&amp;quot; checkbox is not checked.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:182--&amp;gt;&lt;br /&gt;
Added Mistertango withdrawal UI to the AEUR child chain, not yet functional.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:183--&amp;gt;&lt;br /&gt;
Increased default number of fork confirmations to 5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:184--&amp;gt;&lt;br /&gt;
Other minor bugfixes and improvements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:185--&amp;gt;&lt;br /&gt;
This release will perform a database rescan.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.0.10 === &amp;lt;!--T:186--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:187--&amp;gt;&lt;br /&gt;
This is a bugfix release, mandatory update for all nodes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:188--&amp;gt;&lt;br /&gt;
Fixed an issue with block pop-off handling, which can result in a node unable&lt;br /&gt;
to continue downloading the blockchain after encountering an error condition.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:189--&amp;gt;&lt;br /&gt;
Fixed processing of alias transfer transactions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:190--&amp;gt;&lt;br /&gt;
Fixed exchange price handling affecting some coin exchange trades.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:191--&amp;gt;&lt;br /&gt;
Show correct total coin amounts for each chain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:192--&amp;gt;&lt;br /&gt;
Other minor bugfixes and improvements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:193--&amp;gt;&lt;br /&gt;
This release will perform a database rescan.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.0.9 === &amp;lt;!--T:194--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:195--&amp;gt;&lt;br /&gt;
First production release of the Ardor Blockchain Platform.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:196--&amp;gt;&lt;br /&gt;
The Ardor Genesis Snapshot has been taken at Nxt blockchain height of 1636363.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:197--&amp;gt;&lt;br /&gt;
The Genesis timestamp is set to 00:00:00 UTC, Jan 1st 2018. Everyone with ARDR&lt;br /&gt;
balance &amp;gt;= 1000 is invited to setup a node and start forging. Block generation&lt;br /&gt;
will start automatically when the Genesis timestamp is reached. In the meantime,&lt;br /&gt;
please check your balances and report any discrepancies from what you expected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:198--&amp;gt;&lt;br /&gt;
To simplify processing of phased transactions, the getExecutedTransactions API&lt;br /&gt;
now returns the transactions ordered by the height at which they were executed,&lt;br /&gt;
not at which they were included in the blockchain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.0.8e === &amp;lt;!--T:199--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:200--&amp;gt;&lt;br /&gt;
This release is a mandatory upgrade for all Ardor testnet nodes. It involves a&lt;br /&gt;
reset of the existing testnet and starts from a new genesis block.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:201--&amp;gt;&lt;br /&gt;
The new testnet genesis block is based on a snapshot of the Nxt blockchain at&lt;br /&gt;
height 1631000. Forging on testnet is set to start at 14:00 UTC, Dec 26.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:202--&amp;gt;&lt;br /&gt;
The number of decimals for the AEUR child chain has been changed to 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:203--&amp;gt;&lt;br /&gt;
Login UI bugfixes and improvements. Increased initial heap size to 256M.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:204--&amp;gt;&lt;br /&gt;
As this release requires a full reset of testnet, the nxt_test_db folder must&lt;br /&gt;
be deleted before installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.0.7e === &amp;lt;!--T:205--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:206--&amp;gt;&lt;br /&gt;
This release is a mandatory upgrade for all Ardor testnet nodes. It involves a&lt;br /&gt;
reset of the existing testnet and starts from a new genesis block.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:207--&amp;gt;&lt;br /&gt;
The new testnet genesis block is based on a snapshot of the Nxt blockchain at&lt;br /&gt;
height 1624000. Forging on testnet is set to start at midnight UTC, Dec 22.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:208--&amp;gt;&lt;br /&gt;
The BTC and USD testnet child chains have been removed, for consistency with&lt;br /&gt;
the expected production child chains. The EUR child chain has been renamed to&lt;br /&gt;
AEUR, with 2 decimals. Child chain ids for AEUR and Bitswift have changed to 3&lt;br /&gt;
and 4 respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:209--&amp;gt;&lt;br /&gt;
The child chain transaction types that affect only global platform entities and&lt;br /&gt;
do not involve pricing or transfer of value are now allowed only on the IGNIS&lt;br /&gt;
child chain. Such transactions currently are: asset issuance, setting account&lt;br /&gt;
info, setting account properties, asset share increase, setting asset control,&lt;br /&gt;
setting account control.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:210--&amp;gt;&lt;br /&gt;
All fees have been reviewed and updated. Most fees have been decreased&lt;br /&gt;
significantly, with the default Ardor chain fee set to 1 ARDR, and the default&lt;br /&gt;
child chain fee to 0.01 ARDR.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:211--&amp;gt;&lt;br /&gt;
Node JS module bugfixes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:212--&amp;gt;&lt;br /&gt;
Updated Lucene to version 7.1.0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:213--&amp;gt;&lt;br /&gt;
As this release requires a full reset of testnet, the nxt_test_db and the lib&lt;br /&gt;
folders must be deleted before installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.0.6e === &amp;lt;!--T:214--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:215--&amp;gt;&lt;br /&gt;
This is a feature-freeze release for the Ardor testnet. No more API changes or&lt;br /&gt;
feature additions are planned before launch, only bug fixes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:216--&amp;gt;&lt;br /&gt;
The source code is now included in the package, for a public review, under a&lt;br /&gt;
temporary evaluation license only.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:217--&amp;gt;&lt;br /&gt;
Added getExecutedTransactions API. This new API accepts parameters: &amp;quot;chain&amp;quot;,&lt;br /&gt;
&amp;quot;height&amp;quot;, &amp;quot;numberOfConfirmations&amp;quot;, &amp;quot;type&amp;quot;, &amp;quot;subtype&amp;quot;, &amp;quot;sender&amp;quot;, &amp;quot;recipient&amp;quot;,&lt;br /&gt;
&amp;quot;firstIndex&amp;quot;, &amp;quot;lastIndex&amp;quot;, and returns the transactions from the specified&lt;br /&gt;
chain executed at this height, or executed with at least that many number of&lt;br /&gt;
confirmations.&lt;br /&gt;
Both non-phased and phased transactions are returned. For phased transactions,&lt;br /&gt;
only those approved and executed at the specified height, or approved with at&lt;br /&gt;
least that many confirmations of the final approval transaction, are returned.&lt;br /&gt;
If height is specified, sender or recipient parameters are optional, otherwise&lt;br /&gt;
at least one of them is required.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:218--&amp;gt;&lt;br /&gt;
Fixed UI bugs - base target calculation, missing asset control setup, asset&lt;br /&gt;
control local signing, calculation of deadline when doing manual transaction&lt;br /&gt;
bundling.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.0.5e === &amp;lt;!--T:219--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:220--&amp;gt;&lt;br /&gt;
This release is a mandatory update for all Ardor testnet nodes. It will perform&lt;br /&gt;
a rescan on first start.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:221--&amp;gt;&lt;br /&gt;
Client UI improvements for the new asset control, composite phasing, and asset&lt;br /&gt;
increase features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:222--&amp;gt;&lt;br /&gt;
The default transaction deadline has been reduced to 15 min instead of 24 h.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:223--&amp;gt;&lt;br /&gt;
Mobile app now connects to ardor.jelurida.com by default.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:224--&amp;gt;&lt;br /&gt;
Use ARDOR as default account prefix. Using NXT or any other prefix continues to&lt;br /&gt;
be supported for logging in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:225--&amp;gt;&lt;br /&gt;
Allow whitelisting of specific bundler accounts using the property&lt;br /&gt;
nxt.bestBundlerRateWhitelist. If set, only bundler rates announced by the&lt;br /&gt;
whitelisted accounts will be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:226--&amp;gt;&lt;br /&gt;
Fixed bugs in peer networking, parsing genesis block json, by-property voting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.0.4e === &amp;lt;!--T:227--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:228--&amp;gt;&lt;br /&gt;
This Ardor platform release introduces several important new features.&lt;br /&gt;
It is for testnet only, and involves a reset of the existing testnet and&lt;br /&gt;
starting from a new Genesis block.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:229--&amp;gt;&lt;br /&gt;
Major new features:&lt;br /&gt;
&lt;br /&gt;
==== Asset Control ==== &amp;lt;!--T:230--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:231--&amp;gt;&lt;br /&gt;
Similar to Account Control which once set requires all transactions of an&lt;br /&gt;
account to be subject to approval (i.e. to use phasing), the new Asset Control&lt;br /&gt;
feature allows imposing such restriction to all transactions involving a given&lt;br /&gt;
asset - such as placing bid and ask orders, transfers, share deletions, and&lt;br /&gt;
dividend payments that use the asset as a dividend.&lt;br /&gt;
This feature enables for example a private company to issue its shares on the&lt;br /&gt;
Ardor blockchain, yet to impose control over who can purchase or sell them, for&lt;br /&gt;
example requiring asset transactions to be approved by its board of directors,&lt;br /&gt;
or a shareholder voting.&lt;br /&gt;
It also allows asset issuers to be KYC compliant, by only allowing verified&lt;br /&gt;
accounts to transact with their assets.&lt;br /&gt;
&lt;br /&gt;
==== Composite Phasing ==== &amp;lt;!--T:232--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:233--&amp;gt;&lt;br /&gt;
The Composite Phasing (&amp;quot;Smart Phasing&amp;quot;) is a very powerful new feature that&lt;br /&gt;
allows approval models for conditional transactions to be defined in terms of a&lt;br /&gt;
Boolean combination of other approval models, i.e. allows joining the current&lt;br /&gt;
primitive approval models such as by whitelist, by asset balance, by hash, etc,&lt;br /&gt;
using the AND, OR, and NOT operators.&lt;br /&gt;
This allows the new Asset Control feature to be used in combination with the&lt;br /&gt;
Account Control feature when required, the transaction execution being made&lt;br /&gt;
conditional on satisfying both the Asset Control and Account Control settings.&lt;br /&gt;
It also allows for example combining the existing by hash or by transaction&lt;br /&gt;
approval models with by whitelist, by balance, etc, approvals, which enables&lt;br /&gt;
doing atomic coupling of transactions (including cross-blockchain) even for&lt;br /&gt;
multisignature accounts (i.e. subject to Account Control), or with assets&lt;br /&gt;
subject to Asset Control.&lt;br /&gt;
The NOT operator allows for dead-man-switch type conditions, where a&lt;br /&gt;
transaction is executed only if some condition (e.g. revealing a secret) is not&lt;br /&gt;
satisfied.&lt;br /&gt;
&lt;br /&gt;
==== By-Property phasing ==== &amp;lt;!--T:234--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:235--&amp;gt;&lt;br /&gt;
The new by-property approval model allows the transaction execution to be made&lt;br /&gt;
conditional on the sender account or the recipient account having a specific&lt;br /&gt;
account property set. If this property is set, the transaction will be executed&lt;br /&gt;
immediately, else, a second check whether the property is set is performed at&lt;br /&gt;
the finish height defined. This allows for example enforcing KYC by asset&lt;br /&gt;
issuers, who can define in their Asset Control settings that only KYC-verified&lt;br /&gt;
accounts, labelled with a predefined account property by a trusted authority&lt;br /&gt;
(or the asset issuer itself), to perform transactions with their assets.&lt;br /&gt;
&lt;br /&gt;
==== Asset share increase ==== &amp;lt;!--T:236--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:237--&amp;gt;&lt;br /&gt;
A new transaction type has been added, allowing the asset issuer to increase&lt;br /&gt;
the total number of asset shares in existence. The new shares are allocated to&lt;br /&gt;
the asset issuer account, but can be then distributed to shareholders using&lt;br /&gt;
a separate dividend payment transaction. This allows corporate actions such as&lt;br /&gt;
capital increases or stock splits to be performed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Imports from Nxt blockchain ==== &amp;lt;!--T:238--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:239--&amp;gt;&lt;br /&gt;
To test the snapshot process planned for the production Ardor release, this&lt;br /&gt;
testnet release is based on a Genesis block created from a snapshot of the&lt;br /&gt;
production Nxt blockchain as of block height 1558030. The following records&lt;br /&gt;
have been imported:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:240--&amp;gt;&lt;br /&gt;
- Accounts public keys&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:241--&amp;gt;&lt;br /&gt;
- Account balances. ARDOR chain balances are based on ARDR asset balances, and&lt;br /&gt;
IGNIS chain balances are based on NXT balances divided by 2, plus JLRDA asset&lt;br /&gt;
balances. Each of those has been additionally divided by 2, in order to&lt;br /&gt;
allocate 50% of the testnet coins to developer accounts for testing purposes.&lt;br /&gt;
BITSWIFT chain balances are based on Bitswift asset balances, plus a 10%&lt;br /&gt;
airdrop distributed proportionately to all IGNIS holders.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:242--&amp;gt;&lt;br /&gt;
- Account info (name and description)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:243--&amp;gt;&lt;br /&gt;
- Account properties&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:244--&amp;gt;&lt;br /&gt;
- Account control settings, but only for account control by whitelist with no&lt;br /&gt;
minimum balance. Other types of account control will not be imported.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:245--&amp;gt;&lt;br /&gt;
- Account aliases have been imported to the IGNIS child chain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:246--&amp;gt;&lt;br /&gt;
- Assets. Only the Janus, JanusXT, and ComJNSXT assets have been imported, with&lt;br /&gt;
their asset ids preserved.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:247--&amp;gt;&lt;br /&gt;
- Monetary system currencies have been imported to the IGNIS child chain, but&lt;br /&gt;
only the currency code and name, in order to reserve those. It would be up to&lt;br /&gt;
each currency issuer to re-issue the currency with the appropriate properties&lt;br /&gt;
and re-distribute it to users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:248--&amp;gt;&lt;br /&gt;
Modified APIs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:249--&amp;gt;&lt;br /&gt;
GetAssetDeletes has been replaced with GetAssetHistory, with &amp;quot;deletesOnly&amp;quot;, and&lt;br /&gt;
&amp;quot;increasesOnly&amp;quot; optional parameters to retrieve only share delete or share&lt;br /&gt;
increase history events.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:250--&amp;gt;&lt;br /&gt;
ApproveTransaction now takes multivalued revealedSecret parameter, to allow&lt;br /&gt;
revealing multiple secrets for transactions using composite phasing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:251--&amp;gt;&lt;br /&gt;
SetPhasingOnlyControl now optionally also accepts the account control phasing&lt;br /&gt;
parameters in a JSON format, as a single &amp;quot;controlPhasing&amp;quot; parameter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:252--&amp;gt;&lt;br /&gt;
All CreateTransaction API now optionally also accept the transaction phasing&lt;br /&gt;
parameters in a JSON format as &amp;quot;phasingParams&amp;quot; and &amp;quot;phasingSubPolls&amp;quot; parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:253--&amp;gt;&lt;br /&gt;
For by-property phasing, the following new parameters have been added:&lt;br /&gt;
&amp;quot;phasingSenderPropertySetter&amp;quot;, &amp;quot;phasingSenderPropertyName&amp;quot;,&lt;br /&gt;
&amp;quot;phasingSenderPropertyValue&amp;quot;, &amp;quot;phasingRecipientPropertySetter&amp;quot;,&lt;br /&gt;
&amp;quot;phasingRecipientPropertyName&amp;quot;, &amp;quot;phasingRecipientPropertyValue&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:254--&amp;gt;&lt;br /&gt;
For composite phasing, the boolean expression can be supplied in Disjunctive&lt;br /&gt;
Normal Form as &amp;quot;phasingExpression&amp;quot; parameter, with no parentheses, variables&lt;br /&gt;
in format [a-zA-Z][a-zA-Z0-9]* and operators &amp;quot;&amp;amp;&amp;quot; (AND), &amp;quot;|&amp;quot; (OR), &amp;quot;!&amp;quot; (NOT).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:255--&amp;gt;&lt;br /&gt;
For each variable appearing in the boolean expression, the phasing parameters&lt;br /&gt;
of its sub-poll can be specified as separate parameter with prefix&lt;br /&gt;
&amp;quot;phasing&amp;lt;variable name&amp;gt;&amp;quot;, or as JSON in the &amp;quot;phasingSubPolls&amp;quot; parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:256--&amp;gt;&lt;br /&gt;
New APIs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:257--&amp;gt;&lt;br /&gt;
IncreaseAssetShares - create new asset shares. Only the asset issuer can submit&lt;br /&gt;
a share increase transaction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:258--&amp;gt;&lt;br /&gt;
EvaluateExpression - evaluates a Boolean expression, for use in composite&lt;br /&gt;
phasing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:259--&amp;gt;&lt;br /&gt;
ParsePhasingParams - converts phasing parameters, submitted as HTTP request&lt;br /&gt;
parameters, to a JSON format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:260--&amp;gt;&lt;br /&gt;
GetPhasingAssetControl - returns the phasing control for a given asset, if set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:261--&amp;gt;&lt;br /&gt;
SetPhasingAssetControl - set or unset phasing control for an asset. Only the&lt;br /&gt;
asset issuer can change asset control settings. If an asset is not under asset&lt;br /&gt;
control, a new asset control can only be set if all shares are currently owned&lt;br /&gt;
by the asset issuer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:262--&amp;gt;&lt;br /&gt;
Ported various bugfixes and improvements from Nxt up to version 1.11.9.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:263--&amp;gt;&lt;br /&gt;
Updated jetty to version 9.3.22, bouncycastle to 1.58, and the izpack installer&lt;br /&gt;
to version 5.1.2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:264--&amp;gt;&lt;br /&gt;
Since this release requires a full reset of testnet starting from a new Genesis&lt;br /&gt;
block, if upgrading from 2.0.3e or earlier, in addition to the lib folder the&lt;br /&gt;
nxt_test_db folder must also be deleted. The import of snapshot balances on&lt;br /&gt;
first start may take a few minutes and should not be interrupted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:265--&amp;gt;&lt;br /&gt;
The testnet Genesis block timestamp has been set to 00:00 (midnight) UTC time&lt;br /&gt;
on Monday, Nov 6th, in order to allow time for users to setup nodes check their&lt;br /&gt;
balances, and start forging.&lt;br /&gt;
Block generation will commence automatically once that time has been reached,&lt;br /&gt;
and only then it will become possible to create and send new transactions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.0.3e === &amp;lt;!--T:266--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:267--&amp;gt;&lt;br /&gt;
Minor unconfirmed transaction processing improvements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:268--&amp;gt;&lt;br /&gt;
Coin Exchange UI improvements and bugfixes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:269--&amp;gt;&lt;br /&gt;
Updated jetty to version 9.3.17.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.0.2e === &amp;lt;!--T:270--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:271--&amp;gt;&lt;br /&gt;
This release introduces an incompatible networking change in bundler rates&lt;br /&gt;
propagation and is therefore a mandatory update for all Ardor testnet nodes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:272--&amp;gt;&lt;br /&gt;
Improvements in bundler rates handling and APIs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:273--&amp;gt;&lt;br /&gt;
The GetBundlerRates API now also returns the bundler account and the remaining&lt;br /&gt;
fee limit for each bundler as currentFeeLimitFQT.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:274--&amp;gt;&lt;br /&gt;
The new GetAllBundlerRates API returns all bundler rates known to the node, for&lt;br /&gt;
all child chains, subject to optional minBundlerBalanceFXT limit on the bundler&lt;br /&gt;
effective Ardor balance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:275--&amp;gt;&lt;br /&gt;
The new BlacklistBundler API allows manual blacklisting of bundler accounts.&lt;br /&gt;
Rates advertised by such accounts will not be added to the local list of known&lt;br /&gt;
rates each node maintains. Blacklisting of bundler accounts is also possible&lt;br /&gt;
using the new nxt.blacklistedBundlerAccounts property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:276--&amp;gt;&lt;br /&gt;
Bundler rates are now broadcasted every 30 min instead of once an hour.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:277--&amp;gt;&lt;br /&gt;
The new nxt.minBundlerFeeLimitFXT property allows skipping bundler rates that&lt;br /&gt;
are announced by bundlers with lower remaining current fee limit, default 10&lt;br /&gt;
Ardor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:278--&amp;gt;&lt;br /&gt;
Added peer authentication and encryption framework for the peer networking, to&lt;br /&gt;
be used for permissioned blockchains.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:279--&amp;gt;&lt;br /&gt;
Added Bundle action for child chain transactions in the UI. Added visual&lt;br /&gt;
representation of transaction bundling and confirmation status.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:280--&amp;gt;&lt;br /&gt;
Client UI and peer networking bugfixes and improvements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:281--&amp;gt;&lt;br /&gt;
Updated H2 to version 1.4.194.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.0.1e === &amp;lt;!--T:282--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:283--&amp;gt;&lt;br /&gt;
This is a bugfix release, for testnet only.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:284--&amp;gt;&lt;br /&gt;
Added Node JS module, see html/www/js/README.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:285--&amp;gt;&lt;br /&gt;
Multiple bugs fixed and improvements added in client UI, peer networking,&lt;br /&gt;
blockchain download.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:286--&amp;gt;&lt;br /&gt;
Removed obsolete news page, added About modal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:287--&amp;gt;&lt;br /&gt;
This release will force a rescan, deleting blocks after height 11619.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ardor-client-2.0.0e === &amp;lt;!--T:288--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:289--&amp;gt;&lt;br /&gt;
This is the first release of the Ardor software, for testnet only. It represents&lt;br /&gt;
the first milestone in the building of the Ardor platform.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== New Features ==== &amp;lt;!--T:290--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:291--&amp;gt;&lt;br /&gt;
The main new user-visible feature is the existence of a single forging chain,&lt;br /&gt;
using the ARDR token, and multiple child chains, each with its own token.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Forging Chain ==== &amp;lt;!--T:292--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:293--&amp;gt;&lt;br /&gt;
The Ardor chain is used to establish the proof-of-stake consensus, using ARDR&lt;br /&gt;
balances only. It supports only a few transaction types: ordinary payments,&lt;br /&gt;
balance leasing, and coin exchange. Prunable plain or encrypted message&lt;br /&gt;
attachments are also supported, but not permanent or standalone arbitrary&lt;br /&gt;
message transactions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Child Chains ==== &amp;lt;!--T:294--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:295--&amp;gt;&lt;br /&gt;
The child chains support all transaction types as previously implemented on the&lt;br /&gt;
Nxt platform, with the exception of balance leasing which is only available on&lt;br /&gt;
the Ardor chain, and tagged data extend transaction which has been removed as&lt;br /&gt;
unnecessary. A child chain can optionally be configured to disable certain&lt;br /&gt;
transaction types, which has been done for testing purposes on the EUR child&lt;br /&gt;
chain, disabling the Asset Exchange and Digital Marketplace.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Coin Exchange ==== &amp;lt;!--T:296--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:297--&amp;gt;&lt;br /&gt;
To allow trading of child chain coins to each other, and also between child&lt;br /&gt;
chains and the Ardor chain, a new Coin Exchange module has been implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:298--&amp;gt;&lt;br /&gt;
For trading between child chain coins, the coin exchange transactions are&lt;br /&gt;
submitted on the child chain of the coin being sold. For trading between a child&lt;br /&gt;
chain coin and Ardor, the transaction is submitted on the Ardor chain regardless&lt;br /&gt;
of whether it is a buy or sell, and the fees for such transactions are higher.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Bundling ==== &amp;lt;!--T:299--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:300--&amp;gt;&lt;br /&gt;
The bundling process is used to group child chain transactions from a child&lt;br /&gt;
chain into a transaction on the Ardor chain. Bundlers accept the fees from&lt;br /&gt;
those child chain transactions, in the corresponding child chain coin, and&lt;br /&gt;
pay fees in ARDR to the parent chain forgers. Bundlers can be started from&lt;br /&gt;
the cogwheel/bundlers menu, defining the coin to ARDR exchange rate they accept,&lt;br /&gt;
a limit on the total fees in ARDR a bundler will pay, and an optional overpay&lt;br /&gt;
amount.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:301--&amp;gt;&lt;br /&gt;
When a bundler is running, it checks the unconfirmed transactions pool every&lt;br /&gt;
time a new transaction from the child chain being bundled arrives. If the&lt;br /&gt;
transaction fee included by the transaction sender, in child chain coins, when&lt;br /&gt;
converted to Ardor using the exchange rate accepted by the bundler is at least&lt;br /&gt;
equal to the minimum Ardor fee required for this transaction, the bundler will&lt;br /&gt;
generate a ChildBlock transaction, including in it this and all other currently&lt;br /&gt;
unconfirmed child chain transactions satisfying this requirement. The Ardor fee&lt;br /&gt;
the bundler will include for the ChildBlock transaction is equal to the sum of&lt;br /&gt;
the minimum required Ardor fees for each, plus the calculated overpay amount, if&lt;br /&gt;
any. Such overpay amount is optional, and may be used by bundlers willing to pay&lt;br /&gt;
more in order to have their transactions included in block instead of those of&lt;br /&gt;
competing bundlers.&lt;br /&gt;
The new ChildBlock transaction will displace from the unconfirmed pool any&lt;br /&gt;
ChildBlock transactions of the same child chain that include only a subset of&lt;br /&gt;
the same child transactions.&lt;br /&gt;
When propagating through the network, ChildBlock transactions will only be&lt;br /&gt;
accepted by peers if they either include child transactions not already included&lt;br /&gt;
in other ChildBlock transactions the peer already has in its pool, or offer to&lt;br /&gt;
pay a higher fee for the same transactions. This ensures the network is not&lt;br /&gt;
flooded with ChildBlock transactions even if every node is running a bundler,&lt;br /&gt;
and allows bundlers to compete for propagating their transactions through the&lt;br /&gt;
network by offering to pay higher fees.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:302--&amp;gt;&lt;br /&gt;
It is now possible for child transactions to be submitted with zero fees, in&lt;br /&gt;
child chain coins. If a bundler is willing to pay the Ardor fees for those,&lt;br /&gt;
they will be included in the blockchain in the ChildBlock created by such&lt;br /&gt;
bundler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:303--&amp;gt;&lt;br /&gt;
To prevent the unconfirmed pool from being overfilled with such zero-fees child&lt;br /&gt;
chain transactions, once the maxUnconfirmedTransactions limit (configured in&lt;br /&gt;
nxt.properties, default 2000) has been exceeded, child chain transactions will&lt;br /&gt;
be dropped unless a bundler has already submitted a ChildBlock transaction which&lt;br /&gt;
includes them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:304--&amp;gt;&lt;br /&gt;
Bundlers advertise their accepted bundling rates to other peers, signing such&lt;br /&gt;
rates announcements with the private key of the bundler&#039;s account. To prevent&lt;br /&gt;
fake rates announcements, they can be filtered based on this account effective&lt;br /&gt;
balance (default set in nxt.minBundlerBalanceFXT is 1000 ARDR).&lt;br /&gt;
The GetBundlerRates API can be used to retrieve known bundlers rates, again&lt;br /&gt;
with optional filtering by minimum bundler effective balance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Peer Networking ==== &amp;lt;!--T:305--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:306--&amp;gt;&lt;br /&gt;
The peer networking has been fully re-written and optimized to use socket&lt;br /&gt;
connections and binary messages instead of http and JSON.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:307--&amp;gt;&lt;br /&gt;
Block and transaction propagation through the network has been optimized, by&lt;br /&gt;
sharing with peers the inventory of transaction IDs in the unconfirmed pool or&lt;br /&gt;
in recent blocks, and only propagating the missing ones, if any, when a new&lt;br /&gt;
block is generated, or a child block is bundled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:308--&amp;gt;&lt;br /&gt;
The hallmark feature has been removed as it is not needed anymore, hallmarks are&lt;br /&gt;
no longer supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== New APIs ==== &amp;lt;!--T:309--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:310--&amp;gt;&lt;br /&gt;
APIs of the new Coin Exchange feature:&lt;br /&gt;
ExchangeCoins, CancelCoinExchange, GetCoinExchangeOrder, GetCoinExchangeOrders,&lt;br /&gt;
GetCoinExchangeOrderIds, GetCoinExchangeTrade, GetCoinExchangeTrades,&lt;br /&gt;
GetExpectedCoinExchangeOrderCancellations, GetExpectedCoinExchangeOrders,&lt;br /&gt;
GetLastCoinExchangeTrade.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:311--&amp;gt;&lt;br /&gt;
Bundling related APIs:&lt;br /&gt;
BundleTransactions, GetBundlers, GetBundlerRates, StartBundler, StopBundler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:312--&amp;gt;&lt;br /&gt;
Other new APIs:&lt;br /&gt;
GetBalances, GetEffectiveBalance, GetFxtTransaction.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== API changes ==== &amp;lt;!--T:313--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:314--&amp;gt;&lt;br /&gt;
All APIs that are now chain specific accept a new chain parameter. Either the&lt;br /&gt;
chain name or the chain ID can be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:315--&amp;gt;&lt;br /&gt;
Transaction IDs are no longer 64-bit longs but 256-bit hashes, necessitating&lt;br /&gt;
changes in all APIs that accept transaction ID parameters or return such in the&lt;br /&gt;
JSON fields. For transactions on the Ardor chain, 64-bit long IDs can still be&lt;br /&gt;
used with the getFxtTransaction API, as those are enforced to be unique. For&lt;br /&gt;
child chain transactions, the getTransaction API now requires a fullHash&lt;br /&gt;
parameter, in addition to specifying the chain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:316--&amp;gt;&lt;br /&gt;
Prices and rates are now defined relative to a whole unit of the holding being&lt;br /&gt;
bought or sold (asset, currency, coin), not to a QNT indivisible unit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:317--&amp;gt;&lt;br /&gt;
All priceNQT and rateNQT parameters and JSON fields have been renamed where&lt;br /&gt;
appropriate to priceNQTPerCoin, priceNQTPerShare, rateNQTPerUnit, etc., to&lt;br /&gt;
reflect their changed meaning of price per whole unit of each holding rather&lt;br /&gt;
than per QNT.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:318--&amp;gt;&lt;br /&gt;
All &amp;quot;units&amp;quot; parameters in the Monetary System APIs have been renamed to&lt;br /&gt;
unitsQNT.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:319--&amp;gt;&lt;br /&gt;
DividendPayment API accepts holding and holdingType parameters to allow paying&lt;br /&gt;
dividends in another asset or MS currency. The amountNQTPerQNT parameter has&lt;br /&gt;
been renamed to amountNQTPerShare and now refers to dividend amount in NQT per&lt;br /&gt;
a whole share of the asset rather than per QNT.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:320--&amp;gt;&lt;br /&gt;
The GetAccount API no longer returns balanceNQT and unconfirmedBalanceNQT, as&lt;br /&gt;
balances are now chain specific. The GetBalance API should be used to get chain&lt;br /&gt;
balances instead, or GetBalances for querying multiple chains.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:321--&amp;gt;&lt;br /&gt;
APIs which accept holding and holdingType parameters now require holding to be&lt;br /&gt;
set to the chain ID when holdingType=0 (coin).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:322--&amp;gt;&lt;br /&gt;
Since 0 is now a valid fee value for child chains, all CreateTransaction APIs&lt;br /&gt;
will accept it, instead of using it as a request for the server to calculate&lt;br /&gt;
and use the minimum fee. To let the server calculate the child transaction fee,&lt;br /&gt;
a value of feeNQT=-1 should be used, and a new feeRateNQTPerFXT parameter must&lt;br /&gt;
be supplied, to indicate the exchange rate to use when calculating the fee&lt;br /&gt;
(since minimum fees can only be calculated in ARDR). If feeRateNQTPerFXT is&lt;br /&gt;
also set to -1, the server will query the currently known bundlers rates for&lt;br /&gt;
this child chain, also subject to the minBundlerBalanceFXT limit on effective&lt;br /&gt;
bundler account balance, and use the best one for the fee calculation. As&lt;br /&gt;
bundlers rates cannot be trusted blindly, the transaction will not be&lt;br /&gt;
broadcasted in this case, the returned transaction JSON including the fees&lt;br /&gt;
calculated should be reviewed by the user. The bundler rate used will be&lt;br /&gt;
returned in the bundlerRateNQTPerFXT JSON field, -1 if no bundlers are known for&lt;br /&gt;
the chain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:323--&amp;gt;&lt;br /&gt;
The following APIs have been removed: ExtendTaggedData, GetPhasingPolls,&lt;br /&gt;
GetTaggedDataExtendTransactions, GetInboundPeers, MarkHost, DecodeHallmark.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Transaction types and bytes format ==== &amp;lt;!--T:324--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:325--&amp;gt;&lt;br /&gt;
The numbering of some transaction types has changed, due to the internal&lt;br /&gt;
reorganizations of the TransactionType classes. Transaction types on the Ardor&lt;br /&gt;
chain use negative numbers, e.g. -1 for ChildChainBlock, -2 for Ardor ordinary&lt;br /&gt;
payment. Some transaction subtypes have been moved to a separate type, e.g.&lt;br /&gt;
voting and phasing related transactions have been moved out of Messaging to a&lt;br /&gt;
new Voting transaction type. The output of getConstants should be consulted for&lt;br /&gt;
a full list of the current transaction types and subtypes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:326--&amp;gt;&lt;br /&gt;
The transaction bytes format has also changed, adding a chain ID, reorganizing&lt;br /&gt;
the ordering of attachment and appendix bytes, and allowing prunable attachment&lt;br /&gt;
parts to also optionally be represented in the bytes format, for the purpose of&lt;br /&gt;
sending them more efficiently over the peer to peer network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:327--&amp;gt;&lt;br /&gt;
The JSON transaction representation is still supported, even though it is no&lt;br /&gt;
longer used in the peer networking. Some attachment fields have been renamed&lt;br /&gt;
for consistency with the API changes - units to unitsQNT, priceNQT to&lt;br /&gt;
priceNQTPerShare, rateNQT to rateNQTPerUnit, amountNQT for dividend payments to&lt;br /&gt;
amountNQTPerShare, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Entity IDs ==== &amp;lt;!--T:328--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:329--&amp;gt;&lt;br /&gt;
As part of designing child chain transactions to be prunable, it is no longer&lt;br /&gt;
possible to enforce uniqueness of the 64-bit transaction IDs for child chains.&lt;br /&gt;
This affects the IDs of derived entities such as Assets, MS Currencies, Polls,&lt;br /&gt;
Digital Goods, Shufflings, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:330--&amp;gt;&lt;br /&gt;
For global derived entities such as Assets or Currencies, the 64-bit long IDs&lt;br /&gt;
are still unique and used in the corresponding APIs. Note however that this&lt;br /&gt;
uniqueness is now only within the same object type, i.e. it is not guaranteed&lt;br /&gt;
that an Asset and a Currency will not happen to have the same 64-bit long ID.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:331--&amp;gt;&lt;br /&gt;
For child chain local entities, such as Polls and Digital Goods, the 64-bit IDs&lt;br /&gt;
are still unique, but within the same child chain only, and still used in their&lt;br /&gt;
APIs. Again, there is no uniqueness guarantee across different entity types&lt;br /&gt;
anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:332--&amp;gt;&lt;br /&gt;
For entities that are prunable, such as prunable messages, tagged data, and&lt;br /&gt;
shufflings, the full 256-bit hash must be used as an ID now, and the appropriate&lt;br /&gt;
APIs have been changed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Phasing and Account control ==== &amp;lt;!--T:333--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:334--&amp;gt;&lt;br /&gt;
Only child chain transactions can be phased. Therefore, when account control&lt;br /&gt;
is set for an account, it can no longer submit Ardor chain transactions.&lt;br /&gt;
Phasing parameters which refer to transaction IDs must now use transaction&lt;br /&gt;
full hashes instead, prefixed with the chain ID separated with &#039;:&#039;.&lt;br /&gt;
It is possible to refer to transactions on other chains when approving a phased&lt;br /&gt;
transaction, or setting up a by-transaction phasing voting model.&lt;br /&gt;
The controlMaxFees parameter when setting mandatory approval now accepts&lt;br /&gt;
multiple values, each fee being prefixed with the child chain ID and &#039;:&#039;, to&lt;br /&gt;
indicate which child chain the limit applies to. If no max fee has been set for&lt;br /&gt;
a child chain, there is no phasing transactions fees total limit on it for the&lt;br /&gt;
controlled account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Transaction selection, sorting, limits and fees ==== &amp;lt;!--T:335--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:336--&amp;gt;&lt;br /&gt;
An Ardor chain block can contain up to 10 (ten) transactions, this including&lt;br /&gt;
both native Ardor transactions and ChildBlock transactions. There is no total&lt;br /&gt;
payload size limit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:337--&amp;gt;&lt;br /&gt;
A ChildBlock can contain up to 100 (one hundred) child transactions, subject&lt;br /&gt;
to a total payload limit of 128 kbytes. Prunable child transaction parts are&lt;br /&gt;
also counted towards the payload size limit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:338--&amp;gt;&lt;br /&gt;
There is a limit of one ChildBlock per Ardor block for each child chain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:339--&amp;gt;&lt;br /&gt;
As in Nxt, it is up to a block forger which transactions to include in a block&lt;br /&gt;
and how to sort them. The default forger behaviour is to select transactions&lt;br /&gt;
ordered by Ardor fee (not fee per byte as in Nxt, since there is no block&lt;br /&gt;
payload limit), and then sort them based on arrival timestamp.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:340--&amp;gt;&lt;br /&gt;
It is also up to the ChildBlock bundler which child transactions to include in&lt;br /&gt;
a ChildBlock, and this selection can be customized by defining a custom filter&lt;br /&gt;
in the nxt.bundlingFilter property. The default bundler behaviour is to select&lt;br /&gt;
child transactions ordered by fee per byte, up to the count and payload limits&lt;br /&gt;
of a child block, creating several child blocks if necessary. Within a child&lt;br /&gt;
block, child transactions are sorted based on their full hash, but executed&lt;br /&gt;
based on sorting them after adding the block hash to the child transaction hash,&lt;br /&gt;
i.e. the execution order of child transactions within a block is deterministic&lt;br /&gt;
but not predictable and not controllable by the bundler or by the forger. This&lt;br /&gt;
is in order to prevent front-running of asset exchange and other trading orders.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:341--&amp;gt;&lt;br /&gt;
Ardor fees from ChildBlock transactions paid to the block forger are shared with&lt;br /&gt;
the previous three block forgers in 1:1:1:1 ratio. Other Ardor chain fees are&lt;br /&gt;
fully kept by the block forger, and child block transaction fees (in child chain&lt;br /&gt;
coins) are fully kept by the ChildBlock bundler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:342--&amp;gt;&lt;br /&gt;
The back fees sharing which was applied in Nxt for some other transactions types&lt;br /&gt;
such as currency or asset issuance has been removed, however the limitations of&lt;br /&gt;
one such transaction per block for scarce blockchain resources are preserved.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:343--&amp;gt;&lt;br /&gt;
Default fee for Ardor chain transactions is 10 ARDR. Default fee for child chain&lt;br /&gt;
transactions is 0.1 ARDR. A ChildBlock must contain at least one child chain&lt;br /&gt;
transaction, but there is no minimum ChildBlock fee requirement, i.e. such a&lt;br /&gt;
ChildBlock with a single transaction in it would require only 0.1 ARDR fee if&lt;br /&gt;
this is the minimum fee for the child transaction it contains.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:344--&amp;gt;&lt;br /&gt;
Fees for child chain transaction types have been scaled depending on their&lt;br /&gt;
impact on the blockchain, e.g. asset issuance fees are still 1000 ARDR as assets&lt;br /&gt;
are global and kept permanently. There is a 1 ARDR extra fee added to&lt;br /&gt;
transactions that create a new account.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:345--&amp;gt;&lt;br /&gt;
The above fees and limits are set for the current testnet only and are subject&lt;br /&gt;
to change before the production mainnet release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Testnet accounts ==== &amp;lt;!--T:346--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:347--&amp;gt;&lt;br /&gt;
The testnet genesis block has been created based on account balances from the&lt;br /&gt;
Nxt testnet, as of 2017/01/01 (block height 1061208). Users who had testnet&lt;br /&gt;
accounts as of that height should find their ARDR and NXT testnet balances&lt;br /&gt;
imported into this testnet, to ARDR and IGNIS tokens respectively, plus an&lt;br /&gt;
approximately equivalent amount of BTC, USD, and EUR child chain coins for&lt;br /&gt;
testing. To allow for developers testing and running forging and bundling nodes,&lt;br /&gt;
account holdings have been reduced by 50% which have been allocated to&lt;br /&gt;
developers accounts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upgrading from Nxt ==== &amp;lt;!--T:348--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:349--&amp;gt;&lt;br /&gt;
The Ardor release is not an upgrade and does not in any way affect your existing&lt;br /&gt;
Nxt account or client installation. Both Ardor and Nxt should be possible to run&lt;br /&gt;
simultaneously on the same machine, as long as the hardware capacity allows it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:350--&amp;gt;&lt;br /&gt;
The included ArdorNxtComparison.pdf document summarizes the major differences&lt;br /&gt;
between the Nxt and Ardor platforms, for those deciding which one is a better&lt;br /&gt;
fit for their use case, or considering a migration from Nxt to Ardor. More&lt;br /&gt;
documentation should be added as Ardor development and features mature and&lt;br /&gt;
stabilize.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:351--&amp;gt;&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Template:NRSVersion&amp;diff=13043</id>
		<title>Template:NRSVersion</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Template:NRSVersion&amp;diff=13043"/>
		<updated>2022-06-06T11:02:30Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;2.4.2&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Lightweight_Contracts&amp;diff=13007</id>
		<title>Lightweight Contracts</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Lightweight_Contracts&amp;diff=13007"/>
		<updated>2022-04-21T21:06:09Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Lightweight Contracts&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, Lightweight Contracts&lt;br /&gt;
|description=Lightweight Contracts represent a framework for developing a layer of automation on top of the existing Ardor APIs.&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
&lt;br /&gt;
== Introduction to Lightweight Contracts == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Lightweight Contracts represent a framework for developing a layer of automation on top of the existing Ardor APIs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Contracts are developed by implementing predefined interfaces. The contract code is deployed to the blockchain as a cloud data transaction, which stores the code itself, and a contract reference transaction which associates a specific account with an existing deployed contract and configures the contract setup parameters for this specific account.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Learn more about the concepts behind the lightweight contracts using these resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
[https://medium.com/coinmonks/lightweight-contracts-b738b6e29377 introduction article]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
[https://medium.com/@lyaffe/lightweight-contracts-faq-30273120da9a frequently asked questions]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
[[Basic_tutorials#Tutorial_Seminar_on_Turing-complete_Lightweight_Contracts| video seminar]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisites  == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Contract developers are expected to master the Java programming language or any other language which uses the Java JVM as its runtime environment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Some prior knowledge of blockchain in general, Ardor specifically. Familiarity with concepts like account, passphrase, transaction, and block are important but not mandatory as you can always review the sample contracts supplied with the product as reference implementation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting Started == &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation === &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
As of Ardor 2.2.3 when installing Ardor using the Windows or Mac installer a fully functional JDK is installed into the jdk folder under the product installation. We recommend that you use this JDK version when setting up your IntelliJ project. For all other configurations install Java SE JDK 8 or higher manually.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Install the latest version of the IntelliJ IDE, the free community edition is supported. You can develop contracts using any other Java IDE but the project setup and all examples assume using the IntelliJ IDE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Install the latest version of Ardor and make sure to leave the dev.tools option checked during installation.&lt;br /&gt;
&lt;br /&gt;
=== Contract Runner === &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Unlike many other contract development frameworks, lightweight contracts are not executed by every node on the blockchain, instead node operators have to configure their node to run contracts by registering the contract runner addon. The contract runner monitors every new block for trigger transactions. When found it triggers the respective contract after loading it from the blockchain. The contract runner also supports contracts which execute on every block and provides APIs for triggering contracts directly or using a transaction voucher.&lt;br /&gt;
&lt;br /&gt;
==== Contract Runner fees and funds ==== &amp;lt;!--T:259--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:260--&amp;gt;&lt;br /&gt;
The contract runner account needs funds to pay the fees for any submitted transaction.&lt;br /&gt;
Please ensure that the account has enough balance on every chain where the contracts&lt;br /&gt;
will submit transactions. Alternatively, you can setup a bundler to sponsor the fees&lt;br /&gt;
and let the contract runner submit zero fee transactions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:261--&amp;gt;&lt;br /&gt;
The contract runner uses the reference transaction mechanism to link any submitted&lt;br /&gt;
transaction to the transaction that triggered the contract. This ensures that&lt;br /&gt;
the confirmation of the new transaction depends on the confirmation of the triggering&lt;br /&gt;
transaction. This requires a &#039;&#039;&#039;deposit of 10 ARDR&#039;&#039;&#039; for every submitted transaction&lt;br /&gt;
that is refunded when both transactions are confirmed or the submitted transaction&lt;br /&gt;
expires. So please &#039;&#039;&#039;make sure the contract runner account has enough ARDR balance to cover this deposit&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== How to configure the Contract Runner ==== &amp;lt;!--T:262--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
First and foremost, to activate the contract runner for your node add the property &amp;lt;pre&amp;gt;nxt.addOns=nxt.addons.ContractRunner&amp;lt;/pre&amp;gt; to your node&#039;s [[Faq#Node_configuration_using_the_nxt.properties|nxt.properties]] file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:263--&amp;gt;&lt;br /&gt;
You have now several ways to configure the contract runner. &#039;&#039;&#039;You only need to use one of the options.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:264--&amp;gt;&lt;br /&gt;
* The easiest and recommended way is to use the [[Node_Processes_Configuration|Node Processes UI]] to set up an encrypted configuration file stored on the node. You only need to save the file once and then just start the file using an encryption password on each node start. The &#039;&#039;Save&#039;&#039; modal popup even creates a basic working configuration for you that is fully functional so most of the times it is just a matter of entering the passphrase and an encryption password and you are good to go.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:265--&amp;gt;&lt;br /&gt;
[[file:Processes_SaveContractRunner.png|class=img-responsive|center|Save Contract Runner modal]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:266--&amp;gt;&lt;br /&gt;
* Another option is to keep the configuration on your local computer and upload it as a json file using the provided button on the contract runner status page accessible via the &#039;&#039;Settings&#039;&#039; menu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:267--&amp;gt;&lt;br /&gt;
* You can also add the configuration parameters directly on the [[Faq#Node_configuration_using_the_nxt.properties|nxt.properties]] file so they will be used right away as the node starts. &#039;&#039;&#039;You need to prefix every parameter&#039;&#039;&#039; with &amp;lt;code&amp;gt;addon.contractRunner.&amp;lt;/code&amp;gt; so they become like this: &amp;lt;code&amp;gt;addon.contractRunner.secretPhrase=IWontTellYou&amp;lt;/code&amp;gt; Please be aware that there are several parameters that shall remain secret like the accounts’ secret phrases or some contract setup parameters. The &amp;lt;code&amp;gt;nxt.properties&amp;lt;/code&amp;gt; file is stored in clear text. &lt;br /&gt;
&lt;br /&gt;
==== Contract Runner General Configuration Settings ==== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
The following properties control the Contract Runner execution.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;privateKey&amp;quot;&#039;&#039;&#039; - specify the private key (for HD accounts) of the contract runner account i.e. the account from which the contract runner will submit transactions. It is never submitted to any remote node. Be careful if you decide to store this data in the &#039;&#039;nxt.properties&#039;&#039; file as it is stored in clear text.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;secretPhrase&amp;quot;&#039;&#039;&#039; - specify the secret phrase (for legacy accounts) of the contract runner account i.e. the account from which the contract runner will submit transactions. This passphrase is never submitted to any remote node. Be careful if you decide to store this data in the &#039;&#039;nxt.properties&#039;&#039; file as it is stored in clear text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;accountRS&amp;quot;&#039;&#039;&#039; - alternatively if you only want your contract runner to verify transactions submitted by another contract runner, specify the account of the contract runner you would like to follow. This way your contract runner can repeat the contract calculations and verify transactions submitted by another contract but not submit its own transactions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:268--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;autoFeeRate&amp;quot;&#039;&#039;&#039; – if set to true (default: false), the contract runner will calculate the best fee available based on the current bundlers. This should be equivalent to the &#039;&#039;Calculate Fee&#039;&#039; button on the Wallet UI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:269--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;minBundlerBalanceFXT&amp;quot;&#039;&#039;&#039; – this optional parameter allows filtering out bundlers when &#039;&#039;autoFeeRate&#039;&#039; is activated. Bundlers with an effective balance below the property &#039;&#039;minBundlerBalanceFXT&#039;&#039; are not considered for the best fee calculation. The default for this property is to use the same value as the global property &#039;&#039;nxt.minBundlerBalanceFXT&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:270--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;minBundlerFeeLimitFQT&amp;quot;&#039;&#039;&#039; - this optional parameter allows filtering out bundlers when &#039;&#039;autoFeeRate&#039;&#039; is activated. Bundlers with a fee limit currently below the property &#039;&#039;minBundlerFeeLimitFQT&#039;&#039; are not considered for the best fee calculation. Again, the default for this property is to use the same value as the equivalent global property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;feeRateNQTPerFXT.&amp;lt;Chain Name&amp;gt;&amp;quot;&#039;&#039;&#039; - when &#039;&#039;autoFeeRate&#039;&#039; is set to false or the best fee cannot be obtained the contract runner will use this value specified in NQT to calculate the child chain fee to submit. For each chain your contract runner is expected to submit transactions, you can specify a different value. Example: to set the rate to 2.5 IGNIS per ARDR, set this property to 250000000. i.e. 2.5 IGNIS specified in NQT.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;validator&amp;quot;&#039;&#039;&#039; - if set to true (default: false), the contract runner will watch for transactions submitted by other contract runners and will try to verify that the other contract runner indeed runs the contract stored on the blockchain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;validatorSecretPhrase&amp;quot;&#039;&#039;&#039; - when &#039;&#039;validator&#039;&#039; is set to true, and another contract runner is using an account under account control, specify here the secret phrase of the controlling account. Your contract runner will intercept the transactions submitted by the other contract runner, repeat the calculations, and if it receives the same result, will submit an approval transaction for the transaction submitted by the other contract runner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;catchUpInterval&amp;quot;&#039;&#039;&#039; - a timeout value specified in seconds (default: 3600 i.e. one hour). During blockchain download, the contract runner will only submit transactions when downloading a block with a timestamp later than the current time minus the defined &#039;&#039;catchUpInterval&#039;&#039;. The purpose of this setting is to prevent a contract runner from flooding the unconfirmed transaction pool with duplicate transactions during blockchain download.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;seed&amp;quot;&#039;&#039;&#039; - supply random seed to the contract runner formatted as hex string (default: the public key of the contract account which is useless from randomness perspective). Convert any random value to hex string using the hexConvert API and specify the resulting hex string value as a seed. A seed of less than 16 bytes can be easily brute-forced so make sure your seed is longer. Keep your seed secret, it can be used in the future to validate your contract execution.&lt;br /&gt;
&lt;br /&gt;
==== Contract Runner Contract Specific Settings ==== &amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
Note that in most cases there is no need to specify these parameters. Always prefer using contract setup parameters that are stored on the blockchain itself except when a contract parameter has to remain secret (for example, a passphrase or some secret credentials to a 3rd party service) or the size of the parameters exceed the maximum for the contract reference transaction (160 bytes). [[#Contract_Parameters|More information about the different parameter types]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
In the cases when this configuration is needed it is recommended to use the [[Node_Processes_Configuration|Node Processes UI]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:271--&amp;gt;&lt;br /&gt;
Alternatively, specify the configuration file used by the contract runner to load contract specific setup parameters by adding the property &#039;&#039;addon.contractRunner.configFile&#039;&#039; to &#039;&#039;nxt.properties&#039;&#039;, for example &amp;lt;code&amp;gt;addon.contractRunner.configFile=./conf/contracts.json&amp;lt;/code&amp;gt;, the specified path is relative to the [[faq#User directories per product and platform|user directory]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
A sample contract configuration file is provided in the ./addons/resources/contracts.json file under the installation folder. Copy this file to the conf folder under your project&#039;s [[faq#User directories per product and platform|user directory]] and configure it as follows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;params&amp;quot;&#039;&#039;&#039; - specify contract setup parameters per contract. Use this setting only for private setup parameters that you don&#039;t like to submit to the blockchain such as passwords, API keys, etc. Otherwise specify the setup parameters in the contract reference transaction as explained in the contract manager configuration. The contract parameters configured in the params object are accessed by the contract code using the context method &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;context.getContractRunnerConfigParams(getClass().getSimpleName())&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
Alternatively, create an inner interface decorated with the &amp;lt;code&amp;gt;@ContractParametersProvider&amp;lt;/code&amp;gt; annotation inside your contract and define a method with the annotation &amp;lt;code&amp;gt;@ContractRunnerParameter&amp;lt;/code&amp;gt; using the same name as the corresponding parameter in the contract runner configuration file.&lt;br /&gt;
For example see the &amp;lt;code&amp;gt;secretPhrases()&amp;lt;/code&amp;gt; method of the &amp;lt;code&amp;gt;LeaseRenewal&amp;lt;/code&amp;gt; sample contract which returns the array of passphrases specified in contracts.json &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;{ &amp;quot;params&amp;quot;: { &amp;quot;LeaseRenewal&amp;quot;: { &amp;quot;secretPhrases&amp;quot;: [ ... ] }}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Monitoring the contract runner ==== &amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
To verify that the contract runner has started, look for the message &amp;quot;ContractRunner Started&amp;quot; in the [[Faq#Where_to_find_the_node_log_file.3F|node log file]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
To check the status of the contract runner and deployed contracts, invoke the getSupportedContracts API. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
In response, you&#039;ll receive an array of contracts supported by the specific contract runner and their properties, and the contractAccount parameter which specifies the owner account of the contract runner, which is based on the passphrase or account id you specified in the contract runner configuration. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
In case the contract runner has failed to start, the getSupportedContracts API will return a descriptive error message.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
As of version 2.2.1 when your wallet is connected to a contract runner node, you can choose &amp;quot;Contracts&amp;quot; from the &amp;quot;Settings&amp;quot; menu to view information about the contract runner and the deployed contracts. Including information about invocation parameters for the contracts and validation used by the contract.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
[[file:Contracts.page.PNG|class=img-responsive|Contracts Page]]&lt;br /&gt;
&lt;br /&gt;
=== Contract Manager === &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
The contract manager is a command-line utility that manages the contract lifecycle. Its primary usage is to deploy contracts to the blockchain, use it also to add or change a reference to an existing contract, to update contract setup parameters, to remove old contract references, and to verify that a specific contract was compiled from a specific Java source file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Contract Manager Configuration ==== &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
The settings which control the operation of the contract manager are defined in the nxt.properties file, their documentation is specified in the ./conf/nxt-default.properties file under the installation folder in the &amp;quot;#### CONTRACT MANAGER ####&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
You should define the secret phrase for transactions submitted by the contract manager using the property &amp;lt;code&amp;gt;contract.manager.secretPhrase=[Secret Phrase]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
The contract manager connects to an Ardor node to use the Ardor APIs and submit transactions. By default, it connects to a node running on localhost. Use the &amp;lt;code&amp;gt;contract.manager.serverAddress=[Server Address]&amp;lt;/code&amp;gt; property to connect the contract manager to a remote node. The contract manager will never submit its passphrase to a remote node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
Use the optional &amp;lt;code&amp;gt;contract.manager.uploadParamsFile=[Path to configuration file]&amp;lt;/code&amp;gt; property, to configure the contract manager upload parameters configuration file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload Parameters Configuration File ==== &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
The upload parameters file contains a json array of contract definitions named &amp;quot;contracts&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Note: as of version 2.2, the contract upload configuration file is optional. Every setting in this file can be configured using a matching property in nxt.properties file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
For each contract specify the following parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;className&amp;quot;&#039;&#039;&#039;: the name of the class without package name, this name represents the class name loaded by the contract runner from the [[Data_Cloud|data cloud]] and the name of the contract reference. This is limited to 32 bytes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;packageName&amp;quot;&#039;&#039;&#039;: [optional, default to package specified as command line parameter] the Java package name of the contract class as specified in the package directive inside the source code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;filePath&amp;quot;&#039;&#039;&#039;: only in case the contract is deployed as a Jar file. Specify the path to the Jar file which will be deployed to the cloud data. If no filePath is specified the contract manager will attempt to load the class file specified by the className attribute from the classpath.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;params&amp;quot;&#039;&#039;&#039;: a Json object representing the contract setup parameters. These parameters are accessed by the contract through its context object or using the &amp;lt;code&amp;gt;@ContractParametersProvider&amp;lt;/code&amp;gt; interface methods decorated with &amp;lt;code&amp;gt;@ContractSetupParameter&amp;lt;/code&amp;gt; annotation. Notice that there&#039;s a limit of 160 bytes for the content of this field in the contract reference transaction. The contract manager will trim all redundant white spaces. You can also reduce the size of the parameter names. If you still cannot manage to fit all parameters into 160 bytes you can move some of them to the contract manager.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
The upload parameters for the sample contracts available out of the box are defined in the ./addons/resources/contract.uploader.json file under the installation folder. This file is automatically copied to the ./conf folder under the user directory in case it does not exist yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
Alternatively, every setting in the contract uploader file can be defined in nxt.properties using the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
Contract Manager settings for a specific contract - contract.[contractName].[setting]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
Contract setup parameters submitted to the blockchain - contract.[contractName].param.[setting]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
For example, to define the &amp;quot;frequency&amp;quot; setup parameter of the &amp;quot;AllForOnePayment&amp;quot; contract use the following property:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;contract.AllForOnePayment.param.frequency=6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting Up the Development Environment == &amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
Assuming all dependencies were installed, we can now open the Ardor contracts project inside IntelliJ and start developing contracts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
The IntelliJ project structure is provided as part of the &amp;quot;Contract Development Tools&amp;quot; package you selected when installing Ardor so there is no need to create a new project.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
If you installed Ardor into a read-only folder you will need to copy it to a folder for which you have write permissions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Windows - copy &amp;lt;code&amp;gt;&amp;quot;c:\Program Files\Ardor&amp;quot;&amp;lt;/code&amp;gt; to a writable location such as &amp;lt;code&amp;gt;c:\Users\&amp;lt;Your user&amp;gt;\Documents&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
Mac - copy &amp;lt;code&amp;gt;/Applications/ardor.app&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;ardor.app&amp;lt;/code&amp;gt; in your home folder (use cp -R from the terminal for recursive copy on Mac)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
Linux - this should not be an issue as long as you installed Ardor into a folder you own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
Alternatively, if you decided to develop your project in the same location where you installed Ardor, a future upgrade may override some of the project files so make a backup of your project before upgrading.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
Start IntelliJ, from the top menu choose &amp;quot;File-&amp;gt;Open&amp;quot;, in the resulting &amp;quot;Open file or project&amp;quot; dialog select the Ardor folder itself.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
[[File:ope.project.PNG|class=img-responsive]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
Select the Ardor module from the left pane by clicking the &amp;quot;1:Project&amp;quot; label.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
[[File:project1.PNG|class=img-responsive]]&lt;br /&gt;
[[File:project2.PNG|class=img-responsive]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
The Ardor module contains the sample contracts provided with installation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
Open the Ardor module settings by pressing F4 while the module itself is in focus or right click and choose &amp;quot;Open Module Settings&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
Select the &amp;quot;Project&amp;quot; link from the left pane and set the &amp;quot;Project SDK&amp;quot; to the Java JDK you installed earlier and set the &amp;quot;Project Language Level&amp;quot; to 8 and click &amp;quot;Ok&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
[[File:project5.png|class=img-responsive|border|Project structure]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
Build the Ardor module by selecting the &amp;quot;rebuild Module &#039;Ardor&#039;&amp;quot; from the IntelliJ &amp;quot;Build&amp;quot; menu (Ctrl+Shift+F9)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
Restart IntelliJ and reopen the project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
Under the Ardor module, there are two Java source roots, the first contains the sample contracts, the second contains the unit tests for the sample contracts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
For example, this is the HelloWorld sample contract.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
[[File:project4.PNG|class=img-responsive|HelloWorld sample]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
Your IntelliJ contracts project contains the following launchers, visible in the selection box on the top right.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;Ardor Local&amp;lt;/code&amp;gt; - runs the node using the existing node configuration&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;ContractRunnerSuite&amp;lt;/code&amp;gt; - invokes the automatic tests for all contracts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
You are now ready to develop your first contract&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contract Development == &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
A contract is composed of one or more Java class files possibly packaged into a Jar and possibly relying on other Jar files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
The main contract class has to extend the nxt.addons.AbstractContract class and implement one or more of the provided callback methods which are invoked by the Contract Runner in response to specific events as shown as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
{{TransactionTriggers}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
A contract should implement one or more of these callback methods.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Context Objects === &amp;lt;!--T:94--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
Each of the above callback methods, receive a context object, the context object provides various services to the contract and represents the interface between the contract and the blockchain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
Always prefer using the context object over calling directly to an internal blockchain method since every method provided by the context is guaranteed to maintain backward compatibility and not break your contract code when a new Ardor release is deployed. The services provided by the context object depend on the type of callback, these services are documented in the [https://testardor.jelurida.com/doc/ Javadoc] for the context class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== API callers === &amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
For each of the Ardor public APIs there is a specific Java caller class named the same as the API with a capital letter at the beginning and a &amp;quot;Call&amp;quot; prefix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
For example the call object for the getBlockchainStatus API is &amp;lt;code&amp;gt;GetBlockchainStatusCall&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
API invocation always follows the same pattern, create a caller instance, possibly set some API parameters, then invoke the call() method to receive a Json response as a JO object you can then work with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt;&lt;br /&gt;
For example: to invoke the getExecutedTransactions API from inside the contract:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
GetExecutedTransactionsCall request = GetExecutedTransactionsCall.create(2).height(height).type(0).subtype(0).recipient(context.getConfig().getAccount());&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
JO getExecutedTransactionsResponse = request.call();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
Always use the API callers to access information stored on the blockchain since these API callers represent the interface between your contract and the data stored on the blockchain. The API callers will remain compatible in future releases.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Submitting Transactions === &amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
In most cases, contracts should not save any internal state between contract invocations. To make changes to the blockchain state, contracts should submit transactions. To submit a transaction, invoke the API caller for the specific transaction type, then use the &amp;lt;code&amp;gt;context.createTransaction()&amp;lt;/code&amp;gt; method to submit the transaction to the blockchain.&lt;br /&gt;
Internally the createTransaction method implements local signing, fee calculation, and other complex processing that you as contract developer don&#039;t have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SendMoneyCall sendMoneyCall = SendMoneyCall.create(context.getChainOfTransaction().getId()).recipient(recipient).amountNQT(returnAmount);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
context.createTransaction(sendMoneyCall); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== What to return from the contract process methods ===&lt;br /&gt;
&lt;br /&gt;
The process methods for a contract return a JO object. This object encapsulates the response from the contract invocation which can be nothing, some error or one or more transactions. As explained above those responses should be built from the provided Context. The same Context provides a &amp;lt;code&amp;gt;getResponse()&amp;lt;/code&amp;gt; object that you can return.&lt;br /&gt;
&lt;br /&gt;
In general you can finish your contract method like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
return context.getResponse();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are only returning one transaction you can reuse the output of the &amp;lt;code&amp;gt;createTransaction()&amp;lt;/code&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
return context.createTransaction(sendMoneyCall);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contract Parameters === &amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are three types of contract parameters:&lt;br /&gt;
&lt;br /&gt;
* The invocation parameters, sometimes called runtime or transaction parameters, are the parameters sent with the transaction message triggering the contract. They can be private if sent on an encrypted message. The size is limited by the message size of the given transaction.&lt;br /&gt;
&lt;br /&gt;
* The setup parameters are specified in the contract reference transaction, usually when uploading the contract. They are public and limited to 160 bytes.&lt;br /&gt;
&lt;br /&gt;
* The contract runner parameters are specified when starting the contract runner. These are the only ones that are not on the blockchain, so they are private and have no size limits.&lt;br /&gt;
&lt;br /&gt;
==== How to access the different parameters ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:111--&amp;gt;&lt;br /&gt;
For contracts triggered by a transaction use &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;context.getRuntimeParams()&amp;lt;/syntaxhighlight&amp;gt; to load the specific invocation parameters or preferably define the parameter as a method of an inner interface decorated with @ContractParametersProvider annotation. Name the method the same as the parameter name and decorate it with the @ContractInvocationParameter annotation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:112--&amp;gt;&lt;br /&gt;
To load the contract setup parameters specified in the contract reference transaction use &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;context.getContractSetupParameters()&amp;lt;/syntaxhighlight&amp;gt; or preferably define the parameter as a method of an inner interface decorated with @ContractParametersProvider annotation. Name the method the same as the parameter name and decorate it with the @ContractSetupParameter annotation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:113--&amp;gt;&lt;br /&gt;
To load the contract runner parameters specified in the contract runner configuration file for the specific contract use &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;context.getContractRunnerConfigParams(getClass().getSimpleName())&amp;lt;/syntaxhighlight&amp;gt; or preferably define the parameter as a method of an inner interface decorated with @ContractParametersProvider annotation. Name the method the same as the parameter name and decorate it with the @ContractRunnerParameter annotation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
All the parameters getter methods return a JO object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:115--&amp;gt;&lt;br /&gt;
For usage example of the &amp;lt;code&amp;gt;@ContractParametersProvider&amp;lt;/code&amp;gt; decorated inner interface see the &amp;lt;code&amp;gt;HelloWorldForwarder&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;LeaseRenewal&amp;lt;/code&amp;gt; sample contracts.&lt;br /&gt;
&lt;br /&gt;
=== Working with Json === &amp;lt;!--T:116--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
All API callers and configuration parameters return a JO object which represents a Json object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:118--&amp;gt;&lt;br /&gt;
Use the JO object to query the Json object. Specifically use the getArray() method to obtain a JA object representing a Json Array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:119--&amp;gt;&lt;br /&gt;
There are plenty of usage examples in the sample contracts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Accessing External Resources === &amp;lt;!--T:120--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:121--&amp;gt;&lt;br /&gt;
Unlike most smart contract frameworks, lightweight contracts support access to external resources. Your contract can communicate as client of any external service which provides a Java client API library, or Http, XML, Json, Soap, ldap, or a similar interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:122--&amp;gt;&lt;br /&gt;
If necessary your contract can access code from 3rd party Jar files as long as these Jar files are included in the classpath of the contract runner node. You may add external Jar files to the classpath of the node by copying the files to the ./addons/lib folder under the installation folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:123--&amp;gt;&lt;br /&gt;
Learn mode about [https://medium.com/@lyaffe/oracle-contracts-on-ardor-94480bc4890b Oracle Contracts]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lightweight Contracts Design === &amp;lt;!--T:124--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:125--&amp;gt;&lt;br /&gt;
To learn more about the internal design of the lightweight contracts framework see [https://medium.com/@lyaffe/lightweight-contracts-design-f37fa5211bae this article]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Best Practices == &amp;lt;!--T:126--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Single Source File Multiple Classes === &amp;lt;!--T:127--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:128--&amp;gt;&lt;br /&gt;
To simplify contract development always attempt to concentrate all your source code into a single source file which defines the contract class itself and possibly additional inner classes. When deploying the contract to the blockchain the contract manager loads the main contract class and checks if it has inner classes. If there are no inner classes, the contract class file is deployed to the blockchain, otherwise, the contract manager packs the contract and all its inner classes into a Jar file and deploys the Jar file to the blockchain.&lt;br /&gt;
&lt;br /&gt;
=== Parameter Validation === &amp;lt;!--T:129--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:130--&amp;gt;&lt;br /&gt;
Always start your contract code with input validity checks. For example, if your contract is triggered by a sendMoney transaction, make sure the payment recipient is the contract account and that the payment uses the expected chain, that the payment amount is correct, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:131--&amp;gt;&lt;br /&gt;
Validate that all invocation parameters represent the data type you expect and are within their valid boundaries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:132--&amp;gt;&lt;br /&gt;
For your convenience you can decorate the contract &amp;lt;code&amp;gt;processTransaction&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;processVoucher&amp;lt;/code&amp;gt; methods with one of the following predefined annotations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:133--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;@ValidateTransactionType&amp;lt;/code&amp;gt; validates that the trigger transaction type is of one of the accepted types and is not of one of the rejected types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:134--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;@ValidateContractRunnerIsRecipient&amp;lt;/code&amp;gt; validates that the contract runner account is the recipient of the trigger transaction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:135--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;@ValidateChain&amp;lt;/code&amp;gt; validates that the chain of the trigger transaction is one of the accepted chains and is not one of the excluded chains.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:136--&amp;gt;&lt;br /&gt;
See usage example in the &amp;lt;code&amp;gt;RandomPayment&amp;lt;/code&amp;gt; contract.&lt;br /&gt;
&lt;br /&gt;
=== Stateless Contracts === &amp;lt;!--T:137--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:138--&amp;gt;&lt;br /&gt;
In most cases, contracts should only store state information in the blockchain itself or as setup parameters. If you are using member variables in the contract class itself you might be doing something wrong. Bare in mind that the contract runner may restart at any moment and that your contract callbacks may execute in parallel with other contracts. Learn more about [https://medium.com/coinmonks/stateful-vs-stateless-blockchain-contracts-bcd1b0c25ff stateless contracts]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Internal Blockchain Functionality === &amp;lt;!--T:139--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:140--&amp;gt;&lt;br /&gt;
Do not invoke public methods of the blockchain directly. Always attempt to use the context object and the caller APIs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:141--&amp;gt;&lt;br /&gt;
If you are missing some essential function or service, let us know and we will add it in the next release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Random Data === &amp;lt;!--T:142--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:143--&amp;gt;&lt;br /&gt;
If your contract requires random data, make sure to define a secret random seed in the contract runner configuration. See the following article about our approach to [https://hackernoon.com/random-number-generator-in-contracts-44abfe48240d random number generation]&lt;br /&gt;
&lt;br /&gt;
== Contract Deployment == &amp;lt;!--T:144--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:145--&amp;gt;&lt;br /&gt;
As explained above, contract deployment is a two-step process, first the contract code is deployed using a cloud data transaction then a contract reference transaction is submitted to provide an entry point to the correct version of the contract. While this deployment process can be accomplished manually using the Ardor APIs, it is much simpler to perform the deployment using the contract manager utility.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:146--&amp;gt;&lt;br /&gt;
First [[#Contract Manager|configure the contract manager]] then use either the contract manager IntelliJ plugin (recommended) or invoke the command line utility (ContractManager.bat or contractManager.sh) from the command line to view the available options.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:147--&amp;gt;&lt;br /&gt;
In both configurations, the contract manager connects to an existing full node, preferably running on your local workstation. Make sure your node is properly configured and fully synchronized with the blockchain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:148--&amp;gt;&lt;br /&gt;
Remember that the contract manager deploys transactions to the blockchain. For the transactions to confirm you need to wait for the next block.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Contract Manager IntelliJ Plugin === &amp;lt;!--T:149--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:150--&amp;gt;&lt;br /&gt;
The contract manager plugin provides a simple configuration dialog to invoke the contract manager utility from inside the IntelliJ IDE. You first need to install the contract manager plugin into your IDE, this process has to be repeated after every Ardor version upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Install the Plugin ==== &amp;lt;!--T:151--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:152--&amp;gt;&lt;br /&gt;
From the &amp;quot;File&amp;quot; menu choose the &amp;quot;Settings&amp;quot; option. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:153--&amp;gt;&lt;br /&gt;
From the resulting &amp;quot;Settings&amp;quot; dialog select the plugins page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:155--&amp;gt;&lt;br /&gt;
[[File:IntelliJ Plugin Installation1.jpg|class=img-responsive|Settings]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:156--&amp;gt;&lt;br /&gt;
Select the cogwheel menu on the right and click &amp;quot;Install plugin from disk&amp;quot; menu item. Using the resulting file dialog select the ContractManagerPlugin-2.3.0.zip file from the Ardor installation folder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:160--&amp;gt;&lt;br /&gt;
[[File:IntelliJ Plugin Installation2 2.jpg|class=img-responsive]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:161--&amp;gt;&lt;br /&gt;
You should now see an &amp;quot;Ardor Contract Manager&amp;quot; entry listed in the plugins list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:162--&amp;gt;&lt;br /&gt;
Restart IntelliJ to complete the installation. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:163--&amp;gt;&lt;br /&gt;
The contract manager plugin is now installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:164--&amp;gt;&lt;br /&gt;
Whenever there is a new version of the plugin, uninstall the old one and repeat the process above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Use the Plugin ==== &amp;lt;!--T:165--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:166--&amp;gt;&lt;br /&gt;
To use the contract manager plugin you must first start your Ardor node. One simple way to do so is to run the node using the &amp;quot;Ardor Local&amp;quot; launcher from inside the IntelliJ IDE. If your node is offline while running the contract manager, the contract manager will display the message &amp;quot;Cannot connect to http://&amp;lt;address&amp;gt;:&amp;lt;port&amp;gt;/nxt make sure the node is running&amp;quot; and terminate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:167--&amp;gt;&lt;br /&gt;
Edit the runtime configurations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:168--&amp;gt;&lt;br /&gt;
[[File:plugin4a.png|class=img-responsive]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:169--&amp;gt;&lt;br /&gt;
Add a new configuration of type &amp;quot;Ardor Contract Manager&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:170--&amp;gt;&lt;br /&gt;
[[File:plugin5.png|class=img-responsive|Ardor Contract Manager]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:171--&amp;gt;&lt;br /&gt;
Name the configuration and define the contract manager options&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:172--&amp;gt;&lt;br /&gt;
[[File:plugin6.png|class=img-responsive|border|Contract Manager Options]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:173--&amp;gt;&lt;br /&gt;
Run the configuration as usual&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:174--&amp;gt;&lt;br /&gt;
[[File:plugin7.png|class=img-responsive]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:175--&amp;gt;&lt;br /&gt;
Review diagnostic messages logged to the IntelliJ console at the bottom of the screen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Contract Manager Command Line Utility === &amp;lt;!--T:176--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Examples ==== &amp;lt;!--T:177--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:178--&amp;gt;&lt;br /&gt;
Deploy a new version of the ForgingReward contract:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:179--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;contractManager.bat -u -n ForgingReward -p com.jelurida.ardor.contracts&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:180--&amp;gt;&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:181--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:182--&amp;gt;&lt;br /&gt;
Contract class com.jelurida.ardor.contracts.ForgingReward uploaded 5f4afbead4f7f887082a36dd97df72f6ed7f980c1b3e99eccb7d67bb150c9748&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:183--&amp;gt;&lt;br /&gt;
Contract reference registered ForgingReward={&amp;quot;rewardArdor&amp;quot;:&amp;quot;true&amp;quot;,&amp;quot;interval&amp;quot;:5,&amp;quot;rewardNxt&amp;quot;:&amp;quot;true&amp;quot;,&amp;quot;rewardChain&amp;quot;:&amp;quot;IGNIS&amp;quot;,&amp;quot;rewardAmountNQT&amp;quot;:150000000} for contract chain: IGNIS, full hash: 5f4afbead4f7f887082a36dd97df72f6ed7f980c1b3e99eccb7d67bb150c9748&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:184--&amp;gt;&lt;br /&gt;
List deployed contracts for a specific account:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:185--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;contractManager.bat -l -a ARDOR-XK4R-7VJU-6EQG-7R335&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:186--&amp;gt;&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:187--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;contract&amp;quot;:{&amp;quot;chain&amp;quot;:2,&amp;quot;transactionFullHash&amp;quot;:&amp;quot;ff374385044519900147c145beeaa07520f0a9850b95d84b835c88ff1ce81015&amp;quot;},&amp;quot;name&amp;quot;:&amp;quot;DistributedRandomNumberGenerator&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;10806939862175194746&amp;quot;,&amp;quot;params&amp;quot;:&amp;quot;{}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:188--&amp;gt;&lt;br /&gt;
{&amp;quot;contract&amp;quot;:{&amp;quot;chain&amp;quot;:2,&amp;quot;transactionFullHash&amp;quot;:&amp;quot;5f4afbead4f7f887082a36dd97df72f6ed7f980c1b3e99eccb7d67bb150c9748&amp;quot;},&amp;quot;name&amp;quot;:&amp;quot;ForgingReward&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;10360831005888949167&amp;quot;,&amp;quot;params&amp;quot;:&amp;quot;{\&amp;quot;rewardArdor\&amp;quot;:\&amp;quot;true\&amp;quot;,\&amp;quot;interval\&amp;quot;:5,\&amp;quot;rewardNxt\&amp;quot;:\&amp;quot;true\&amp;quot;,\&amp;quot;rewardChain\&amp;quot;:\&amp;quot;IGNIS\&amp;quot;,\&amp;quot;rewardAmountNQT\&amp;quot;:150000000}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:189--&amp;gt;&lt;br /&gt;
{&amp;quot;contract&amp;quot;:{&amp;quot;chain&amp;quot;:2,&amp;quot;transactionFullHash&amp;quot;:&amp;quot;8292a5e3a9bd209a85b3a865be8175d1c762393dac33e84a3113e19a7efc0e39&amp;quot;},&amp;quot;name&amp;quot;:&amp;quot;NewAccountFaucet&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;4615352619232966745&amp;quot;,&amp;quot;params&amp;quot;:&amp;quot;{\&amp;quot;thresholdAmountNQT\&amp;quot;:72000000000,\&amp;quot;chain\&amp;quot;:2,\&amp;quot;thresholdBlocks\&amp;quot;:1440,\&amp;quot;faucetAmountNQT\&amp;quot;:500000000}&amp;quot;}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:190--&amp;gt;&lt;br /&gt;
Delete contract reference for a specific account (the contract itself is not deleted)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:191--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;contractManager.bat -d -a ARDOR-XK4R-7VJU-6EQG-7R335 -n ForgingReward&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:192--&amp;gt;&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:193--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Contract reference 10360831005888949167 deleted for account ARDOR-XK4R-7VJU-6EQG-7R335 contract name ForgingReward&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:194--&amp;gt;&lt;br /&gt;
Add or update contract reference&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:195--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;contractManager.bat -r -h 5f4afbead4f7f887082a36dd97df72f6ed7f980c1b3e99eccb7d67bb150c9748 -n ForgingReward&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:196--&amp;gt;&lt;br /&gt;
(the hash parameter -h is the full hash of the cloud data transaction storing the contract version you would like to reference)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:197--&amp;gt;&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:198--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Contract reference registered ForgingReward={&amp;quot;rewardArdor&amp;quot;:&amp;quot;true&amp;quot;,&amp;quot;interval&amp;quot;:5,&amp;quot;rewardNxt&amp;quot;:&amp;quot;true&amp;quot;,&amp;quot;rewardChain&amp;quot;:&amp;quot;IGNIS&amp;quot;,&amp;quot;rewardAmountNQT&amp;quot;:150000000} for contract chain: IGNIS, full hash: 5f4afbead4f7f887082a36dd97df72f6ed7f980c1b3e99eccb7d67bb150c9748&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:199--&amp;gt;&lt;br /&gt;
Verify that a contract class in the blockchain was compiled from a specific source file, note that this action has to run using a Java JDK and not using the Java JRE provided with some of the installations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:200--&amp;gt;&lt;br /&gt;
Invoke the command below from the Ardor installation directory. The verification action has to run using an Oracle Java JDK.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:201--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;c:\Program Files\Java\jdk-10.0.2\bin\java.exe&amp;quot; -Djava.security.manager -Djava.security.policy=contractManager.policy -cp classes;lib\*;conf nxt.tools.ContractManager -v -h 4a8cd1c3fc86ad1cfbce4957142ff86c5d908af633bc6e38fddbf0be2418ff05 -s c:\Users\liory\ardor\addons\src\java\com\jelurida\ardor\contracts\HelloWorld.java&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:202--&amp;gt;&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:203--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Verification succeeded - class files are identical&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contract Security == &amp;lt;!--T:204--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:205--&amp;gt;&lt;br /&gt;
The contract runner relies on the Java JAAS framework to ensure that malicious contracts downloaded from the blockchain cannot attack the contract runner local workstation or the blockchain node operations. To achieve this, contracts are loaded using their own class loader and run in their own protection domain which forms a sandbox that limits the permissions assigned to contract code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:206--&amp;gt;&lt;br /&gt;
Most contracts should be able to run using default the permissions. However, if you need to make changes to security permissions, read on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:207--&amp;gt;&lt;br /&gt;
The main configuration files for controlling the contract security are ardor.policy and ardordesktop.policy, both files are standard [https://docs.oracle.com/javase/8/docs/technotes/guides/security/PolicyFiles.html Java policy files]. ardor.policy is the active policy file when running in command line mode and when running unit tests. ardordesktop.policy is a slightly more permissive policy file active when running the desktop wallet. In this document, we will always use ardor.policy, everything explained is also applicable to ardordesktop.policy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:208--&amp;gt;&lt;br /&gt;
By default, contracts are assigned the permissions defined in the virtual untrustedContractCode protection domain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:209--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
grant codeBase &amp;quot;file://untrustedContractCode&amp;quot; {&lt;br /&gt;
    permission java.io.FilePermission &amp;quot;${java.io.tmpdir}*&amp;quot;, &amp;quot;read,write,delete&amp;quot;;&lt;br /&gt;
    permission java.util.PropertyPermission &amp;quot;java.io.tmpdir&amp;quot;, &amp;quot;read&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:210--&amp;gt;&lt;br /&gt;
The defined permissions grant the contract code access to the temporary folder on the contract runner workstation. The contract can freely read, write, delete files in this folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:211--&amp;gt;&lt;br /&gt;
In addition, contracts are always allowed to connect to any internet address.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:212--&amp;gt;&lt;br /&gt;
See the &amp;lt;code&amp;gt;AllowedActions&amp;lt;/code&amp;gt; contract for code samples permitted by the policy file and the &amp;lt;code&amp;gt;ForbiddenActions&amp;lt;/code&amp;gt; for code samples not permitted by default. Neither of these samples cover the full list of permitted and non-permitted actions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Granting Additional Contract Permissions === &amp;lt;!--T:213--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:214--&amp;gt;&lt;br /&gt;
At the moment all sample contracts are designed to run using the default untrusted contract permissions, however, developing contracts with elevated permissions is supported. A contract runner node operator can grant additional permissions by adding these permissions to the untrustedContractCode protection domain of ardor.policy, but this is discouraged since it will grant these permissions to all the contracts run by this contract runner. Instead, we recommend elevating permissions per contract signer account or per specific contract.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:215--&amp;gt;&lt;br /&gt;
To grant additional permissions for contracts signed by a specific account, define the public key of the account that submitted the contract to the blockchain, in a new protection domain entry using the &amp;quot;signedBy&amp;quot; token. The public key should be specified in hex string format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:216--&amp;gt;&lt;br /&gt;
For example the following ardor.policy section grants additional permissions for contracts submitted to the blockchain by the account whose public key is the following:&amp;lt;pre&amp;gt;112e0c5748b5ea610a44a09b1ad0d2bddc945a6ef5edc7551b80576249ba585b&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:217--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
grant codeBase &amp;quot;file://untrustedContractCode&amp;quot; signedBy &amp;quot;112e0c5748b5ea610a44a09b1ad0d2bddc945a6ef5edc7551b80576249ba585b&amp;quot; {&lt;br /&gt;
    permission nxt.util.security.BlockchainPermission &amp;quot;db&amp;quot;;&lt;br /&gt;
    permission nxt.util.security.BlockchainPermission &amp;quot;getBlockchain&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:218--&amp;gt;&lt;br /&gt;
Similarly to grant additional permissions to a specific contract use the &amp;quot;principal nxt.util.security.TransactionPrincipal&amp;quot; setting followed by the contract&#039;s transaction full hash or the hash of the whole tagged data as saved in the blockchain or the hash of the contract class/jar itself.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:219--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
grant codeBase &amp;quot;file://untrustedContractCode&amp;quot; principal nxt.util.security.TransactionPrincipal &amp;quot;df15278b53c5c24ccb179302834608b50b94c3e91c97ffa0510357e35fec919b&amp;quot; {&lt;br /&gt;
    permission nxt.util.security.BlockchainPermission &amp;quot;db&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:220--&amp;gt;&lt;br /&gt;
To monitor the permissions assigned to your contract in runtime, use the following Java command line flag &amp;lt;code&amp;gt;-Djava.security.debug=&amp;quot;access&amp;quot;&amp;lt;/code&amp;gt;. Additional information about protection domains can be obtained using &amp;lt;code&amp;gt;-Djava.security.debug=&amp;quot;access,domain&amp;quot;&amp;lt;/code&amp;gt; but this creates very verbose output.&lt;br /&gt;
Look in the generated log for permissions which are marked as &amp;quot;denied&amp;quot; and use the diagnostic information to learn the reason for denial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:221--&amp;gt;&lt;br /&gt;
To configure the ardor.policy file you can use any text editor or IntelliJ IDE but be warned that the syntax of this file is very strict, therefore every small typo will render the file useless and remove all permissions to all code resulting in errors when starting the node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:222--&amp;gt;&lt;br /&gt;
Alternatively use the graphical [https://docs.oracle.com/javase/tutorial/security/tour1/wstep1.html policytool] provided with the Java JRE for making changes to the policy file without the risk of creating syntax errors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:223--&amp;gt;&lt;br /&gt;
To temporarily disable all permission checks add the following property to the nxt.properties file:&lt;br /&gt;
&amp;lt;code&amp;gt;nxt.disableSecurityPolicy=true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checking Contract Permissions === &amp;lt;!--T:224--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:225--&amp;gt;&lt;br /&gt;
A contract that requires elevated permissions from the contract runner should start by checking that these permissions were granted, if not, it should fail gracefully. Use the &amp;lt;code&amp;gt;context.isPermissionGranted()&amp;lt;/code&amp;gt; API to check if a specific permission is granted. See the DatabaseAccess sample contract for example how to check for permissions. If a required permission is not granted, log an error message and return.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sample Contracts == &amp;lt;!--T:226--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:227--&amp;gt;&lt;br /&gt;
There are multiple sample contracts included with source code as part of the product installation. The sample contracts are documented using javadoc and internal comments. Always use the sample contracts as reference to understand correct coding techniques and best practices.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:228--&amp;gt;&lt;br /&gt;
[https://testardor.jelurida.com/doc/com/jelurida/ardor/contracts/package-summary.html &#039;&#039;Javadoc documentation&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:272--&amp;gt;&lt;br /&gt;
In the next sub-sections it will be described several sample contracts. All the examples can be found in the [https://bitbucket.org/Jelurida/ardor/src/master/addons/test/java/com/jelurida/ardor/contracts/ contracts folder of the official repository].&lt;br /&gt;
&lt;br /&gt;
=== Trading bot (CoinExchangeTradingBot.java) === &amp;lt;!--T:273--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:274--&amp;gt;&lt;br /&gt;
Trading bot &amp;lt;code&amp;gt;CoinExchangeTradingBot.java&amp;lt;/code&amp;gt; is a contract which performs market making on the coin exchange and asset exchange. Contract runners can define the holdings (coin or asset) on which to submit buy and sell orders and the percentage difference from a base exchange rate loaded from coinmarketcap, which serves as a sample data source. The bot can be configured to compete with other traders or issue orders according to the base exchange rate to provider liquidity.&lt;br /&gt;
&lt;br /&gt;
=== Account Balance Notifier (AccountBalanceNotifier.java) === &amp;lt;!--T:275--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:276--&amp;gt;&lt;br /&gt;
The account balance notifier &amp;lt;code&amp;gt;AccountBalanceNotifier.java&amp;lt;/code&amp;gt; monitors the account balances of configured holdings and raises an alert in case their holding balance drops below some minimum limit. The notifier can be used to monitor an account performing market making to alert the operator in case a holding balance is exhausted.&lt;br /&gt;
&lt;br /&gt;
=== Chain Monitor Contract (ChainMonitor.java) === &amp;lt;!--T:277--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:278--&amp;gt;&lt;br /&gt;
The chain monitor contract &amp;lt;code&amp;gt;ChainMonitor.java&amp;lt;/code&amp;gt; monitors specific aspects of the blockchain operations. It submits an alert to one or more notification services in case a problem with the blockchain operation is detected.&lt;br /&gt;
&lt;br /&gt;
=== Notification service contracts (SlackNotifier.java, TelegramNotifier) === &amp;lt;!--T:279--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:280--&amp;gt;&lt;br /&gt;
Notification service contracts &amp;lt;code&amp;gt;SlackNotifier.java, TelegramNotifier&amp;lt;/code&amp;gt; are utility contracts used for posting messages from other contracts to Slack and Telegram respectively.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contract Trigger Transaction == &amp;lt;!--T:229--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:230--&amp;gt;&lt;br /&gt;
To trigger the execution of a deployed contract, any account can submit a transaction with a special message attachment. The message should be prunable (leave &amp;quot;Message is Never Deleted&amp;quot; unchecked in the wallet) and should be formatted as Json, can be either encrypted or plain text, should identify the contract to execute and optionally provide contract specific invocation parameters.&lt;br /&gt;
&lt;br /&gt;
=== Examples === &amp;lt;!--T:231--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:232--&amp;gt;&lt;br /&gt;
Trigger the HelloWorld contract by sending a message transaction to the contract runner account with the text:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:233--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;{“contract”:”HelloWorld”}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:234--&amp;gt;&lt;br /&gt;
Trigger the SplitPayment contract and describe how to split the payment, by sending a payment transaction to the contract and add the following attached message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:235--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;{&amp;quot;contract&amp;quot;:&amp;quot;SplitPayment&amp;quot;,&amp;quot;params&amp;quot;:{&amp;quot;ARDOR-SZKV-J8TH-GSM9-9LKV6&amp;quot;:&amp;quot;0.2&amp;quot;,&amp;quot;ARDOR-9KZM-KNYY-QBXZ-5TD8V&amp;quot;:&amp;quot;0.5&amp;quot;,&amp;quot;ARDOR-E93F-7E8Z-BHJ8-A65RG&amp;quot;:&amp;quot;0.3&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:236--&amp;gt;&lt;br /&gt;
Note that the &amp;quot;params&amp;quot; token in the message is a Json object by itself, the data in the params object is contract specific. Consult the contract author as to which params need to be submitted and in which format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:237--&amp;gt;&lt;br /&gt;
When a trigger transaction is submitted, all active contract runners will process this transaction. Whether or not the contract will actually process the transaction depends on the contract itself. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:238--&amp;gt;&lt;br /&gt;
For example, most contracts will only process payments submitted to their contract runner account and ignore payments made to other accounts but this depends on the contract logic. Contracts can choose to process certain transaction types, certain chains, and certain recipient accounts based on their own internal logic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Oracle Contracts - Interface with External Systems == &amp;lt;!--T:239--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:240--&amp;gt;&lt;br /&gt;
One of the powerful features of Lightweight Contracts is their ability to interface with external systems to load data and register it on the blockchain and to save data to an external system based on blockchain data. Interfacing with external systems is a trade-off between decentralization and utility. There are cases where a specific contract runner can load data from an external system such as exchange rate or personal data that no other contract runner can validate. There is no choice for users but to trust the contract runner not to manipulate this data the same way users trust a centralized system. Still, once the data is registered on the blockchain, it is digitally signed and timestamped by the contract runner account and can no longer change. So as long as the contract runner is a trusted entity information provided by it can be used safely.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:241--&amp;gt;&lt;br /&gt;
However, there are few steps contract developers need to take to increase the reliability of Oracle contracts, as a developer, you should consider that contracts should be designed to be idempotent (i.e. can run multiple times on the same data and produce the same result). For example, a contract can run once when a trigger transaction is received, then again if the node switches to a better fork and the trigger transaction is included in a different fork, and again in case the contract runner is re-downloading the blockchain. Ideally, in all these cases the contract should reproduce the exact same output transactions. The blockchain itself protects against including duplicate transactions in the blockchain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:242--&amp;gt;&lt;br /&gt;
However, when relying on external data there is no way to guarantee that transaction data won&#039;t change between invocations. Therefore developers of Oracle contracts should always look for duplicate transactions generated by the contract based on the same trigger transaction but with different data (if the data is the same, duplicate transactions will be discarded by the blockchain itself).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:243--&amp;gt;&lt;br /&gt;
Contract developers need to override the following method:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:244--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;public &amp;lt;T extends TransactionResponse&amp;gt; boolean isDuplicate(T myTransaction, List&amp;lt;T&amp;gt; existingUnconfirmedTransactions) { ... }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:245--&amp;gt;&lt;br /&gt;
The method accepts the transaction currently submitted by the contract and a list of transactions already waiting to be included in the blockchain. The contract should implement contract specific policy to identify if the new transaction duplicates an existing transaction. If it does, the method should return true value to instruct the contract runner not to submit the new transaction to the blockchain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:246--&amp;gt;&lt;br /&gt;
Example for Oracle contracts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:247--&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;IgnisArdorRates&amp;lt;/code&amp;gt; contract uses the Bittrex exchange APIs to calculate the market rate between Ardor and Ignis and compare it to the decentralized coin exchange market rate. For this contract duplicates are no a real risk, at worst, there will be slightly different exchange rates registered on the blockchain on the same block.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:248--&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;LiberlandCitizenRegistry&amp;lt;/code&amp;gt; contract uses the Liberland APIs to load citizen data. There is a small risk that the citizen data will change between invocations of this contract so a duplicate check makes sense before submitting a transaction.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing and Debugging your Contracts == &amp;lt;!--T:249--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:250--&amp;gt;&lt;br /&gt;
Testing and debugging your contract is supported by the IntelliJ IDE using the standard tools used to test and debug any Java program.&lt;br /&gt;
&lt;br /&gt;
=== Unit Tests === &amp;lt;!--T:251--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:252--&amp;gt;&lt;br /&gt;
For each of the sample contracts provided with the product, there is also a matching unit test class with the same name followed by a &amp;quot;Test&amp;quot; postfix. For example contract &amp;lt;code&amp;gt;HelloWorld&amp;lt;/code&amp;gt; has a unit test named &amp;lt;code&amp;gt;HelloWorldTest&amp;lt;/code&amp;gt;. &lt;br /&gt;
Unit tests rely on the junit framework, each unit test starts from a clean blockchain copy, which only includes the Genesis block, it then deploys a contract, perform some actions on the contract and tests the output transactions. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:253--&amp;gt;&lt;br /&gt;
All sample unit tests are grouped into the ContractRunnerSuite, the IntelliJ project provided by the installation includes a predefined launcher which runs this test suite. The first run will generate the unit tests blockchain database. Subsequent runs should work faster. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:254--&amp;gt;&lt;br /&gt;
Our recommendation is that whenever you design a new contract you always design a matching unit test class to test it. Whenever you make changes to the contract make sure that all unit tests for the contract pass without errors. Unit tests also enable you to design your contract without deploying it to the blockchain where it is visible to others.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Debugging your Contracts === &amp;lt;!--T:255--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:256--&amp;gt;&lt;br /&gt;
You can easily debug your contracts by placing a breakpoint inside the contract code. You can then run the unit test which test your contract in debug mode and debug the contract. Another option is to deploy your contract to the testnet then run your node using the &amp;quot;Ardor Local&amp;quot; launcher in debug mode. This will let you debug your contract exactly as it is executed in runtime. Since contracts are simply Java programs you can use any common debugging technique available by IntelliJ such as conditional breakpoints etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Obtaining more Diagnostic information === &amp;lt;!--T:257--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:258--&amp;gt;&lt;br /&gt;
The contract runner and the contracts it runs, log information about their operation in the normal Ardor log.&lt;br /&gt;
&lt;br /&gt;
=== Libraries and Scripts ===&lt;br /&gt;
The libraries and scripts for compiling, testing and deploying Ardor lightweight contracts can be found in [https://bitbucket.org/Jelurida/ardor-library/src/master/ the libraries official repository]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Asset_Exchange&amp;diff=13004</id>
		<title>Asset Exchange</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Asset_Exchange&amp;diff=13004"/>
		<updated>2022-04-21T20:51:10Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Asset Exchange API&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, API, API documentation, Application program interface, Asset Exchange&lt;br /&gt;
|description=Description and examples of the Asset Exchange operations &lt;br /&gt;
}}&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
===Cancel Order=== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Cancel an existing asset order. POST only. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Request|Create Transaction Request]] for common parameters.&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is either &#039;&#039;cancelBidOrder&#039;&#039; or &#039;&#039;cancelAskOrder&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain that will be used for the operation&lt;br /&gt;
*&#039;&#039;order&#039;&#039; is the order ID of the order being canceled&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Response|Create Transaction Response]].&lt;br /&gt;
&lt;br /&gt;
====Cancel Order Example==== &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=cancelBidOrder&amp;amp;chain=2&amp;amp;secretPhrase=IWontTellYou&amp;amp;order=17185236428295897167&amp;amp;feeNQT=100000000&amp;amp;deadline=60|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=cancelBidOrder&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  secretPhrase=IWontTellYou&amp;amp;&lt;br /&gt;
  order=17185236428295897167&amp;amp;&lt;br /&gt;
  feeNQT=100000000&amp;amp;&lt;br /&gt;
  deadline=60&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;signatureHash&amp;quot;: &amp;quot;20264f33a06331f6a8d7c4362d0525aee25e4ef991653f14bbfb1b2beebba433&amp;quot;,&lt;br /&gt;
 &amp;quot;unsignedTransactionBytes&amp;quot;: &amp;quot;02153c6ed6013c0057fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143...&amp;quot;,&lt;br /&gt;
 &amp;quot;transactionJSON&amp;quot;: {&lt;br /&gt;
  &amp;quot;senderPublicKey&amp;quot;: &amp;quot;57fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143b473beec228f79ff93c&amp;quot;,&lt;br /&gt;
  &amp;quot;signature&amp;quot;: &amp;quot;30cf47942179f5969369699b548f5a3517ef7ff71b337db630ea5f8b6e740...&amp;quot;,&lt;br /&gt;
  &amp;quot;feeNQT&amp;quot;: &amp;quot;100000000&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;fullHash&amp;quot;: &amp;quot;725f441d9f50a9b2e02d780098a827b1015ec902199becd493bfa73a4843ae89&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;ecBlockId&amp;quot;: &amp;quot;196207598250363138&amp;quot;,&lt;br /&gt;
  &amp;quot;signatureHash&amp;quot;: &amp;quot;20264f33a06331f6a8d7c4362d0525aee25e4ef991653f14bbfb1b2beebba433&amp;quot;,&lt;br /&gt;
  &amp;quot;attachment&amp;quot;: {&lt;br /&gt;
   &amp;quot;version.BidOrderCancellation&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;order&amp;quot;: &amp;quot;17185236428295897167&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;senderRS&amp;quot;: &amp;quot;ARDOR-L6FM-89WK-VK8P-FCRBB&amp;quot;,&lt;br /&gt;
  &amp;quot;subtype&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;amountNQT&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
  &amp;quot;sender&amp;quot;: &amp;quot;15323192282528158131&amp;quot;,&lt;br /&gt;
  &amp;quot;ecBlockHeight&amp;quot;: 285586,&lt;br /&gt;
  &amp;quot;deadline&amp;quot;: 60,&lt;br /&gt;
  &amp;quot;transaction&amp;quot;: &amp;quot;12873909654136315762&amp;quot;,&lt;br /&gt;
  &amp;quot;timestamp&amp;quot;: 30830140,&lt;br /&gt;
  &amp;quot;height&amp;quot;: 2147483647&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;broadcasted&amp;quot;: true,&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 7640,&lt;br /&gt;
 &amp;quot;transactionBytes&amp;quot;: &amp;quot;02153c6ed6013c0057fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143b...&amp;quot;,&lt;br /&gt;
 &amp;quot;fullHash&amp;quot;: &amp;quot;725f441d9f50a9b2e02d780098a827b1015ec902199becd493bfa73a4843ae89&amp;quot;,&lt;br /&gt;
 &amp;quot;transaction&amp;quot;: &amp;quot;12873909654136315762&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Cancel Ask Order==== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Cancel_Order|Cancel Order]]. &lt;br /&gt;
&lt;br /&gt;
====Cancel Bid Order==== &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Cancel_Order|Cancel Order]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Delete Asset Property=== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
Permanently deletes a specified asset property. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Request|Create Transaction Request]] for common parameters.&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;deleteAssetProperty&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; is the chain of the operation. It is only available in the Ignis chain (2)&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID to delete the property &lt;br /&gt;
*&#039;&#039;property&#039;&#039; is the property name to be deleted.&lt;br /&gt;
*&#039;&#039;setter&#039;&#039; is the setter account of the property&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Response|Create Transaction Response]].&lt;br /&gt;
&lt;br /&gt;
====Delete Asset Property Example==== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=deleteAssetProperty&amp;amp;chain=2&amp;amp;asset=10982263251111884451&amp;amp;property=isIdentified&amp;amp;setter=ARDOR-X8ZN-WUJ2-SXY3-FBUYCsecretPhrase=IWontTellYou&amp;amp;|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=deleteAssetProperty&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  asset=10982263251111884451&amp;amp;&lt;br /&gt;
  property=isIdentified&amp;amp;&lt;br /&gt;
  setter=ARDOR-X8ZN-WUJ2-SXY3-FBUYC&lt;br /&gt;
  secretPhrase=IWontTellYou&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;minimumFeeFQT&amp;quot;: &amp;quot;10000000&amp;quot;,&lt;br /&gt;
    &amp;quot;signatureHash&amp;quot;: &amp;quot;c6039bd2a6d00b9f0960bf1fcd7e1e5f44cf121a7f3478a08f4ed848d01b6273&amp;quot;,&lt;br /&gt;
    &amp;quot;transactionJSON&amp;quot;: {&lt;br /&gt;
        &amp;quot;senderPublicKey&amp;quot;: &amp;quot;df21142bd38c04bd5c5c342c6ca36802f9de89b75b2a0a8cbd32d29dca481e5c&amp;quot;,&lt;br /&gt;
        &amp;quot;chain&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;signature&amp;quot;: &amp;quot;b88c933d9fd1e325738ddf0769e2cda0deddaed8a1607f3b3597843504dd770c6dfa848a8060dc190237983365e31b3dfd247336172877f982c1ddd955dd16dd&amp;quot;,&lt;br /&gt;
        &amp;quot;feeNQT&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;fullHash&amp;quot;: &amp;quot;02e3382805554d9caef831ebadd27acb8d689590ae813a5fab75e37004b29d7e&amp;quot;,&lt;br /&gt;
        &amp;quot;version&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;fxtTransaction&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;phased&amp;quot;: false,&lt;br /&gt;
        &amp;quot;ecBlockId&amp;quot;: &amp;quot;12919444854690185600&amp;quot;,&lt;br /&gt;
        &amp;quot;signatureHash&amp;quot;: &amp;quot;c6039bd2a6d00b9f0960bf1fcd7e1e5f44cf121a7f3478a08f4ed848d01b6273&amp;quot;,&lt;br /&gt;
        &amp;quot;attachment&amp;quot;: {&lt;br /&gt;
            &amp;quot;property&amp;quot;: &amp;quot;isIdentified&amp;quot;,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;-7464480822597667165&amp;quot;,&lt;br /&gt;
            &amp;quot;version.AssetPropertyDelete&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;true&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;senderRS&amp;quot;: &amp;quot;ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;quot;,&lt;br /&gt;
        &amp;quot;subtype&amp;quot;: 10,&lt;br /&gt;
        &amp;quot;amountNQT&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;sender&amp;quot;: &amp;quot;15382970207090678772&amp;quot;,&lt;br /&gt;
        &amp;quot;recipientRS&amp;quot;: &amp;quot;ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;quot;,&lt;br /&gt;
        &amp;quot;recipient&amp;quot;: &amp;quot;15382970207090678772&amp;quot;,&lt;br /&gt;
        &amp;quot;ecBlockHeight&amp;quot;: 449282,&lt;br /&gt;
        &amp;quot;deadline&amp;quot;: 15,&lt;br /&gt;
        &amp;quot;timestamp&amp;quot;: 26856670,&lt;br /&gt;
        &amp;quot;height&amp;quot;: 2147483647&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;unsignedTransactionBytes&amp;quot;: &amp;quot;02000000020a01decc99010f00df21142bd38c04bd5c5c342c6ca36802f9de89b75b2a0a8cbd32d29dca481e5cf49b0ea0e6497bd5000000000000000040420f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002db060080810e2ba5164bb30000000001a3b659883dd668980c69734964656e7469666965640474727565000000000000000000000000000000000000000000000000000000000000000000000000&amp;quot;,&lt;br /&gt;
    &amp;quot;broadcasted&amp;quot;: false,&lt;br /&gt;
    &amp;quot;requestProcessingTime&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;transactionBytes&amp;quot;: &amp;quot;02000000020a01decc99010f00df21142bd38c04bd5c5c342c6ca36802f9de89b75b2a0a8cbd32d29dca481e5cf49b0ea0e6497bd5000000000000000040420f0000000000b88c933d9fd1e325738ddf0769e2cda0deddaed8a1607f3b3597843504dd770c6dfa848a8060dc190237983365e31b3dfd247336172877f982c1ddd955dd16dd02db060080810e2ba5164bb30000000001a3b659883dd668980c69734964656e7469666965640474727565000000000000000000000000000000000000000000000000000000000000000000000000&amp;quot;,&lt;br /&gt;
    &amp;quot;fullHash&amp;quot;: &amp;quot;02e3382805554d9caef831ebadd27acb8d689590ae813a5fab75e37004b29d7e&amp;quot;,&lt;br /&gt;
    &amp;quot;bundlerRateNQTPerFXT&amp;quot;: &amp;quot;10000000&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Delete Asset Shares=== &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Permanently deletes a specified quantity of owned asset shares. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Request|Create Transaction Request]] for common parameters.&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;deleteAssetShares&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; is the chain of the operation (ie: Ignis)&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID  &lt;br /&gt;
*&#039;&#039;quantityQNT&#039;&#039; is the quantity (in QNT) of the asset to be deleted&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Response|Create Transaction Response]].&lt;br /&gt;
&lt;br /&gt;
====Delete Asset Shares Example==== &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=deleteAssetShares&amp;amp;chain=2&amp;amp;asset=5920455660623529270&amp;amp;quantityQNT=100&amp;amp;secretPhrase=IWontTellYou&amp;amp;feeNQT=100000000&amp;amp;deadline=60&amp;amp;broadcast=false|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=deleteAssetShares&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  asset=5920455660623529270&amp;amp;&lt;br /&gt;
  quantityQNT=100&amp;amp;&lt;br /&gt;
  secretPhrase=IWontTellYou&amp;amp;&lt;br /&gt;
  feeNQT=100000000&amp;amp;&lt;br /&gt;
  deadline=60&amp;amp;&lt;br /&gt;
  broadcast=false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;signatureHash&amp;quot;: &amp;quot;883599a340375c387e7b27a4f2c37f4ee960760b31e4b1a9c604663c6b84c708&amp;quot;,&lt;br /&gt;
    &amp;quot;transactionJSON&amp;quot;: {&lt;br /&gt;
      &amp;quot;senderPublicKey&amp;quot;: &amp;quot;373522bcd8904f4707472e590cbb67976d40e7af39650ea11cb2be5734cdf30c&amp;quot;,&lt;br /&gt;
      &amp;quot;signature&amp;quot;: &amp;quot;b91a664d9ee99399ebba913fa56abea26fbf4b84fe10fa4f76a29a8eae16810e61...&amp;quot;,&lt;br /&gt;
      &amp;quot;feeNQT&amp;quot;: &amp;quot;100000000&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: 2,&lt;br /&gt;
      &amp;quot;fullHash&amp;quot;: &amp;quot;8929fa9d30fd38c8811e079835b3959c1a3f8503df8999d5a858831ea6ba7741&amp;quot;,&lt;br /&gt;
      &amp;quot;version&amp;quot;: 1,&lt;br /&gt;
      &amp;quot;phased&amp;quot;: false,&lt;br /&gt;
      &amp;quot;ecBlockId&amp;quot;: &amp;quot;9535861265974556985&amp;quot;,&lt;br /&gt;
      &amp;quot;signatureHash&amp;quot;: &amp;quot;883599a340375c387e7b27a4f2c37f4ee960760b31e4b1a9c604663c6b84c708&amp;quot;,&lt;br /&gt;
      &amp;quot;attachment&amp;quot;: {&lt;br /&gt;
        &amp;quot;quantityQNT&amp;quot;: &amp;quot;100&amp;quot;,&lt;br /&gt;
        &amp;quot;version.AssetDelete&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;asset&amp;quot;: &amp;quot;5920455660623529270&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;senderRS&amp;quot;: &amp;quot;ARDOR-7A48-47JL-T7LD-D5FS3&amp;quot;,&lt;br /&gt;
      &amp;quot;subtype&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;amountNQT&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
      &amp;quot;sender&amp;quot;: &amp;quot;12745647715474645062&amp;quot;,&lt;br /&gt;
      &amp;quot;ecBlockHeight&amp;quot;: 757498,&lt;br /&gt;
      &amp;quot;deadline&amp;quot;: 60,&lt;br /&gt;
      &amp;quot;transaction&amp;quot;: &amp;quot;14427559791532059017&amp;quot;,&lt;br /&gt;
      &amp;quot;timestamp&amp;quot;: 80204814,&lt;br /&gt;
      &amp;quot;height&amp;quot;: 2147483647&lt;br /&gt;
    },&lt;br /&gt;
  &amp;quot;unsignedTransactionBytes&amp;quot;: &amp;quot;02170ed4c7043c00373522bcd8904f4707472e590cbb67976d40e7a...&amp;quot;,&lt;br /&gt;
  &amp;quot;broadcasted&amp;quot;: false,&lt;br /&gt;
  &amp;quot;requestProcessingTime&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;transactionBytes&amp;quot;: &amp;quot;02170ed4c7043c00373522bcd8904f4707472e590cbb67976d40e7af39650ea...&amp;quot;,&lt;br /&gt;
  &amp;quot;fullHash&amp;quot;: &amp;quot;8929fa9d30fd38c8811e079835b3959c1a3f8503df8999d5a858831ea6ba7741&amp;quot;,&lt;br /&gt;
  &amp;quot;transaction&amp;quot;: &amp;quot;14427559791532059017&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Dividend Payment=== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
Pay dividend to all shareholders of an asset. POST only. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Request|Create Transaction Request]] for common parameters.&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;dividendPayment&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID&lt;br /&gt;
*&#039;&#039;holdingType&#039;&#039; is a string representing the holding type (optional)&lt;br /&gt;
*&#039;&#039;holding&#039;&#039; is the holding ID (optional)&lt;br /&gt;
*&#039;&#039;height&#039;&#039; is the blockchain height at which asset holders shares will be counted (must be less than 1440 blocks in the past)&lt;br /&gt;
*&#039;&#039;amountNQTPerShare&#039;&#039; is dividend amount (in NQT per share of the asset)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Response|Create Transaction Response]].&lt;br /&gt;
&lt;br /&gt;
====Dividend Payment Example==== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=dividendPayment&amp;amp;chain=2&amp;amp;asset=3517042713515967694&amp;amp;height=161157&amp;amp;amountNQTPerShare=100000000|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=dividendPayment&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  asset=3517042713515967694&amp;amp;&lt;br /&gt;
  height=161157&amp;amp;&lt;br /&gt;
  amountNQTPerShare=100000000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;signatureHash&amp;quot;: &amp;quot;5d92fee3570b7b058ace2387f5b4eef4377ea738e6a6c2aabc06bd9f6871e4b4&amp;quot;,&lt;br /&gt;
 &amp;quot;unsignedTransactionBytes&amp;quot;: &amp;quot;02160feb0c023c0010f09c34f225d425306e5be55a49469081...&amp;quot;,&lt;br /&gt;
 &amp;quot;transactionJSON&amp;quot;: {&lt;br /&gt;
  &amp;quot;senderPublicKey&amp;quot;: &amp;quot;10f09c34f225d425306e5be55a4946908156072afbead4d574a512d7e086ef5c&amp;quot;,&lt;br /&gt;
  &amp;quot;signature&amp;quot;: &amp;quot;61e2398087b078bdba24021d909e937c2d5fe157a09fa3c82d910e7b5843e00cef2...&amp;quot;,&lt;br /&gt;
  &amp;quot;feeNQT&amp;quot;: &amp;quot;100000000&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;fullHash&amp;quot;: &amp;quot;27b52e61813b73fdf9ff3b1bacf3b344d3ed60e8c94db2c9d0518c8483150770&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;ecBlockId&amp;quot;: &amp;quot;17871828515938613022&amp;quot;,&lt;br /&gt;
  &amp;quot;signatureHash&amp;quot;: &amp;quot;5d92fee3570b7b058ace2387f5b4eef4377ea738e6a6c2aabc06bd9f6871e4b4&amp;quot;,&lt;br /&gt;
  &amp;quot;attachment&amp;quot;: {&lt;br /&gt;
   &amp;quot;version.DividendPayment&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;amountNQTPerQNT&amp;quot;: &amp;quot;100000000&amp;quot;,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;3517042713515967694&amp;quot;,&lt;br /&gt;
   &amp;quot;height&amp;quot;: 161157&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;senderRS&amp;quot;: &amp;quot;ARDOR-4VDY-LNVT-LMAY-FMCKA&amp;quot;,&lt;br /&gt;
  &amp;quot;subtype&amp;quot;: 6,&lt;br /&gt;
  &amp;quot;amountNQT&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
  &amp;quot;sender&amp;quot;: &amp;quot;15295723609781267838&amp;quot;,&lt;br /&gt;
  &amp;quot;ecBlockHeight&amp;quot;: 161151,&lt;br /&gt;
  &amp;quot;deadline&amp;quot;: 60,&lt;br /&gt;
  &amp;quot;transaction&amp;quot;: &amp;quot;18263006340784764199&amp;quot;,&lt;br /&gt;
  &amp;quot;timestamp&amp;quot;: 34401039,&lt;br /&gt;
  &amp;quot;height&amp;quot;: 2147483647&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;broadcasted&amp;quot;: true,&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 111,&lt;br /&gt;
 &amp;quot;transactionBytes&amp;quot;: &amp;quot;02160feb0c023c0010f09c34f225d425306e5be55a49469081560...&amp;quot;,&lt;br /&gt;
 &amp;quot;fullHash&amp;quot;: &amp;quot;27b52e61813b73fdf9ff3b1bacf3b344d3ed60e8c94db2c9d0518c8483150770&amp;quot;,&lt;br /&gt;
 &amp;quot;transaction&amp;quot;: &amp;quot;18263006340784764199&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Account Asset Count=== &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
Get the number of assets owned by an account given the account ID. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getAccountAssetCount&#039;&#039;&lt;br /&gt;
*&#039;&#039;account&#039;&#039; is the account ID&lt;br /&gt;
*&#039;&#039;height&#039;&#039; is the height of the blockchain to determine the asset count (optional, default is last block)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If table trimming is enabled (default), the height must be within 1440 blocks of the last block.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;numberOfAssets&#039;&#039; (N) is the number of assets owned by the account&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Account Asset Count Example==== &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAccountAssetCount&amp;amp;account=ARDOR-8N9W-TN4F-YA2S-H5B7R|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAccountAssetCount&amp;amp;&lt;br /&gt;
  account=ARDOR-8N9W-TN4F-YA2S-H5B7R&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 1,&lt;br /&gt;
 &amp;quot;numberOfAssets&amp;quot;: 3&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Account Assets=== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Get the assets owned by a given account in reverse quantity order. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getAccountAssets&#039;&#039;&lt;br /&gt;
*&#039;&#039;account&#039;&#039; is the account ID&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is an asset ID filter (optional)&lt;br /&gt;
*&#039;&#039;height&#039;&#039; is the blockchain height at which to retrieve balances (optional, default is the last block in the blockchain)&lt;br /&gt;
*&#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039; if asset information is to be included (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional) &lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If table trimming is enabled (default), the height must be within 1440 blocks of the last block.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;accountAssets&#039;&#039; (A) is an array of asset objects (unless the &#039;&#039;asset&#039;&#039; parameter is specified) with the following fields for each asset:&lt;br /&gt;
**&#039;&#039;quantityQNT&#039;&#039; (S) is the quantity (in QNT) of the asset&lt;br /&gt;
**&#039;&#039;unconfirmedQuantityQNT&#039;&#039; (S) is the unconfirmed quantity (in QNT) of the asset&lt;br /&gt;
**&#039;&#039;decimals&#039;&#039; (N) is the number of decimal places used by the asset (if &#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039;)&lt;br /&gt;
**&#039;&#039;name&#039;&#039; (S) is the asset name (if &#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039;)&lt;br /&gt;
**&#039;&#039;asset&#039;&#039; (S) is the asset ID&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Account Assets Example==== &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAccountAssets&amp;amp;account=ARDOR-4VNQ-RWZC-4WWQ-GVM8S|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAccountAssets&amp;amp;&lt;br /&gt;
  account=ARDOR-4VNQ-RWZC-4WWQ-GVM8S&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;accountAssets&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;68013764&amp;quot;,&lt;br /&gt;
   &amp;quot;unconfirmedQuantityQNT&amp;quot;: &amp;quot;68013764&amp;quot;,&lt;br /&gt;
   &amp;quot;decimals&amp;quot;: 0,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;Test&amp;quot;,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;17554243582654188572&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Account Current Order Ids=== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Get current asset order IDs given an account ID in reverse block height order. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is either &#039;&#039;getAccountCurrentBidOrderIds&#039;&#039; or &#039;&#039;getAccountCurrentAskOrderIds&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;account&#039;&#039; is the account ID&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is an asset ID filter (optional)&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first order ID to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last order ID to retrieve (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;bidOrderIds&#039;&#039; or &#039;&#039;askOrderIds&#039;&#039; (A) is an array of order IDs&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Account Current Order Ids Example==== &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAccountCurrentBidOrderIds&amp;amp;chain=2&amp;amp;account=ARDOR-L6FM-89WK-VK8P-FCRBB&amp;amp;asset=17554243582654188572|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAccountCurrentBidOrderIds&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  account=ARDOR-L6FM-89WK-VK8P-FCRBB&amp;amp;&lt;br /&gt;
  asset=17554243582654188572&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;bidOrderIds&amp;quot;: [&lt;br /&gt;
  &amp;quot;17185236428295897167&amp;quot;&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Get Account Current Ask Order Ids==== &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Get_Account_Current_Order_Ids|Get Account Current Order Ids]]. &lt;br /&gt;
&lt;br /&gt;
====Get Account Current Bid Order Ids==== &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Get_Account_Current_Order_Ids|Get Account Current Order Ids]]. &lt;br /&gt;
&lt;br /&gt;
===Get Account Current Orders=== &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
Get current asset orders given an account ID in reverse block height order. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is either &#039;&#039;getAccountCurrentBidOrders&#039;&#039; or &#039;&#039;getAccountCurrentAskOrders&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;account&#039;&#039; is the account ID&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is an asset ID filter (optional)&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first order to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last order to retrieve (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;bidOrders&#039;&#039; or &#039;&#039;askOrders&#039;&#039; (A) is an array of order objects (refer to [[Asset_Exchange#Get_Order|Get Order]] for details)&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Account Current Orders Example==== &amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAccountCurrentBidOrders&amp;amp;chain=2&amp;amp;account=ARDOR-L6FM-89WK-VK8P-FCRBB|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAccountCurrentBidOrders&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  account=ARDOR-L6FM-89WK-VK8P-FCRBB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;bidOrders&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
   &amp;quot;priceNQTPerShare&amp;quot;: &amp;quot;100&amp;quot;,&lt;br /&gt;
   &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-L6FM-89WK-VK8P-FCRBB&amp;quot;,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;17554243582654188572&amp;quot;,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;bid&amp;quot;,&lt;br /&gt;
   &amp;quot;account&amp;quot;: &amp;quot;15323192282528158131&amp;quot;,&lt;br /&gt;
   &amp;quot;order&amp;quot;: &amp;quot;17185236428295897167&amp;quot;,&lt;br /&gt;
   &amp;quot;height&amp;quot;: 285549&lt;br /&gt;
  }&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Get Account Current Ask Orders==== &amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Get_Account_Current_Orders|Get Account Current Orders]]. &lt;br /&gt;
&lt;br /&gt;
====Get Account Current Bid Orders==== &amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Get_Account_Current_Orders|Get Account Current Orders]].&lt;br /&gt;
&lt;br /&gt;
===Get All Assets=== &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
Get all assets in the exchange in reverse block height of creation order. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getAllAssets&#039;&#039;&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first asset to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last asset to retrieve (optional)&lt;br /&gt;
*&#039;&#039;includeCounts&#039;&#039; is &#039;&#039;true&#039;&#039; if the fields beginning with &#039;&#039;numberOf...&#039;&#039; are to be included (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;assets&#039;&#039; (A) is an array of asset objects (refer to [[Asset_Exchange#Get_Asset|Get Asset]])&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get All Assets Example==== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAllAssets&amp;amp;firstIndex=1&amp;amp;lastIndex=5|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAllAssets&amp;amp;&lt;br /&gt;
  firstIndex=1&amp;amp;&lt;br /&gt;
  lastIndex=5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;assets&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;quantityQNT&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-KZEK-7CVF-P88G-4DTRA&amp;quot;,&lt;br /&gt;
            &amp;quot;decimals&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;SNABCD&amp;quot;,&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;Mobile Phone 2&amp;quot;,&lt;br /&gt;
            &amp;quot;hasPhasingAssetControl&amp;quot;: false,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;9677555488988261487&amp;quot;,&lt;br /&gt;
            &amp;quot;account&amp;quot;: &amp;quot;2620860970609212817&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;quantityQNT&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
            &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-78Q5-GP4B-763B-7AGBG&amp;quot;,&lt;br /&gt;
            &amp;quot;decimals&amp;quot;: 5,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;Upps&amp;quot;,&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;Unidades de participação&amp;quot;,&lt;br /&gt;
            &amp;quot;hasPhasingAssetControl&amp;quot;: false,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;9896760296148674110&amp;quot;,&lt;br /&gt;
            &amp;quot;account&amp;quot;: &amp;quot;6279645661425212099&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;quantityQNT&amp;quot;: &amp;quot;10000&amp;quot;,&lt;br /&gt;
            &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-6645-FEKY-BC5T-EPW5D&amp;quot;,&lt;br /&gt;
            &amp;quot;decimals&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;AssetP2&amp;quot;,&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;{\&amp;quot;name\&amp;quot;:\&amp;quot;Lorem ipsum Paapp\&amp;quot;,\&amp;quot;channel\&amp;quot;:\&amp;quot;Not Panamerica\&amp;quot;,\&amp;quot;fullhash\&amp;quot;:\&amp;quot;b1147b93d37ada612de0934722d30d58d0b2efc6212196b4064e7dd07a54e712\&amp;quot;}&amp;quot;,&lt;br /&gt;
            &amp;quot;hasPhasingAssetControl&amp;quot;: false,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;9908792094168526059&amp;quot;,&lt;br /&gt;
            &amp;quot;account&amp;quot;: &amp;quot;14235761234537484355&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;quantityQNT&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-WFWX-MMGU-AMTG-D5FTR&amp;quot;,&lt;br /&gt;
            &amp;quot;decimals&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;MstrTkn&amp;quot;,&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;Master token&amp;quot;,&lt;br /&gt;
            &amp;quot;hasPhasingAssetControl&amp;quot;: false,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;10164872532453123955&amp;quot;,&lt;br /&gt;
            &amp;quot;account&amp;quot;: &amp;quot;13539407748888672157&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;quantityQNT&amp;quot;: &amp;quot;50000000&amp;quot;,&lt;br /&gt;
            &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-APM5-TLV8-J3KY-6T3JG&amp;quot;,&lt;br /&gt;
            &amp;quot;decimals&amp;quot;: 2,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;PeterTest&amp;quot;,&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;Peter Wallet Test&amp;quot;,&lt;br /&gt;
            &amp;quot;hasPhasingAssetControl&amp;quot;: false,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;10260918643336798387&amp;quot;,&lt;br /&gt;
            &amp;quot;account&amp;quot;: &amp;quot;5134167126598506083&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;requestProcessingTime&amp;quot;: 0&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get All Open Orders=== &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
Get all open bid/ask orders in reverse block height order. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is either &#039;&#039;getAllOpenBidOrders&#039;&#039; or &#039;&#039;getAllOpenAskOrders&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first order to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last order to retrieve (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;openOrders&#039;&#039; (A) is an array of order objects (refer to [[Asset_Exchange#Get_Order|Get Order]] for details)&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get All Open Orders Example==== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAllOpenBidOrders&amp;amp;chain=2&amp;amp;firstIndex=123&amp;amp;lastIndex=123|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAllOpenBidOrders&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  firstIndex=123&amp;amp;&lt;br /&gt;
  lastIndex=123&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 5631,&lt;br /&gt;
 &amp;quot;openOrders&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
   &amp;quot;priceNQTPerShare&amp;quot;: &amp;quot;101&amp;quot;,&lt;br /&gt;
   &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-L6FM-89WK-VK8P-FCRBB&amp;quot;,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;17554243582654188572&amp;quot;,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;bid&amp;quot;,&lt;br /&gt;
   &amp;quot;account&amp;quot;: &amp;quot;15323192282528158131&amp;quot;,&lt;br /&gt;
   &amp;quot;order&amp;quot;: &amp;quot;12743274869785967304&amp;quot;,&lt;br /&gt;
   &amp;quot;height&amp;quot;: 285577&lt;br /&gt;
  }&lt;br /&gt;
 ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Get All Open Ask Orders==== &amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Get_All_Open_Orders|Get All Open Orders]]. &lt;br /&gt;
&lt;br /&gt;
====Get All Open Bid Orders==== &amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Get_All_Open_Orders|Get All Open Orders]]. &lt;br /&gt;
&lt;br /&gt;
===Get All Trades=== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
Get all trades since a given timestamp in reverse block height order. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getAllTrades&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;timestamp&#039;&#039; is the timestamp (in seconds since the genesis block) to begin retrieving trades (optional, default 0)&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first trade to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last trade to retrieve (optional)&lt;br /&gt;
*&#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039; if asset information is to be included in the result (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If &#039;&#039;timestamp&#039;&#039; is omitted or zero, and no index is given, all trades in the entire blockchain will be retrieved, which may timeout or crash your system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;trades&#039;&#039; (A) is an array of trade objects (refer to [[Asset_Exchange#Get_Trades|Get Trades]])&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get All Trades Example==== &amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAllTrades&amp;amp;chain=2&amp;amp;lastIndex=0|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAllTrades&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  lastIndex=0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;trades&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;seller&amp;quot;: &amp;quot;14968762166783718535&amp;quot;,&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;10000&amp;quot;,&lt;br /&gt;
   &amp;quot;bidOrder&amp;quot;: &amp;quot;1166717226538227076&amp;quot;,&lt;br /&gt;
   &amp;quot;sellerRS&amp;quot;: &amp;quot;ARDOR-8F69-W9Z9-8M6Y-ETXGZ&amp;quot;,&lt;br /&gt;
   &amp;quot;buyer&amp;quot;: &amp;quot;202478233571806601&amp;quot;,&lt;br /&gt;
   &amp;quot;priceNQTPerShare&amp;quot;: &amp;quot;19796&amp;quot;,&lt;br /&gt;
   &amp;quot;askOrder&amp;quot;: &amp;quot;16222071953599729591&amp;quot;,&lt;br /&gt;
   &amp;quot;buyerRS&amp;quot;: &amp;quot;ARDOR-RMEB-W7TE-28EM-2SUM7&amp;quot;,&lt;br /&gt;
   &amp;quot;decimals&amp;quot;: 8,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;mgwBTC&amp;quot;,&lt;br /&gt;
   &amp;quot;block&amp;quot;: &amp;quot;8807797247643599359&amp;quot;,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;4551058913252105307&amp;quot;,&lt;br /&gt;
   &amp;quot;askOrderHeight&amp;quot;: 285768,&lt;br /&gt;
   &amp;quot;bidOrderHeight&amp;quot;: 286453,&lt;br /&gt;
   &amp;quot;tradeType&amp;quot;: &amp;quot;buy&amp;quot;,&lt;br /&gt;
   &amp;quot;timestamp&amp;quot;: 30920039,&lt;br /&gt;
   &amp;quot;height&amp;quot;: 286453&lt;br /&gt;
  }&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 25840&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Asset=== &amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
Get asset information given an asset ID. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getAsset&#039;&#039;&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID&lt;br /&gt;
*&#039;&#039;includeCounts&#039;&#039; is &#039;&#039;true&#039;&#039; if the fields beginning with &#039;&#039;numberOf...&#039;&#039; are to be included (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;account&#039;&#039; (S) is the number of the account that issued the asset&lt;br /&gt;
*&#039;&#039;accountRS&#039;&#039; (S) is the Reed-Solomon address of the account that issued the asset&lt;br /&gt;
*&#039;&#039;name&#039;&#039; (S) is the asset name&lt;br /&gt;
*&#039;&#039;description&#039;&#039; (S) is the asset description&lt;br /&gt;
*&#039;&#039;quantityQNT&#039;&#039; (S) is the total asset quantity (in QNT) in existence&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; (N) is the asset ID&lt;br /&gt;
*&#039;&#039;decimals&#039;&#039; (N) is the number of decimal places used by the asset&lt;br /&gt;
*&#039;&#039;numberOfAccounts&#039;&#039; (N) is the number of accounts that own the asset&lt;br /&gt;
*&#039;&#039;numberOfTrades&#039;&#039; (N) is the number of trades of this asset&lt;br /&gt;
*&#039;&#039;numberOfTransfers&#039;&#039; (N) is the number of transfers of this asset&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Asset Example==== &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAsset&amp;amp;asset=17554243582654188572|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAsset&amp;amp;&lt;br /&gt;
  asset=17554243582654188572&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;quantityQNT&amp;quot;: &amp;quot;2100000000000000&amp;quot;,&lt;br /&gt;
 &amp;quot;numberOfAccounts&amp;quot;: 31,&lt;br /&gt;
 &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-3TKA-UH62-478B-DQU6K&amp;quot;,&lt;br /&gt;
 &amp;quot;decimals&amp;quot;: 8,&lt;br /&gt;
 &amp;quot;numberOfTransfers&amp;quot;: 63,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;mgwBTC&amp;quot;,&lt;br /&gt;
 &amp;quot;description&amp;quot;: &amp;quot;Production Multigateway BTC (mgwBTC) is backed 100% by...&amp;quot;,&lt;br /&gt;
 &amp;quot;numberOfTrades&amp;quot;: 9,&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 11,&lt;br /&gt;
 &amp;quot;asset&amp;quot;: &amp;quot;17554243582654188572&amp;quot;,&lt;br /&gt;
 &amp;quot;account&amp;quot;: &amp;quot;13300069592148796968&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Asset Account Count=== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
Get the number of accounts that own an asset given the asset ID. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getAssetAccountCount&#039;&#039;&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID&lt;br /&gt;
*&#039;&#039;height&#039;&#039; is the height of the blockchain to determine the account count (optional, default is last block)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If table trimming is enabled (default), the height must be within 1440 blocks of the last block.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;numberOfAccounts&#039;&#039; (N) is the number of accounts that own the asset&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Asset Account Count Example==== &amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAssetAccountCount&amp;amp;asset=17554243582654188572|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAssetAccountCount&amp;amp;&lt;br /&gt;
  asset=17554243582654188572&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;numberOfAccounts&amp;quot;: 38,&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 14&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Asset Accounts=== &amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
Get the accounts that own an asset given the asset ID in reverse quantity order. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getAssetAccounts&#039;&#039;&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID&lt;br /&gt;
*&#039;&#039;height&#039;&#039; is the height of the blockchain to determine the accounts (optional, default is last block)&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first account to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last account to retrieve (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If table trimming is enabled (default), the height must be within 1440 blocks of the last block.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;accountAssets&#039;&#039; (A) is an array of asset objects with the following fields for each asset:&lt;br /&gt;
**&#039;&#039;quantityQNT&#039;&#039; (S) is the quantity (in QNT) of the asset&lt;br /&gt;
**&#039;&#039;accountRS&#039;&#039; (S) is the Reed-Solomon address of the account that owns the asset&lt;br /&gt;
**&#039;&#039;unconfirmedQuantityQNT&#039;&#039; (S) is the unconfirmed quantity (in QNT) of the asset&lt;br /&gt;
**&#039;&#039;asset&#039;&#039; (S) is the asset ID&lt;br /&gt;
**&#039;&#039;account&#039;&#039; (S) is the number of the account that owns the asset&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Asset Accounts Example==== &amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAssetAccounts&amp;amp;asset=5539238107226883203|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAssetAccounts&amp;amp;&lt;br /&gt;
  asset=5539238107226883203&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;accountAssets&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;100000000&amp;quot;,&lt;br /&gt;
   &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-JTE5-HB7Y-QPS5-B58MZ&amp;quot;,&lt;br /&gt;
   &amp;quot;unconfirmedQuantityQNT&amp;quot;: &amp;quot;100000000&amp;quot;,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;5539238107226883203&amp;quot;,&lt;br /&gt;
   &amp;quot;account&amp;quot;: &amp;quot;11514793277306463619&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 19&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Asset History=== &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
Get asset deletions or increases for a specific asset or account. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getAssetHistory&#039;&#039;&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID (optional if account is provided)&lt;br /&gt;
*&#039;&#039;account&#039;&#039; is the account ID (optional if asset is provided)&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first phased transaction to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last phased transaction to retrieve (optional)&lt;br /&gt;
*&#039;&#039;timestamp&#039;&#039; is the earliest deletion (in seconds since the genesis block) to retrieve (optional)&lt;br /&gt;
*&#039;&#039;deletesOnly&#039;&#039; is an optional parameter to retrieve only share delete history events&lt;br /&gt;
*&#039;&#039;increasesOnly&#039;&#039; is an optional parameter to retrieve only share increase history events&lt;br /&gt;
*&#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039; if asset information is to be included (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;assetHistory&#039;&#039; (A) is an array of asset history objects with following properties:&lt;br /&gt;
**&#039;&#039;quantityQNT&#039;&#039; (S) is the number of shares that were deleted or increased&lt;br /&gt;
**&#039;&#039;chain&#039;&#039; is the chain related&lt;br /&gt;
**&#039;&#039;assetHistoryFullHash&#039;&#039; (S) is the full hash of the increase or decrease transaction&lt;br /&gt;
**&#039;&#039;account&#039;&#039; (S) is the account ID&lt;br /&gt;
**&#039;&#039;accountRS&#039;&#039; (S) is the account Reed Solomon address&lt;br /&gt;
**&#039;&#039;asset&#039;&#039; (S) is the asset ID&lt;br /&gt;
**&#039;&#039;height&#039;&#039; (N) is the block height of the delete&lt;br /&gt;
**&#039;&#039;timestamp&#039;&#039; (N) is the block timestamp of the delete&lt;br /&gt;
**&#039;&#039;decimals&#039;&#039; (N) is the number of decimal places used by the asset (if &#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039;)&lt;br /&gt;
**&#039;&#039;name&#039;&#039; (S) is the asset name (if &#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
====Get Asset History Example==== &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=GetAssetHistory&amp;amp;includeAssetInfo=true&amp;amp;asset=17035400751454635539|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=GetAssetHistory&amp;amp;&lt;br /&gt;
  includeAssetInfo=true&amp;amp;&lt;br /&gt;
  asset=17035400751454635539&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;requestProcessingTime&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;assetHistory&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;quantityQNT&amp;quot;: &amp;quot;1000&amp;quot;,&lt;br /&gt;
            &amp;quot;chain&amp;quot;: 2,&lt;br /&gt;
            &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;quot;,&lt;br /&gt;
            &amp;quot;decimals&amp;quot;: 2,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;domtest&amp;quot;,&lt;br /&gt;
            &amp;quot;assetHistoryFullHash&amp;quot;: &amp;quot;05340a7863cd661aa64afb49de6584d565721396a5030ea2d685b07a4c67ed80&amp;quot;,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;17035400751454635539&amp;quot;,&lt;br /&gt;
            &amp;quot;account&amp;quot;: &amp;quot;15382970207090678772&amp;quot;,&lt;br /&gt;
            &amp;quot;height&amp;quot;: 1168097,&lt;br /&gt;
            &amp;quot;timestamp&amp;quot;: 35150871&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;quantityQNT&amp;quot;: &amp;quot;-10000&amp;quot;,&lt;br /&gt;
            &amp;quot;chain&amp;quot;: 2,&lt;br /&gt;
            &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;quot;,&lt;br /&gt;
            &amp;quot;decimals&amp;quot;: 2,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;domtest&amp;quot;,&lt;br /&gt;
            &amp;quot;assetHistoryFullHash&amp;quot;: &amp;quot;f15cfc6b2abfaf76370894689a833413c8cf6d340ec765a36d1a4f388a8864a7&amp;quot;,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;17035400751454635539&amp;quot;,&lt;br /&gt;
            &amp;quot;account&amp;quot;: &amp;quot;15382970207090678772&amp;quot;,&lt;br /&gt;
            &amp;quot;height&amp;quot;: 1168088,&lt;br /&gt;
            &amp;quot;timestamp&amp;quot;: 35150766&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;quantityQNT&amp;quot;: &amp;quot;100000000&amp;quot;,&lt;br /&gt;
            &amp;quot;chain&amp;quot;: 2,&lt;br /&gt;
            &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;quot;,&lt;br /&gt;
            &amp;quot;decimals&amp;quot;: 2,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;domtest&amp;quot;,&lt;br /&gt;
            &amp;quot;assetHistoryFullHash&amp;quot;: &amp;quot;1346e0dcb9e669ec0c55cc6b52721b4b3a55b0d4f60736155629ea2b1ed6aba8&amp;quot;,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;17035400751454635539&amp;quot;,&lt;br /&gt;
            &amp;quot;account&amp;quot;: &amp;quot;15382970207090678772&amp;quot;,&lt;br /&gt;
            &amp;quot;height&amp;quot;: 577817,&lt;br /&gt;
            &amp;quot;timestamp&amp;quot;: 28421318&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Asset Dividends=== &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
Get the dividend payment history for a specific asset. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getAssetDividends&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first dividend payment to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last dividend payment to retrieve (optional)&lt;br /&gt;
*&#039;&#039;timestamp&#039;&#039; is the earliest dividend payment (in seconds since the genesis block) to retrieve (optional)&lt;br /&gt;
*&#039;&#039;includeHoldingInfo&#039;&#039; is &#039;&#039;true&#039;&#039; to include holding info (optional)&lt;br /&gt;
*&#039;&#039;adminPassword&#039;&#039; is a string with the admin password (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;dividends&#039;&#039; (A) is an array of dividend transactions with the following properties:&lt;br /&gt;
**&#039;&#039;assetDividendFullHash&#039;&#039; (S) is the dividend payment transaction full hash&lt;br /&gt;
**&#039;&#039;numberOfAccounts&#039;&#039; (N) is the number of accounts that received a dividend&lt;br /&gt;
**&#039;&#039;amountNQTPerShare&#039;&#039; (S) is the amount of the payment holding (in NQT) paid per quantity (in QNT) of the asset&lt;br /&gt;
**&#039;&#039;totalDividend&#039;&#039; (S) is the total amount of the payment holding (in NQT) sent in the dividend payment&lt;br /&gt;
**&#039;&#039;dividendHeight&#039;&#039; (N) is the block height of the dividend calculation&lt;br /&gt;
**&#039;&#039;asset&#039;&#039; (S) is the asset ID&lt;br /&gt;
**&#039;&#039;height&#039;&#039; (N) is the block height of the dividend payment&lt;br /&gt;
**&#039;&#039;timestamp&#039;&#039; (N) is the block timestamp of the dividend payment&lt;br /&gt;
**&#039;&#039;holding&#039;&#039; (S) is the asset or currency ID&lt;br /&gt;
**&#039;&#039;holdingType&#039;&#039; (N) is the holding type (See [[Server_info#Get_Constants|Get Constants]] for type definitions)&lt;br /&gt;
**&#039;&#039;holdingInfo&#039;&#039; (O) is an object containing the coin, asset or currency info (if includeHoldingInfo is true)&lt;br /&gt;
&lt;br /&gt;
====Get Asset Dividends Example==== &amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAssetDividends&amp;amp;chain=2&amp;amp;asset=6277929525780034120|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAssetDividends&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  asset=6277929525780034120&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;dividends&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;holding&amp;quot;: &amp;quot;2270562915899608568&amp;quot;,&lt;br /&gt;
            &amp;quot;numberOfAccounts&amp;quot;: 3,&lt;br /&gt;
            &amp;quot;holdingType&amp;quot;: 2,&lt;br /&gt;
            &amp;quot;holdingInfo&amp;quot;: {&lt;br /&gt;
                &amp;quot;chain&amp;quot;: 2,&lt;br /&gt;
                &amp;quot;issuerAccountRS&amp;quot;: &amp;quot;ARDOR-RKUL-XS5Y-NGQQ-FP6T5&amp;quot;,&lt;br /&gt;
                &amp;quot;code&amp;quot;: &amp;quot;SBT&amp;quot;,&lt;br /&gt;
                &amp;quot;decimals&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;SBTether&amp;quot;,&lt;br /&gt;
                &amp;quot;issuanceHeight&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;type&amp;quot;: 33,&lt;br /&gt;
                &amp;quot;issuerAccount&amp;quot;: &amp;quot;15124378298184615762&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;amountNQTPerShare&amp;quot;: &amp;quot;45&amp;quot;,&lt;br /&gt;
            &amp;quot;totalDividend&amp;quot;: &amp;quot;290249910&amp;quot;,&lt;br /&gt;
            &amp;quot;dividendHeight&amp;quot;: 121160,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;6277929525780034120&amp;quot;,&lt;br /&gt;
            &amp;quot;assetDividendFullHash&amp;quot;: &amp;quot;a449536556c44251365ea4adec7aabfcc590a94697f9d497d9edeaac6c9475a5&amp;quot;,&lt;br /&gt;
            &amp;quot;height&amp;quot;: 121162,&lt;br /&gt;
            &amp;quot;timestamp&amp;quot;: 7173990&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;holding&amp;quot;: &amp;quot;6277929525780034120&amp;quot;,&lt;br /&gt;
            &amp;quot;numberOfAccounts&amp;quot;: 2,&lt;br /&gt;
            &amp;quot;holdingType&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;holdingInfo&amp;quot;: {&lt;br /&gt;
                &amp;quot;decimals&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;SBT&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;amountNQTPerShare&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;totalDividend&amp;quot;: &amp;quot;3099999&amp;quot;,&lt;br /&gt;
            &amp;quot;dividendHeight&amp;quot;: 119456,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;6277929525780034120&amp;quot;,&lt;br /&gt;
            &amp;quot;assetDividendFullHash&amp;quot;: &amp;quot;41101f9225abbe43436d62377d5b2c9c83ef746dea1fc86cb3801dfd6b6e73d1&amp;quot;,&lt;br /&gt;
            &amp;quot;height&amp;quot;: 119459,&lt;br /&gt;
            &amp;quot;timestamp&amp;quot;: 7072622&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;holding&amp;quot;: &amp;quot;657&amp;quot;,&lt;br /&gt;
            &amp;quot;numberOfAccounts&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;holdingType&amp;quot;: 2,&lt;br /&gt;
            &amp;quot;holdingInfo&amp;quot;: {&lt;br /&gt;
                &amp;quot;chain&amp;quot;: 2,&lt;br /&gt;
                &amp;quot;issuerAccountRS&amp;quot;: &amp;quot;ARDOR-6Z5Q-HJ2L-E5M3-D94QR&amp;quot;,&lt;br /&gt;
                &amp;quot;code&amp;quot;: &amp;quot;CHF&amp;quot;,&lt;br /&gt;
                &amp;quot;decimals&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;CHF&amp;quot;,&lt;br /&gt;
                &amp;quot;issuanceHeight&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;type&amp;quot;: 1,&lt;br /&gt;
                &amp;quot;issuerAccount&amp;quot;: &amp;quot;13535647277982579830&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;amountNQTPerShare&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;totalDividend&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
            &amp;quot;dividendHeight&amp;quot;: 118673,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;6277929525780034120&amp;quot;,&lt;br /&gt;
            &amp;quot;assetDividendFullHash&amp;quot;: &amp;quot;9839c9fb351ca26c8e5ba62c30cb71df5ba820e2adc34d20aea59de27b4c7fbc&amp;quot;,&lt;br /&gt;
            &amp;quot;height&amp;quot;: 118676,&lt;br /&gt;
            &amp;quot;timestamp&amp;quot;: 7025926&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;requestProcessingTime&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Get Asset Ids=== &amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
Get the IDs of all assets in the exchange in reverse block height of creation order. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getAssetIds&#039;&#039;&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first asset ID to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last asset ID to retrieve (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;assets&#039;&#039; (A) is an array of asset IDs&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Asset Ids Example==== &amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAssetIds&amp;amp;firstIndex=15&amp;amp;lastIndex=15|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAssetIds&amp;amp;&lt;br /&gt;
  firstIndex=15&amp;amp;&lt;br /&gt;
  lastIndex=15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;assetIds&amp;quot;: [&lt;br /&gt;
  &amp;quot;17554243582654188572&amp;quot;&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Asset Phased Transactions=== &amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
Get pending phased transactions based on an asset in reverse chronological creation order. These transactions can be considered transaction approval requests. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getAssetPhasedTransactions&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID&lt;br /&gt;
*&#039;&#039;account&#039;&#039; is an account ID of the account that created the phased transactions (optional)&lt;br /&gt;
*&#039;&#039;withoutWhitelist&#039;&#039; is &#039;&#039;true&#039;&#039; to omit phased transactions that include a whitelist (optional)&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first phased transaction to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last phased transaction to retrieve (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039; Refer to [[Transactions#Get_Transaction|Get Transaction]] for details.&lt;br /&gt;
&lt;br /&gt;
====Get Asset Phased Transactions Example==== &amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAssetPhasedTransactions&amp;amp;chain=2&amp;amp;asset=17091401215301664836|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAssetPhasedTransactions&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  asset=17091401215301664836&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 2,&lt;br /&gt;
 &amp;quot;transactions&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;signature&amp;quot;: &amp;quot;803d3fad7076bfe3f48a8ced40bb7075539858bf2b9d23b7653671a7204e6108234d...&amp;quot;,&lt;br /&gt;
   &amp;quot;transactionIndex&amp;quot;: 0,&lt;br /&gt;
   &amp;quot;type&amp;quot;: 0,&lt;br /&gt;
   &amp;quot;phased&amp;quot;: true,&lt;br /&gt;
   &amp;quot;ecBlockId&amp;quot;: &amp;quot;14167949999961480077&amp;quot;,&lt;br /&gt;
   &amp;quot;signatureHash&amp;quot;: &amp;quot;693b18675d813dcc2de1a889fd919d0c4a0eaa679df0b0f8b0ec703bc2e278d4&amp;quot;,&lt;br /&gt;
   &amp;quot;attachment&amp;quot;: {&lt;br /&gt;
    &amp;quot;phasingFinishHeight&amp;quot;: 262450,&lt;br /&gt;
    &amp;quot;phasingHolding&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;phasingQuorum&amp;quot;: &amp;quot;500&amp;quot;,&lt;br /&gt;
    &amp;quot;version.Phasing&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;phasingMinBalance&amp;quot;: &amp;quot;100&amp;quot;,&lt;br /&gt;
    &amp;quot;phasingMinBalanceModel&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;version.OrdinaryPayment&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;phasingVotingModel&amp;quot;: 2&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;senderRS&amp;quot;: &amp;quot;ARDOR-4VDY-LNVT-LMAY-FMCKA&amp;quot;,&lt;br /&gt;
   &amp;quot;subtype&amp;quot;: 0,&lt;br /&gt;
   &amp;quot;amountNQT&amp;quot;: &amp;quot;500000000&amp;quot;,&lt;br /&gt;
   &amp;quot;recipientRS&amp;quot;: &amp;quot;ARDOR-BMUV-8QQR-47VK-CR7F3&amp;quot;,&lt;br /&gt;
   &amp;quot;block&amp;quot;: &amp;quot;11015494088798322289&amp;quot;,&lt;br /&gt;
   &amp;quot;blockTimestamp&amp;quot;: 43957876,&lt;br /&gt;
   &amp;quot;deadline&amp;quot;: 60,&lt;br /&gt;
   &amp;quot;timestamp&amp;quot;: 43957682,&lt;br /&gt;
   &amp;quot;height&amp;quot;: 262418,&lt;br /&gt;
   &amp;quot;senderPublicKey&amp;quot;: &amp;quot;10f09c34f225d425306e5be55a4946908156072afbead4d574a512d7e086ef5c&amp;quot;,&lt;br /&gt;
   &amp;quot;chain&amp;quot;: 2,&lt;br /&gt;
   &amp;quot;feeNQT&amp;quot;: &amp;quot;2100000000&amp;quot;,&lt;br /&gt;
   &amp;quot;confirmations&amp;quot;: 27,&lt;br /&gt;
   &amp;quot;fullHash&amp;quot;: &amp;quot;e57462c46447f8bd7a0bafd9ab65bde8743ca6c13213185271d7ea6c48118861&amp;quot;,&lt;br /&gt;
   &amp;quot;version&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;sender&amp;quot;: &amp;quot;15295723609781267838&amp;quot;,&lt;br /&gt;
   &amp;quot;recipient&amp;quot;: &amp;quot;11580081983047651163&amp;quot;,&lt;br /&gt;
   &amp;quot;ecBlockHeight&amp;quot;: 262409,&lt;br /&gt;
   &amp;quot;transaction&amp;quot;: &amp;quot;13688769565509711077&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Asset Properties=== &amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
Get asset properties given asset and a setter. When it is provided property it lists the value of the given property. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getAssetProperties&#039;&#039;&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset id for its properties to be listed&lt;br /&gt;
*&#039;&#039;setter&#039;&#039; is the property setter address&lt;br /&gt;
*&#039;&#039;property&#039;&#039; when provided, it lists the value of the given property (optional)&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first transfer to retrieve (optional, does not apply to expected transfers)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last transfer to retrieve (optional, does not apply to expected transfers)&lt;br /&gt;
*&#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039; if the &#039;&#039;decimals&#039;&#039; and &#039;&#039;name&#039;&#039; fields are to be included (optional, does not apply to expected transfers)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;setterRS&#039;&#039; is the setter address in reed salomon format&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset id&lt;br /&gt;
*&#039;&#039;setter&#039;&#039; is setter numeric id&lt;br /&gt;
*&#039;&#039;properties&#039;&#039; (A) is an array of the asset properties&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Asset Properties Example==== &amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAssetProperties&amp;amp;asset=17554243582654188572&amp;amp;setter=ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;amp;property=isIdentified|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAssetProperties&amp;amp;&lt;br /&gt;
  asset=17554243582654188572&amp;amp;&lt;br /&gt;
  setter=ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;amp;&lt;br /&gt;
  property=isIdentified&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;setterRS&amp;quot;: &amp;quot;ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;quot;,&lt;br /&gt;
    &amp;quot;requestProcessingTime&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;asset&amp;quot;: &amp;quot;3295228938014260892&amp;quot;,&lt;br /&gt;
    &amp;quot;setter&amp;quot;: &amp;quot;15382970207090678772&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Asset Transfers=== &amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
Get transfers associated with a given asset and/or account in reverse block height order (or in the expected order of execution for expected transfers). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is either &#039;&#039;getAssetTransfers&#039;&#039; or &#039;&#039;getExpectedAssetTransfers&#039;&#039;, where expected transfers are from the unconfirmed transactions pool or are phased transactions scheduled to finish in the next block&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID (optional)&lt;br /&gt;
*&#039;&#039;account&#039;&#039; is the account ID (optional if &#039;&#039;asset&#039;&#039; provided)&lt;br /&gt;
*&#039;&#039;timestamp&#039;&#039; is the earliest transfer (in seconds since the genesis block) to retrieve (optional, does not apply to expected transfers)&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first transfer to retrieve (optional, does not apply to expected transfers)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last transfer to retrieve (optional, does not apply to expected transfers)&lt;br /&gt;
*&#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039; if the &#039;&#039;decimals&#039;&#039; and &#039;&#039;name&#039;&#039; fields are to be included (optional, does not apply to expected transfers)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;transfers&#039;&#039; (A) is an array of transfer objects with the following fields for each transfer:&lt;br /&gt;
**&#039;&#039;quantityQNT&#039;&#039; (S) is the quantity (in QNT) of the asset traded&lt;br /&gt;
**&#039;&#039;senderRS&#039;&#039; (S) is the Reed-Solomon address of the sender&lt;br /&gt;
**&#039;&#039;assetTransfer&#039;&#039; (S) is the transaction ID of the asset transfer&lt;br /&gt;
**&#039;&#039;sender&#039;&#039; (S) is the account number of the sender&lt;br /&gt;
**&#039;&#039;recipientRS&#039;&#039; (S) is the Reed-Solomon address of the recipient&lt;br /&gt;
**&#039;&#039;decimals&#039;&#039; (N) is the number of decimal places used by the asset (if &#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039;)&lt;br /&gt;
**&#039;&#039;recipient&#039;&#039; (S) is the account number of the recipient&lt;br /&gt;
**&#039;&#039;name&#039;&#039; (S) is the name of the asset (if &#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039;)&lt;br /&gt;
**&#039;&#039;asset&#039;&#039; (S) is the asset ID&lt;br /&gt;
**&#039;&#039;height&#039;&#039; (N) is the height of the transfer block&lt;br /&gt;
**&#039;&#039;timestamp&#039;&#039; (N) is the timestamp (in seconds since the genesis block) of the transfer block, does not apply to an expected transfer&lt;br /&gt;
**&#039;&#039;phased&#039;&#039; (B) is &#039;&#039;true&#039;&#039; if the transaction is phased, &#039;&#039;false&#039;&#039; otherwise, applies only to an expected transfer&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Asset Transfers Example==== &amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAssetTransfers&amp;amp;asset=17554243582654188572&amp;amp;lastIndex=0|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAssetTransfers&amp;amp;&lt;br /&gt;
  asset=17554243582654188572&amp;amp;&lt;br /&gt;
  lastIndex=0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;transfers&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;500000&amp;quot;,&lt;br /&gt;
   &amp;quot;senderRS&amp;quot;: &amp;quot;ARDOR-9K6X-4ZQS-PCQN-465T4&amp;quot;,&lt;br /&gt;
   &amp;quot;assetTransfer&amp;quot;: &amp;quot;15255934090738722602&amp;quot;,&lt;br /&gt;
   &amp;quot;sender&amp;quot;: &amp;quot;2406158154854548637&amp;quot;,&lt;br /&gt;
   &amp;quot;recipientRS&amp;quot;: &amp;quot;ARDOR-YMEM-ERX3-BFUZ-4MQ4P&amp;quot;,&lt;br /&gt;
   &amp;quot;decimals&amp;quot;: 8,&lt;br /&gt;
   &amp;quot;recipient&amp;quot;: &amp;quot;3065494931320556947&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;mgwBTC&amp;quot;,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;17554243582654188572&amp;quot;,&lt;br /&gt;
   &amp;quot;height&amp;quot;: 287648,&lt;br /&gt;
   &amp;quot;timestamp&amp;quot;: 31042663&lt;br /&gt;
  }&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Get Expected Asset Transfers==== &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Get_Asset_Transfers|Get Asset Transfers]]. Since version 2.3.0e it returns both bundled and non-bundled transactions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Assets=== &amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
Get asset information given multiple asset IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getAssets&#039;&#039;&lt;br /&gt;
*&#039;&#039;assets&#039;&#039; is one of the multiple asset IDs&lt;br /&gt;
*&#039;&#039;assets&#039;&#039; is one of the multiple asset IDs&lt;br /&gt;
⋮&lt;br /&gt;
*&#039;&#039;includeCounts&#039;&#039; is &#039;&#039;true&#039;&#039; if the fields beginning with &#039;&#039;numberOf...&#039;&#039; are to be included (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;assets&#039;&#039; (A) is an array of asset objects (refer to [[Asset_Exchange#Get_Asset|Get Asset]])&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Assets Example==== &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAssets&amp;amp;assets=17554243582654188572|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAssets&amp;amp;&lt;br /&gt;
  assets=17554243582654188572&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;assets&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;2100000000000000&amp;quot;,&lt;br /&gt;
   &amp;quot;numberOfAccounts&amp;quot;: 31,&lt;br /&gt;
   &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-3TKA-UH62-478B-DQU6K&amp;quot;,&lt;br /&gt;
   &amp;quot;decimals&amp;quot;: 8,&lt;br /&gt;
   &amp;quot;numberOfTransfers&amp;quot;: 63,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;awsBTC&amp;quot;,&lt;br /&gt;
   &amp;quot;description&amp;quot;: &amp;quot;Production aws BTC (awsBTC)&amp;quot;,&lt;br /&gt;
   &amp;quot;numberOfTrades&amp;quot;: 9,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;17554243582654188572&amp;quot;,&lt;br /&gt;
   &amp;quot;account&amp;quot;: &amp;quot;13300069592148796968&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 15&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Assets By Issuer=== &amp;lt;!--T:94--&amp;gt;&lt;br /&gt;
Get asset information given multiple creation account IDs in reverse block height of creation order. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getAssetsByIssuer&#039;&#039;&lt;br /&gt;
*&#039;&#039;account&#039;&#039; is one of the multiple account IDs&lt;br /&gt;
*&#039;&#039;account&#039;&#039; is one of the multiple account IDs&lt;br /&gt;
⋮&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first asset to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last asset to retrieve (optional)&lt;br /&gt;
*&#039;&#039;includeCounts&#039;&#039; is &#039;&#039;true&#039;&#039; if the fields beginning with &#039;&#039;numberOf...&#039;&#039; are to be included (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;assets&#039;&#039; (A) is an array of asset objects (refer to [[Asset_Exchange#Get_Asset|Get Asset]])&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Assets By Issuer Example==== &amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAssetsByIssuer&amp;amp;account=ARDOR-DE2F-W76R-GL25-HMFPR&amp;amp;lastIndex=0|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAssetsByIssuer&amp;amp;&lt;br /&gt;
  account=ARDOR-DE2F-W76R-GL25-HMFPR&amp;amp;&lt;br /&gt;
  lastIndex=0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;assets&amp;quot;: [&lt;br /&gt;
  [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;quantityQNT&amp;quot;: &amp;quot;10000000000&amp;quot;,&lt;br /&gt;
    &amp;quot;numberOfAccounts&amp;quot;: 222,&lt;br /&gt;
    &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-DE2F-W76R-GL25-HMFPR&amp;quot;,&lt;br /&gt;
    &amp;quot;decimals&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;numberOfTransfers&amp;quot;: 278,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;NXTprivacy&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;NXTprivacy will contain various privacy related projects...&amp;quot;,&lt;br /&gt;
    &amp;quot;numberOfTrades&amp;quot;: 456,&lt;br /&gt;
    &amp;quot;asset&amp;quot;: &amp;quot;17911762572811467637&amp;quot;,&lt;br /&gt;
    &amp;quot;account&amp;quot;: &amp;quot;18146608053740744717&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
  ]&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 9&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Expected Asset Deletes=== &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
Gets asset deletes which are expected to be executed in the next block. Since version 2.3.0e it returns both bundled and non-bundled transactions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is either &#039;&#039;getExpectedAssetDeletes&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID (optional)&lt;br /&gt;
*&#039;&#039;account&#039;&#039; is the account ID (optional)&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first phased transaction to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last phased transaction to retrieve (optional)&lt;br /&gt;
*&#039;&#039;timestamp&#039;&#039; is the earliest deletion (in seconds since the genesis block) to retrieve (optional)&lt;br /&gt;
*&#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039; if asset information is to be included (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;deletes&#039;&#039; (A) is an array of expected asset delete objects with following properties:&lt;br /&gt;
**&#039;&#039;assetDelete&#039;&#039; (S) is the transaction ID&lt;br /&gt;
**&#039;&#039;asset&#039;&#039; (S) is the asset ID&lt;br /&gt;
**&#039;&#039;account&#039;&#039; (S) is the account ID&lt;br /&gt;
**&#039;&#039;accountRS&#039;&#039; (S) is the account Reed Solomon address&lt;br /&gt;
**&#039;&#039;quantityQNT&#039;&#039; (S) is the number of shares that will be deleted&lt;br /&gt;
**&#039;&#039;decimals&#039;&#039; (N) is the number of decimal places used by the asset (if &#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039;)&lt;br /&gt;
**&#039;&#039;name&#039;&#039; (S) is the asset name (if &#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Expected Asset Deletes Example==== &amp;lt;!--T:101--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getExpectedAssetDeletes&amp;amp;chain=2|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getExpectedAssetDeletes&amp;amp;&lt;br /&gt;
  chain=2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;deletes&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;1000&amp;quot;,&lt;br /&gt;
   &amp;quot;assetDelete&amp;quot;: &amp;quot;16186302132012496205&amp;quot;,&lt;br /&gt;
   &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-G885-AKDX-5G2B-BLUCG&amp;quot;,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;5920455660623529270&amp;quot;,&lt;br /&gt;
   &amp;quot;account&amp;quot;: &amp;quot;10892890577210644675&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 3&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Order=== &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
Get a bid/ask order given an order ID. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is either &#039;&#039;getBidOrder&#039;&#039; or &#039;&#039;getAskOrder&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;order&#039;&#039; is the Order ID&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;account&#039;&#039; (S) is the account number associated with the order&lt;br /&gt;
*&#039;&#039;accountRS&#039;&#039; (S) is the Reed-Solomon address of the account&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; (S) is the ID of the asset being ordered&lt;br /&gt;
*&#039;&#039;quantityQNT&#039;&#039; (S) is the order quantity (in QNT)&lt;br /&gt;
*&#039;&#039;priceNQTPerShare&#039;&#039; (S) is the order price (in NQT)&lt;br /&gt;
*&#039;&#039;height&#039;&#039; (N) is the block height of the order transaction&lt;br /&gt;
*&#039;&#039;transactionHeight&#039;&#039; (N) is the transaction height&lt;br /&gt;
*&#039;&#039;transactionIndex&#039;&#039; (N) is a zero-based index giving the order of the transaction in its block&lt;br /&gt;
*&#039;&#039;order&#039;&#039; (S) is the ID of the order&lt;br /&gt;
*&#039;&#039;type&#039;&#039; (S) is the type of order (&#039;&#039;bid&#039;&#039; or &#039;&#039;ask&#039;&#039;)&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Order Example==== &amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAskOrder&amp;amp;chain=2&amp;amp;order=6044046093672850641|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getAskOrder&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  order=6044046093672850641&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;askOrders&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;100&amp;quot;,&lt;br /&gt;
   &amp;quot;orderFullHash&amp;quot;: &amp;quot;e2c8201c2cf09ad7feb40e7275379f1686bcf1b9021de74f5df68e63153a7d22&amp;quot;,&lt;br /&gt;
   &amp;quot;transactionHeight&amp;quot;: 315484,&lt;br /&gt;
   &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-WP4X-2AMW-BXV4-3HDHU&amp;quot;,&lt;br /&gt;
   &amp;quot;priceNQTPerShare&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
   &amp;quot;transactionIndex&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;434314249088370370&amp;quot;,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;ask&amp;quot;,&lt;br /&gt;
   &amp;quot;account&amp;quot;: &amp;quot;2106962255727711325&amp;quot;,&lt;br /&gt;
   &amp;quot;order&amp;quot;: &amp;quot;6044046093672850641&amp;quot;,&lt;br /&gt;
   &amp;quot;height&amp;quot;: 315485&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;requestProcessingTime&amp;quot;: 0&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Get Ask Order==== &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Get_Order|Get Order]]. &lt;br /&gt;
&lt;br /&gt;
====Get Bid Order==== &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Get_Order|Get Order]]. &lt;br /&gt;
&lt;br /&gt;
===Get Order Ids=== &amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
Get bid/ask order IDs given an asset ID, in order of decreasing bid price or increasing ask price. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is either &#039;&#039;getBidOrderIds&#039;&#039; or &#039;&#039;getAskOrderIds&#039;&#039;&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first order ID to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last order ID to retrieve (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;bidOrderIds&#039;&#039; or &#039;&#039;askOrderIds&#039;&#039; (A) is an array of order IDs&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Order Ids Example==== &amp;lt;!--T:111--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getBidOrderIds&amp;amp;chain=2&amp;amp;asset=17554243582654188572|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:7876/nxt?&lt;br /&gt;
  requestType=getBidOrderIds&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  asset=17554243582654188572&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;requestProcessingTime&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;askOrderIds&amp;quot;: [&lt;br /&gt;
        &amp;quot;364789916640105484&amp;quot;,&lt;br /&gt;
        &amp;quot;14719767980908880113&amp;quot;,&lt;br /&gt;
        &amp;quot;15306957850759966204&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Get Ask Order Ids==== &amp;lt;!--T:112--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Get_Order_Ids|Get Order Ids]]. &lt;br /&gt;
&lt;br /&gt;
====Get Bid Order Ids==== &amp;lt;!--T:113--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Get_Order_Ids|Get Order Ids]]. &lt;br /&gt;
&lt;br /&gt;
===Get Orders=== &amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
Get bid/ask orders given an asset ID, in order of decreasing bid price or increasing ask price (if &#039;&#039;sortByPrice&#039;&#039; is &#039;&#039;true&#039;&#039; for expected orders, otherwise in the expected order of execution). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:115--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is one of &#039;&#039;getBidOrders&#039;&#039;, &#039;&#039;getAskOrders&#039;&#039;, &#039;&#039;getExpectedBidOrders&#039;&#039; or &#039;&#039;getExpectedAskOrders&#039;&#039;, where expected orders are from the unconfirmed transactions pool or are phased transactions scheduled to finish in the next block&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID&lt;br /&gt;
*&#039;&#039;sortByPrice&#039;&#039; is &#039;&#039;true&#039;&#039; to sort by price (optional, applies only to expected orders, which are returned in expected order of execution by default)&lt;br /&gt;
*&#039;&#039;showExpectedCancellations&#039;&#039; is &#039;&#039;true&#039;&#039; to include orders that are expected to be cancelled in the next block, based on the content of the unconfirmed transactions pool and the phased transactions expected to finish in the next block (optional, does not apply to expected orders)&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first order to retrieve (optional, does not apply to expected orders)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last order to retrieve (optional, does not apply to expected orders)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:116--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;bidOrders&#039;&#039; or &#039;&#039;askOrders&#039;&#039; (A) is an array of order objects (refer to [[Asset_Exchange#Get_Order|Get Order]] for details) with the following additional field only for an expected order:&lt;br /&gt;
**&#039;&#039;phased&#039;&#039; (B) is &#039;&#039;true&#039;&#039; if the order is phased, &#039;&#039;false&#039;&#039; otherwise&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Orders Example==== &amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getBidOrderIds&amp;amp;chain=2&amp;amp;asset=17554243582654188572|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getBidOrderIds&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  asset=17554243582654188572&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;bidOrderIds&amp;quot;: [&lt;br /&gt;
  &amp;quot;17972270381487138621&amp;quot;,&lt;br /&gt;
  &amp;quot;8331653287549483600&amp;quot;,&lt;br /&gt;
  &amp;quot;16386956089071870421&amp;quot;,&lt;br /&gt;
  &amp;quot;12743274869785967304&amp;quot;,&lt;br /&gt;
  &amp;quot;3409888667133338290&amp;quot;&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Get Ask Orders==== &amp;lt;!--T:118--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Get_Orders|Get Orders]]. &lt;br /&gt;
&lt;br /&gt;
====Get Bid Orders==== &amp;lt;!--T:119--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Get_Orders|Get Orders]]. &lt;br /&gt;
&lt;br /&gt;
====Get Expected Ask Orders==== &amp;lt;!--T:120--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Get_Orders|Get Orders]]. Since version 2.3.0e it returns both bundled and non-bundled transactions.&lt;br /&gt;
&lt;br /&gt;
====Get Expected Bid Orders==== &amp;lt;!--T:121--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Get_Orders|Get Orders]]. Since version 2.3.0e it returns both bundled and non-bundled transactions.&lt;br /&gt;
&lt;br /&gt;
===Get Expected Order Cancellations=== &amp;lt;!--T:122--&amp;gt;&lt;br /&gt;
Get all expected order cancellations in the order in which they are expected to be executed. Since version 2.3.0e it returns both bundled and non-bundled transactions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:123--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getExpectedOrderCancellations&#039;&#039;, where expected cancellations are from the unconfirmed transactions pool or are phased transactions scheduled to finish in the next block&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:124--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;orderCancellations&#039;&#039; (A) is an array of order cancellation objects with the following fields for each transfer:&lt;br /&gt;
**&#039;&#039;account&#039;&#039; (S) is the cancelling account number&lt;br /&gt;
**&#039;&#039;accountRS&#039;&#039; (S) is the Reed-Solomon address of the account&lt;br /&gt;
**&#039;&#039;order&#039;&#039; (S) is the ID of the order to be cancelled&lt;br /&gt;
**&#039;&#039;height&#039;&#039; (N) is the block height of the order cancellation transaction&lt;br /&gt;
**&#039;&#039;phased&#039;&#039; (B) is &#039;&#039;true&#039;&#039; if the order cancellation transaction is phased&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Expected Order Cancellations Example==== &amp;lt;!--T:125--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getExpectedOrderCancellations&amp;amp;chain=2|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getExpectedOrderCancellations&amp;amp;&lt;br /&gt;
  chain=2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;orderCancellations&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-4VDY-LNVT-LMAY-FMCKA&amp;quot;,&lt;br /&gt;
   &amp;quot;account&amp;quot;: &amp;quot;15295723609781267838&amp;quot;,&lt;br /&gt;
   &amp;quot;order&amp;quot;: &amp;quot;8404616015717333294&amp;quot;,&lt;br /&gt;
   &amp;quot;height&amp;quot;: 348793,&lt;br /&gt;
   &amp;quot;phased&amp;quot;: false&lt;br /&gt;
  }&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Last Trades=== &amp;lt;!--T:126--&amp;gt;&lt;br /&gt;
Get the last trade of each of multiple assets. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:127--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getLastTrades&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;assets&#039;&#039; is one of multiple asset IDs&lt;br /&gt;
*&#039;&#039;assets&#039;&#039; is one of multiple asset IDs&lt;br /&gt;
⋮&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:128--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;trades&#039;&#039; (A) is an array of trade objects (refer to [[Asset_Exchange#Get_Trades|Get Trades]] without &#039;&#039;name&#039;&#039; and &#039;&#039;decimals&#039;&#039; for details)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec) &lt;br /&gt;
&lt;br /&gt;
====Get Last Trades Example==== &amp;lt;!--T:129--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getLastTrades&amp;amp;chain=2&amp;amp;assets=17091401215301664836|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getLastTrades&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  assets=17091401215301664836&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;trades&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;seller&amp;quot;: &amp;quot;11580081983047651163&amp;quot;,&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;100&amp;quot;,&lt;br /&gt;
   &amp;quot;bidOrder&amp;quot;: &amp;quot;12461616895431889058&amp;quot;,&lt;br /&gt;
   &amp;quot;sellerRS&amp;quot;: &amp;quot;ARDOR-BMUV-8QQR-47VK-CR7F3&amp;quot;,&lt;br /&gt;
   &amp;quot;buyer&amp;quot;: &amp;quot;15295723609781267838&amp;quot;,&lt;br /&gt;
   &amp;quot;priceNQTPerShare&amp;quot;: &amp;quot;100000000&amp;quot;,&lt;br /&gt;
   &amp;quot;askOrder&amp;quot;: &amp;quot;16690422801364092687&amp;quot;,&lt;br /&gt;
   &amp;quot;buyerRS&amp;quot;: &amp;quot;ARDOR-4VDY-LNVT-LMAY-FMCKA&amp;quot;,&lt;br /&gt;
   &amp;quot;block&amp;quot;: &amp;quot;9740784167963638799&amp;quot;,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;17091401215301664836&amp;quot;,&lt;br /&gt;
   &amp;quot;askOrderHeight&amp;quot;: 286247,&lt;br /&gt;
   &amp;quot;bidOrderHeight&amp;quot;: 286243,&lt;br /&gt;
   &amp;quot;tradeType&amp;quot;: &amp;quot;sell&amp;quot;,&lt;br /&gt;
   &amp;quot;timestamp&amp;quot;: 46115694,&lt;br /&gt;
   &amp;quot;height&amp;quot;: 286247&lt;br /&gt;
  }&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Order Trades=== &amp;lt;!--T:130--&amp;gt;&lt;br /&gt;
Get all trades that were executed as a result of a given &#039;&#039;askOrder&#039;&#039; and/or &#039;&#039;bidOrder&#039;&#039; in reverse block height order.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:131--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getOrderTrades&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;askOrder&#039;&#039; is an ask order ID (optional)&lt;br /&gt;
*&#039;&#039;bidOrder&#039;&#039; is a bid order ID (optional if &#039;&#039;askOrder&#039;&#039; provided)&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first trade to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last trade to retrieve (optional)&lt;br /&gt;
*&#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039; if the &#039;&#039;decimals&#039;&#039; and &#039;&#039;name&#039;&#039; fields are to be included (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:132--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039; Refer to [[Asset_Exchange#Get_Trades|Get Trades]].&lt;br /&gt;
&lt;br /&gt;
====Get Order Trades Example==== &amp;lt;!--T:133--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getOrderTrades&amp;amp;askOrder=2769987326979385551&amp;amp;chain=2&amp;amp;includeAssetInfo=true|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getOrderTrades&amp;amp;&lt;br /&gt;
  askOrder=2769987326979385551&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  includeAssetInfo=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;trades&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;seller&amp;quot;: &amp;quot;8069635474378047786&amp;quot;,&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;200&amp;quot;,&lt;br /&gt;
   &amp;quot;bidOrder&amp;quot;: &amp;quot;6083013926058683287&amp;quot;,&lt;br /&gt;
   &amp;quot;sellerRS&amp;quot;: &amp;quot;ARDOR-5JBC-QQ8M-UAFJ-8UAZZ&amp;quot;,&lt;br /&gt;
   &amp;quot;buyer&amp;quot;: &amp;quot;3617506283101058376&amp;quot;,&lt;br /&gt;
   &amp;quot;priceNQTPerShare&amp;quot;: &amp;quot;5000000&amp;quot;,&lt;br /&gt;
   &amp;quot;askOrder&amp;quot;: &amp;quot;2769987326979385551&amp;quot;,&lt;br /&gt;
   &amp;quot;buyerRS&amp;quot;: &amp;quot;ARDOR-QXCA-TKAH-KK85-5QZE6&amp;quot;,&lt;br /&gt;
   &amp;quot;decimals&amp;quot;: 0,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;TWT&amp;quot;,&lt;br /&gt;
   &amp;quot;block&amp;quot;: &amp;quot;17820716559461579006&amp;quot;,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;7496917644161273018&amp;quot;,&lt;br /&gt;
   &amp;quot;askOrderHeight&amp;quot;: 263896,&lt;br /&gt;
   &amp;quot;bidOrderHeight&amp;quot;: 265168,&lt;br /&gt;
   &amp;quot;tradeType&amp;quot;: &amp;quot;buy&amp;quot;,&lt;br /&gt;
   &amp;quot;timestamp&amp;quot;: 44288754,&lt;br /&gt;
   &amp;quot;height&amp;quot;: 265168&lt;br /&gt;
  }&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 0&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Trades=== &amp;lt;!--T:134--&amp;gt;&lt;br /&gt;
Get trades associated with a given asset and/or account in reverse block height order. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:135--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getTrades&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID (optional)&lt;br /&gt;
*&#039;&#039;account&#039;&#039; is the account ID (optional if &#039;&#039;asset&#039;&#039; provided)&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first trade to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last trade to retrieve (optional)&lt;br /&gt;
*&#039;&#039;timestamp&#039;&#039; is the earliest block (in seconds since the genesis block) to retrieve (optional)&lt;br /&gt;
*&#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039; if the &#039;&#039;decimals&#039;&#039; and &#039;&#039;name&#039;&#039; fields are to be included (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:136--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;trades&#039;&#039; (A) is an array of trade objects with the following fields for each trade:&lt;br /&gt;
**&#039;&#039;seller&#039;&#039; (S) is the account number of the seller&lt;br /&gt;
**&#039;&#039;quantityQNT&#039;&#039; (S) is the quantity (in QNT) of the asset traded&lt;br /&gt;
**&#039;&#039;bidOrder&#039;&#039; (S) is the bid order ID&lt;br /&gt;
**&#039;&#039;sellerRS&#039;&#039; (S) is the Reed-Solomon address of the seller&lt;br /&gt;
**&#039;&#039;buyer&#039;&#039; (S) is the account number of the buyer&lt;br /&gt;
**&#039;&#039;priceNQTPerShare&#039;&#039; (S) is the trade price per share (in NQT, the ask price for a buy or the bid price for a sell)&lt;br /&gt;
**&#039;&#039;askOrder&#039;&#039; (S) is the ask order ID&lt;br /&gt;
**&#039;&#039;buyerRS&#039;&#039; (S) is the Reed-Solomon address of the buyer&lt;br /&gt;
**&#039;&#039;decimals&#039;&#039; (N) is the number of decimal places used by the asset&lt;br /&gt;
**&#039;&#039;name&#039;&#039; (S) is the name of the asset (if &#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039;)&lt;br /&gt;
**&#039;&#039;block&#039;&#039; (S) is the block ID of the trade (if &#039;&#039;includeAssetInfo&#039;&#039; is &#039;&#039;true&#039;&#039;)&lt;br /&gt;
**&#039;&#039;asset&#039;&#039; (S) is the asset ID&lt;br /&gt;
**&#039;&#039;askOrderHeight&#039;&#039; (N) is the block height of the ask order&lt;br /&gt;
**&#039;&#039;bidOrderHeight&#039;&#039; (N) is the block height of the bid order&lt;br /&gt;
**&#039;&#039;tradeType&#039;&#039; (S) is the trade type (&#039;&#039;sell&#039;&#039; or &#039;&#039;buy&#039;&#039;, where &#039;&#039;buy&#039;&#039; implies that the bid occurred after the ask, or if in the same block, has a greater order ID)&lt;br /&gt;
**&#039;&#039;timestamp&#039;&#039; (N) is the timestamp (in seconds since the genesis block) of the trade block&lt;br /&gt;
**&#039;&#039;height&#039;&#039; (N) is the height of the trade block&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Get Order Trades Example==== &amp;lt;!--T:137--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getOrderTrades&amp;amp;chain=2&amp;amp;askOrder=2769987326979385551&amp;amp;includeAssetInfo=true|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=getOrderTrades&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  askOrder=2769987326979385551&amp;amp;&lt;br /&gt;
  includeAssetInfo=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;trades&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;seller&amp;quot;: &amp;quot;11579697950237343285&amp;quot;,&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;400&amp;quot;,&lt;br /&gt;
   &amp;quot;sellerRS&amp;quot;: &amp;quot;ARDOR-GHKP-XWB5-XMZB-CTUE3&amp;quot;,&lt;br /&gt;
   &amp;quot;buyer&amp;quot;: &amp;quot;15382970207090678772&amp;quot;,&lt;br /&gt;
   &amp;quot;askOrderFullHash&amp;quot;: &amp;quot;0c54fa167ffe0f050b0479ac6891ebfe4f7fa1475b6971f43c8a259fb8e2cc1a&amp;quot;,&lt;br /&gt;
   &amp;quot;buyerRS&amp;quot;: &amp;quot;ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;quot;,&lt;br /&gt;
   &amp;quot;priceNQTPerShare&amp;quot;: &amp;quot;100000000&amp;quot;,&lt;br /&gt;
   &amp;quot;decimals&amp;quot;: 2,&lt;br /&gt;
   &amp;quot;bidOrderFullHash&amp;quot;: &amp;quot;57bbdc200466e20b9429a9f28e8c22aa800e886338d30e48be4a4bc10b0dc4f7&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;TESTAPPROV&amp;quot;,&lt;br /&gt;
   &amp;quot;block&amp;quot;: &amp;quot;14437482425329065753&amp;quot;,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;3295228938014260892&amp;quot;,&lt;br /&gt;
   &amp;quot;askOrderHeight&amp;quot;: 177984,&lt;br /&gt;
   &amp;quot;bidOrderHeight&amp;quot;: 182007,&lt;br /&gt;
   &amp;quot;tradeType&amp;quot;: &amp;quot;buy&amp;quot;,&lt;br /&gt;
   &amp;quot;timestamp&amp;quot;: 10788581,&lt;br /&gt;
   &amp;quot;height&amp;quot;: 182007&lt;br /&gt;
  }&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 0&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Increase Asset Shares=== &amp;lt;!--T:138--&amp;gt;&lt;br /&gt;
Increase asset shares of a specific asset. POST only. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:139--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Request|Create Transaction Request]] for common parameters.&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;increaseAssetShares&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; the asset that shares will be increased&lt;br /&gt;
*&#039;&#039;quantityQNT&#039;&#039; is the total amount (in QNT) of the asset to be increased&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:140--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Response|Create Transaction Response]]. The transaction ID is also the asset ID.&lt;br /&gt;
&lt;br /&gt;
====Increase Asset Shares Example==== &amp;lt;!--T:141--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=increaseAssetShares&amp;amp;chain=2&amp;amp;asset=3295228938014260892&amp;amp;quantityQNT=1000000&amp;amp;secretPhrase=IWontTellYou|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=increaseAssetShares&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  asset=3295228938014260892&amp;amp;&lt;br /&gt;
  quantityQNT=1000000&amp;amp;&lt;br /&gt;
  secretPhrase=IWontTellYou&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;minimumFeeFQT&amp;quot;: &amp;quot;1000000000&amp;quot;,&lt;br /&gt;
    &amp;quot;signatureHash&amp;quot;: &amp;quot;86cb335dfe08da715bd424cda7ac4348b04d372c55340a4aa7325de2f29ece8a&amp;quot;,&lt;br /&gt;
    &amp;quot;transactionJSON&amp;quot;: {&lt;br /&gt;
        &amp;quot;senderPublicKey&amp;quot;: &amp;quot;df21142bd38c04bd5c5c342c6ca36802f9de89b75b2a0a8cbd32d29dca481e5c&amp;quot;,&lt;br /&gt;
        &amp;quot;chain&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;signature&amp;quot;: &amp;quot;0d0ae03e740c5461b189428adb1ba4566e4811d88eba4011afbdfc6635bcdf09252fb2838ddbefa91daf6fbfcd634d3d7ec65b65e10e0ad9b51c0e1b014c1014&amp;quot;,&lt;br /&gt;
        &amp;quot;feeNQT&amp;quot;: &amp;quot;100000000&amp;quot;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;fullHash&amp;quot;: &amp;quot;02bfd8498c029aa5525cfe0c9350d47a623f50fbec8c5ecf05dbbf51fe10d6fc&amp;quot;,&lt;br /&gt;
        &amp;quot;version&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;fxtTransaction&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;phased&amp;quot;: false,&lt;br /&gt;
        &amp;quot;ecBlockId&amp;quot;: &amp;quot;848399269223681227&amp;quot;,&lt;br /&gt;
        &amp;quot;signatureHash&amp;quot;: &amp;quot;86cb335dfe08da715bd424cda7ac4348b04d372c55340a4aa7325de2f29ece8a&amp;quot;,&lt;br /&gt;
        &amp;quot;attachment&amp;quot;: {&lt;br /&gt;
            &amp;quot;quantityQNT&amp;quot;: &amp;quot;10000&amp;quot;,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;3295228938014260892&amp;quot;,&lt;br /&gt;
            &amp;quot;version.AssetIncrease&amp;quot;: 1&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;senderRS&amp;quot;: &amp;quot;ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;quot;,&lt;br /&gt;
        &amp;quot;subtype&amp;quot;: 8,&lt;br /&gt;
        &amp;quot;amountNQT&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;sender&amp;quot;: &amp;quot;15382970207090678772&amp;quot;,&lt;br /&gt;
        &amp;quot;ecBlockHeight&amp;quot;: 378420,&lt;br /&gt;
        &amp;quot;deadline&amp;quot;: 15,&lt;br /&gt;
        &amp;quot;timestamp&amp;quot;: 22501256,&lt;br /&gt;
        &amp;quot;height&amp;quot;: 2147483647&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;unsignedTransactionBytes&amp;quot;: &amp;quot;02000000020801885757010f00df21142bd38c04bd5c5c342c6ca36802f9de89b75b2a0a8cbd32d29dca481e5c0000000000000000000000000000000000e1f505000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034c60500cb4cc7eda31ec60b00000000019c7eed9f4201bb2d1027000000000000000000000000000000000000000000000000000000000000000000000000000000000000&amp;quot;,&lt;br /&gt;
    &amp;quot;broadcasted&amp;quot;: false,&lt;br /&gt;
    &amp;quot;requestProcessingTime&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;transactionBytes&amp;quot;: &amp;quot;02000000020801885757010f00df21142bd38c04bd5c5c342c6ca36802f9de89b75b2a0a8cbd32d29dca481e5c0000000000000000000000000000000000e1f505000000000d0ae03e740c5461b189428adb1ba4566e4811d88eba4011afbdfc6635bcdf09252fb2838ddbefa91daf6fbfcd634d3d7ec65b65e10e0ad9b51c0e1b014c101434c60500cb4cc7eda31ec60b00000000019c7eed9f4201bb2d1027000000000000000000000000000000000000000000000000000000000000000000000000000000000000&amp;quot;,&lt;br /&gt;
    &amp;quot;fullHash&amp;quot;: &amp;quot;02bfd8498c029aa5525cfe0c9350d47a623f50fbec8c5ecf05dbbf51fe10d6fc&amp;quot;,&lt;br /&gt;
    &amp;quot;bundlerRateNQTPerFXT&amp;quot;: &amp;quot;10000000&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Issue Asset=== &amp;lt;!--T:142--&amp;gt;&lt;br /&gt;
Create an asset on the exchange. POST only. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:143--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Request|Create Transaction Request]] for common parameters.&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;issueAsset&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;name&#039;&#039; is the name of the asset&lt;br /&gt;
*&#039;&#039;description&#039;&#039; is a url-encoded description of the asset in UTF-8 with a maximum length of 1000 bytes (optional)&lt;br /&gt;
*&#039;&#039;quantityQNT&#039;&#039; is the total amount (in QNT) of the asset in existence&lt;br /&gt;
*&#039;&#039;decimals&#039;&#039; is the number of decimal places used by the asset (optional, zero default)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:144--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Response|Create Transaction Response]]. The transaction ID is also the asset ID.&lt;br /&gt;
&lt;br /&gt;
====Issue Asset Example==== &amp;lt;!--T:145--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=issueAsset&amp;amp;publicKey=57fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143b473beec228f79ff93c&amp;amp;chain=2&amp;amp;name=SecretCoin&amp;amp;description=This%20is%20SecretCoin&amp;amp;quantityQNT=100&amp;amp;deadline=60&amp;amp;feeNQT=100000000000&amp;amp;broad=false|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=issueAsset&amp;amp;&lt;br /&gt;
  publicKey=57fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143b473beec228f79ff93c&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  name=SecretCoin&amp;amp;&lt;br /&gt;
  description=This is SecretCoin&amp;amp;&lt;br /&gt;
  quantityQNT=100&amp;amp;&lt;br /&gt;
  deadline=60&amp;amp;&lt;br /&gt;
  feeNQT=100000000000&amp;amp;&lt;br /&gt;
  broad=false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;unsignedTransactionBytes&amp;quot;: &amp;quot;021095e5da013c0073080c6a224062660184f10ebb7fb431d459364a12403...&amp;quot;,&lt;br /&gt;
 &amp;quot;transactionJSON&amp;quot;: {&lt;br /&gt;
  &amp;quot;senderPublicKey&amp;quot;: &amp;quot;73080c6a224062660184f10ebb7fb431d459364a12403320c7f601f9d75cc547&amp;quot;,&lt;br /&gt;
  &amp;quot;feeNQT&amp;quot;: &amp;quot;100000000000&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;version&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;ecBlockId&amp;quot;: &amp;quot;1564408139943737911&amp;quot;,&lt;br /&gt;
  &amp;quot;attachment&amp;quot;: {&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;SecretCoin&amp;quot;,&lt;br /&gt;
   &amp;quot;description&amp;quot;: &amp;quot;This+is+SecretCoin&amp;quot;,&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;100&amp;quot;,&lt;br /&gt;
   &amp;quot;version.AssetIssuance&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;decimals&amp;quot;: 0&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;senderRS&amp;quot;: &amp;quot;ARDOR-4VNQ-RWZC-4WWQ-GVM8S&amp;quot;,&lt;br /&gt;
  &amp;quot;subtype&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;amountNQT&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
  &amp;quot;sender&amp;quot;: &amp;quot;17013046603665206934&amp;quot;,&lt;br /&gt;
  &amp;quot;ecBlockHeight&amp;quot;: 288402,&lt;br /&gt;
  &amp;quot;deadline&amp;quot;: 60,&lt;br /&gt;
  &amp;quot;timestamp&amp;quot;: 31122837,&lt;br /&gt;
  &amp;quot;height&amp;quot;: 2147483647&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;broadcasted&amp;quot;: false,&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 2&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Place Order=== &amp;lt;!--T:146--&amp;gt;&lt;br /&gt;
Place an asset order. POST only. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:147--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Request|Create Transaction Request]] for common parameters.&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is either &#039;&#039;placeBidOrder&#039;&#039; or &#039;&#039;placeAskOrder&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID of the asset being ordered&lt;br /&gt;
*&#039;&#039;quantityQNT&#039;&#039; is the amount (in QNT) of the asset being ordered&lt;br /&gt;
*&#039;&#039;priceNQTPerShare&#039;&#039; is the bid/ask price (in NQT)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:148--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Response|Create Transaction Response]]. The transaction ID is also the order ID.&lt;br /&gt;
&lt;br /&gt;
====Place Order Example==== &amp;lt;!--T:149--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=placeBidOrder&amp;amp;secretPhrase=IWontTellYou&amp;amp;chain=2&amp;amp;asset=17554243582654188572&amp;amp;quantityQNT=1000000&amp;amp;priceNQTPerShare=100&amp;amp;feeNQT=100000000&amp;amp;deadline=60|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=placeBidOrder&amp;amp;&lt;br /&gt;
  secretPhrase=IWontTellYou&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  asset=17554243582654188572&amp;amp;&lt;br /&gt;
  quantityQNT=1000000&amp;amp;&lt;br /&gt;
  priceNQTPerShare=100&amp;amp;&lt;br /&gt;
  feeNQT=100000000&amp;amp;&lt;br /&gt;
  deadline=60&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;signatureHash&amp;quot;: &amp;quot;44028b4ddb46e7d4383331425b79019bb0f004f88ede12a5aa66f05c23a75f03&amp;quot;,&lt;br /&gt;
 &amp;quot;unsignedTransactionBytes&amp;quot;: &amp;quot;02135a5ed6013c0057fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143...&amp;quot;,&lt;br /&gt;
 &amp;quot;transactionJSON&amp;quot;: {&lt;br /&gt;
  &amp;quot;senderPublicKey&amp;quot;: &amp;quot;57fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143b473beec228f79ff93c&amp;quot;,&lt;br /&gt;
  &amp;quot;signature&amp;quot;: &amp;quot;65713e80be99a927bfa7bb2e9a7b6fbd2f17c226fb956494c68a6d90a8127...&amp;quot;,&lt;br /&gt;
  &amp;quot;feeNQT&amp;quot;: &amp;quot;100000000&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;fullHash&amp;quot;: &amp;quot;4f00aef17a397eee25027e834ca765660e4e3f3f1b162468bdac67b315aeb812&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;ecBlockId&amp;quot;: &amp;quot;14593256906948324209&amp;quot;,&lt;br /&gt;
  &amp;quot;signatureHash&amp;quot;: &amp;quot;44028b4ddb46e7d4383331425b79019bb0f004f88ede12a5aa66f05c23a75f03&amp;quot;,&lt;br /&gt;
  &amp;quot;attachment&amp;quot;: {&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
   &amp;quot;priceNQT&amp;quot;: &amp;quot;100&amp;quot;,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;17554243582654188572&amp;quot;,&lt;br /&gt;
   &amp;quot;version.BidOrderPlacement&amp;quot;: 1&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;senderRS&amp;quot;: &amp;quot;ARDOR-L6FM-89WK-VK8P-FCRBB&amp;quot;,&lt;br /&gt;
  &amp;quot;subtype&amp;quot;: 3,&lt;br /&gt;
  &amp;quot;amountNQT&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
  &amp;quot;sender&amp;quot;: &amp;quot;15323192282528158131&amp;quot;,&lt;br /&gt;
  &amp;quot;ecBlockHeight&amp;quot;: 285545,&lt;br /&gt;
  &amp;quot;deadline&amp;quot;: 60,&lt;br /&gt;
  &amp;quot;transaction&amp;quot;: &amp;quot;17185236428295897167&amp;quot;,&lt;br /&gt;
  &amp;quot;timestamp&amp;quot;: 30826074,&lt;br /&gt;
  &amp;quot;height&amp;quot;: 2147483647&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;broadcasted&amp;quot;: true,&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 8729,&lt;br /&gt;
 &amp;quot;transactionBytes&amp;quot;: &amp;quot;02135a5ed6013c0057fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143...&amp;quot;,&lt;br /&gt;
 &amp;quot;fullHash&amp;quot;: &amp;quot;4f00aef17a397eee25027e834ca765660e4e3f3f1b162468bdac67b315aeb812&amp;quot;,&lt;br /&gt;
 &amp;quot;transaction&amp;quot;: &amp;quot;17185236428295897167&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Place Ask Order==== &amp;lt;!--T:150--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Place_Order|Place Order]]. &lt;br /&gt;
&lt;br /&gt;
====Place Bid Order==== &amp;lt;!--T:151--&amp;gt;&lt;br /&gt;
Refer to [[Asset_Exchange#Place_Order|Place Order]].&lt;br /&gt;
&lt;br /&gt;
===Search Assets=== &amp;lt;!--T:152--&amp;gt;&lt;br /&gt;
Get assets having a name or description that match a given query in reverse relevance order. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:153--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;searchAssets&#039;&#039;&lt;br /&gt;
*&#039;&#039;query&#039;&#039; is a full text query on the asset fields &#039;&#039;name&#039;&#039; (S) and &#039;&#039;description&#039;&#039; (S) in the [http://lucene.apache.org/core/2_9_4/queryparsersyntax.html#Overview standard Lucene syntax]&lt;br /&gt;
*&#039;&#039;firstIndex&#039;&#039; is a zero-based index to the first asset to retrieve (optional)&lt;br /&gt;
*&#039;&#039;lastIndex&#039;&#039; is a zero-based index to the last asset to retrieve (optional)&lt;br /&gt;
*&#039;&#039;includeCounts&#039;&#039; is &#039;&#039;true&#039;&#039; if the fields beginning with &#039;&#039;numberOf...&#039;&#039; are to be included (optional)&lt;br /&gt;
*&#039;&#039;requireBlock&#039;&#039; is the block ID of a block that must be present in the blockchain during execution (optional)&lt;br /&gt;
*&#039;&#039;requireLastBlock&#039;&#039; is the block ID of a block that must be last in the blockchain during execution (optional)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:154--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;assets&#039;&#039; (A) is an array of asset objects (refer to [[Asset_Exchange#Get_Asset|Get Asset]])&lt;br /&gt;
*&#039;&#039;lastBlock&#039;&#039; (S) is the last block ID on the blockchain (applies if &#039;&#039;requireBlock&#039;&#039; is provided but not &#039;&#039;requireLastBlock&#039;&#039;)&lt;br /&gt;
*&#039;&#039;requestProcessingTime&#039;&#039; (N) is the API request processing time (in millisec)&lt;br /&gt;
&lt;br /&gt;
====Search Assets Example==== &amp;lt;!--T:155--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=searchAssets&amp;amp;query=assets%20AND%20production|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=searchAssets&amp;amp;&lt;br /&gt;
  query=assets AND production&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;assets&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;2100000000000000&amp;quot;,&lt;br /&gt;
   &amp;quot;numberOfAccounts&amp;quot;: 37,&lt;br /&gt;
   &amp;quot;accountRS&amp;quot;: &amp;quot;ARDOR-3TKA-UH62-478B-DQU6K&amp;quot;,&lt;br /&gt;
   &amp;quot;decimals&amp;quot;: 8,&lt;br /&gt;
   &amp;quot;numberOfTransfers&amp;quot;: 84,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;mgwBTC&amp;quot;,&lt;br /&gt;
   &amp;quot;description&amp;quot;: &amp;quot;Production Multigateway BTC (mgwBTC) is backed 100% by...&amp;quot;,&lt;br /&gt;
   &amp;quot;numberOfTrades&amp;quot;: 15,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;17554243582654188572&amp;quot;,&lt;br /&gt;
   &amp;quot;account&amp;quot;: &amp;quot;13300069592148796968&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ],&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 96&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Set Asset Property=== &amp;lt;!--T:156--&amp;gt;&lt;br /&gt;
Set an asset property that allows attaching metadata to assets, in the form of name/value pairs. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:157--&amp;gt;&lt;br /&gt;
The property name can be up to 32 characters, and property value up to 160 characters in length. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:158--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Request|Create Transaction Request]] for common parameters.&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;setAssetProperty&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain that will be used for the operation. It is only available in the Ignis chain (2)&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset id for setting a property&lt;br /&gt;
*&#039;&#039;property&#039;&#039; is the property name. It can be up to 32 characters in length&lt;br /&gt;
*&#039;&#039;value&#039;&#039; is the property value. It can be up to 160 characters in length&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:159--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Response|Create Transaction Response]].&lt;br /&gt;
&lt;br /&gt;
====Set Asset Property Example==== &amp;lt;!--T:160--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=setAssetProperty&amp;amp;chain=2&amp;amp;asset=10982263251111884451&amp;amp;property=isIdentified&amp;amp;value=true&amp;amp;secretphrase=IwontTellYou|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=setAssetProperty&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  asset=10982263251111884451&amp;amp;&lt;br /&gt;
  property=isIdentified&amp;amp;&lt;br /&gt;
  value=true&amp;amp;&lt;br /&gt;
  secretphrase=IwontTellYou&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;minimumFeeFQT&amp;quot;: &amp;quot;10000000&amp;quot;,&lt;br /&gt;
    &amp;quot;signatureHash&amp;quot;: &amp;quot;24229be75fc4af5a3795ecc2a1c24d9bc8f9d44a72f05513b790c73be856cce5&amp;quot;,&lt;br /&gt;
    &amp;quot;transactionJSON&amp;quot;: {&lt;br /&gt;
        &amp;quot;senderPublicKey&amp;quot;: &amp;quot;df21142bd38c04bd5c5c342c6ca36802f9de89b75b2a0a8cbd32d29dca481e5c&amp;quot;,&lt;br /&gt;
        &amp;quot;chain&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;signature&amp;quot;: &amp;quot;b3457fcb4b0d11dc5350c2ec55873c9ee8c0b4d8b4bc02008004257b83636b00f45e37bd6e668f33ea561ef5cdd081795300948dc7349a46ba8e8a1bd4f2dd4b&amp;quot;,&lt;br /&gt;
        &amp;quot;feeNQT&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;fullHash&amp;quot;: &amp;quot;1cf769f04937350132e83fdc2598177841c4a37c93fbbb8e58e3f16776c29c50&amp;quot;,&lt;br /&gt;
        &amp;quot;version&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;fxtTransaction&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;phased&amp;quot;: false,&lt;br /&gt;
        &amp;quot;ecBlockId&amp;quot;: &amp;quot;12919444854690185600&amp;quot;,&lt;br /&gt;
        &amp;quot;signatureHash&amp;quot;: &amp;quot;24229be75fc4af5a3795ecc2a1c24d9bc8f9d44a72f05513b790c73be856cce5&amp;quot;,&lt;br /&gt;
        &amp;quot;attachment&amp;quot;: {&lt;br /&gt;
            &amp;quot;property&amp;quot;: &amp;quot;isIdentified&amp;quot;,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;-7464480822597667165&amp;quot;,&lt;br /&gt;
            &amp;quot;version.AssetProperty&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;true&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;senderRS&amp;quot;: &amp;quot;ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;quot;,&lt;br /&gt;
        &amp;quot;subtype&amp;quot;: 10,&lt;br /&gt;
        &amp;quot;amountNQT&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;sender&amp;quot;: &amp;quot;15382970207090678772&amp;quot;,&lt;br /&gt;
        &amp;quot;recipientRS&amp;quot;: &amp;quot;ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;quot;,&lt;br /&gt;
        &amp;quot;recipient&amp;quot;: &amp;quot;15382970207090678772&amp;quot;,&lt;br /&gt;
        &amp;quot;ecBlockHeight&amp;quot;: 449282,&lt;br /&gt;
        &amp;quot;deadline&amp;quot;: 15,&lt;br /&gt;
        &amp;quot;timestamp&amp;quot;: 26855134,&lt;br /&gt;
        &amp;quot;height&amp;quot;: 2147483647&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;unsignedTransactionBytes&amp;quot;: &amp;quot;02000000020a01dec699010f00df21142bd38c04bd5c5c342c6ca36802f9de89b75b2a0a8cbd32d29dca481e5cf49b0ea0e6497bd5000000000000000040420f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002db060080810e2ba5164bb30000000001a3b659883dd668980c69734964656e7469666965640474727565000000000000000000000000000000000000000000000000000000000000000000000000&amp;quot;,&lt;br /&gt;
    &amp;quot;broadcasted&amp;quot;: false,&lt;br /&gt;
    &amp;quot;requestProcessingTime&amp;quot;: 10,&lt;br /&gt;
    &amp;quot;transactionBytes&amp;quot;: &amp;quot;02000000020a01dec699010f00df21142bd38c04bd5c5c342c6ca36802f9de89b75b2a0a8cbd32d29dca481e5cf49b0ea0e6497bd5000000000000000040420f0000000000b3457fcb4b0d11dc5350c2ec55873c9ee8c0b4d8b4bc02008004257b83636b00f45e37bd6e668f33ea561ef5cdd081795300948dc7349a46ba8e8a1bd4f2dd4b02db060080810e2ba5164bb30000000001a3b659883dd668980c69734964656e7469666965640474727565000000000000000000000000000000000000000000000000000000000000000000000000&amp;quot;,&lt;br /&gt;
    &amp;quot;fullHash&amp;quot;: &amp;quot;1cf769f04937350132e83fdc2598177841c4a37c93fbbb8e58e3f16776c29c50&amp;quot;,&lt;br /&gt;
    &amp;quot;bundlerRateNQTPerFXT&amp;quot;: &amp;quot;10000000&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Set Phasing Asset Control=== &amp;lt;!--T:161--&amp;gt;&lt;br /&gt;
Set all transactions involving a given asset to be subject to approval (i.e. to use phasing). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:162--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Request|Create Transaction Request]] for common parameters.&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;setPhasingAssetControl&#039;&#039;&lt;br /&gt;
*&#039;&#039;transactionType&#039;&#039; is a multivalue parameter that specifies the types to which the asset control will be applied&lt;br /&gt;
** The values are SET_TRANSFER, ASSET_DELETE, ASK_ORDER_PLACEMENT, BID_ORDER_PLACEMENT, ASK_ORDER_CANCELLATION, BID_ORDER_CANCELLATION, DIVIDEND_PAYMENT, ASSET_PROPERTY_SET, ASSET_PROPERTY_DELETE, SET_ASSET_CONTROL. &lt;br /&gt;
** If no types are specified, by default the asset control is applied to the following types: ASSET_TRANSFER, ASSET_DELETE, ASK_ORDER_PLACEMENT, BID_ORDER_PLACEMENT, DIVIDEND_PAYMENT&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; the asset to set phasing asset control&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;controlVotingModel&#039;&#039; is the voting model or -1 to remove phasing control&lt;br /&gt;
*&#039;&#039;controlQuorum&#039;&#039; is the expected quorum (optional)&lt;br /&gt;
*&#039;&#039;controlMinBalance&#039;&#039; is the expected minimum balance (optional)&lt;br /&gt;
*&#039;&#039;controlMinBalanceModel&#039;&#039; is the expected minimum balance model (optional)&lt;br /&gt;
*&#039;&#039;controlHolding&#039;&#039; is the holding ID (optional)&lt;br /&gt;
*&#039;&#039;controlWhitelisted&#039;&#039; is the whitelisted accounts (optional, multiple values)&lt;br /&gt;
*&#039;&#039;controlWhitelisted&#039;&#039; is the whitelisted accounts (optional, multiple values)&lt;br /&gt;
⋮&lt;br /&gt;
*&#039;&#039;controlParams&#039;&#039; A JSON with all phasing parameters. Use the parsePhasingParams API to get this JSON. If provided, all control* parameters are ignored (optional)&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;JSON phasing parameters example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;phasingHolding&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
  &amp;quot;phasingQuorum&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
  &amp;quot;phasingWhitelist&amp;quot;: [&lt;br /&gt;
    &amp;quot;11334088826327847491&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;phasingMinBalance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
  &amp;quot;phasingMinBalanceModel&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;phasingVotingModel&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;description&amp;quot;: &amp;quot;ARDOR-XNL5-RLNZ-ZKRT-AQQ2&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;JSON composite phasing parameters example&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;phasingHolding&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
  &amp;quot;phasingQuorum&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
  &amp;quot;phasingMinBalance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
  &amp;quot;phasingMinBalanceModel&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;phasingExpression&amp;quot;: &amp;quot;!fPaul &amp;amp; fAlex&amp;quot;,&lt;br /&gt;
  &amp;quot;phasingSubPolls&amp;quot;: {&lt;br /&gt;
    &amp;quot;fAlex&amp;quot;: {&lt;br /&gt;
      &amp;quot;phasingHolding&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
      &amp;quot;phasingQuorum&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
      &amp;quot;phasingWhitelist&amp;quot;: [&lt;br /&gt;
        &amp;quot;7089993074113883968&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;phasingMinBalance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
      &amp;quot;phasingMinBalanceModel&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;phasingVotingModel&amp;quot;: 0&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;fPaul&amp;quot;: {&lt;br /&gt;
      &amp;quot;phasingHolding&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
      &amp;quot;phasingQuorum&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
      &amp;quot;phasingWhitelist&amp;quot;: [&lt;br /&gt;
        &amp;quot;9443818116697861381&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;phasingMinBalance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
      &amp;quot;phasingMinBalanceModel&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;phasingVotingModel&amp;quot;: 0&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;phasingVotingModel&amp;quot;: 6,&lt;br /&gt;
  &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:163--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Response|Create Transaction Response]].&lt;br /&gt;
&lt;br /&gt;
====Set Phasing Asset Control Example==== &amp;lt;!--T:164--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=setPhasingAssetControl&amp;amp;chain=2&amp;amp;asset=3295228938014260892&amp;amp;controlVotingModel=0&amp;amp;controlQuorum=1&amp;amp;controlWhitelisted=ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;amp;secretPhrase=IWontTellYou&amp;amp;feeNQT=100000000&amp;amp;deadline=60|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
 requestType=setPhasingAssetControl&amp;amp;&lt;br /&gt;
 chain=2&amp;amp;&lt;br /&gt;
 asset=3295228938014260892&amp;amp;&lt;br /&gt;
 controlVotingModel=0&amp;amp;&lt;br /&gt;
 controlQuorum=1&amp;amp;&lt;br /&gt;
 controlWhitelisted=ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;amp;&lt;br /&gt;
 secretPhrase=IWontTellYou&amp;amp;&lt;br /&gt;
 feeNQT=100000000&amp;amp;&lt;br /&gt;
 deadline=60&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;minimumFeeFQT&amp;quot;: &amp;quot;1000000000&amp;quot;,&lt;br /&gt;
    &amp;quot;signatureHash&amp;quot;: &amp;quot;187fad368e3dca9b214a564966c942e889458b137d0527d9807388132fd2259b&amp;quot;,&lt;br /&gt;
    &amp;quot;errorDescription&amp;quot;: &amp;quot;quorum &amp;lt;= 0&amp;quot;,&lt;br /&gt;
    &amp;quot;transactionJSON&amp;quot;: {&lt;br /&gt;
        &amp;quot;senderPublicKey&amp;quot;: &amp;quot;df21142bd38c04bd5c5c342c6ca36802f9de89b75b2a0a8cbd32d29dca481e5c&amp;quot;,&lt;br /&gt;
        &amp;quot;chain&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;signature&amp;quot;: &amp;quot;0e7ff864ddae3b20095a4aea0084361d513a4a941478dde4eacc1a33872938037b0d91ef413b19fc109f5ae2efeac87828b3fce964da5fce59bf6fbd4ead790e&amp;quot;,&lt;br /&gt;
        &amp;quot;feeNQT&amp;quot;: &amp;quot;100000000&amp;quot;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;fullHash&amp;quot;: &amp;quot;621627d8891386e8e2a00337d2decf24ebf40a4fdd005ba018750d7136c7f8fd&amp;quot;,&lt;br /&gt;
        &amp;quot;version&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;fxtTransaction&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;phased&amp;quot;: false,&lt;br /&gt;
        &amp;quot;ecBlockId&amp;quot;: &amp;quot;14535864490653796608&amp;quot;,&lt;br /&gt;
        &amp;quot;signatureHash&amp;quot;: &amp;quot;187fad368e3dca9b214a564966c942e889458b137d0527d9807388132fd2259b&amp;quot;,&lt;br /&gt;
        &amp;quot;attachment&amp;quot;: {&lt;br /&gt;
            &amp;quot;version.SetPhasingAssetControl&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;3295228938014260892&amp;quot;,&lt;br /&gt;
            &amp;quot;phasingControlParams&amp;quot;: {&lt;br /&gt;
                &amp;quot;phasingHolding&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
                &amp;quot;phasingQuorum&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
                &amp;quot;phasingWhitelist&amp;quot;: [&lt;br /&gt;
                    &amp;quot;15382970207090678772&amp;quot;&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;phasingMinBalance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
                &amp;quot;phasingMinBalanceModel&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;phasingVotingModel&amp;quot;: 0&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;senderRS&amp;quot;: &amp;quot;ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;quot;,&lt;br /&gt;
        &amp;quot;subtype&amp;quot;: 9,&lt;br /&gt;
        &amp;quot;amountNQT&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;sender&amp;quot;: &amp;quot;15382970207090678772&amp;quot;,&lt;br /&gt;
        &amp;quot;ecBlockHeight&amp;quot;: 378416,&lt;br /&gt;
        &amp;quot;deadline&amp;quot;: 15,&lt;br /&gt;
        &amp;quot;timestamp&amp;quot;: 22501006,&lt;br /&gt;
        &amp;quot;height&amp;quot;: 2147483647&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;unsignedTransactionBytes&amp;quot;: &amp;quot;020000000209018e5657010f00df21142bd38c04bd5c5c342c6ca36802f9de89b75b2a0a8cbd32d29dca481e5c0000000000000000000000000000000000e1f505000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c605000049a26cbdc3b9c900000000019c7eed9f4201bb2d000000000000000000000000000000000001f49b0ea0e6497bd5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000&amp;quot;,&lt;br /&gt;
    &amp;quot;errorCode&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;broadcasted&amp;quot;: false,&lt;br /&gt;
    &amp;quot;requestProcessingTime&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;transactionBytes&amp;quot;: &amp;quot;020000000209018e5657010f00df21142bd38c04bd5c5c342c6ca36802f9de89b75b2a0a8cbd32d29dca481e5c0000000000000000000000000000000000e1f505000000000e7ff864ddae3b20095a4aea0084361d513a4a941478dde4eacc1a33872938037b0d91ef413b19fc109f5ae2efeac87828b3fce964da5fce59bf6fbd4ead790e30c605000049a26cbdc3b9c900000000019c7eed9f4201bb2d000000000000000000000000000000000001f49b0ea0e6497bd5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000&amp;quot;,&lt;br /&gt;
    &amp;quot;error&amp;quot;: &amp;quot;nxt.NxtException$NotValidException: quorum &amp;lt;= 0&amp;quot;,&lt;br /&gt;
    &amp;quot;fullHash&amp;quot;: &amp;quot;621627d8891386e8e2a00337d2decf24ebf40a4fdd005ba018750d7136c7f8fd&amp;quot;,&lt;br /&gt;
    &amp;quot;bundlerRateNQTPerFXT&amp;quot;: &amp;quot;10000000&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Set Asset Trade Royalties=== &lt;br /&gt;
Set or change the royalties percentage. Asset issuer can receive royalties, calculated as a fixed percentage from each trade of the asset, which is subtracted from the amount (in child chain coins) that the asset seller receives and gets added automatically to the asset issuer account. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Request|Create Transaction Request]] for common parameters.&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;setAssetTradeRoyalties&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain that will be used for the operation. It is only available in the Ignis chain (2)&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset id for setting a property&lt;br /&gt;
*&#039;&#039;royaltiesPercentage&#039;&#039; percentage of royalties&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Response|Create Transaction Response]].&lt;br /&gt;
&lt;br /&gt;
====Set Asset Trade Royalties Example==== &lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=setAssetTradeRoyalties&amp;amp;chain=2&amp;amp;asset=10982263251111884451&amp;amp;royaltiesPercentage=10&amp;amp;secretphrase=IwontTellYou|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=setAssetTradeRoyalties&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  asset=10982263251111884451&amp;amp;&lt;br /&gt;
  royaltiesPercentage=10&amp;amp;&lt;br /&gt;
  secretphrase=IwontTellYou&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;minimumFeeFQT&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
    &amp;quot;signatureHash&amp;quot;: &amp;quot;306825f705446f71a6bc51828b47e2c7edc3cc930d4bd57a10011b4543a7f608&amp;quot;,&lt;br /&gt;
    &amp;quot;errorDescription&amp;quot;: &amp;quot;Setting royalties requires the asset issuer to own all asset units&amp;quot;,&lt;br /&gt;
    &amp;quot;transactionJSON&amp;quot;: {&lt;br /&gt;
        &amp;quot;senderPublicKey&amp;quot;: &amp;quot;df21142bd38c04bd5c5c342c6ca36802f9de89b75b2a0a8cbd32d29dca481e5c&amp;quot;,&lt;br /&gt;
        &amp;quot;chain&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;signature&amp;quot;: &amp;quot;881ff2a1b0f73b629511ea14221a031ab4531ea4a1d717e48fa1551f6a05b00ed492a656eb252ca411467414b5abecebd2387f73cfbe3c8c1a4ec86dd86e33b1&amp;quot;,&lt;br /&gt;
        &amp;quot;feeNQT&amp;quot;: &amp;quot;2000000&amp;quot;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;fullHash&amp;quot;: &amp;quot;cb4ba3270c409e53452128898852bb3433bfc8ebf91eac5bd91be49b002fbdc4&amp;quot;,&lt;br /&gt;
        &amp;quot;version&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;fxtTransaction&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;phased&amp;quot;: false,&lt;br /&gt;
        &amp;quot;ecBlockId&amp;quot;: &amp;quot;15716861317765606984&amp;quot;,&lt;br /&gt;
        &amp;quot;signatureHash&amp;quot;: &amp;quot;306825f705446f71a6bc51828b47e2c7edc3cc930d4bd57a10011b4543a7f608&amp;quot;,&lt;br /&gt;
        &amp;quot;attachment&amp;quot;: {&lt;br /&gt;
            &amp;quot;version.SetAssetTradeRoyalties&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;asset&amp;quot;: &amp;quot;10982263251111884451&amp;quot;,&lt;br /&gt;
            &amp;quot;percentage&amp;quot;: &amp;quot;10&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;senderRS&amp;quot;: &amp;quot;ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;quot;,&lt;br /&gt;
        &amp;quot;subtype&amp;quot;: 12,&lt;br /&gt;
        &amp;quot;amountNQT&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;sender&amp;quot;: &amp;quot;15382970207090678772&amp;quot;,&lt;br /&gt;
        &amp;quot;ecBlockHeight&amp;quot;: 10048378,&lt;br /&gt;
        &amp;quot;deadline&amp;quot;: 15,&lt;br /&gt;
        &amp;quot;timestamp&amp;quot;: 136264870,&lt;br /&gt;
        &amp;quot;height&amp;quot;: 2147483647&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;unsignedTransactionBytes&amp;quot;: &amp;quot;02000000020c01a63c1f080f00df21142bd38c04bd5c5c342c6ca36802f9de89b75b2a0a8cbd32d29dca481e5c0000000000000000000000000000000080841e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a539900482e7fd518821dda0000000001a3b659883dd6689800e1f505000000000000000000000000000000000000000000000000000000000000000000000000&amp;quot;,&lt;br /&gt;
    &amp;quot;errorCode&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;broadcasted&amp;quot;: false,&lt;br /&gt;
    &amp;quot;requestProcessingTime&amp;quot;: 3,&lt;br /&gt;
    &amp;quot;transactionBytes&amp;quot;: &amp;quot;02000000020c01a63c1f080f00df21142bd38c04bd5c5c342c6ca36802f9de89b75b2a0a8cbd32d29dca481e5c0000000000000000000000000000000080841e0000000000881ff2a1b0f73b629511ea14221a031ab4531ea4a1d717e48fa1551f6a05b00ed492a656eb252ca411467414b5abecebd2387f73cfbe3c8c1a4ec86dd86e33b17a539900482e7fd518821dda0000000001a3b659883dd6689800e1f505000000000000000000000000000000000000000000000000000000000000000000000000&amp;quot;,&lt;br /&gt;
    &amp;quot;error&amp;quot;: &amp;quot;nxt.NxtException$NotCurrentlyValidException: Setting royalties requires the asset issuer to own all asset units&amp;quot;,&lt;br /&gt;
    &amp;quot;fullHash&amp;quot;: &amp;quot;cb4ba3270c409e53452128898852bb3433bfc8ebf91eac5bd91be49b002fbdc4&amp;quot;,&lt;br /&gt;
    &amp;quot;bundlerRateNQTPerFXT&amp;quot;: &amp;quot;200000000&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get Phasing Asset Control=== &amp;lt;!--T:165--&amp;gt;&lt;br /&gt;
returns the phasing control for a given asset, if set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:166--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;getPhasingAssetControl&#039;&#039;&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; the asset to get phasing asset control&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:167--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;controlParams&#039;&#039; (A) refer to [[Asset_Exchange#Set Phasing Asset Control|Setting Phasing Asset Control]]&lt;br /&gt;
*&#039;&#039;assetName&#039;&#039; is the asset name&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the asset ID&lt;br /&gt;
&lt;br /&gt;
====Get Phasing Asset Control Example==== &amp;lt;!--T:168--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getPhasingAssetControl&amp;amp;chain=2&amp;amp;asset=3295228938014260892&amp;amp;|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
 requestType=getPhasingAssetControl&amp;amp;&lt;br /&gt;
 chain=2&amp;amp;&lt;br /&gt;
 asset=3295228938014260892&amp;amp;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;controls&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;phasingHolding&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
            &amp;quot;phasingQuorum&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;transactionTypes&amp;quot;: [&lt;br /&gt;
                &amp;quot;ASSET_TRANSFER&amp;quot;,&lt;br /&gt;
                &amp;quot;ASK_ORDER_PLACEMENT&amp;quot;,&lt;br /&gt;
                &amp;quot;BID_ORDER_PLACEMENT&amp;quot;,&lt;br /&gt;
                &amp;quot;DIVIDEND_PAYMENT&amp;quot;,&lt;br /&gt;
                &amp;quot;ASSET_DELETE&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;phasingWhitelist&amp;quot;: [&lt;br /&gt;
                &amp;quot;15382970207090678772&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;3783710658772967411&amp;quot;,&lt;br /&gt;
            &amp;quot;phasingMinBalance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
            &amp;quot;phasingMinBalanceModel&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;phasingVotingModel&amp;quot;: 0&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;assetName&amp;quot;: &amp;quot;TESTAPPROV&amp;quot;,&lt;br /&gt;
    &amp;quot;requestProcessingTime&amp;quot;: 16,&lt;br /&gt;
    &amp;quot;asset&amp;quot;: &amp;quot;3295228938014260892&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Transfer Asset=== &amp;lt;!--T:169--&amp;gt;&lt;br /&gt;
Transfer a quantity of an asset from one account to another. POST only. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:170--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Request:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Request|Create Transaction Request]] for common parameters.&lt;br /&gt;
*&#039;&#039;requestType&#039;&#039; is &#039;&#039;transferAsset&#039;&#039;&lt;br /&gt;
*&#039;&#039;chain&#039;&#039; the chain related to the operation&lt;br /&gt;
*&#039;&#039;recipient&#039;&#039; is the recipient account ID&lt;br /&gt;
*&#039;&#039;recipientPublicKey&#039;&#039; is the public key of the recipient account (optional, enhances security of a new account)&lt;br /&gt;
*&#039;&#039;asset&#039;&#039; is the ID of the asset being transferred&lt;br /&gt;
*&#039;&#039;quantityQNT&#039;&#039; is the amount (in QNT) of the asset being transferred&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:171--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039; Refer to [[Create_Transaction#Create_Transaction_Response|Create Transaction Response]]. The transaction ID is also the transfered asset ID.&lt;br /&gt;
&lt;br /&gt;
====Transfer Asset Example==== &amp;lt;!--T:172--&amp;gt;&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Request&amp;quot;&amp;gt;&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=transferAsset&amp;amp;secretPhrase=IWontTellYou&amp;amp;chain=2&amp;amp;recipient=ARDOR-4VNQ-RWZC-4WWQ-GVM8S&amp;amp;asset=17554243582654188572&amp;amp;quantityQNT=1000&amp;amp;feeNQT=100000000&amp;amp;deadline=60|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test request|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:27876/nxt?&lt;br /&gt;
  requestType=transferAsset&amp;amp;&lt;br /&gt;
  secretPhrase=IWontTellYou&amp;amp;&lt;br /&gt;
  chain=2&amp;amp;&lt;br /&gt;
  recipient=ARDOR-4VNQ-RWZC-4WWQ-GVM8S&amp;amp;&lt;br /&gt;
  asset=17554243582654188572&amp;amp;&lt;br /&gt;
  quantityQNT=1000&amp;amp;&lt;br /&gt;
  feeNQT=100000000&amp;amp;&lt;br /&gt;
  deadline=60&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Response&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;signatureHash&amp;quot;: &amp;quot;f622557588bc82942984286e431c978e687783b32db6a68a1c554b2e11349751&amp;quot;,&lt;br /&gt;
 &amp;quot;unsignedTransactionBytes&amp;quot;: &amp;quot;0211c9ebda013c0057fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143b...&amp;quot;,&lt;br /&gt;
 &amp;quot;transactionJSON&amp;quot;: {&lt;br /&gt;
  &amp;quot;senderPublicKey&amp;quot;: &amp;quot;57fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143b473beec228f79ff93c&amp;quot;,&lt;br /&gt;
  &amp;quot;signature&amp;quot;: &amp;quot;33d0fccf1f19d18b4ca97d2636cf62f7a801c07628d1bbb1d6084dc3ca658d...&amp;quot;,&lt;br /&gt;
  &amp;quot;feeNQT&amp;quot;: &amp;quot;100000000&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;fullHash&amp;quot;: &amp;quot;c8f25b15b48fb5efd3341fb369627d00f8fefb59dc18016ba0c482b6de7cad59&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;ecBlockId&amp;quot;: &amp;quot;3925493493266246517&amp;quot;,&lt;br /&gt;
  &amp;quot;signatureHash&amp;quot;: &amp;quot;f622557588bc82942984286e431c978e687783b32db6a68a1c554b2e11349751&amp;quot;,&lt;br /&gt;
  &amp;quot;attachment&amp;quot;: {&lt;br /&gt;
   &amp;quot;version.AssetTransfer&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;quantityQNT&amp;quot;: &amp;quot;1000&amp;quot;,&lt;br /&gt;
   &amp;quot;asset&amp;quot;: &amp;quot;17554243582654188572&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;senderRS&amp;quot;: &amp;quot;ARDOR-L6FM-89WK-VK8P-FCRBB&amp;quot;,&lt;br /&gt;
  &amp;quot;subtype&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;amountNQT&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
  &amp;quot;sender&amp;quot;: &amp;quot;15323192282528158131&amp;quot;,&lt;br /&gt;
  &amp;quot;recipientRS&amp;quot;: &amp;quot;ARDOR-4VNQ-RWZC-4WWQ-GVM8S&amp;quot;,&lt;br /&gt;
  &amp;quot;recipient&amp;quot;: &amp;quot;17013046603665206934&amp;quot;,&lt;br /&gt;
  &amp;quot;ecBlockHeight&amp;quot;: 288416,&lt;br /&gt;
  &amp;quot;deadline&amp;quot;: 60,&lt;br /&gt;
  &amp;quot;transaction&amp;quot;: &amp;quot;17272869949464638152&amp;quot;,&lt;br /&gt;
  &amp;quot;timestamp&amp;quot;: 31124425,&lt;br /&gt;
  &amp;quot;height&amp;quot;: 2147483647&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;broadcasted&amp;quot;: true,&lt;br /&gt;
 &amp;quot;requestProcessingTime&amp;quot;: 4968,&lt;br /&gt;
 &amp;quot;transactionBytes&amp;quot;: &amp;quot;0211c9ebda013c0057fb6f3a958e320bb49c4e81b4c2cf28b9f25d086c143b473b...&amp;quot;,&lt;br /&gt;
 &amp;quot;fullHash&amp;quot;: &amp;quot;c8f25b15b48fb5efd3341fb369627d00f8fefb59dc18016ba0c482b6de7cad59&amp;quot;,&lt;br /&gt;
 &amp;quot;transaction&amp;quot;: &amp;quot;17272869949464638152&amp;quot;&lt;br /&gt;
 &amp;quot;bundlerRateNQTPerFXT&amp;quot;: &amp;quot;10000000&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Template:NRSVersionExperimental&amp;diff=12949</id>
		<title>Template:NRSVersionExperimental</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Template:NRSVersionExperimental&amp;diff=12949"/>
		<updated>2022-02-18T12:48:52Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;3.0.1e&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Phasing_Transactions&amp;diff=12891</id>
		<title>Phasing Transactions</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Phasing_Transactions&amp;diff=12891"/>
		<updated>2021-05-18T15:50:56Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Phasing &lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, Phasing &lt;br /&gt;
|description=Ardor Phasing is a feature that allows certain phasing-safe transactions to be created with conditional deferred execution based on the result of a vote, on a list of linked transactions or on the revelation of a secret; or simply with unconditional deferred execution&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
__TOC__&lt;br /&gt;
==Introduction== &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Ardor Phasing is a feature that allows certain phasing-safe transactions to be created with conditional deferred execution based on the result of a vote, on a list of linked transactions or on the revelation of a secret; or simply with unconditional deferred execution. Phasing-safe transactions are indicated with italics in the API [[Create_Transaction|Create Transaction]] list. See also the API for [[Phasing#Create_Phased_Transaction|creating a phase transaction]]&lt;br /&gt;
In this guide, all examples begin with phased &#039;&#039;Send IGNIS&#039;&#039; transactions created in the [[Ardor_client_interface|Ardor Client]]; the procedures are similar for other types of phasing-safe transactions supported by the Ardor Client.&lt;br /&gt;
&lt;br /&gt;
==Create an Approval Model== &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Approval models are the conditions that can be linked to a phased transaction. In order to an approval to be created, click on Approval Models at the left of the Ardor client, under the Dashboard:&lt;br /&gt;
[[File:Approval_models.png|none|border|600px]]&lt;br /&gt;
*When clicking on add approval model, a pop-up entry form appears:&lt;br /&gt;
[[File:Add_approval_model.png|none|border|630px]]&lt;br /&gt;
&lt;br /&gt;
===Voting Models=== &amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
The voting models are named according to the method of approval.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
All voting models have a [[Phasing (f)#Finish_Height|Finish Height]] which determines when deferred execution will occur if approved, that is, if all requirements for execution will have been met in the block just prior to the finish height. The finish height is specified when [[Phasing (f)#Create_a_Phased_Transaction|creating the phasing transaction]], not when defining the approval model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
For the voting models (the &#039;&#039;Vote By ...&#039;&#039; models), the results of a vote determine whether execution will occur at the finish height. These models have in common: the [[Phasing (f)#Whitelist|Whitelist]] field for restricting voting to selected accounts and for generating [[Phasing (f)#Whitelisted_Approval_Requests|Whitelisted Approval Requests]], and the [[Phasing (f)#Minimum_Balance_Models|Min Balance Type]] control for restricting voting to accounts with a minimum balance of Ignis or other child chain tokens (eg: GPS, BITS), an asset or a currency.&lt;br /&gt;
&lt;br /&gt;
====Deferred==== &amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
If the first graphic is clicked, the following appears:&lt;br /&gt;
[[File:Phasing_deferred.png|none|border|630px]]&lt;br /&gt;
*Transaction execution is deferred, however transaction does not need further approval to become valid at the [[Phasing (f)#Finish_Height|Finish Height]]. &lt;br /&gt;
*The fee surcharge for the phasing appending is 0.01 ARDR.&lt;br /&gt;
&lt;br /&gt;
====Vote By Account==== &amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
If the second graphic is clicked, the following appears:&lt;br /&gt;
[[File:Phasing_vote_by_account.png|none|border|630px]]&lt;br /&gt;
*Enter into the &#039;&#039;Number Accounts&#039;&#039; field the number of accounts that must vote for (approve) the transaction. Each account has one vote.&lt;br /&gt;
*The fee surcharge for phasing appendix is 0.01 ARDR when balance independent and 0.2 ARDR when balance dependent.&lt;br /&gt;
*A [[Phasing (f)#Whitelist|Whitelist]] can be used to restrict voting and to generate [[Phasing (f)#Whitelisted_Approval_Requests|Whitelisted Approval Requests]]. Otherwise, the only mechanism for voting is [[Phasing (f)#Manual_Approval|Manual Approval]].&lt;br /&gt;
*Voting can be restricted to accounts with a minimum balance of ARDR, an asset or a currency using the [[Phasing (f)#Minimum_Balance_Models|Min Balance Type]] drop-down control.&lt;br /&gt;
&lt;br /&gt;
====Vote By Account Balance==== &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
If the third graphic is clicked, the following appears:&lt;br /&gt;
[[File:Phasing_vote_by_account_balance.png|none|border|630px]]&lt;br /&gt;
*Enter into the &#039;&#039;Amount IGNIS&#039;&#039; field the minimum total amount of IGNIS needed to approve the transaction, with each voting account contributing to the total its IGNIS balance (including any outgoing pending phased transfers) just prior to the phasing poll&#039;s completion.&lt;br /&gt;
*The fee surcharge is +0.02 ARDR.&lt;br /&gt;
*A [[Phasing (f)#Whitelist|Whitelist]] can be used to restrict voting and to generate [[Phasing (f)#Whitelisted_Approval_Requests|Whitelisted Approval Requests]]. Otherwise, the only mechanism for voting is [[Phasing (f)#Manual_Approval|Manual Approval]].&lt;br /&gt;
*Voting can be restricted to accounts with a minimum balance of IGNIS using the [[Phasing (f)#Minimum_Balance_Models|Min Balance Type]] drop-down control.&lt;br /&gt;
&lt;br /&gt;
====Vote By Asset Balance==== &amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
If the fourth graphic is clicked, the following appears:&lt;br /&gt;
[[File:Phasing_vote_by_asset_balance.png|none|border|630px]]&lt;br /&gt;
*Enter into the &#039;&#039;Asset Quantity&#039;&#039; field the minimum total quantity of the asset needed to approve the transaction, with each voting account contributing to the total its asset balance (including any outgoing pending phased transfers) just prior to the phasing poll&#039;s completion.&lt;br /&gt;
*Enter into the &#039;&#039;Asset&#039;&#039; field the asset ID. The name of the asset is instantly displayed in the shaded box to the right to confirm the ID.&lt;br /&gt;
*The fee surcharge is +0.2 ARDR.&lt;br /&gt;
*A [[Phasing (f)#Whitelist|Whitelist]] can be used to restrict voting and to generate [[Phasing (f)#Whitelisted_Approval_Requests|Whitelisted Approval Requests]]. Otherwise, an [[Phasing (f)#Asset_Approval_Requests|Asset Approval Request]] is automatically generated.&lt;br /&gt;
*Voting can be restricted to accounts with a minimum balance of the asset using the [[Phasing (f)#Minimum_Balance_Models|Min Balance Type]] drop-down control.&lt;br /&gt;
&lt;br /&gt;
====Vote By Currency Balance==== &amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
If the fifth graphic is clicked, the following appears:&lt;br /&gt;
[[File:Phasing_vote_by_currency_balance.png|none|border|630px]]&lt;br /&gt;
*Enter into the &#039;&#039;Currency Units&#039;&#039; field the minimum total units of the currency needed to approve the transaction, with each voting account contributing to the total its currency balance (including any outgoing pending phased transfers) just prior to the phasing poll&#039;s completion.&lt;br /&gt;
*Enter into the &#039;&#039;Currency&#039;&#039; field the three- to five-letter currency code. The ID of the currency is instantly displayed in the shaded box to the right to confirm the code.&lt;br /&gt;
*The fee surcharge is +0.2 ARDR.&lt;br /&gt;
*A [[Phasing (f)#Whitelist|Whitelist]] can be used to restrict voting and to generate [[Phasing (f)#Whitelisted_Approval_Requests|Whitelisted Approval Requests]]. Otherwise, an [[Phasing (f)#Currency_Approval_Requests|Currency Approval Request]] is automatically generated.&lt;br /&gt;
*Voting can be restricted to accounts with a minimum balance of the currency using the [[Phasing (f)#Minimum_Balance_Models|Min Balance Type]] drop-down control.&lt;br /&gt;
&lt;br /&gt;
====Vote By Property==== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
If the sixth graphic is clicked, the following appears:&lt;br /&gt;
[[File:Phasing_vote_by_property.png|none|border|630px]]&lt;br /&gt;
*Transaction is executed only if the sender or recipient have certain account properties. If both the sender and recipient properties are set then the transaction must match both. Please note that transactions that have no recipient (i.e. data cloud upload) are not checked for the recipient property.&lt;br /&gt;
*Enter into the &#039;&#039;Sender Property Setter&#039;&#039; the account id of the setter of the property that the sender needs for the transaction to be executed.&lt;br /&gt;
*Enter into the &#039;&#039;Recipient Property Setter&#039;&#039; the account id of the recipient of the property that the recipient needs for the transaction to be executed.&lt;br /&gt;
*Enter into the &#039;&#039;Sender Property Name&#039;&#039; and &#039;&#039;Sender Property Value&#039;&#039; the pair name and value.&lt;br /&gt;
*The fee surcharge is +0.01 ARDR.&lt;br /&gt;
&lt;br /&gt;
====By Linked Transactions==== &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
If the seventh graphic is clicked, the following appears:&lt;br /&gt;
[[File:Phasing_by_linked_transactions_2.png|none|border|630px]]&lt;br /&gt;
*Enter the full hash of a transaction that must be in the blockchain at the finish height for the phased transaction to be executed.&lt;br /&gt;
*A transaction already in the blockchain before the acceptance of the phased transaction can be linked, as long as it is not more than 60 days old, or itself a phased transaction. If the transaction is associated with your account, its full hash can be obtained by clicking on its timestamp in the [[Ardor_client_interface#My_Transactions|My Transactions]] screen to open the &#039;&#039;Transaction Info&#039;&#039; pop-up window, then clicking on the &#039;&#039;Transactions Detail&#039;&#039; tab. Otherwise, the full hash can be obtained using the [[Transactions#Get_Transaction|Ardor API]] if the transaction ID is known.&lt;br /&gt;
*A transaction not yet in the blockchain can be linked in advance if the transaction is created but not broadcast. The full hash is then available for linking to the phased transaction. The signed transaction bytes can be broadcast later (via the &#039;&#039;Transaction Operations&#039;&#039; item of the [[Ardor_client_interface#Settings_Menu|Settings Menu]]), before the finish height of the phased transaction, in order to approve it. &lt;br /&gt;
*It is possible to link up to ten transactions via the [[Phasing#Create_Phasing_Poll|Ardor API]], but currently only one can be linked via this entry form.&lt;br /&gt;
*The fee surcharge is +0.01 ARDR.&lt;br /&gt;
&lt;br /&gt;
====By Secret==== &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
If the eigth graphic is clicked, the following appears:&lt;br /&gt;
[[File:Phasing_by_secret.png|none|border]]&lt;br /&gt;
*Enter your secret phrase in order to generate a reproducible secret.&lt;br /&gt;
*Select a &#039;&#039;Hash Algorithm&#039;&#039; from the pull-down control.&lt;br /&gt;
*The &#039;&#039;Generated Secret&#039;&#039; field will show the secret that must be revealed by the finish height to approve execution of the phased transaction. The hash of the secret is shown in the &#039;&#039;Approved by Hashed Secret&#039;&#039; field.&lt;br /&gt;
*The fee surcharge is +0.01 ARDR.&lt;br /&gt;
*Update the [[Phasing (f)#Finish_Height|Finish Height]] field to change the default value.&lt;br /&gt;
*To approve the phased transaction once it is confirmed and before the finish height, use [[Phasing (f)#Manual_Approval|Manual Approval]].&lt;br /&gt;
*If you need to reproduce the secret again you can do so easily by selecting the &#039;&#039;Reproduce Secret&#039;&#039; button from the approval model you&#039;ve created.&lt;br /&gt;
[[File:ApprovalModels-Hash.png|border]]&lt;br /&gt;
[[File:Reproduce Secret modal.png|border]]&lt;br /&gt;
&lt;br /&gt;
====Composite Phasing==== &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
If the ninth graphic is clicked, the following appears:&lt;br /&gt;
[[File:Phasing_composite.png|none|border|630px]]&lt;br /&gt;
*Write a boolean expression in &#039;&#039;Boolean Expression&#039;&#039; for conditional transactions to be defined in terms of a Boolean Expression of other approvals mode.&lt;br /&gt;
*See more information of [[Composite_phasing|composite phasing]]&lt;br /&gt;
*The fee is determined by phasing complexity based on 0.02 + 0.02 ARDR per 32b + per poll fees&lt;br /&gt;
&lt;br /&gt;
===Whitelist=== &amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
Creation an approval model of one of the &#039;&#039;Vote By ...&#039;&#039; [[Phasing (f)#Voting_Models|voting models]] causes the &#039;&#039;Accounts (Whitelist)&#039;&#039; field and its associated controls to appear:&lt;br /&gt;
[[File:Phasing_whitelist.png|none|border|630px]]&lt;br /&gt;
*Enter into the &#039;&#039;Accounts (Whitelist)&#039;&#039; field the account ID of an account that is eligible to vote.&lt;br /&gt;
*Once the whitelist is created with the inclusion of a single account, only that account and up to nine other accounts optionally added to the whitelist are eligible to vote in the phasing poll.&lt;br /&gt;
*To add another account to the whitelist, click on the &#039;&#039;+ Add Account&#039;&#039; button and enter the account ID into the new field that appears.&lt;br /&gt;
*To remove an account from the whitelist, click on the &#039;&#039;- (minus)&#039;&#039; control on the right.&lt;br /&gt;
*Whitelisted accounts will receive a [[Phasing (f)#Whitelisted_Approval_Requests|Whitelisted Approval Request]], which is a mechanism for voting.&lt;br /&gt;
&lt;br /&gt;
===Minimum Balance Models=== &amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
Creation an approval model of one of the &#039;&#039;Vote By ...&#039;&#039; [[Phasing (f)#Voting_Models|voting models]] causes the &#039;&#039;Min Balance Type&#039;&#039; drop-down control to appear:&lt;br /&gt;
[[File:Phasing_min_balance_box.png|none|border|630px]]&lt;br /&gt;
*The default selection is &#039;&#039;No min balance necessary&#039;&#039;, meaning that possessing a minimum balance is not an eligibility requirement for voting. There is no additional fee surcharge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
Clicking on the drop-down control causes a list of one or more minimum balance models (types) to appear, depending on the voting model:&lt;br /&gt;
[[File:Phasing_min_balance.png|none|thumb|border|630px]]&lt;br /&gt;
*The list shown is for the [[Phasing (f)#Vote_By_Account|Vote By Account]] model and offers a choice of three minimum balance models: &#039;&#039;Min balance of ARDR required&#039;&#039;, &#039;&#039;Min balance of asset quantity required&#039;&#039; and &#039;&#039;Min balance of currency units required&#039;&#039;.&lt;br /&gt;
*If the voting model is [[Phasing (f)#Vote_By_Account_Balance|Vote By Account Balance]], [[Phasing (f)#Vote_By_Asset_Balance|Vote By Asset Balance]] or [[Phasing (f)#Vote_By_Currency_Balance|Vote By Currency Balance]], the minimum balance model must match the voting model and so only one choice is offered for each.&lt;br /&gt;
*Selecting one of the minimum balance models causes the fee surcharge to be +20 ARDR and one or more new fields to appear as described in the following subsections.&lt;br /&gt;
&lt;br /&gt;
====Minimum Balance Of Ignis==== &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
[[File:Phasing_min_balance_ardor.png|none|border|630px]]&lt;br /&gt;
*Enter into the &#039;&#039;Min Balance&#039;&#039; field the minimum balance of Ignis required for an account to be eligible to vote in the phasing poll for approval of the transaction.&lt;br /&gt;
*The account must possess this minimum balance (including any outgoing pending phased transfers) just prior to the phasing poll&#039;s completion.&lt;br /&gt;
&lt;br /&gt;
====Minimum Balance Of Asset Quantity==== &amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
[[File:Phasing_min_balance_asset.png|none|border|630px]]&lt;br /&gt;
*Enter into the &#039;&#039;Min Balance&#039;&#039; field the minimum balance of asset quantity required for an account to be eligible to vote in the phasing poll for approval of the transaction.&lt;br /&gt;
*The account must possess this minimum balance (including any outgoing pending phased transfers) just prior to the phasing poll&#039;s completion.&lt;br /&gt;
*If the voting model is [[Phasing (f)#Vote_By_Account|Vote By Account]], enter into the &#039;&#039;Asset&#039;&#039; field the asset ID. The name of the asset is instantly displayed in the shaded box to the right to confirm the ID. This field is not displayed for the [[Phasing (f)#Vote_By_Asset_Balance|Vote By Asset Balance]] voting model, because the asset ID is already specified.&lt;br /&gt;
&lt;br /&gt;
====Minimum Balance Of Currency Units==== &amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
[[File:Phasing_min_balance_currency.png|none|border|630px]]&lt;br /&gt;
*Enter into the &#039;&#039;Min Balance&#039;&#039; field the minimum balance of currency units required for an account to be eligible to vote in the phasing poll for approval of the transaction.&lt;br /&gt;
*The account must possess this minimum balance (including any outgoing pending phased transfers) just prior to the phasing poll&#039;s completion.&lt;br /&gt;
*If the voting model is [[Phasing (f)#Vote_By_Account|Vote By Account]], enter into the &#039;&#039;Currency&#039;&#039; field the three- to five-letter currency code. The ID of the currency is instantly displayed in the shaded box to the right to confirm the code. This field is not displayed for the [[Phasing (f)#Vote_By_Currency_Balance|Vote By Currency Balance]] voting model, because the currency code is already specified.&lt;br /&gt;
&lt;br /&gt;
==Create a Phased Transaction== &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
The wallet allows you to send any transaction as phased from the same pop-up form used to submit the transaction data.&lt;br /&gt;
[[File:Phasing_send_ardor_basic.png|none|border|630px]]&lt;br /&gt;
To create a phased transaction, click on the &#039;&#039;Advanced&#039;&#039; link in the lower left area of the form to display the phasing related fields:&lt;br /&gt;
[[File:Phasing_send_ardor_advanced.png|none|border|630px]]&lt;br /&gt;
*To return to the basic form, click on the &#039;&#039;Basic&#039;&#039; link in the lower left area of the form.&lt;br /&gt;
*The &#039;&#039;Referenced Transaction Hash&#039;&#039; field and the &#039;&#039;Do Not Broadcast&#039;&#039; and &#039;&#039;Note to Self?&#039;&#039; controls do not relate to Phasing.&lt;br /&gt;
*The Phasing Approval Model contains all the approvals models created to be used as phase transactions.&lt;br /&gt;
&lt;br /&gt;
===Finish Height=== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
[[File:Phasing_finish_height.png|none|border|630px]]&lt;br /&gt;
*Next to the approval model selector is the entry field for &#039;&#039;Finish Height&#039;&#039; and is initialized to 7000 blocks (approximately a week) into the future. Enter the exact block height at which the phasing poll is to finish.&lt;br /&gt;
*As a convenience, an estimated finish date is displayed to the right of the &#039;&#039;Finish Height&#039;&#039; label. This date adjusts automatically whenever the &#039;&#039;Finish Height&#039;&#039; field changes.&lt;br /&gt;
*As a convenience, the second shaded box just to the right of the &#039;&#039;Finish Height&#039;&#039; field is a control which displays the current block height at the time the pop-up entry form was opened. Clicking on it causes the &#039;&#039;Finish Height&#039;&#039; field to change to this value.&lt;br /&gt;
*As a convenience, the third and fourth boxes contain controls labeled &#039;&#039;- (minus)&#039;&#039; and &#039;&#039;+ (plus)&#039;&#039; for decreasing or increasing, respectively, the &#039;&#039;Finish Height&#039;&#039; by 500 blocks (approximately half of a day).&lt;br /&gt;
&lt;br /&gt;
==Approve A Phased Transaction== &amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
[[Phasing (f)#Approval_Requests|Approval Requests]] are the best mechanism for approval of phased transactions, but they only apply to the &#039;&#039;Vote By ...&#039;&#039; [[Phasing (f)#Voting_Models|voting models]], and in the cases of [[Phasing (f)#Vote_By_Account|Vote By Account]] and [[Phasing (f)#Vote_By_Account_Balance|Vote By Account Balance]], only when a [[Phasing (f)#Whitelist|Whitelist]] is used. Otherwise, and including the [[Phasing (f)#By_Secret|By Secret]] voting model, another mechanism must be used: [[Phasing (f)#Manual_Approval|Manual Approval]]. The [[Phasing (f)#By_Linked_Transactions|By Linked Transactions]] voting model does not require manual approval, only the presence of the specified linked transaction(s) in the blockchain.&lt;br /&gt;
&lt;br /&gt;
===Approval Requests=== &amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
&#039;&#039;Approval requests&#039;&#039; are invitations to vote in phasing polls, which apply to the &#039;&#039;Vote By ...&#039;&#039; [[Phasing (f)#Voting_Models|voting models]]. While voting is open (until the finish height of the phasing poll is reached), approval requests appear in all Ardor Clients logged into accounts that are invited to vote in the poll, either by inclusion on a whitelist or by virtue of owning an asset or currency, depending on the voting configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
If a whitelist is used, then approval requests appear only on the [[Phasing (f)#Whitelisted_Approval_Requests|Whitelisted Approval Requests]] screen, regardless of the voting model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
Absent a whitelist, [[Phasing (f)#Vote_By_Account|Vote By Account]] and [[Phasing (f)#Vote_By_Account_Balance|Vote By Account Balance]] voting model approval requests appear nowhere in the Ardor Client while [[Phasing (f)#Vote_By_Asset_Balance|Vote By Asset Balance]] and [[Phasing (f)#Vote_By_Currency_Balance|Vote By Currency Balance]] voting model approval requests appear on the [[Phasing (f)#Asset_Approval_Requests|Asset Approval Requests]] and [[Phasing (f)#Currency_Approval_Requests|Currency Approval Requests]] screens, respectively.&lt;br /&gt;
&lt;br /&gt;
====Whitelisted Approval Requests==== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
This screen is accessed from the Ardor Client menu in the left pane by first clicking on &#039;&#039;Dashboard&#039;&#039; to expand the submenu, then clicking on the &#039;&#039;Approval Requests&#039;&#039; submenu item:&lt;br /&gt;
[[File:Phasing_account_approval.png|none|thumb|border|630px]]&lt;br /&gt;
*Note that the number of pending approval requests is displayed in a shaded circle to the right of the &#039;&#039;Approval Requests&#039;&#039; submenu item; this is an alert that approvals are requested.&lt;br /&gt;
*&#039;&#039;(Account)&#039;&#039; in the screen title refers to the [[Phasing (f)#Vote_By_Account|Vote By Account]] and [[Phasing (f)#Vote_By_Account_Balance|Vote By Account Balance]] voting models for which whitelisting is required to generate approval requests, but this screen also includes the other two voting models when a whitelist is used and so would more accurately be represented as &#039;&#039;(Whitelisted)&#039;&#039;.&lt;br /&gt;
*Details of phased transactions with open phasing polls are shown in each row of the list with an &#039;&#039;Approve&#039;&#039; button in the &#039;&#039;Actions&#039;&#039; column; the graphic in the gavel column indicates the [[Phasing (f)#View_Phasing_Poll_Status|phasing poll status]].&lt;br /&gt;
*The &#039;&#039;Approve&#039;&#039; button is highlighted and active if the logged-in account has not yet voted; after voting it becomes shaded and inactive.&lt;br /&gt;
*Clicking on the &#039;&#039;Approve&#039;&#039; button opens an &#039;&#039;Approve Transaction&#039;&#039; pop-up entry form; then clicking on &#039;&#039;Approve&#039;&#039; creates an approval transaction.&lt;br /&gt;
&lt;br /&gt;
====Asset Approval Requests==== &amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
This screen is accessed from the Ardor Client menu in the left pane by first clicking on &#039;&#039;Asset Exchange&#039;&#039; to expand the submenu, then clicking on the &#039;&#039;Approval Requests&#039;&#039; submenu item; finally, select an asset from the drop-down list control under the screen title:&lt;br /&gt;
[[File:Phasing_asset_approval.png|none|thumb|border|630px]]&lt;br /&gt;
*Details of phased transactions with open phasing polls are shown in each row of the list with an &#039;&#039;Approve&#039;&#039; button in the &#039;&#039;Actions&#039;&#039; column; the graphic in the gavel column indicates the [[Phasing (f)#View_Phasing_Poll_Status|phasing poll status]].&lt;br /&gt;
*The &#039;&#039;Approve&#039;&#039; button is highlighted and active if the logged-in account has not yet voted; after voting it becomes shaded and inactive.&lt;br /&gt;
*Clicking on the &#039;&#039;Approve&#039;&#039; button opens an &#039;&#039;Approve Transaction&#039;&#039; pop-up entry form; then clicking on &#039;&#039;Approve&#039;&#039; creates an approval transaction.&lt;br /&gt;
&lt;br /&gt;
====Currency Approval Requests==== &amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
This screen is accessed from the Ardor Client menu in the left pane by first clicking on &#039;&#039;Monetary System&#039;&#039; to expand the submenu, then clicking on the &#039;&#039;Approval Requests&#039;&#039; submenu item; finally, select a currency from the drop-down list control under the screen title:&lt;br /&gt;
[[File:Phasing_currency_approval.png|none|thumb|border|630px]]&lt;br /&gt;
*Details of phased transactions with open phasing polls are shown in each row of the list with an &#039;&#039;Approve&#039;&#039; button in the &#039;&#039;Actions&#039;&#039; column; the graphic in the gavel column indicates the [[Phasing (f)#View_Phasing_Poll_Status|phasing poll status]].&lt;br /&gt;
*The &#039;&#039;Approve&#039;&#039; button is highlighted and active if the logged-in account has not yet voted; after voting it becomes shaded and inactive.&lt;br /&gt;
*Clicking on the &#039;&#039;Approve&#039;&#039; button opens an &#039;&#039;Approve Transaction&#039;&#039; pop-up entry form; then clicking on &#039;&#039;Approve&#039;&#039; creates an approval transaction.&lt;br /&gt;
&lt;br /&gt;
===Manual Approval=== &amp;lt;!--T:60--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
For any phased transaction that appears on the [[Ardor_client_interface#My_Transactions|My Transactions]] screen but that uses neither the [[Phasing (f)#None|None]] nor the [[Phasing (f)#By_Linked_Transactions|By Linked Transactions]] voting model, approval can be accomplished by the following procedure:&lt;br /&gt;
#click on the timestamp of the transaction to open the &#039;&#039;Transaction Info&#039;&#039; pop-up window&lt;br /&gt;
#click on the &#039;&#039;Actions&#039;&#039; tab&lt;br /&gt;
#click on the &#039;&#039;Approve Transaction&#039;&#039; button to open the &#039;&#039;Approve Transaction&#039;&#039; pop-up window&lt;br /&gt;
#click on the &#039;&#039;Approve&#039;&#039; button to approve the transaction, after entering the secret phrase in the case of the &#039;&#039;By Secret&#039;&#039; voting model&lt;br /&gt;
Only (confirmed) transactions that are directly connected with the logged-in account appear on this screen, including transactions sent or received, and those with phased polls with an invitation to vote (approval request).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
When there is no approval request and the phased transaction does not appear on the &#039;&#039;My Transactions&#039;&#039; screen, it can still be found if the block height of the block containing the transaction is known, via the [[Ardor_client_interface#Blocks|Blocks]] screen by clicking on the block height. Otherwise, the [[Phasing#Approve_Transaction|Approve Transaction]] API call can be used if the full hash of the phased transaction is known, and the full hash can be obtained using the [[Transactions#Get_Transaction|Get Transaction]] API call if the transaction ID is known.&lt;br /&gt;
&lt;br /&gt;
==View Phasing Poll Status== &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
The status of a phasing poll is indicated by a golden graphic which appears on an [[Phasing (f)#Approval_Requests|Approval Requests]] screen while the phasing poll is open and on the [[Ardor_client_interface#My_Transactions|My Transactions]] screen, where the graphic changes color to green (approved) or red (disapproved) upon phasing poll completion at the finish height. A tooltip appears when the cursor hovers over the graphic, displaying status details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
The status can change until the phasing poll&#039;s completion, when it freezes. At the finish height, the phased transaction is executed only if all requirements for approval are met in the block just prior to the finish block.&lt;br /&gt;
&lt;br /&gt;
===Graphic Status Indicators=== &amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Graphic&lt;br /&gt;
! Voting Model&lt;br /&gt;
! Status Indicator&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Phasing_status_none.png|border]]&lt;br /&gt;
| [[Phasing (f)#Deferred|Deferred]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Phasing_status_account_number.png|border]]&lt;br /&gt;
| [[Phasing (f)#Vote_By_Account|Vote By Account]]&lt;br /&gt;
| Current / Required approvals (votes)&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Phasing_status_account_balance.png|border]]&lt;br /&gt;
| [[Phasing (f)#Vote_By_Account_Balance|Vote By Account Balance]]&lt;br /&gt;
| Total IGNIS or child chain tokens balance progress scale, 0% to 100%&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Phasing_status_asset.png|border]]&lt;br /&gt;
| [[Phasing (f)#Vote_By_Asset_Balance|Vote By Asset Balance]]&lt;br /&gt;
| Total asset balance progress scale, 0% to 100%&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Phasing_status_currency.png|border]]&lt;br /&gt;
| [[Phasing (f)#Vote_By_Currency_Balance|Vote By Currency Balance]]&lt;br /&gt;
| Total currency balance progress scale, 0% to 100%&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Phasing_status_property.png|border]]&lt;br /&gt;
| [[Phasing (f)#Vote_By_Property|Vote By Property]]&lt;br /&gt;
| Current vote by property progress scale, 0% to 100%&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Phasing_status_transaction.png|border]]&lt;br /&gt;
| [[Phasing (f)#By_Linked_Transactions|By Linked Transactions]]&lt;br /&gt;
| Linked Transactions progress scale, 0% to 100%&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Phasing_status_secret.png|border]]&lt;br /&gt;
| [[Phasing (f)#By_Secret|By Secret]]&lt;br /&gt;
| Secret revealed progress scale, binary: 0% or 100%&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Phasing_status_composite.png|border]]&lt;br /&gt;
| [[Phasing (f)#Composite_Phasing|Composite Phasing]]&lt;br /&gt;
| Composite progress scale, binary: 0% or 100%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Graphic Status Indicator Color Codes=== &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Graphic&lt;br /&gt;
! Color&lt;br /&gt;
! Approval Status&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Phasing_status_currency.png|border]]&lt;br /&gt;
| Gold&lt;br /&gt;
| Not yet approved; phasing poll still open&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Phasing_status_currency_disapproved.png|border]]&lt;br /&gt;
| Red&lt;br /&gt;
| Disapproved; phasing poll finished, transaction ignored&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Phasing_status_currency_approved.png|border]]&lt;br /&gt;
| Green&lt;br /&gt;
| Approved; phasing poll finished, transaction executed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Graphic Status Indicator Tooltips=== &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
[[File:Phasing_status_tooltip.png|left|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Accounts/Asset/Currency:&#039;&#039;&#039; The number of whitelisted accounts or the name of the asset or currency holding.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Votes:&#039;&#039;&#039; The number of accounts or the amount of ARDR, child chain tokens, asset QNT or currency Units in &#039;&#039;Current approvals / Required approvals&#039;&#039; format.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Percentage:&#039;&#039;&#039; &#039;&#039;Current approvals&#039;&#039; as a percentage of &#039;&#039;Required approvals&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Finish Height:&#039;&#039;&#039; The block height at which the phasing poll finishes or finished.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Approved:&#039;&#039;&#039; &#039;&#039;Yes&#039;&#039; only if all requirements were met at phasing poll completion, &#039;&#039;No&#039;&#039; if not or if the phasing poll is still open.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Tutorial_on_basic_bundlers_for_child_chain_transactions&amp;diff=12890</id>
		<title>Tutorial on basic bundlers for child chain transactions</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Tutorial_on_basic_bundlers_for_child_chain_transactions&amp;diff=12890"/>
		<updated>2021-05-18T15:50:11Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=basic bundlers for child chain transactions&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, tutorials, basic tutorials, how to, bundlers, child chain transactions&lt;br /&gt;
|description=This guide provides details on how to set up basic transaction “bundlers” for child chain transactions&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Basic_tutorials]]&lt;br /&gt;
__TOC__&lt;br /&gt;
This guide provides details on how to set up basic transaction “bundlers” for child chain transactions. “Bundlers” help to tackle two of the most critical issues facing blockchain platforms at the moment: customizing end user fees for dApps so that they can be as low as 0, and hedging to provide predictable day-to-day business transaction expenses on the blockchain. The information presented here represents a modified version of the information in the following [[Basic_tutorials#Demo_of_Custom_Bundlers.2C_0_Transaction_Fees_for_App_Users.2C_and_Hedging|Demo of Custom Bundlers, 0 Transaction Fees for App Users, and Hedging”]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
If you would like to set-up a bundler, you must hold a minimum of 1000 Ardor in your wallet and you must download the Full Ardor Client Wallet from the Jelurida website. The dowonload process is explained in the guide [[how_to_download_the_ardor_client_wallet|how to download the ardor client]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Background Context on Transaction Fees== &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
For large scale adoption of blockchain technology to occur, users of blockchain based business services need to experience predictable fee structures. If you are playing a game or have a membership of some kind, you probably expect free transactions as part of the experience. Businesses set their fees based on regular reviews of cashflow projections, but the current market leaders like Ethereum do not offer any means of controlling end user fees and day-to-day business transaction expenses. The Ardor ecosystem has a process known as “Bundling” that solves these issues — allowing businesses to provide end users with customized fees as low as 0 while hedging their day-to-day business transaction expenses. By the end of this article, developers and businesses working at exchanges, investment platforms, retail stores or any other membership or subscription-based platform might start to have some exciting ideas on how to replicate their offerings on the blockchain. You can then proceed to learning about more advanced custom bundling options in the [[Bundling#Bundler_Setup|bundling features section]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction to “Bundlers”== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Let’s take a moment to understand the basics. Child chains do not have a means of verifying their own transactions because they have no way of performing their own consensus. These transactions must be packaged and sent to the Ardor parent chain for validation. This packaging process is called “bundling” and anyone can participate as long as you have 1000 Ardor and your node is online. “Bundlers” receive the transaction fees from child chain transactions in the native child chain token, while paying Ardor from their own account to send these transactions for validation on the Ardor chain. For example, if you bundle Ignis, you will be spending Ardor while receiving fees paid in Ignis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Hedging== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Given the fact Bundlers are the ones paying to include transactions on the parent chain, this means the option exists for Bundlers to provide child chain or dApp users with customized, or even free transaction fees. The owner of the Bundler can then calculate expected monthly transaction volumes, and purchase batches of Ardor ahead of time to cover the costs of bundling those child chain transactions to the Ardor parent chain — it’s essentially hedging on the blockchain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Flexibility of the “Bundler” Functionality== &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
The basic option for controlling end user fees is to set up a Bundler for all transactions occurring on a given child chain, like Ignis. However, if your business launches an asset on a child chain, you can create a custom Bundler that only packages transactions involving your asset so that you only spend Ardor to support relevant transactions. Perhaps you want to offer reduced or free transaction fees only for transactions involving your asset or monetary supply. You can do that too by learning to set up a [[Bundling#Bundling_rules|Custom Bundler]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How To Set Up A Basic Bundler== &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
Let’s get started with a demonstration of how to set up a basic child chain bundler. Then, we can continue the journey with a demo of a [[Tutorial_on_custom_bundlers_for_child_chain_transactions|custom bundler]] option in a follow up guide. Note that you can only run one bundler per account (so if your account is bundling Ignis, it can’t simultaneously bundle GPS or BITS).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Open the Client Wallet and log in to your desired child chain. For this video, I will be going to the Ignis chain but the process is the same for each child chain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
[[File:1_jApFgbgnrOQQAD6qn3oD5g.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
Once you are on the Ignis chain, click the gear symbol and select the “Bundler” option.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
[[File:1_J5Wb5Vq_KsNpghgeTBlFOg.png|center|border|180px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
We land on a page that shows all of the current bundlers and the rates they are charging. You will be competing against these bundlers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
[[File:1_STTHeVOU235h_S2zA_GxcA.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
Click the “start” button in the upper right corner (red in the image above) and a pop up box will appear.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
[[File:1_qL5ZBma6O0KoQEneUMQdHQ.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
Here you must set the fees you will charge for bundling Ignis transactions. This is an important step — make sure to do your calculations properly. The first box, “Minimum Rate,” is the exchange rate. As of August 2nd, 2018 in the Ardor coin exchange, you could buy 2.41 Ignis for every 1 Ardor. This means you should set your “Minimum Rate” to approximately 2.41 Ignis. Please do your own research before you set this rate — cryptocurrency markets are volatile so you need to do your own research when you are making these decisions. The next box is the “Fee Limit” — this is the maximum amount of Ardor that you are willing to spend to bundle transactions at this minimum rate. Consider the formula below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ardor You Pay = Fee Limit + (Fee Limit * Overpay)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
The total “Ardor You Pay” has no minimum, but the maximum is your Ardor balance. Again, the market is volatile, so it is a good idea to set small windows of “Fee Limits” bundling at specific rates so that you don’t get caught off-guard by unanticipated market changes. The next option, “Overpay amount” represents the extra Ardor you are willing to pay per child chain transaction to outcompete other bundlers. At the moment, this is unnecessary so just enter 0. But let’s take a moment to consider when this would make sense: bundlers receive the fees paid in native child chain tokens while spending Ardor — so if the value of a particular child chain token exceeds Ardor, it may become economically in the best interest of bundlers to “overpay” with Ardor in order to be the one that receives the fees paid out in that child chain token. This truly creates a competitive free market around the bundling process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Anyways, we’re just about done here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
[[File:1__gqjMOxrF6Bl3auK3mqcJg.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Take a moment to double check your rates are all correct. Remember to check your math:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ardor You Pay = Fee Limit + (Fee Limit * Overpay)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
As an example, if I change the “Overpay” to 0.1 while maintaining a “Fee Limit” of 100, I will spend up to 110 Ardor. Once you are satisfied with the rates, enter your passphrase, and click “Start.”&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
[[File:1_YR_IxM3yy5sB1uLNDWcJ2w.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Stopping or Updating a Bundler== &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
That’s it. Keep your bundler online and you should be good to go. If you would like to stop your Bundler, you can do so by navigating to the Bundlers section, clicking on “My Bundlers,” and then clicking “Stop.”&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
[[File:1_1sqnMazthV6-vFAn6lgGGw.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Business Implications of Bundlers== &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
Consider the business implications of this process. Users of dApps and services literally never need to interact directly with the Ardor parent chain. They may not even realize they are dealing with the blockchain at all since fees can be eliminated and customized by the business running the dedicated Bundler. For businesses running a dedicated Bundler, you can track exchange rates and purchase large orders of Ardor when it is most favorable for your financial projections, effectively hedging against day to day market volatility while providing consistent customer experiences.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
There are still some issues here though. What if your business launches an asset on Ignis and wants to provide reduced fees for transactions involving only your asset, but you don’t want to waste your Ardor bundling transactions that don’t involve your asset? Or, what if your business has tiered fee structures for different levels of membership? With this basic bundler, you are stuck bundling all transactions of a given child chain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
The Ardor ecosystem allows businesses to build their own custom bundlers to address each of these scenarios. To make the process more accessible to businesses, Jelurida released 5 custom bundler templates in August 2018 that can be interwoven to create complex customized fee structures [[Ardor_Software_Change_Log#ardor-client-2.1.0e|version 2.1.0e]]. For a demonstration of how powerful these custom bundlers can be, continue your learning with [[Tutorial_on_custom_bundlers_for_child_chain_transactions|custom bundlers]]. The Account Property Bundler allows you to create “whitelists” of accounts so that your bundler only packages transactions from those accounts.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=ERC20_to_Ignis&amp;diff=12889</id>
		<title>ERC20 to Ignis</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=ERC20_to_Ignis&amp;diff=12889"/>
		<updated>2021-05-18T15:49:46Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=ERC20 to Ignis&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, tutorials, advanced tutorials, how to, ERC20 API, conversion&lt;br /&gt;
|description=How to implement the ERC20 APIs using the equivalent Ardor and Ignis APIs&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Advanced_guides]]&lt;br /&gt;
__TOC__&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
ERC20 is a popular Ethereum standard for token management, explained here https://github.com/ethereum/EIPs/issues/20&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
The Ignis asset exchange on the Ardor platform already supports most of the ERC20 operations out of the box without the need to issue a smart contract. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
This guide explains how to implement the ERC20 APIs using the equivalent Ardor and Ignis APIs.&lt;br /&gt;
&lt;br /&gt;
==Why Use Ignis== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Ignis is the first public, permissionless, and fully featured child chain of the scalable, multi-chain Ardor platform. Ardor provides comprehensive solutions to the blockchain industry’s scaling dilemmas with a unique parent-child chain architecture, where Ardor functions as the lean parent chain providing proof of stake consensus for the transactional child chains beneath it. The ecosystem has been live since 01 January 2018. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
In just a few clicks, anyone can issue a unique singleton asset and/or larger supplies of assets on Ignis. Note this article demonstrates the Ignis equivalents of ERC20 tokens; however, it is simple to replicate ERC721 nonfungible tokens as well. That topic will be covered in a separate article. Core benefits of building on the Ignis child chain include: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
• &#039;&#039;&#039;KYC/AML&#039;&#039;&#039; – This crucial process for verifying account owners and restricting the pool of individuals that can exchange specific assets is made simple with [https://ardordocs.jelurida.com/Features#Asset_control Asset] and [https://ardordocs.jelurida.com/Features Account controls]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
• &#039;&#039;&#039;Flexible Token Supply&#039;&#039;&#039; – Assets only require you to set an initial supply, allowing a flexible token supply. Asset controls can limit these changes to the supply. Singleton assets can also be used where unique, individual tokens are needed.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
• &#039;&#039;&#039;Dividend Payouts&#039;&#039;&#039; – Assets make it simple to pay out [https://ardordocs.jelurida.com/Asset_Exchange#Get_Asset_Dividends dividends] on your digital assets.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
• &#039;&#039;&#039;Zero Fees&#039;&#039;&#039; - [https://ardordocs.jelurida.com/Tutorial_on_custom_bundlers_for_child_chain_transactions Custom bundlers] provide the ability for app and service owners to sponsor end-user fees associated with their specific users. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
• &#039;&#039;&#039;DEX&#039;&#039;&#039; - A fully functional [https://ardordocs.jelurida.com/Features#Asset_exchange decentralized exchange] is built into the Ignis chain, as well as most other Ardor child chains. Since all child chains are compatible with one another, this means assets and monetary systems launched on different child chains have the potential to interact with one another. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Developers can make apps and services to the next level by leveraging secure, Turing-complete [https://ardordocs.jelurida.com/Lightweight_Contracts lightweight contracts] to automate more than [https://ardordocs.jelurida.com/API 250+ APIs] to create and manage digital assets, monetary systems, marketplaces, private messaging, voting systems, cloud storage systems, and more. &lt;br /&gt;
&lt;br /&gt;
==Issuing Tokens== &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
Each ERC20 token is represented as an IGNIS asset.&lt;br /&gt;
Issue the asset using the [[Asset_Exchange#Issue_Asset|issueAsset]] API.&lt;br /&gt;
Each asset is identified by a unique asset id set to the transaction id of the issueAsset transaction.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Implementing the ERC20 APIs== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===totalSupply=== &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
To get the total token supply invoke the [[Asset_Exchange#Get_Asset|getAsset]] API and supply the asset id. The total supply is provided by the &amp;quot;initialQuantityQNT&amp;quot; attribute, the existing supply, after possible share deletes, is specified by the &amp;quot;quantityQNT&amp;quot; attribute. Quantity values are always provided as integer values, the number of decimal positions to apply to these quantities is specified by the &amp;quot;decimals&amp;quot; attribute.&lt;br /&gt;
&lt;br /&gt;
===balanceOf=== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
To get the account balance of another account with a given address, invoke the [[Asset_Exchange#Get_Account_Assets|getAccountAssets]] API and provide the IGNIS address as the &amp;quot;account&amp;quot; parameter and the asset id as the &amp;quot;asset&amp;quot; parameter.&lt;br /&gt;
For example, http://localhost:27876/nxt?requestType=getAccountAssets&amp;amp;account=yourAccountId&amp;amp;asset=6789385243274909976 when using your own local node or https://testardor.jelurida.com/nxt?requestType=getAccountAssets&amp;amp;account=ARDOR-GHKP-XWB5-XMZB-CTUE3&amp;amp;asset=14378369355033436642 when using the Jelurida testnet public node.&lt;br /&gt;
The &amp;quot;unconfirmedQuantityQNT&amp;quot; attribute in the response represents the current account balance. The &amp;quot;quantityQNT&amp;quot; attribute represents the quantity available for use at the moment after taking into account balances locked by open asset orders.&lt;br /&gt;
&lt;br /&gt;
===transfer=== &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
To send tokens from your address to another address use the [[Asset_Exchange#accordion77|transferAsset]] API, specify the recipient address, the asset id, and the quantity to transfer as well as your account passphrase, the transaction fee and transaction deadline. Consider learning about [[Transaction_Vouchers|Transaction Vouchers]] to add an additional layer of security to your transactions on the Ardor platform. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
The transferAsset transaction is recorded on the Ignis child chain, and validated by the Ardor parent chain. You can later track token transfers using the [[Asset_Exchange#Get_Asset_Transfers|getAssetTransfers]] API&lt;br /&gt;
&lt;br /&gt;
===transferFrom=== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
This is specific to Ethereum. It deals with transferring tokens from a sender account to a recipient account in case the transaction issuer is not the sender and it is not directly supported by Ignis; however, in case you need to support it, you can implement the following procedure:&lt;br /&gt;
Submit a tranferAsset API but instead of specifying the sender secretPhrase specify the sender publicKey which you can obtain using the [[Accounts#Get_Account_Public_Key|getAccountPublicKey]] API by providing the sender address. As a result, you&#039;ll receive the unsigned transaction bytes in hex format. Send these bytes to the owner of the sender account - you can use a sendMessage transaction or send it off-blockchain. The sender account should then submit a [[Transactions#Broadcast_Transaction|broadcastTransaction]] API to sign the bytes with his passphrase and record the transaction on the blockchain.&lt;br /&gt;
The following procedure described above is suitable for [[Lightweight_Contracts|lightweight contracts automation]]&lt;br /&gt;
&lt;br /&gt;
===approve=== &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
Various approval methods can be implemented using the Ignis [[Phasing_(f)|phasing]] attachment, including the ability to approve a transaction only by an account holding a certain asset balance.&lt;br /&gt;
&lt;br /&gt;
===allowance=== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
is not directly implemented by Ignis, by default the allowance is the available asset balance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trigger the ERC20 events== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Events such as &#039;&#039;&#039;transfer&#039;&#039;&#039; and &#039;&#039;&#039;approve&#039;&#039;&#039; can be triggered by using the [[Blocks#Get_Block|getBlock]] API, iterate over the transactions included in the block and look for asset transfer transactions for a given asset (transaction type 2 subType 1).&lt;br /&gt;
Care should be taken to notify only on phased transactions with the attribute &amp;quot;approved&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Additional Options for Migrating from Ethereum to Ignis Using Monetary Systems== &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Ignis also supports a different type of token through the [[Monetary_system|Monetary System]], called &amp;quot;currency.” Monetary Supplies differ from Assets in that their names are unique and a maximum supply must be determined upfront. While this is a proof of stake environment, an option for creating “mintable” currencies exists, which mimics the supply increase you’d see with proof of work networks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Among other features, a currency provides the ability to restrict token transfers so that they are allowed only between the issuer account and other accounts. This function prevents free trade of the token without the issuer permission, which is desirable in case of voting rights distribution and crowdfunding, for example. You can also launch currencies backed by reserves of the native child chain token. This means, for example, rewards points, loyalty points, and game tokens can be backed by any child chain by various companies – and each of these tokens have the potential to interact with one another.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Voting_system&amp;diff=12888</id>
		<title>Voting system</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Voting_system&amp;diff=12888"/>
		<updated>2021-05-18T15:48:46Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Voting system&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, Voting system&lt;br /&gt;
|description=The Ardor Voting System enables any account to create a poll with one question and up to 100 answers. Accounts are eligible to vote in the poll by themselves (Pollo by Vote by Account) based on a minimum required balance of child chain tokens (eg: Ignis, GPS, BITS), an asset or a currency&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
__TOC__&lt;br /&gt;
==Introduction== &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
The Ardor Voting System enables any account to create a poll with one question and up to 100 answers. Accounts are eligible to vote in the poll by themselves (Pollo by Vote by Account) based on a minimum required balance of child chain tokens (eg: Ignis), an asset or a currency. Voting consists of selecting an integer &#039;&#039;range&#039;&#039; value to associate with one or more answers as specified during poll creation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
An answer is given &#039;&#039;weight&#039;&#039; based on one of four voting models and then its &#039;&#039;weight&#039;&#039; is multiplied by the associated &#039;&#039;range&#039;&#039; value to compute a corresponding &#039;&#039;result&#039;&#039;. The four voting models specify &#039;&#039;weight&#039;&#039; as: one per voting account, or equal to the balance per voting account of Ignis or other child chain tokens, an asset or a currency.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
An aggregate &#039;&#039;weight&#039;&#039; for each answer is computed as the sum of all individual vote &#039;&#039;weights&#039;&#039;; likewise an aggregate &#039;&#039;result&#039;&#039; is computed. Individual votes are saved until at least 1441 blocks after the poll completes, typically more than a day. After this time, votes are deleted and only aggregate &#039;&#039;weights&#039;&#039; and &#039;&#039;results&#039;&#039; remain available.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
This guide describes the Monetary System active on the [[Testnet]] as of  [[Ardor_Software_Change_Log|Ardor software release 2.0.14]]. Usage examples apply to the [[Ardor_client_interface|Ardor Client Interface]]. All the examples were done by using the Ignis chain.&lt;br /&gt;
&lt;br /&gt;
==Voting System Menu== &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
The Voting System is accessed by clicking on &#039;&#039;Voting&#039;&#039; in the left-pane menu area of the [[Ardor_client_interface|Ardor Client Interface]], causing a submenu to appear:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
[[File:VS menu.png|left|border]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Voting&#039;&#039;&#039;: This item expands or contracts the submenu below and opens the [[Voting system#Active_Polls_Screen|Active Polls]] screen.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Active Polls&#039;&#039;&#039;: This item displays a list of all active (unfinished) polls and their properties as shown in the [[Voting system#Active_Polls_Screen|Active Polls]] screen, where polls can be [[Voting system#Cast_A_Vote|voted in]] and [[Voting system#Followed_Polls_Screen|followed]].&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Followed Polls&#039;&#039;&#039;: This item displays a list of all polls followed (monitored) by the logged-in account as shown in the [[Voting system#Followed_Polls_Screen|Followed Polls]] screen, where where polls can be [[Voting system#Cast_A_Vote|voted in]] and ongoing aggregate results viewed.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;My Votes&#039;&#039;&#039;: This item displays a list of all polls already voted in by the logged-in account; from this screen polls can be [[Voting system#Followed_Polls_Screen|followed]] and the [[Voting system#View_Poll_Results|results viewed]] when finished.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;My Polls&#039;&#039;&#039;: This item displays a list of all polls created by the logged-in account; from this screen polls can be [[Voting system#Followed_Polls_Screen|followed]] and either [[Voting system#Cast_A_Vote|voted in]] while still active or the [[Voting system#View_Poll_Results|results viewed]] when finished.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Create Poll&#039;&#039;&#039;: This item opens a pop-up entry form for [[Voting system#Create_A_Poll|creating a poll]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Active Polls Screen=== &amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
[[File:VS_active_polls.png|none|thumb|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
*The poll list is in order of most recently created polls.&lt;br /&gt;
*Clicking on the &#039;&#039;Title&#039;&#039; of a poll opens a detail pop-up window showing the values of all parameters specified during the creation of the poll.&lt;br /&gt;
*The &#039;&#039;Description&#039;&#039; column gives the purpose of the poll, often worded as a question.&lt;br /&gt;
*The &#039;&#039;Sender&#039;&#039; column gives the account ID of the poll creator. Clicking on the ID gives details about the account.&lt;br /&gt;
*The &#039;&#039;Start Date&#039;&#039; column gives the date/time when the poll opened for voting.&lt;br /&gt;
*The &#039;&#039;Blocks Left&#039;&#039; column gives the number of blocks remaining until completion of the poll. A block is added to the blockchain approximately every minute or two.&lt;br /&gt;
*Clicking on a highlighted &#039;&#039;Vote&#039;&#039; button in the &#039;&#039;Actions&#039;&#039; column opens a pop-up window to [[Voting system#Cast_A_Vote|cast a vote]] in the poll.&lt;br /&gt;
*Clicking on a highlighted &#039;&#039;Follow&#039;&#039; button in the &#039;&#039;Actions&#039;&#039; column adds the poll to the [[Voting system#Followed_Polls_Screen|Followed Polls]] screen, where the ongoing aggregate results can be viewed.&lt;br /&gt;
*If a poll has already been voted in or followed, the corresponding button fades and deactivates.&lt;br /&gt;
*Clicking on the &#039;&#039;Create Poll&#039;&#039; button in the upper right of the screen opens a pop-up window for [[Voting system#Create_A_Poll|creating a poll]].&lt;br /&gt;
&lt;br /&gt;
===Followed Polls Screen=== &amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
[[File:VS_followed_polls.png|none|thumb|border|600px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
*The left column is a list of followed (monitored) polls with their status in alphabetical order. Polls still active (incomplete) show the number of blocks left for voting. Clicking on one of the followed polls displays ongoing poll results in the pane to the right.&lt;br /&gt;
*On the left side of the pane, the &#039;&#039;Result&#039;&#039; and &#039;&#039;Weight&#039;&#039; are displayed for each poll &#039;&#039;Option&#039;&#039; (answer).&lt;br /&gt;
*The &#039;&#039;Weight&#039;&#039; associated with each option is the combined &#039;&#039;weight&#039;&#039; of all votes for that option, with the &#039;&#039;weight&#039;&#039; of each vote determined by the voting model selected during [[Voting system#Create_A_Poll|poll creation]]: &#039;&#039;One Vote Per Account&#039;&#039;, &#039;&#039;Vote By Ignis Balance&#039;&#039;, &#039;&#039;Vote By Asset&#039;&#039; and &#039;&#039;Vote By Currency&#039;&#039;. In the example shown above, the voting model is &#039;&#039;One Vote Per Account&#039;&#039; and so the weight of each vote cast is &#039;&#039;1&#039;&#039;.&lt;br /&gt;
*The &#039;&#039;Result&#039;&#039; associated with each option is the sum over all votes for that option of the &#039;&#039;weight&#039;&#039; of each vote multiplied by an integer &#039;&#039;range&#039;&#039; value selected when the [[Voting system#Cast_A_Vote|vote was cast]]. In the example shown above, the only &#039;&#039;range&#039;&#039; value allowed for a vote is &#039;&#039;1&#039;&#039; and so the &#039;&#039;Result&#039;&#039; and &#039;&#039;Weight&#039;&#039; columns match.&lt;br /&gt;
*On the right side of the pane, a pie chart of the results is displayed.&lt;br /&gt;
*On the bottom of the pane, the votes cast in the poll are displayed while they are still available. For each voting account the account ID is shown along with the integer &#039;&#039;range&#039;&#039; value associated with each option voted for.&lt;br /&gt;
*Clicking on the &#039;&#039;Add Poll&#039;&#039; button in the upper right of the screen opens a pop-up window for following a poll by specifying its poll ID.&lt;br /&gt;
*If the poll is still active (unfinished), a &#039;&#039;Vote in Poll&#039;&#039; button appears above the chart. Clicking on it opens a pop-up window for [[Voting system#Cast_A_Vote|casting a vote]]. If a vote has already been cast, the button is faded and deactivated.&lt;br /&gt;
&lt;br /&gt;
==Create A Poll== &amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
A poll can be created by clicking on the [[Voting system#Voting_System_Menu|Create Poll]] menu item or on the &#039;&#039;Create Poll&#039;&#039; button on the [[Voting system#Active_Polls_Screen|Active Polls]] screen. A &#039;&#039;Create Poll&#039;&#039; pop-up window is opened as shown below.&lt;br /&gt;
[[File:VS_create_poll.png|none|border]]&lt;br /&gt;
*Enter a &#039;&#039;Name&#039;&#039; or title of the poll.&lt;br /&gt;
*Enter a &#039;&#039;Description&#039;&#039; for the poll; this is the purpose of the poll and is often worded as a question.&lt;br /&gt;
*Select a voting model for the poll from the &#039;&#039;Poll By&#039;&#039; drop-down list. Your choice affects some of the next fields/controls. For details on the four voting models and the affected controls, refer to the sections below: [[Voting system#Vote_By_Account|Vote By Account]], [[Voting system#Vote_By_Account_Balance|Vote By Account Balance]], [[Voting system#Vote_By_Asset_Balance|Vote By Asset Balance]] and [[Voting system#Vote_By_Currency_Balance|Vote By Currency Balance]].&lt;br /&gt;
*Enter a &#039;&#039;Finish Height&#039;&#039; in the box on the left, the height of the blockchain when the poll completes and voting ends. For convenience, an estimated date and time corresponding to the &#039;&#039;finish height&#039;&#039; is provided, and three buttons are provided to set the &#039;&#039;finish height&#039;&#039; to the current height, then adjust it in increments of 500.&lt;br /&gt;
*Enter &#039;&#039;Answers&#039;&#039; (options) in the fields provided, clicking on &#039;&#039;Add Answer&#039;&#039; or &#039;&#039;-&#039;&#039; (minus sign) as necessary to adjust the number of answers.&lt;br /&gt;
*Enter the minimum and maximum number of answers (options) that must and can be voted for in the &#039;&#039;Minimum Nr Of Choices&#039;&#039; and &#039;&#039;Maximum Nr of Choices&#039;&#039; fields.&lt;br /&gt;
*Enter the minimum and maximum integer &#039;&#039;range&#039;&#039; values to be assigned to answers when votes are cast in the &#039;&#039;Minimum Range Value&#039;&#039; and &#039;&#039;Maximum Range Value&#039;&#039; fields. Note that a &#039;&#039;range&#039;&#039; value of &#039;&#039;0&#039;&#039; is treated by the [[Ardor_client_interface|Ardor Client]] as a nonvote and so doesn&#039;t count toward the &#039;&#039;Nr of Choice&#039;&#039; fields.&lt;br /&gt;
*Note that if the minimum &#039;&#039;range&#039;&#039; value is greater than &#039;&#039;0&#039;&#039;, a non-vote is interpreted as a minimum &#039;&#039;range&#039;&#039; value vote and so &#039;&#039;Maximum Nr of Choices&#039;&#039; must be equal to the number of answers (options).&lt;br /&gt;
*Click on the &#039;&#039;Create Poll&#039;&#039; button in the lower right of the window to create a transaction, the transaction ID of which becomes the poll ID if it is accepted into the blockchain. If there is an error in the poll specification, it will appear at the top of the window and the window will remain open.&lt;br /&gt;
===Vote By Account===&lt;br /&gt;
This voting model assigns a &#039;&#039;weight&#039;&#039; of &#039;&#039;1&#039;&#039; to each vote cast.&lt;br /&gt;
[[File:VS_vote_by_account.png|none|border]]&lt;br /&gt;
*Select &#039;&#039;Vote by Account&#039;&#039; from the &#039;&#039;Poll By&#039;&#039; drop-down list.&lt;br /&gt;
*Select the &#039;&#039;Min Balance Type&#039;&#039;. The default selection &#039;&#039;None&#039;&#039; means that all accounts are eligible to vote. The other three choices prevent accounts from voting that do not meet the minimum IGNIS, asset or currency balance requirement.&lt;br /&gt;
*If &#039;&#039;Min Balance Type&#039;&#039; is set to &#039;&#039;Account Balance&#039;&#039;, enter the minimum required account balance in the &#039;&#039;Min Voting Balance (IGNIS)&#039;&#039; field, in units of IGNIS.&lt;br /&gt;
*If &#039;&#039;Min Balance Type&#039;&#039; is set to &#039;&#039;Asset Balance&#039;&#039;, an &#039;&#039;Asset&#039;&#039; field appears on the next line. Enter the asset ID in the left box; the right box will then display the name of the asset. Enter the minimum required asset balance in the &#039;&#039;Min Voting Balance (Asset)&#039;&#039; field on the next line, in standard asset units.&lt;br /&gt;
*If &#039;&#039;Min Balance Type&#039;&#039; is set to &#039;&#039;Currency Balance&#039;&#039;, a &#039;&#039;Currency&#039;&#039; field appears on the next line. Enter the currency code in the left box; the right box will then display the ID of the currency. Enter the minimum required currency balance in the &#039;&#039;Min Voting Balance (Currency)&#039;&#039; field on the next line, in standard currency units.&lt;br /&gt;
&lt;br /&gt;
===Vote By Account Balance=== &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
This voting model assigns a &#039;&#039;weight&#039;&#039; equal to each voting account&#039;s balance of IGNIS (in NQT).&lt;br /&gt;
[[File:VS_vote_by_account_balance.png|none|border]]&lt;br /&gt;
*Enter the minimum required account balance in the &#039;&#039;Min Voting Balance (IGNIS)&#039;&#039; field, in units of IGNIS.&lt;br /&gt;
&lt;br /&gt;
===Vote By Asset Balance=== &amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
This voting model assigns a weight equal to each voting account&#039;s balance of a specified asset (in QNT).&lt;br /&gt;
[[File:VS_vote_by_asset_balance.png|none|border]]&lt;br /&gt;
*Enter the asset ID in the &#039;&#039;Asset&#039;&#039; field (left box); the right box will then display the name of the asset.&lt;br /&gt;
*Enter the minimum required asset balance in the &#039;&#039;Min Voting Balance (Asset)&#039;&#039; field in standard asset units.&lt;br /&gt;
&lt;br /&gt;
===Vote By Currency Balance=== &amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
This voting model assigns a weight equal to each voting account&#039;s balance of a specified currency (in QNT).&lt;br /&gt;
[[File:VS_vote_by_currency_balance.png|none|border]]&lt;br /&gt;
*Enter the currency code in the Currency field (left box); the right box will then display the ID of the currency.&lt;br /&gt;
*Enter the minimum required currency balance in the &#039;&#039;Min Voting Balance (Currency)&#039;&#039; field in standard currency units.&lt;br /&gt;
&lt;br /&gt;
==Cast A Vote== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
A vote can be cast in an active (unfinished) poll in by clicking on the appropriate button or link on the [[Voting system#Active_Polls_Screen|Active Polls]] screen, the [[Voting system#Followed_Polls_Screen|Followed Polls]] screen, or the [[Voting system#Voting_System_Menu|My Polls]] screen. The button or link is only visible while the poll is still active. Vote buttons are only highlighted and active if a vote has not yet been cast. Clicking on the button or link opens a &#039;&#039;Cast Vote&#039;&#039; pop-up window as shown below.&lt;br /&gt;
[[File:VS_cast_vote.png|none|border]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
*The &#039;&#039;Description&#039;&#039; is the purpose of the poll, often worded as a question.&lt;br /&gt;
*The &#039;&#039;Range&#039;&#039; section begins with an instruction followed by the poll options (answers).&lt;br /&gt;
*The instruction specifies the number of answers that may be voted for, which can be as few as one and as many as all, as specified during [[Voting system#Create_A_Poll|poll creation]].&lt;br /&gt;
*Voting for an option (answer) consists of clicking on the checkbox to the left of the answer or dragging the slider below the answer to select an integer value, depending on the &#039;&#039;range&#039;&#039; specified during [[Voting system#Create_A_Poll|poll creation]].&lt;br /&gt;
*In the example above, the &#039;&#039;Minimum Range Value&#039;&#039; is &#039;&#039;0&#039;&#039; and the &#039;&#039;Maximum Range Value&#039;&#039; is &#039;&#039;1&#039;&#039;, and so a checkbox is provided for voting and checking the checkbox is equivalent to choosing a &#039;&#039;range&#039;&#039; value of &#039;&#039;1&#039;&#039;. Leaving a checkbox unchecked corresponds to a &#039;&#039;range&#039;&#039; value of &#039;&#039;0&#039;&#039;, but the [[Ardor_client_interface|Ardor Client]] treats this case as a nonvote; it does not count it toward the &#039;&#039;Nr of Choices&#039;&#039; restrictions expressed as &#039;&#039;Select 1 option from below&#039;&#039; (&#039;&#039;Minimum Nr of Choices&#039;&#039; and &#039;&#039;Maximum Nr of Choices&#039;&#039; are both &#039;&#039;1&#039;&#039;).&lt;br /&gt;
*Click on the &#039;&#039;Cast Vote&#039;&#039; button in the lower right of the window to create a transaction. If there is an error, it will appear at the top of the window and the window will remain open.&lt;br /&gt;
&lt;br /&gt;
==View Poll Results== &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
Poll results can be viewed both while polls are still active and after their completion on the [[Voting system#Followed_Polls_Screen|Followed Polls]] screen. Only finished poll results can be viewed on the [[Voting system#Voting_System_Menu|My Votes]] screen or the [[Voting system#Voting_System_Menu|My Polls]] screen by clicking on a &#039;&#039;Results&#039;&#039; button or link, respectively. Clicking on &#039;&#039;Results&#039;&#039;, once available, opens a &#039;&#039;Poll Results&#039;&#039; pop-up window with two tabs as shown below. The &#039;&#039;Poll Results&#039;&#039; tab displays the final aggregate results and the &#039;&#039;Votes Cast&#039;&#039; tab displays the individual votes that contributed to the results while the votes are still available in the database. Refer to the [[Voting system#Followed_Polls_Screen|Followed Polls Screen]] section for explanations of the information displayed.&lt;br /&gt;
[[File:VS_view_result.png|none|thumb|border|600px]]&lt;br /&gt;
&lt;br /&gt;
==External Links== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
* [http://nxter.org/shareholders-meeting-via-blockchain/ Nxter Magazine: Shareholders Meeting Via Blockchain]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Ignis_child_chains_features&amp;diff=12887</id>
		<title>Ignis child chains features</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Ignis_child_chains_features&amp;diff=12887"/>
		<updated>2021-05-18T15:48:16Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Ignis child chains features&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, tutorials, basic tutorials, how to, Ignis features&lt;br /&gt;
|description=This guide provides an introductory tour of the live features available on the Ignis child chain as of August 2018 &lt;br /&gt;
}}&lt;br /&gt;
[[Category:Basic_tutorials]]&lt;br /&gt;
__TOC__&lt;br /&gt;
This guide provides an introductory tour of the live features available on the Ignis child chain as of August 2018. The information presented here represents a modified version of the information in the 11-minute long video [[Basic_tutorials#Ardor_and_Ignis_features|Blockchain Ardor: Demo and Tour of Ardor and Ignis Features]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
The only prerequisite for joining this tour is that you must download the Ardor Client Wallet from the Jelurida website. An article explaining the download process is available [[How_to_download_the_ardor_client_wallet|here]].&lt;br /&gt;
&lt;br /&gt;
==The Ignis Tour== &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Let’s begin the tour. Open your client wallet and log in to the Ignis chain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Since version 2.3.0e the login page has been redesigned, please refer to the [[Login_Page_Tutorial|Login Page Tutorial]]. This guide provides instructions for creating and accessing Ardor accounts through the Ardor Client Wallet. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
[[File:Login_tutorial_-_Passphrase.png|600px|center|New login page]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The former login page was as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
[[File:1_gKieCXiDbwdhzThmKoPKfQ.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Dashboard=== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
We arrive on the Ignis Dashboard, which looks similar to the Ardor Dashboard but with 8 blue boxes. The options in the top toolbar remain mostly the same as explained in the [[Introductory_tour_of_ardors_features#Ardor_Dashboard|Ardor guide]], but with the addition of the send message option and information on shuffled (private) transactions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
[[File:1_GsU6hS7QNaEBrUtiA4E-CQ.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
In the center of the screen at the top row, the first blue box is our Ignis balance, the next is the quantity of assets owned on the Ignis chain, the 3rd box shows the quantity of any currencies owned, and the final box shows the number of items purchased through the marketplace. In the second line of boxes, we see the quantity of pending and completed sales through the marketplace. The second box shows how many messages you have. The third box shows the number of aliases you own. Aliases are like namespaces or domain names– they are shortened handles for referencing accounts. So, for example, you could purchase an alias so that clients, app users, or friends can send money to a name that is easier to remember than your current public address. The last box on this line shows the block information, just like the Ardor chain.&lt;br /&gt;
&lt;br /&gt;
===Understanding Ignis Account Balances=== &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Click “More Info” on the Ignis Account balance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
[[File:1_sfUw0IAm-kMbxbOMRKj9xQ.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
A pop up box appears&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
[[File:1_3ByHuKLeXUxbdAxNkFkuxA.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
You’ll notice the Balance and Available balance (orange) reflect your Ignis holdings, however, your Guaranteed Balance (blue) refers to your actual Ardor balance, while your Effective and Forged Balances refer to the forging power of your Ardor coins, as explained in the [[Forging_(f)#Target|forging features section]]. Note that there is an option for Account Leasing, but this does not work for Ignis. Forging power and the proof of stake consensus process are unique solely to the Ardor Parent Chain. The equivalent to forging for child chain transactions is a process called, “Bundling,” which you can refer to the [[Bundling#Description|bundling feature section]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
[[File:1_K3kTfgfzskhPlMaWBRhr_g.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Looking at the left side menu, we see our Dashboard with the same options as Ardor.&lt;br /&gt;
&lt;br /&gt;
===Decentralized Coin Exchange=== &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
[[File:1_Uss8st-UhsBzwH6CT6U9oA.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
There is also the decentralized coin exchange where you can purchase Ardor, GPS, or BITS using Ignis. Remember one of the key benefits of the Ardor ecosystem is the fact that the parent chain and all child chains are interoperable, which means new assets and tokens across child chains can seamlessly interact with one another.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
The next two functions are some of Ignis’s most powerful: the issuance and exchange of assets and new monetary supplies.&lt;br /&gt;
&lt;br /&gt;
===Differences between Assets (green) and Monetary Supplies (blue)=== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
[[File:1_PowEehsdN9-adimDqu7gtA.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Assets==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
On the Ignis child chain, you can issue and exchange singleton assets (individual assets) or a large supply of assets representing anything from equities to ICO tokens to sports or entertainment event tickets to real estate properties — you can even use assets to issue dividends.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
[[File:1_M9GCuERJ7c1Je5VSWUA_5A.png|center|thumb|border|Asset Menu]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
[[File:1_U947NbQ6DCOdEOSFd92P-Q.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
The key here is that the name of an asset is not unique. The only way to identify a particular asset as legitimate is to verify its Asset ID, a series of randomly assigned numbers, against a list of Asset IDs known to be legitimate. You can use external tools such as https://ardor.tools and https://ardor.world as websites to research and identify assets before purchasing them in the wallet.&lt;br /&gt;
&lt;br /&gt;
====Monetary Supplies==== &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
Monetary supplies on the other hand, are like issuing your own cryptocurrency — the name is unique and the properties function a bit differently. Below, you see the list of existing monetary supplies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
[[File:1_Fo4q9J9zcTX8d6TprvE67g.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
There are a variety of options for issuing monetary supplies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
[[File:1_DpaHFl-KQfNwGCLyi3xUTw.png|center|border|440px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
For example, given that the option for setting reserves exists. To learn more about the types of monetary supplies, check out [[Monetary system|this]].&lt;br /&gt;
&lt;br /&gt;
====Voting System==== &amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
The voting system is another element that can be useful in board rooms or municipal elections.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
[[File:1_9Glsm8foHeaWjVCZoUPAOw.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
Polls are public but you can limit the participant pool based on various criteria, such as minimum account balance, or by requiring that participants hold a particular Asset.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
[[File:1_cCHbiAsx2iRd2ffBE7-EPA.png|center|border|440px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
This means you could issue an asset only to your intended users, set up a poll that only allows people holding that asset to vote, and then continue on with the voting, effectively limiting the participant pool while maintaining a public record of the vote.&lt;br /&gt;
&lt;br /&gt;
====Data Cloud==== &amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
The data cloud allows you to upload files to the blockchain and receive a hashed version of the file as a sort of “proof of existence.”&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
[[File:1_gKmc-0gdLGMSyUzFRA_8XA.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
The documents themselves are “pruned” or removed from the blockchain, leaving just the hash. This minimizes the blockchain size while allowing you to reference the hash on your document, against the remaining hash on the blockchain to prove authenticity at a later date. This could have major applications for the copyright industry, insurance industries, and for cloud services.&lt;br /&gt;
&lt;br /&gt;
====Marketplace==== &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
The marketplace is like a craigslist environment where you can purchase and sell all types of goods.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
[[File:1_gR4OieRVE5i5NRbrvmaJug.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
It was originally meant for digital goods, like software registration codes, but has grown to include some physical items. Note, due to the nature of immutability on the blockchain, fraudulent and inappropriate listings cannot be prevented. There is also currently no way to reverse a transaction if a seller fails to send a product to the buyer. It’s a rich functionality — but be careful when dealing with this decentralized application.&lt;br /&gt;
&lt;br /&gt;
====Shuffling==== &amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
Shuffling is synonymous with private transactions. It’s pretty straightforward, but could have big implications when it comes to combining this with other features, such as voting to protect identities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
[[File:1_lFeQcq8zZd4coVgaRuMMqg.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Messaging==== &amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Secure and arbitrary messaging are both pretty straightforward on the surface, but the potential goes beyond what we see here. There have been suggestions to use this feature to create decentralized applications, or a more complex distributed data storage system. You can get creative sending JSON files across the blockchain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
[[File:1_uHyWcsH4Qwqci97v4GGn-w.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Aliases==== &amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
Aliases — this is where you can purchase your shortened account name to make it easier for app users or friends to send you or your business funds in Ignis ecosystem. You can also buy up aliases on a child chain that you think businesses might want in the future.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
[[File:1_4M3fhPEglGOHLppEX-ENzg.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Continue with bundlers and transaction vouchers== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
Learn how businesses and developers launching tokens on existing child chains, or businesses launching their own child chains, can provide free transactions and custom tiered fee structures to their end-users by learning about transaction [[Tutorial_on_custom_bundlers_for_child_chain_transactions|“Bundlers” tutorial]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
You also have the option of learning more about the revolutionary features of the Ardor ecosystem, such as Transaction Vouchers, which make it easy to send dual signature invoices and share distributions on the blockchain. They also make it possible to create counterfeit-proof “deposit” and “withdrawal” [[Tutorial on transaction vouchers|vouchers]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
Turing-complete lightweight contracts represent the next generation in smart contract technology and it’s a feature exclusive to the Ardor ecosystem. Written guidance on lightweight contracts [[Lightweight_Contracts|is available here]] and you can refer to several articles describing the functionality [https://medium.com/@lyaffe/lightweight-contracts-articles-49c3032a50da]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Coin_exchange&amp;diff=12886</id>
		<title>Coin exchange</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Coin_exchange&amp;diff=12886"/>
		<updated>2021-05-18T15:44:50Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Coin exchange&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, Coin exchange &lt;br /&gt;
|description=Coin exchange feature allows trading all chain tokens on the Ardor blockchain by using buy and sell orders and a built-in matching engine. For instance, the coin exchange allows trading ARDR for IGNIS and IGNIS for ARDR&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
__TOC__&lt;br /&gt;
==Description== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
This page covers the decentralized coin exchange within the Ardor multichain platform. This feature allows trading all chain tokens on the Ardor blockchain by using buy and sell orders and a built-in matching engine. For instance, the coin exchange allows trading ARDR for IGNIS and IGNIS for ARDR.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Accessing the Coin Exchange== &amp;lt;!--T:3--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
To access the coin exchange, you need to install the Ardor client, check out the [[Getting_started|getting started]] page or the [[common problems and resolutions]] page in case you are having problems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Interface== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
With the server running, access the Ardor interface of your client by visiting http://localhost:27876/ (or https://localhost:27876/ if you have enabled SSL). The 26876 port is for the Tesnet while 27876 is for mainnet. On the sidebar, select a chain (e.g.: Ignis), click the menu &#039;&#039;Coin Exchange&#039;&#039;, this will give you access to the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
[[File:CoinExchange.png|left|border|300px]]&lt;br /&gt;
{|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
|&#039;&#039;&#039;Coin Exchange&#039;&#039;&#039;: This tab gives you access to the Coin Exchange itself. To select a coin to be traded of, click on the right one of the chains to be exchanged (e.g.: ARDR, BITS, GPS...). By selecting a coin, further information is provided such as a description, buy and sell orders, the quantity, and the trade history.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Coin Exchange History&#039;&#039;&#039;: This page will list all the coins traded by your account: both those bought by you and those you sold from the exchange.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;My Coin Orders&#039;&#039;&#039;: Here is provided a list of all your orders, notably the coins you are either trying to sell or to buy. It also allows you to cancel them.&lt;br /&gt;
|}&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Coin Exchange menu=== &amp;lt;!--T:9--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
The coin exchange menu is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
[[File:Coin_Exchange_Menu.png|thumb|none|border|630px|Coin Exchange available within the client.]]&lt;br /&gt;
{|&lt;br /&gt;
|This is the main menu for the Asset Exchange, it is fundamentally organized in two areas.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:*a list with all the coins available.&lt;br /&gt;
:*an interface that allows interaction with these coins.&lt;br /&gt;
|-&lt;br /&gt;
|If you own tokens for a coin, it will appear the amount value on the side list.&lt;br /&gt;
|-&lt;br /&gt;
|By selecting a coin, the interface area will automatically display the corresponding information. This includes the amount of coins available &#039;&#039;(&amp;quot;Total Available&amp;quot;)&#039;&#039;, how divisible is the coin &#039;&#039;(&amp;quot;Coin Decimals&amp;quot;)&#039;&#039; and the coin name &#039;&#039;(&amp;quot;Coin Name&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| To buy a coin, follow these simple steps:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:1. select the coin from the list on the left.&lt;br /&gt;
:2. &#039;&#039;&#039;Amount&#039;&#039;&#039;: define how many coin tokens you are interested in buying.&lt;br /&gt;
:3. &#039;&#039;&#039;Rate&#039;&#039;&#039;: set how much you are willing to pay. It refers to the cost of a unit of tokens. So, by entering 10, you are willing to pay 10 of your currently selected chain tokens &#039;&#039;per&#039;&#039; coin token to buy.&lt;br /&gt;
:4. press buy, it will prompt a pop-up window (see figure below)&lt;br /&gt;
:5. &#039;&#039;&#039;fee&#039;&#039;&#039;: define the fee, see fees in [[Create_Transaction#Create Transaction Request|Create Transaction Request]] or click on the &amp;quot;Calculate&amp;quot; button, which will automatically calculate the current network fee.&lt;br /&gt;
:6. it will ask you for your passphrase and finally press &#039;&#039;buy asset&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
[[File:ConfirmOrderBuyCoinExchange.png|thumb|none|border|630px|Confirm Order Buy Coin Exchange.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===My Coin Orders menu=== &amp;lt;!--T:12--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Under this menu, you can see all your coin exchange orders that are currently open.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
[[File:Open_orders_menu.png|none|border|thumb|630px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;What to keep in mind:&#039;&#039;&#039;&lt;br /&gt;
* You can cancel any order you made. &#039;&#039;However&#039;&#039;&lt;br /&gt;
** The process is not instantaneous. Your cancel order is broadcasted to the network, your order may get accepted before you can manage to cancel it.&lt;br /&gt;
** The process of canceling an order is a transaction, meaning it involves a fee of 0.01 Tokens, see: [[Create_Transaction#Create Transaction Request|fees]].&lt;br /&gt;
** An order in the process of being canceled will appear in red under your My Coin Orders menu.&lt;br /&gt;
* In this image, the sell order I am willing to sell Ignis to Buy ARDR at a rate of 1:1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How to Calculate the Exchange Rate using the API== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
For example to calculate the chain 3 to IGNIS exchange rate&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
*To get the best asking price get the &amp;quot;askNQTPerCoin&amp;quot; attribute from the first result of [[Coin_Exchange#Get_Coin_Exchange_Orders|getCoinExchangeOrders]] with chain 2 and exchange 3 and convert it to 4 decimals&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
*To get the best bid price get the &amp;quot;bidNQTPerCoin&amp;quot; attribute from the first result of [[Coin_Exchange#Get_Coin_Exchange_Orders|getCoinExchangeOrders]] with chain 3 and exchange 2 and convert it to 4 decimals&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
*To get the last trade price get the &amp;quot;exchangeRate&amp;quot; rate attribute from the first result of [[Coin_Exchange#Get_Coin_Exchange_Trades|getCoinExchangeTrades]] with chain 3 and exchange 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==FAQ== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
See more: &lt;br /&gt;
* [[Coin_Exchange|API Coin Exchange Operations]]&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Node_JS_module&amp;diff=12883</id>
		<title>Node JS module</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Node_JS_module&amp;diff=12883"/>
		<updated>2021-05-18T12:13:49Z</updated>

		<summary type="html">&lt;p&gt;Almonte: Removed the limitations as the packaged is already deployed to NPM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Node JS module Ardor&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, tutorials, advanced tutorials, how to, Node JS module&lt;br /&gt;
|description=Guide for the Node JS module which can be used for JavaScript application development using the Ardor platform APIs. &lt;br /&gt;
}}&lt;br /&gt;
[[Category:Advanced_guides]]&lt;br /&gt;
__TOC__&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Existing client API library for Ardor suffer from the following limitations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
#The API library sends the passphrase directly to the remote node in order to sign transactions, this means that the remote node has to be trusted which limits the usability of the API library.&lt;br /&gt;
#Some client libraries does implement local transaction signing but still were unable to validate unsigned bytes data returned from a random remote node thus still making it somewhat insecure to submit transactions to a random remote node.&lt;br /&gt;
#Client API libraries are developed by 3rd party developers so sometimes lag behind recent changes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
To address these problems we introduced a simple Node JS module which can be used for JavaScript application development using the Ardor platform APIs. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
This node JS module is now integral part of the core. It is wrapper of the existing Ardor Wallet JavaScript code configured as a node JS module.&lt;br /&gt;
&lt;br /&gt;
The official Ardor NPM package link is the following https://www.npmjs.com/package/ardor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use Cases== &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
#The Node JS module is able to work securely against any random Ardor node without trusting the node.&lt;br /&gt;
#When submitting a transaction, data submitted to a remote node is validated against the returned unsigned bytes.&lt;br /&gt;
#Transactions are signed locally so that the account passphrase is never submitted to a remote node.&lt;br /&gt;
#Message encrytption can be performed client side.&lt;br /&gt;
#API calls work at a higher level compared to the APIs provided by the existing test page, so that for example, complex numeric conversions and various formatting functions are already implemented by the API library.&lt;br /&gt;
#Updates to this API library will follow the standard Ardor release process and will be maintained by core developers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Getting Started== &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
To quickly get started using the node JS module, see instructions for [[Node_JS_module#Setup using Ardor installation|Setup using Ardor installation]] or the setup using the official [https://www.npmjs.com/package/ardor NPM Ardor package]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Setup using NPM ===&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;npm i ardor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;echo n | copy /-y node_modules\ardor\sample\*.* *.*&amp;lt;/code&amp;gt; - copy the Ardor samples without overwriting existing files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Setup using Ardor installation ===&lt;br /&gt;
&lt;br /&gt;
* Install the Ardor software (no need to download the blockchain)&lt;br /&gt;
* Install Node JS and NPM from [https://nodejs.org nodejs.org]&lt;br /&gt;
*Open a command prompt&lt;br /&gt;
* Navigate to the Ardor installation folder&lt;br /&gt;
**&amp;lt;code&amp;gt;cd html/www/js&amp;lt;/code&amp;gt; - make sure the folder has write permissions&lt;br /&gt;
**&amp;lt;code&amp;gt;npm install&amp;lt;/code&amp;gt;&lt;br /&gt;
**&amp;lt;code&amp;gt;cd sample&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Run Examples ==&lt;br /&gt;
&lt;br /&gt;
* Configure the remote node, Ardor account and default chain by editing the &amp;lt;code&amp;gt;config.json&amp;lt;/code&amp;gt; file&lt;br /&gt;
* Invoke any of the available samples using node, for example &amp;lt;code&amp;gt;node send.money.js&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Packaging and Distribution ==&lt;br /&gt;
&lt;br /&gt;
If installed from Ardor installation, the Ardor package no longer depends on a local Ardor node.&lt;br /&gt;
You can use the content of the &amp;lt;code&amp;gt;html/www/js&amp;lt;/code&amp;gt; folder as a standalone module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Warning ==&lt;br /&gt;
&lt;br /&gt;
Your passphrase or private key are submitted to a remote node only when invoking specific APIs which require them to operate like the startForging API.&lt;br /&gt;
&lt;br /&gt;
We recommend that you avoid using these APIs in your scripts when connecting to an untrusted remote node.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Advanced_guides&amp;diff=12862</id>
		<title>Advanced guides</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Advanced_guides&amp;diff=12862"/>
		<updated>2021-04-19T16:15:01Z</updated>

		<summary type="html">&lt;p&gt;Almonte: Added IPFS guides&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Advanced guides&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, tutorials, advanced tutorials, how to, advanced guides&lt;br /&gt;
|description=Advanced tutorials of the Ardor platform&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Welcome to the advanced guides. This is a series of guides that explain specific questions around the Ardor multi-chain ecosystem. If at any point something is unclear please contact us.&lt;br /&gt;
&lt;br /&gt;
==Guides and tutorials== &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Account Setup for Message-based Deposits]]===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Advanced guide that explains how to configure the account property nrs_recipient_ui_options that prevents users from accidentally sending funds without a message if it is required&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Configuring HTTPs on a standalone Ardor installation]]=== &amp;lt;!--T:25--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Advanced guide that explains how to configure HTTPs on a standalone Ardor installation running on a Linux or macOS system using letsencrypt certificates and the standard HTTPs port&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Deploying the Ardor Node Docker Image]]===&lt;br /&gt;
Advanced guide that explains how to deploy the Ardor Node Docker image. It allows us to deploy an Ardor node as a container and to bootstrap the initial blockchain automatically.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Deploying the Microsoft Azure Ardor Node]]===&lt;br /&gt;
Advanced guide that explains how to deploy the Azure Ardor Node. It allows us to deploy an Ardor node as an Azure app and to bootstrap the initial blockchain automatically.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Emulating Multi Signature Accounts on the Blockchain]]=== &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Advanced guide for emulating Multi-Signature accounts using the Ardor platform&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[ERC20_to_Ignis|ERC20 to Ignis]]=== &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
How to implement the ERC20 APIs using the equivalent Ardor and Ignis APIs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Exchange_Integration_Ardor|Exchange Integration for Ardor]]=== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Explanation about how to integrate Ardor into a currency exchange platform&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Exchange_Integration_Ignis|Exchange Integration for Ignis]]=== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Explanation about how to integrate the IGNIS token, the token of Ignis, the first child chain of the Ardor blockchain, into a crypto-currency exchange.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Exchange_Integration_of_Assets|Exchange Integration of Assets]]=== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Explanation about how to integrate assets of the Ardor platform into a crypto-currency exchange.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[How to connect Ardor node to IPFS node]]=== &lt;br /&gt;
&lt;br /&gt;
This guide will show you how to connect IPFS node to Ardor node. You will also learn how to Pin files to the IPFS node, connected to the Ardor node via another IPFS node.&lt;br /&gt;
&lt;br /&gt;
===[[How to deploy IPFS node]]===&lt;br /&gt;
&lt;br /&gt;
Advanced guide that explains how to deploy an IPFS node.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[How to setup the child chain permissions control]]=== &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
Guide that explains the child chain control feature to control who can perform transactions on the child chain. Step-by-step guided tour showcasing the most common setup.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[How_to_tokenize_your_farm_using_Ignis|How to tokenize your farm using Ignis]]=== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
Use case of Ardor for tokenizing a farm with Ignis tokens&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[How_Tx_Processing_Works|How Tx Processing works]]=== &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Detailed explanation about how the Tx processing works in the Ardor platform.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Launch_Compliant_Security_Token_Offerings_(STO)_in_Three_Steps_using_Ignis|Launch Compliant Security Token Offerings (STO) in Three Steps using Ignis]]=== &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
How to launch a fully compliant Security Token Offering (STO) with an on-Blockchain KYC-AML functionality using the Ignis chain&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Migrating_from_Nxt_to_Ardor|Migrating From Nxt to Ardor]]=== &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
If you already have an Nxt application, this guide can help you migrate the application which relies on the Nxt APIs to Ardor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Node_JS_module|Node JS module]]=== &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Technical details of the Ardor Wallet JavaScript code configured as a node JS module&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Node_Processes_Configuration|Node processes configuration]]=== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
How to use the Processes feature to persist local configuration of bundlers, funding monitors, standby shufflers, forgers... between node restarts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Passphrase_Recovery|Passphrase recovery tool]]=== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Tool included in the Ardor installation to attempt the recovery of your real account passphrase based on approximate passphrase you remember.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Paging implementation of API response|Paging implementation of API response]]=== &amp;lt;!--T:31--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
How to implement paging for API responses that cannot be fully loaded in one API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Securing_IoT_devices_and_databases|Securing IoT devices and databases]]=== &amp;lt;!--T:33--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
How to use build a hybrid solution for securing IoT data of a centralized database using the Ignis chain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[[Securing sensitive data with the blockchain|Securing sensitive data with the blockchain]]=== &amp;lt;!--T:35--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
How to use build a hybrid solution for securing sensitive data of a centralized database using the Ignis chain.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=How_to_connect_Ardor_node_to_IPFS_node&amp;diff=12861</id>
		<title>How to connect Ardor node to IPFS node</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=How_to_connect_Ardor_node_to_IPFS_node&amp;diff=12861"/>
		<updated>2021-04-19T16:09:58Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=How to connect Ardor node with an IPFS node&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=IPFS, IPFS node, IPFS documentation, Ardor, Ardor node, Ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, tutorials, advanced tutorials&lt;br /&gt;
|description=Detailed explanation step by step to connect IPFS to an Ardor node&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Advanced_guides]]&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This guide will show you how to connect &#039;&#039;&#039;IPFS node&#039;&#039;&#039; to &#039;&#039;&#039;Ardor node&#039;&#039;&#039;. You will also learn how to Pin files to the IPFS node, connected to the Ardor node via another IPFS node.&lt;br /&gt;
&lt;br /&gt;
==== What is IPFS? ====&lt;br /&gt;
IPFS is a distributed system for storing and accessing files, websites, applications, and data. Refer to the IPFS [https://docs.ipfs.io official documentation] for more information.&lt;br /&gt;
&lt;br /&gt;
== Installing and deploying IPFS node ==&lt;br /&gt;
Please refer to [https://wiki.jelurida.com/How_to_deploy_IPFS_node guide] for a detailed tutorial about how to install deploy IPFS node.&lt;br /&gt;
&lt;br /&gt;
== Connecting the Ardor node to IPFS node ==&lt;br /&gt;
The connection between Ardor and IPFS nodes is possible via a Lightweight contract. If you are not familiar with Jelurida&#039;s Lightweight Contracts, please visit [https://wiki.jelurida.com/Lightweight_Contracts this documentation] for a detailed tutorial.&lt;br /&gt;
&lt;br /&gt;
Assuming that you already have running Ardor node with enabled Contract Runner and two IPFS nodes connected to the IPFS network, the next step is to upload &#039;&#039;&#039;&#039;&#039;PinToIpfs.java&#039;&#039;&#039;&#039;&#039; and &#039;&#039;&#039;&#039;&#039;PinFromMessage.java&#039;&#039;&#039;&#039;&#039; contracts to the Ardor node. If you don&#039;t know how to deploy contracts, please visit [https://wiki.jelurida.com/Lightweight_Contracts#Contract_Deployment our tutorial] for Lightweight Contracts. After successfully uploading the contracts, you will observe the following in the Contracts menu:&lt;br /&gt;
&lt;br /&gt;
[[File:Uploaded ipfs contract1.jpg|class=img-responsive|border|center]]&lt;br /&gt;
&lt;br /&gt;
Your Ardor node is now connected to the IPFS node. If you are wondering which IPFS node is exactly connected, it&#039;s to the one with default IPFS settings, or you may call it the initial IPFS node (The default address of the IPFS API can be configured, please refer to the Configuring parameters section below).&lt;br /&gt;
&lt;br /&gt;
Now let&#039;s see if the connection was indeed successful. Let&#039;s navigate to the Web UI of the second IPFS node,in our case that is &amp;lt;code&amp;gt;http://localhost:5002/ipfs&amp;lt;/code&amp;gt; and make sure we have uploaded a file.&lt;br /&gt;
&lt;br /&gt;
[[File:Ipfs uploaded file.jpg|class=img-responsive|border|center]]&lt;br /&gt;
&lt;br /&gt;
The next step is to copy the CID of the uploaded file and open the Ardor app. As the name of the contract suggests, we have to issue a transaction with a message, it can be &#039;&#039;Send Money&#039;&#039;, &#039;&#039;Send Message&#039;&#039;, etc., as long as a message can be attached. We will simply send a message and paste the copied CID:&lt;br /&gt;
&lt;br /&gt;
[[File:Send message CID.jpg|class=img-responsive|border|center]]&lt;br /&gt;
&lt;br /&gt;
An important thing to remind here is that the message has to be &#039;&#039;&#039;&#039;&#039;non-encrypted&#039;&#039;&#039;&#039;&#039;, otherwise the operation will not work. &lt;br /&gt;
* Wait for the transaction to be confirmed and published to the blockchain &lt;br /&gt;
* Open the Web UI of the initial node &amp;lt;code&amp;gt;localhost:5001/ipfs&amp;lt;/code&amp;gt; &lt;br /&gt;
* Click on &#039;&#039;&#039;FILES&#039;&#039;&#039; on the left panel and as you already guessed, our file should be located in &#039;&#039;&#039;pins&#039;&#039;&#039; menu, &lt;br /&gt;
* You can open it. If you don&#039;t see the file, please refresh the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ipfs pin.jpg|class=img-responsive|border|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:Ipfs pin1.jpg|class=img-responsive|border|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuring parameters ==&lt;br /&gt;
&lt;br /&gt;
=== Max Pin Size ===&lt;br /&gt;
If you want to limit the size of the pinned files, you can do that by configuring the &#039;&#039;maxPinSize&#039;&#039; parameter.&lt;br /&gt;
It can be done by either adding &#039;&#039;&#039;&#039;&#039;contract.PinToIpfs.param.maxPinSize=size_in_bytes&#039;&#039;&#039;&#039;&#039; in &#039;&#039;nxt.properties&#039;&#039; file or editing the &#039;&#039;contract.uploader.json&#039;&#039; file and adding this code:&lt;br /&gt;
&lt;br /&gt;
[[File:Max pin size.jpg|frame|none]]&lt;br /&gt;
&lt;br /&gt;
As you can see, the max pin size is set to 1024 bytes.&lt;br /&gt;
&lt;br /&gt;
=== IPFS API Address ===&lt;br /&gt;
The default IPFS API Address can be configured by changing the &#039;&#039;ipfsApiAddress&#039;&#039; parameter. It can be done by either adding &amp;lt;code&amp;gt;contract.PinToIpfs.param.ipfsApiAddress=http://127.0.0.1:5002/api/v0&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;nxt.properties&amp;lt;/code&amp;gt; file or editing the &amp;lt;code&amp;gt;contract.uploader.json&amp;lt;/code&amp;gt; file and adding this code:&lt;br /&gt;
&lt;br /&gt;
[[File:Api address.jpg|frame|none]]&lt;br /&gt;
&lt;br /&gt;
In the example, only the &#039;&#039;Port&#039;&#039; is changed from 5001 to 5002.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Graphical_Installer&amp;diff=12851</id>
		<title>Graphical Installer</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Graphical_Installer&amp;diff=12851"/>
		<updated>2021-04-15T17:24:53Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Graphical Installer&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, Graphical Installer&lt;br /&gt;
|description=Explanation of the Ardor Graphical Installer&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
__TOC__&lt;br /&gt;
Ardor&#039;s installer is provided in the following flavors:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Java .jar&#039;&#039;&#039; file - smaller bundle, without JRE. Can be run on Windows, Linux, and Mac platforms.&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; executable - bundles a Java JRE and provides a familiar experience for Windows users.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS/X&#039;&#039;&#039; disk image - includes a Java JRE and OS/X App which installs the Ardor client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
All versions of the installer are generated by a single build script and result in the same end product. The Windows executable and Mac disk image are larger since they include two copies of the Java JRE, one used to launch the server and another to invoke the installer itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installer benefits == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* All installation scripts and metadata are part of the core Ardor code.&lt;br /&gt;
* Java-based, with support for Windows, Linux, and Mac.&lt;br /&gt;
* Installation is digitally signed.&lt;br /&gt;
* Based on two open-source tools [http://izpack.org IzPack] and [http://devwizard.free.fr/html/en/JavaExe.html JavaExe]&lt;br /&gt;
* Bundles a Java Server JRE for Windows.&lt;br /&gt;
* System tray integration for Windows, Mac, and Linux systems that support it, with the following functionality:&lt;br /&gt;
** Server status monitoring&lt;br /&gt;
** Log file viewing&lt;br /&gt;
** Server shutdown&lt;br /&gt;
** Starting up the wallet in a browser&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation steps == &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
The installation process will guide you through the following steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
# Language Selection&lt;br /&gt;
# Welcome page&lt;br /&gt;
# License agreement&lt;br /&gt;
# Change log&lt;br /&gt;
# Installation path selection&lt;br /&gt;
# Node Configuration&lt;br /&gt;
# Desktop shortcuts &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Java .jar file installation === &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
The Jar file installation is compatible with Windows, Linux and Mac. To invoke it, open a command prompt, make sure Java 8 JRE is in your path, then execute the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
java -jar &amp;lt;installer.name&amp;gt;.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
On Unix systems with no graphical environment, invoke the installer from the command line with the -console flag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
java -jar ardor-client-&amp;lt;version&amp;gt;.sh -console&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Windows installation === &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
On Windows platforms the installer supports the following features:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
* Wizard-based installation&lt;br /&gt;
* Start menu and desktop icons&lt;br /&gt;
* Automatic installation of Java JRE &lt;br /&gt;
* Creation of Ardor.exe Windows executable which launches the server&lt;br /&gt;
* System tray icons used for monitoring and management&lt;br /&gt;
* Ability to run the server as a Windows service (so that it continues to run when the user log off the workstation)&lt;br /&gt;
* Ability to run the server on Windows without administrator rights&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
On Windows, run the Ardor server from the desktop icon or by executing Ardor.exe installed in the installation root folder. &lt;br /&gt;
In response, an Ardor icon will show up in the system tray and the following folders will be created in the user profile folder, typically under  &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; inline&amp;gt;c:\users\&amp;lt;UserName&amp;gt;\AppData\Roaming\Ardor&amp;lt;/syntaxhighlight&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
* conf - contains the user configuration files nxt.properties and logging.properties&lt;br /&gt;
* logs - contains the server logs&lt;br /&gt;
* nxt_db - mainnet database&lt;br /&gt;
* nxt_test_db - testnet database&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Service ==== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Running the node as a Windows service provides background operation of the node allowing the user to log off the workstation while the node is still running. It also allows the node to automatically start after a workstation restart.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
To register the Ardor node as a windows service, open a command prompt with administrator privileges and invoke ardorservice.exe from the installation folder. Answer &amp;quot;Yes&amp;quot; to the confirmation prompt. The service is automatically registered and started.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Invoke ardorservice.exe again from a command prompt with administrator privileges to delete the service. Answer &amp;quot;Yes&amp;quot; to the confirmation prompt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
You can control the service operation and settings using the standard Windows Service dialog. Look for the &amp;quot;Ardor Server&amp;quot; service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
When running as a windows service on Windows 10 with open JDK 11 the blockchain database, log files, and configuration files are created in the C:\Windows\System32\config\systemprofile\AppData\Roaming\Ardor folder, and the system out and system err streams are redirected to folder C:\Windows\Temp. To view files in these folders you will need administrator privileges.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
When running as a windows service, the system tray icon is not displayed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Support for Windows 32 bit ==== &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
The installer executable bundles a Java 64 bit JRE therefore it won&#039;t work on a 32 bit Windows workstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Similarly, ardor.exe and ardorservice.exe won&#039;t work on Windows 32 bit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
To run Ardor on a Windows 32 bit workstation, install Java 8 manually and then install Ardor from the .sh installer file or using the cross-platform zip file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Use run.bat to start your node.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional Notes ==== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
Additional diagnostic information about the server, can be obtained from the files nxt.system.out.*.log and nxt.system.err.*.log in the Windows %TEMP% folder which captures the standard output and error streams. These files are especially useful to review environment information and diagnose startup problems.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
In its default configuration, the server does not create or modify any files under the installation folder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Limitations ==== &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
# Uninstall from the Windows control panel does not clean all installed folders. You can manually remove the remaining files&lt;br /&gt;
# In some cases, desktop shortcut icons, require a refresh of the desktop before the Ardor icon becomes visible&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Forging_Algorithm&amp;diff=12850</id>
		<title>Forging Algorithm</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Forging_Algorithm&amp;diff=12850"/>
		<updated>2021-04-15T17:23:43Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Forging&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, Forging&lt;br /&gt;
|description=Forging is the main process of the Ardor Proof of Stake algorithm&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
__TOC__&lt;br /&gt;
===Features of the Algorithm=== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
There are two conditions that an account needs to satisfy before it can start forging:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
* &#039;&#039;The account needs to have an &#039;&#039;effective balance&#039;&#039; of at least 1000 ARDR. That is, it needs to have had a balance of 1000 ARDR(or more) over the last 1440 blocks / 24 hours.&#039;&#039;&lt;br /&gt;
: This is needed because the forging algorithm depends on the stake of the user.&lt;br /&gt;
* &#039;&#039;The account needs to have at least one outgoing transaction, also confirmed 1440 times.&#039;&#039;&lt;br /&gt;
: The passphrase is the account&#039;s private key, a public key is obtained only after at least one outgoing transaction is executed and confirmed. This can be done in several ways, notably by sending 1 ARDR to your own account (or someone else&#039;s), by [[Arbitrary_messages#Sending_a_message|sending a message]] using the arbitrary message feature or by [[Alias_system#Alias_Transfer.2FSale|registering an alias]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
When these two conditions are met, a 1000 ARDR effective balance and public key published, the account is eligible to forge. Note that forging will stop if the effective balance drops below 1000 ARDR.&lt;br /&gt;
&lt;br /&gt;
The forging algorithm employed by ARDR revolves around two variables: &#039;&#039;Hit&#039;&#039; and &#039;&#039;Target&#039;&#039;.&lt;br /&gt;
====Hit==== &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Each forger generates one &#039;hit&#039; value between 0 and 2^64 - 1 for each new block. While hit is deterministic, it&#039;s produced through hashing inputs, so it can be regarded as a uniform random variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
From the code, hit is defined as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BigInteger hit = getHit(publicKey, lastBlock);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Two arguments are given to the &amp;lt;code&amp;gt;getHit&amp;lt;/code&amp;gt; function: the forger&#039;s public key and the previous block. The implementation of this function can be seen below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private static BigInteger getHit(byte[] publicKey, Block block){&lt;br /&gt;
   [...]&lt;br /&gt;
   MessageDigest digest = Crypto.sha256();&lt;br /&gt;
   digest.update(block.getGenerationSignature());&lt;br /&gt;
   byte[] generationSignatureHash = digest.digest(publicKey);&lt;br /&gt;
   return new BigInteger(1, new byte[] {generationSignatureHash[7], &lt;br /&gt;
                                        generationSignatureHash[6], &lt;br /&gt;
                                        generationSignatureHash[5], &lt;br /&gt;
                                        generationSignatureHash[4], &lt;br /&gt;
                                        generationSignatureHash[3], &lt;br /&gt;
                                        generationSignatureHash[2], &lt;br /&gt;
                                        generationSignatureHash[1], &lt;br /&gt;
                                        generationSignatureHash[0]});&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt; Taken from ardor/ src / java / nxt / Generator.java &amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Each block has a 64 bytes &amp;lt;code&amp;gt;generationSignature&amp;lt;/code&amp;gt; parameter. A forger signs the previous block using its own public key. This same &amp;lt;code&amp;gt;generationSignature&amp;lt;/code&amp;gt; is successively hashed using SHA256. The hit value is obtained by taking the first 8 bytes of the resulting hash.&lt;br /&gt;
&lt;br /&gt;
====Target==== &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The target is an ever-increasing valor. This is its implementation    &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BigInteger target = BigInteger.valueOf(lastBlock.getBaseTarget())&lt;br /&gt;
                    .multiply(BigInteger.valueOf(effectiveBalance))&lt;br /&gt;
                    .multiply(BigInteger.valueOf(elapsedTime));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt; Taken from nxt / src / java / nxt / Generator.java &amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
In other words, we have that &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Target = BaseTarget * EffectiveBalance * TimeSinceLastBlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;BaseTarget&#039;&#039;&#039;&lt;br /&gt;
: This parameter is the same for everybody. It gets adjusted from block to block to obtain, roughly, a generation time between blocks of 60s. If two successive blocks get generated too quickly, the new BaseTarget gets reduced. If instead, they take too long, the value gets increased. This adjustment is capped, it can go up at most twice as much (2 * currentBaseTarget) and down at most by half (0.5 * currentBaseTarget).&lt;br /&gt;
* &#039;&#039;&#039;EffectiveBalance&#039;&#039;&#039;&lt;br /&gt;
: This is your stake in ARDR. Only the amount of ARDR that has been confirmed at least 1440 times counts towards this balance. The reason the effective balance is used is to avoid shuffling attacks.&lt;br /&gt;
* &#039;&#039;&#039;TimeSinceLastBlock&#039;&#039;&#039;&lt;br /&gt;
: How long, in seconds, since the last block has been generated. This parameter is also the same for everybody.&lt;br /&gt;
&lt;br /&gt;
====The block forger==== &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
The way &#039;&#039;who&#039;&#039; gets to generate the next block is chosen, is done by using the condition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (hits.get(accountId).compareTo(target) &amp;lt; 0){&lt;br /&gt;
   BlockchainProcessorImpl.getInstance().generateBlock(secretPhrase);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt; Taken from ardor / src / java / nxt / Generator.java &amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
This says, essentially, that if the condition &amp;lt;code&amp;gt;Hit &amp;lt; Target&amp;lt;/code&amp;gt; is satisfied, you get to generate the next block.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Now that we know the forging algorithm, there are some considerations we can make:&lt;br /&gt;
* All the parameters except the effective balance are the same for everybody.&lt;br /&gt;
* The hit parameter is static, what changes during the forging process is the target. Every forger has its own target (even though it depends on parameters equal for everybody) and it reflects the forger&#039;s stake. Every second that no block gets generated, the target increases until someone&#039;s hit, on the network, manages to be smaller than their own target. The consequence is clear: bigger is your stake, higher will be your target (and more rapidly it will grow) making it easier for you to satisfy the condition. In a practical sense, this entails you will get to generate a block more often.&lt;br /&gt;
* TimeSinceLastBlock is the parameter that gives target its increasing nature. The longer it takes to generate a block, the higher becomes the target.&lt;br /&gt;
* The situation where multiple forgers satisfy the forging condition at the same time is tangible, the network handles this situation accordingly.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Data_Cloud&amp;diff=12849</id>
		<title>Data Cloud</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Data_Cloud&amp;diff=12849"/>
		<updated>2021-04-15T17:22:26Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Data Cloud&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, Data Cloud&lt;br /&gt;
|description=Data Cloud feature is a decentralized data storage system. It is a feature that is reserved for the Ardor child chains&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
The Ardor Data Cloud is a decentralized data storage system. It is a feature that is reserved for the Ardor child chains&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In addition to keeping a record of Ardor transactions, the blockchain can also be used to store user-defined data. All forms of data can be uploaded to the Ardor blockchain, providing a secure (and, if desired, permanent) method of storing, retrieving, and publishing information. Ardor [[Arbitrary_messages|Messaging system]] makes use of this ability to embed data in the blockchain, and the Data Cloud can be seen as an extension of the Messaging system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
One of the most important features of data storage on the blockchain is that the Ardor blockchain is a permanent and immutable record that provides a tamper-proof time stamp. This allows for legal records (such as contracts) to be embedded in the blockchain, with absolute certainty about the time at which they were created.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
A single data item is currently limited to 42K.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Only The sha256 hash of the data is stored on the blockchain as proof of existence. The data itself is pruned after several weeks and is only maintained by archival nodes.&lt;br /&gt;
&lt;br /&gt;
==Data Cloud System Menu== &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
The Data Cloud System is accessed in the child chains that have such feature (eg: Ignis) by clicking on &#039;&#039;Data Cloud&#039;&#039; in the left-pane menu area of the [[Ardor_client_interface|Ardor Client Interface]], causing a submenu to appear:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
[[File:Ardor_DC_menu.png|300px|border|none]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Search&#039;&#039;&#039;: This item does not react. It solely refers to the two types of searches present on top of the Data Cloud main screen.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;File Upload&#039;&#039;&#039;: This item displays a modal popup dialog&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Buttons upper right=== &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
[[File:Ardor_DC_reset_upload.png|200px|border|none]]&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Reset&#039;&#039;&#039;: This button restores the Data Cloud main screen, discarding any paging done by the user by hand at the bottom of the screen. No data is involved or lost.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;File Upload&#039;&#039;&#039;: This item displays a modal popup dialog  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Searches top=== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
[[File:Ardor_DC_freetextsearch.png|border|center]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
===Tag Cloud=== &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;Tag: Java [2]&#039;&#039;&#039;&lt;br /&gt;
The number between brackets  represents the number of Data Elements that have been tagged with that specific tag&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
[[File:Ardor_DC_Tagcloud.png|border|none|600px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
These are all links, but when you click on them, they appear to be a tag cloud that only filters the &#039;hits&#039; in the list below. The tags in the cloud are have been gathered through the historical use of the [[#Basic_file_upload | File Upload modal dialog]].&lt;br /&gt;
&lt;br /&gt;
===File upload=== &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
The toggle between &#039;&#039;basic&#039;&#039; and &#039;&#039;advanced&#039;&#039; upload is located at the bottom left end of the popup modal dialog called &#039;&#039;Upload Data&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Basic file upload==== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
[[File:Ardor_DC_basic_FU.png|500px|border|none]]&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Name&#039;&#039;&#039;: This could be any given name. Does not need the correspond with the actually uploaded filename. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;: Possibility to provide some background; e.g. the reason to add this item to the Data Cloud, its status, and perceived value.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Tags&#039;&#039;&#039;: Supply up to 5 comma-separated tags. Their purpose is to index the data cloud and make it efficiently searchable.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Channel&#039;&#039;&#039;: Each tagged data can now also have a channel field. You can filter the search results by channel, which has been added to retrieve tagged data by channel, optionally filtered by account too.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;File&#039;&#039;&#039;: Upload button, no restriction of file type or extension. &#039;&#039;&#039;File upload is a mandatory field.&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Fee&#039;&#039;&#039;: Free input field in round numbers. Even a negative number can be submitted but will result in an error. The calculate button will calculate the minimum fee for you dependent on the file size you intend to upload.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Passphrase&#039;&#039;&#039;: the passphrase matching the account&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Coin_Shuffling&amp;diff=12848</id>
		<title>Coin Shuffling</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Coin_Shuffling&amp;diff=12848"/>
		<updated>2021-04-15T17:20:04Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Coin Shuffling&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, Coin Shuffling&lt;br /&gt;
|description=is a privacy feature that enables users to mix token funds&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
__TOC__&lt;br /&gt;
==Introduction== &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Coin Shuffling is a privacy feature that enables users to mix [[Asset exchange |assets]], [[Monetary system|currencies]] or child chain token funds (as long as the child chain has enabled such feature) quickly and efficiently with other users&#039; funds by creating a random mapping between the existing user accounts and a new recipient accounts provided by the users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
This guide describes the Coin Shuffling feature, active for Ignis since the Ardor launch. Usage examples apply to the [[Ardor_client_interface|Ardor Client Interface]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Shuffling Menu== &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Coin Shuffling is accessed by clicking on &#039;&#039;Shuffling&#039;&#039; in the left-pane menu area of the [[Ardor_client_interface|Ardor Client Interface]], causing a submenu to appear:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
[[File:Shuffle.menu.PNG|border|left]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Shuffling&#039;&#039;&#039;: This item expands or contracts the submenu below and opens the [[Coin_Shuffling#Active_Shufflings_Page|Active Shufflings]] page which lists the active shufflings related to the child chain tokens selected.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Active Shufflings&#039;&#039;&#039;: This item displays a list of all [[Coin_Shuffling#Active_Shufflings_Page|Active Shufflings]].&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;My Shufflings&#039;&#039;&#039;: This item displays all the shufflings in which the current account participates. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Create Shuffling&#039;&#039;&#039;: This item opens a pop-up entry form for creating a new shuffling as described in [[Coin_Shuffling#Create_Shuffling_Modal|Create Shuffling]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Active Shufflings Page=== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
[[File:active.shuffling.PNG|thumb|none|border|650px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
*&#039;&#039;Shuffling&#039;&#039; clicking on a shuffling link in the &#039;&#039;Shuffling&#039;&#039; column opens a detailed pop-up that displays details about the shuffling state and the list of senders and recipients in case the shuffling is complete.&lt;br /&gt;
*&#039;&#039;Stage&#039;&#039; displays the current stage of the shuffling process.&lt;br /&gt;
*&#039;&#039;Holding&#039;&#039; shows the type of holding used for shuffling asset, currency, or child chain tokens (eg: Ignis).&lt;br /&gt;
*&#039;&#039;Amount&#039;&#039; is the common amount to shuffle specified in the holding unit.&lt;br /&gt;
*&#039;&#039;Blocks Remaining&#039;&#039; is the number of blocks until shuffling is canceled unless the required information necessary for the shuffling to advance to the next stage is provided.&lt;br /&gt;
*&#039;&#039;Participants&#039;&#039; shows the existing number of shuffling registrants and the number of required registrants for shuffling processing to begin.&lt;br /&gt;
*&#039;&#039;Assignee&#039;&#039; represents the account that last updated the shuffling or the account which needs to specify the next piece of data. &lt;br /&gt;
*&#039;&#039;Status&#039;&#039; displays &#039;join&#039; in case the user is still not registered for the shuffling or the shuffler status in case the user has registered.&lt;br /&gt;
&lt;br /&gt;
===My Shufflings Page=== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
[[File:my.shuffling.PNG|thumb|none|border|650px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
*First columns are similar to the active shufflings page.&lt;br /&gt;
*The &#039;&#039;Shuffler&#039;&#039;, &#039;&#039;Recipient&#039;&#039; and &#039;&#039;State&#039;&#039; columns represent the status of the Shuffler component which manages the shuffling process for the current account and shuffling.&lt;br /&gt;
&lt;br /&gt;
===Create Shuffling Modal=== &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
[[File:create.shuffling.PNG|border|none]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
*Create a new Shuffling.&lt;br /&gt;
*&#039;&#039;Holding Type&#039;&#039; is the token used by the shuffling. child chain tokens (eg: Ignis), Asset id, or Currency name. &lt;br /&gt;
*&#039;&#039;Amount&#039;&#039; the common amount used by all shuffling participants, specified in the holding token.&lt;br /&gt;
*&#039;&#039;Register Until&#039;&#039; shuffling registration deadline. If the required number of participants do not register by this block height the shuffling is canceled and all funds are returned without a fine.&lt;br /&gt;
*&#039;&#039;Fee ratio&#039;&#039; The fee ratio that the shuffler will use to send transactions on the account&#039;s behalf. The participants have full control over the fee ratio to prevent that the shuffler will not be able to submit shuffling transactions in case there are no bundlers available.&lt;br /&gt;
*&#039;&#039;Participant Count&#039;&#039; number of registrants required to trigger the shuffling. Between 3 and 30.&lt;br /&gt;
&lt;br /&gt;
===Start Shuffler Modal=== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
[[File:start.shuffler.PNG|border|none]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
*Start the shuffler process on the current node to coordinate the shuffling &lt;br /&gt;
*&#039;&#039;Recipient Passphrase&#039;&#039; the passphrase of the recipient account for your shuffling participant. Do not lose this passphrase since it is the passphrase to your shuffled funds. &lt;br /&gt;
*&#039;&#039;Recipient Account&#039;&#039; account id derived from the recipient passphrase (read-only field).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standby Shuffling == &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
The Standby Shuffling add-on allows the creation of Standby Shufflers that monitors the blockchain for new shufflings. When a new shuffling meets given criteria the Standby Shuffler will start a shuffler on the node targeting an unused recipient account from a configured pool. See the [[Shuffling#Start_StandbyShuffler|API pages]] for more details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
A Standby Shuffler does not join active shufflings when started even if they meet the Standby Shuffler criteria. To join active shuffling use the &amp;quot;join&amp;quot; button from the &#039;&#039;Active Shufflings&#039;&#039; page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
In order to use this feature you need to configure the corresponding add-on:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;nxt.addOns=StandbyShuffling&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
The &#039;&#039;Standby Shufflers&#039;&#039; feature is enable within the Shuffling section in the [[Ardor_client_interface|Ardor Client Interface]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
[[File:StandbyShuffling01.png|thumb|none|border|650px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
The main &#039;&#039;Standby Shufflers&#039;&#039; page lists the running standby shufflers on the current node. You can list the ones running for the current account or all of them by using the &#039;&#039;All&#039;&#039; and &#039;&#039;My&#039;&#039; tab selectors on the top right.&lt;br /&gt;
&lt;br /&gt;
[[File:StandbyShuffling03.png|thumb|none|border|650px]]&lt;br /&gt;
&lt;br /&gt;
On this table, you will find the details of each shuffler as well as the pool of unused accounts status. The actual data will depend on the shuffler using the legacy list of public keys or the improved approach of deriving new accounts from an HD account.&lt;br /&gt;
&lt;br /&gt;
The third button on the top right of the page opens the modal to start a new standby shuffler.&lt;br /&gt;
&lt;br /&gt;
[[File:StandbyShuffling02.png|thumb|none|border|650px]]&lt;br /&gt;
&lt;br /&gt;
The bottom of the modal window allows you to define how the standby shuffler will get unused accounts for each new shuffling. You have two options: an HD wallet or a list of secret phrases. The new and recommended way is to use an HD wallet so the shuffler could derive new public keys from a BIP 32 node. You could also use the legacy approach of entering a list of secret phrases for unused accounts.&lt;br /&gt;
&lt;br /&gt;
[[File:StandbyShufflerStartLegacyTab.png|thumb|none|border|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Pool of unused accounts === &amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
Each shuffling requires an unused recipient account. That means we need to provide each Standby Shuffler with a mechanism to get unused accounts. Before HD wallets the only way was to pass a list of public keys to the Standby Shuffler which will be used one at a time for each matching shuffling (see &#039;&#039;recipientsPublicKey&#039;&#039; parameter). This required to generate secret phrases in advance and limited the size of the pool of unused recipient accounts for the Standby Shuffler. With the new HD wallets, the derivation of public keys from a master public key is very easy and provides a simple mechanism that doesn&#039;t require generating new secrets and can produce a practically unlimited number of new accounts. This mechanism is also compatible with hardware devices like the Ledger wallet.&lt;br /&gt;
&lt;br /&gt;
==== Using Seed / Hardware ====&lt;br /&gt;
&lt;br /&gt;
You need to pass your Master Public Key to the Standby Shuffler so it can derive new accounts. Keep in mind this is not the public key of any specific account on the HD wallet. You can find this Master Public Key on the login screen when using a seed, click on the &#039;&#039;Advanced&#039;&#039; button just below the seed input.&lt;br /&gt;
&lt;br /&gt;
[[File:LoginSeedMasterPublicKey.png|thumb|none|border|650px]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;Start From Child Index&#039;&#039; allows you to adjust the starting index the standby shuffler will use to look for unused accounts. It doesn&#039;t matter if that index or any of the next indices are used, the standby shuffler will keep looking from that index until it finds an unused account, derive its public key, and use that for joining a matching shuffling.&lt;br /&gt;
&lt;br /&gt;
==== Using Legacy accounts====&lt;br /&gt;
&lt;br /&gt;
You should generate the new accounts using the account wizard and write down the passphrases in secure storage. Then paste the passphrases, one per line, on the corresponding input of the Start Standby Shuffler window.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that the secret passphrases are never submitted to the remote node, only the derived public keys are.&lt;br /&gt;
&lt;br /&gt;
When an unused account is needed the first one on the pool is reserved and assigned to the Shuffler that will monitor the shuffling. It&#039;s not discarded right away to reuse it in case we don&#039;t end up using it on the shuffling. The moment that the key is completely removed from the Standby Shuffler is when we enter the processing stage. From this point, a failed shuffling will reveal the link between our account and the new public key. These reserved keys are recovered when the Shuffler ends.&lt;br /&gt;
&lt;br /&gt;
When both the unused and reserved pools become empty the Standby Shuffler is automatically removed from the node.&lt;br /&gt;
&lt;br /&gt;
=== Configuration persistence === &amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
The Standby Shufflers, like other similar local node tools like bundlers or forgers, are not persisted across node reboots.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
Check the [[Node_Processes_Configuration|Processes]] feature for an easy-to-use and secure tool to help you with recovering the configuration upon node restart.&lt;br /&gt;
&lt;br /&gt;
=== Examples === &amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: These examples were written for the legacy mechanism but are still valid. The only change when using the new HD wallets is that the Standby Shuffler will always have new accounts to use.&lt;br /&gt;
&lt;br /&gt;
==== Example 1 ==== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Suppose you have an account with 5000 IGNIS and you want to shuffle some of them. You are not in a hurry and don&#039;t care if you shuffle it in batches. So, you set up a Standby Shuffler with a minimum amount of 100 and a maximum amount of 1000. You generate three new accounts using the account wizard and write down the passphrases in secure storage. Let&#039;s call them NewAccount01, NewAccount02, and NewAccount03. You start the Standby Shuffler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
Current status:&lt;br /&gt;
* NewAccount01: unused&lt;br /&gt;
* NewAccount02: unused&lt;br /&gt;
* NewAccount03: unused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
A new shuffling appears with an amount of 500 IGNIS. Your Standby Shuffler checks the shuffling: it meets the amount limits, you have enough balance and it has unused accounts. So, it joins the shuffling. Suppose that a few blocks later the shuffling completes successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
Current status:&lt;br /&gt;
* NewAccount01: 500 IGNIS&lt;br /&gt;
* NewAccount02: unused&lt;br /&gt;
* NewAccount03: unused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
A new shuffling is created, 600 IGNIS. Again, it meets the criteria (100 &amp;lt;= 600 &amp;lt;= 1000) so it joins the shuffling for you. Let’s suppose it also completes successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
Current status:&lt;br /&gt;
* NewAccount01: 500 IGNIS&lt;br /&gt;
* NewAccount02: 600 IGNIS&lt;br /&gt;
* NewAccount03: unused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
A new shuffling is created, 90 IGNIS. As the shuffling is outside the limits the Standby Shuffler ignores it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
One more shuffling of 200 IGNIS is detected. It meets the criteria. You have unused accounts so you join the shuffling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
Final status:&lt;br /&gt;
* NewAccount01: 500 IGNIS&lt;br /&gt;
* NewAccount02: 600 IGNIS&lt;br /&gt;
* NewAccount03: 200 IGNIS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
The Standby Shuffler has no more unused accounts on the pool so it shuts down.&lt;br /&gt;
&lt;br /&gt;
==== Example 2 ==== &amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Suppose you have an account with 2000 IGNIS and you want to shuffle all of them. You set up a Standby Shuffler with a minimum amount of 500 and no maximum. You generate three new accounts using the account wizard and write down the passphrases in secure storage. Let&#039;s call them NewAccount01, NewAccount02, and NewAccount03. You start the Standby Shuffler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
Current status:&lt;br /&gt;
* NewAccount01: unused&lt;br /&gt;
* NewAccount02: unused&lt;br /&gt;
* NewAccount03: unused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
A new shuffling appears with an amount of 500 IGNIS. Your Standby Shuffler checks the shuffling: it meets the amount limits, you have enough balance and it has unused accounts. So, it joins the shuffling. Suppose that a few blocks later the shuffling completes successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
Current status:&lt;br /&gt;
* NewAccount01: 500 IGNIS&lt;br /&gt;
* NewAccount02: unused&lt;br /&gt;
* NewAccount03: unused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
A new shuffling appears with an amount of 1800 IGNIS. You had initially 2000 IGNIS and you&#039;ve shuffled 500 IGNIS and paid some fees so you are probably a bit below 1500 IGNIS. You don&#039;t have enough funds to join the shuffling so the Standby Shuffler skips this shuffling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
A new shuffling is created, 90 IGNIS. As the shuffling is outside the limits the Standby Shuffler ignores it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
A new shuffling appears with an amount of 1400 IGNIS. Let&#039;s suppose you have enough funds at this moment. So, it joins the shuffling. Suppose that a few blocks later the shuffling completes successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
Current status:&lt;br /&gt;
* NewAccount01: 500 IGNIS&lt;br /&gt;
* NewAccount02: 1400 IGNIS&lt;br /&gt;
* NewAccount03: unused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
You currently have, probably, some funds left but the Standby Shuffler has a minimum of 500 IGNIS so it won&#039;t join any other shuffling.&lt;br /&gt;
&lt;br /&gt;
== Technical Background == &amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
Coin Shuffling is a privacy feature that enables users to mix their funds quickly and efficiently with other users&#039; funds by creating a random mapping between the existing user accounts and new recipient accounts provided by the users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
This feature is based on the academic paper [http://crypsys.mmci.uni-saarland.de/projects/CoinShuffle/coinshuffle.pdf] which is also the source of the feature name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
Overview:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
The implementation of the feature is based on the Ardor platform, this eliminates some of the manual steps and trust issues of existing 3rd party mixing solutions. &lt;br /&gt;
The client wallet provides a user interface for users to monitor and coordinate their actions during the shuffling process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
Shuffling can be performed using child chain tokens (eg: Ignis), assets, or currencies as specified by the creator of the shuffling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
Any account can create a new shuffling, specifying the holding to be shuffled, the shuffle amount, number of participants required, and registration deadline. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
This is done using the shufflingCreate API. The subsequent shuffling steps can be performed manually, by using the shufflingRegister (for accounts other than the creator),  shufflingProcess and shufflingVerify or shufflingCancel APIs. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
However, due to the complexity of the process and the difficulty to predict the timing in which actions should be submitted, it is impractical to manage a shuffling manually.&lt;br /&gt;
Therefore shuffling is managed by an automated component called &amp;quot;Shuffler&amp;quot;, using the startShuffler API. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
Once started, the Shuffler monitors the blockchain state for transactions relevant to the specified shuffle, and automatically submits the required transactions on behalf of the user, performing shuffle processing, verification, or cancellation as needed. &lt;br /&gt;
To do this, the Shuffler is required to keep the users&#039; secret phrase in memory, the same as when forging. And just like with forging, restart or a crash of the node requires restarting the shuffler manually.&lt;br /&gt;
The shuffler remains running for 720 blocks after a shuffling either completes successfully or is canceled to make sure it is still active in case of an (unlikely) blockchain reorder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
There is a single shuffler per node/shuffling/participant combination. A single node can run up to 100 shufflers concurrently for various shufflings and participants.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
To participate in a shuffling, a deposit of 0.12 Ignis is needed (see [[Create_Transaction#Create Transaction Request|fees]]), in addition to the amount of currency or asset being shuffled or if shuffling, the amount of the shuffle must exceed this 0.12 Ignis minimum.&lt;br /&gt;
 &lt;br /&gt;
When a shuffling completes successfully, this amount is added to the recipient account balance, to allow it to send outgoing transactions (as it is required that only new, unused accounts are specified as recipients).&lt;br /&gt;
In case the shuffling fails due to a registered participant failing to participate as required, or intentionally submitting false data, the participant responsible for the shuffle cancellation is penalized by sending this security deposit to the forgers of the shuffle finish block and the previous three blocks.&lt;br /&gt;
If a shuffling is canceled because the required number of participants is not met, nobody is penalized and all deposits are refunded. &lt;br /&gt;
On testnet, the deposit and penalty are only 10 Ignis or 10 Bits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
After shuffling registration is complete, participants must submit processing data within a 100 blocks period each (10 blocks on testnet). For the verification and blame phase, the total allowance for all participants is 100 + numberOfParticipants blocks (again reduced to 10 + numberOfParticipants blocks on testnet).&lt;br /&gt;
Full blocks are not counted towards the limit. If at any stage the deadline is reached without some participant submitting the next required transaction, the shuffling is canceled and this participant loses its security deposit of 0.12 Ignis. &lt;br /&gt;
This process is managed by the shuffler. It is therefore critical that after registering for a shuffling, the shuffler started, is left running until the shuffling is successfully completed.&lt;br /&gt;
In case the node must be restarted, all previously running shufflers must be started manually.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
Query APIs to retrieve currently running shufflers, shufflings, and shuffling participants are: getAllShufflings, getAccountShufflings, getAssignedShufflings, getHoldingShufflings, getShufflers, getShuffling, and getShufflingParticipants.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
Finished shufflings can be automatically deleted from the database in case the nxt.deleteFinishedShufflings property is set to true (default is false).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
The fee for creating a shuffling or registering in one is 0.12 Ignis, for the shuffling process or shuffling cancel transactions 10 Ignis, and for the verify transaction 0.1 Ignis.&lt;br /&gt;
&lt;br /&gt;
=== Warnings === &amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
1. The recipient account of the shuffling participant must be newly created. Participants should take great care to create a strong passphrase for the recipient account and save this passphrase for later Failing to so will result in your funds being lost or stolen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
2. Once an account creates a shuffling or registers as a participant in one, **the node used by this account must remain online and the shuffler must remain active.** &lt;br /&gt;
The state of the shuffler can be monitored using the &amp;quot;My Shufflings&amp;quot; page. In case your node is restarted, make sure to start all shufflers related to the active shufflings in which your account participates.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Child_Chain_Control&amp;diff=12846</id>
		<title>Child Chain Control</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Child_Chain_Control&amp;diff=12846"/>
		<updated>2021-04-15T17:14:52Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Child chain control&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, permissioned blockchain, child chain control&lt;br /&gt;
|description=Description of the child chain control, permissioned layer of the Ardor blockchain&lt;br /&gt;
}}&lt;br /&gt;
__TOC__&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
==Description== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Child Chain Control is a feature that introduces permissioning to the Ardor multichain platform. It manages the authorization levels of users on child chains. When operating on a chain that has permissioning policy enabled users can be restricted from performing chain transactions.&lt;br /&gt;
&lt;br /&gt;
==Permission Types== &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
To use child chain control features, you need to have the proper setup of the child chain. Namely, its &#039;&#039;permissionPolicy&#039;&#039; property should be set to &#039;&#039;CHILD_CHAIN&#039;&#039; only then you will be able to control permissioning. To check if it is enabled for a given chain open Account Details dialog. At the bottom of the dialog, you should see the value of the &#039;&#039;Account Permissions&#039;&#039; property for the current chain. If you don&#039;t see &#039;&#039;Account Permissions&#039;&#039; property it means you are operating on a chain that doesn&#039;t support permissioning, ask chain developers to enable it.&lt;br /&gt;
[[File:Account Details.png|thumb|border|none|Account Details modal on a chain that has permission policy. ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Without &#039;&#039;Chain User&#039;&#039; permission account will not be able to perform chain operations such as sending tokens and the user will be presented with a warning.&lt;br /&gt;
[[File:No chain user permission.png|thumb|border|none|Account without Chain User permission]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Ardor child chains support the following permissions:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Permission Name !! Assigned by !! Features&lt;br /&gt;
|-&lt;br /&gt;
| Master Admin || developers|| Can only designate/block admins. Cannot perform operations on the chain.&lt;br /&gt;
|-&lt;br /&gt;
| Chain Admin|| Master Admin|| Can only designate/block users. Cannot perform operations on the chain.&lt;br /&gt;
|-&lt;br /&gt;
| Blocked Chain Admin|| Master Admin|| Chain admin rights blocked.&lt;br /&gt;
|-&lt;br /&gt;
| Chain User|| Chain Admin|| Can perform operations on the chain.&lt;br /&gt;
|-&lt;br /&gt;
| Blocked Chain User|| Chain Admin|| Cannot perform operations on the chain.&lt;br /&gt;
|}&lt;br /&gt;
A single account can have multiple permissions per chain:&lt;br /&gt;
[[File:Account Details with permissions.png|thumb|border|none|Account Details modal on the chain that has permission policy and has permissions specified]]&lt;br /&gt;
&lt;br /&gt;
==How to assign account permissions== &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
For Ardor accounts to be able to use child chains you need to explicitly grant them &#039;&#039;Chain User&#039;&#039; permission. But first, you need to designate a few accounts as admins by giving them &#039;&#039;Chain Admin&#039;&#039; permission. You need to have at least one &#039;&#039;Master Admin&#039;&#039; account (ask developers to configure one or a few accounts with &#039;&#039;Master Admin&#039;&#039; permission) for that. &#039;&#039;Master Admin&#039;&#039; and &#039;&#039;Chain Admin&#039;&#039; accounts will have an extra link in the sidebar leading to Permissions Control page:&lt;br /&gt;
[[File:Sidebar permissions control.png|thumb|none|Sidebar with Permissions Control link]]&lt;br /&gt;
Permissions Control page has two buttons on top that open a modal dialog through which you can grant or remove permissions for a specific account. It also lists all the recent permissioning operations on this chain.&lt;br /&gt;
[[File:Permissions Control page.png|thumb|none|Permissions Control page]]&lt;br /&gt;
To grant &#039;&#039;Chain Admin&#039;&#039; permission click on &#039;&#039;Grant Permission&#039;&#039; button and fill in fields in the modal dialog.&lt;br /&gt;
[[File:Grant permission modal.png|thumb|none|Granting permission to account]]&lt;br /&gt;
You can filter out operations performed by you using toggle control next to &#039;&#039;Granted by&#039;&#039; column title. The last column has action buttons that simplify granting or removing permissions by prepopulating account and permission fields in the modal dialog. Once the account gets &#039;&#039;Chain Admin&#039;&#039; permission it can start granting &#039;&#039;Chain User&#039;&#039; permission to other accounts. &#039;&#039;Chain User&#039;&#039; permission is essential as it gives account access to chain features.&lt;br /&gt;
[[File:Grant chain user permission modal.png|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
==How to see which permissions account has== &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Even if you don&#039;t have &#039;&#039;Chain Admin&#039;&#039; or &#039;&#039;Master Admin&#039;&#039; rights you can still see who granted you permissions from the &#039;&#039;Account Permissions&#039;&#039; tab in the &#039;&#039;User Info&#039;&#039; modal. It also shows who granted you permissions and when it happened.&lt;br /&gt;
[[File:User info account permissions.png|thumb|none|Granting permission to account]]&lt;br /&gt;
&lt;br /&gt;
==How to remove previously granted permission== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
If permission was granted to a wrong account or an account no longer needs it you can remove permission (you must yourself have sufficient permissions to do that, check the table above). Click the &#039;&#039;Remove Permission&#039;&#039; button on the &#039;&#039;Permissions Control&#039;&#039; page and complete the modal dialog. Hint: you can find all the permissions granted by you by clicking the toggle button next to &#039;&#039;Granted by&#039;&#039; column title. If you click &#039;&#039;Remove Permission&#039;&#039; button from the table - it will prepopulate the modal dialog account and permission fields.&lt;br /&gt;
[[File:Remove permission modal.png|thumb|none|Removing permission]]&lt;br /&gt;
&lt;br /&gt;
==How to block permissions== &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
If you want to block users or admin simply grant them with &#039;&#039;Blocked Chain User&#039;&#039; or &#039;&#039;Blocked Chain Admin&#039;&#039; permissions. Blocked accounts will not be able to exercise their permissions until someone removes &#039;&#039;Blocked Chain User&#039;&#039; or &#039;&#039;Blocked Chain Admin&#039;&#039; permissions. Blocked accounts will see who blocked them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Changelly_Integration&amp;diff=12845</id>
		<title>Changelly Integration</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Changelly_Integration&amp;diff=12845"/>
		<updated>2021-04-15T17:11:38Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Changelly Integration&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, Changelly Integration&lt;br /&gt;
|description=Changelly is a market-making service that utilizes crypto exchanges to provide a seamless exchange of crypto tokens without user registration. Since Ardor version 2.1.2 the Ardor wallet integrates its service&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
[https://changelly.com/ Changelly] is a market-making service that utilizes crypto exchanges to provide a seamless exchange of crypto tokens without user registration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Starting from Ardor version 2.1.2 the Ardor wallet integrates the changelly service to enable Ardor and Ignis to exchange with any other crypto directly from the wallet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using the changelly API service == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The service provides two main functions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
1. Exchange to/from another crypto - this service is available from the exchanges page (See arrows icon at the top bar of the wallet).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
2. Fund a new account by exchanging Bitcoin to either Ardor or Ignis. This function is accessible from the dashboard when creating a new account. At the moment, this exchange transaction will not announce the account public key to the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
The user interface should be self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Warnings, Notices and Limitations == &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Changelly is a 3rd party service provider which is not associated with Ardor in any way. We are not liable for any problem encountered with the service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The Ardor wallet changelly page connects directly from the browser to the changelly APIs. Therefore any action you perform is visible to changelly and any information you receive is provided by changelly as is. Of course, your account passphrase is never submitted to changelly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
Always note the minimum deposit amount provided by changelly before performing an exchange. Sending a value lower than the minimum will likely result in lost funds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
While changelly does not provide a maximum deposit amount, exchanging a large amount through this service is likely to provide a less than optimal exchange rate. The changelly service relies on other crypto exchanges and if there is no liquidity on the exchanges, changelly may use a very unfavorable exchange rate. Therefore use your best judgment and consider not using this service to exchange large amounts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Changelly transactions do not correspond 1:1 to Ardor transactions. Therefore when performing an exchange, you may see several changelly transactions listed in the &amp;quot;My Exchanges&amp;quot; table while only one of them shows the real exchange. This is normal. You may delete the extra transactions once the exchange is performed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
In case you need to approach the changelly customer support always specify the changelly transaction id which is listed in the id column of the &amp;quot;My Exchanges&amp;quot; table.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
The changelly page, when displayed in the wallet, is refreshed every 60 seconds, some delays during refresh are normal, simply wait for the page to fully reload. Transaction timeouts may happen at any moment. When they do happen, simply start over the exchange operation or continue from where you left off.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
When exchanging from Ardor/Ignis to another crypto, you have to specify a transaction fee denominated in Ardor/Ignis correspondingly. The wallet cannot calculate this fee automatically, therefore use your best judgment. In case this is your first exchange, changelly will provide a fresh deposit address, therefore your transaction will need to cover the 1 ARDR fee to create this new account, which means, your Ardor fee should be 1.01 ARDR and your Ignis fee should cover 1.01 ARDR based on the current bundling rate. Subsequent exchanges from the same wallet should use the same changelly deposit address so only needs to cover the 0.01 ARDR transaction fee.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Changelly charges a small exchange fee composed of several elements, you can view the complete details in the &amp;quot;View Changelly Transaction&amp;quot; dialog reachable by clicking the changelly transaction id in the &amp;quot;My Exchanges&amp;quot; table.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Bundling&amp;diff=12844</id>
		<title>Bundling</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Bundling&amp;diff=12844"/>
		<updated>2021-04-15T17:09:56Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Bundling&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, Bundling&lt;br /&gt;
|description=The bundling process is used to group child chain transactions from a child chain into a transaction on the Ardor chain. Bundlers accept the fees from those child chain transactions, in the corresponding child chain coin, and pay fees in ARDR to the parent chain forgers&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
__TOC__&lt;br /&gt;
==Description== &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
The bundling process is used to group child chain transactions from a child chain into a transaction on the Ardor chain. Bundlers accept the fees from those child chain transactions, in the corresponding child chain coin, and&lt;br /&gt;
pay fees in ARDR to the parent chain forgers. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Bundlers can be started from the cogwheel/bundlers menu, defining the coin to ARDR exchange rate they accept, a limit on the total fees in ARDR a bundler will pay, and an optional overpay&lt;br /&gt;
amount representing an additional factor of the Ardor fee to pay in case of competing bundlers. This is a multiplier of what you will pay in terms of Ardor fee so if the fee is 100 ARDR and overpay is set to 0.1 you will pay 100 + 100 * 0.1 = 110 as bundling fee.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
When a bundler is running, it checks the unconfirmed transactions pool every time a new transaction from the child chain being bundled arrives. If the transaction fee included by the transaction sender, in child chain coins, when converted to Ardor using the exchange rate accepted by the bundler is at least equal to the minimum Ardor fee required for this transaction, the bundler will generate a ChildBlock transaction, including in it this and all other currently unconfirmed child chain transactions satisfying this requirement. The Ardor fee the bundler will include for the ChildBlock transaction is equal to the sum of the minimum required Ardor fees for each, multiplied by the overpay amount, if any. Such overpay amount is optional and may be used by bundlers willing to pay more to have their transactions included in a block instead of those of competing bundlers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The new ChildBlock transaction will displace from the unconfirmed pool any ChildBlock transactions of the same child chain that include only a subset of the same child transactions.&lt;br /&gt;
When propagating through the network, ChildBlock transactions will only be accepted by peers if they either include child transactions not already included in other ChildBlock transactions the peer already has in its pool, or offer to pay a higher fee for the same transactions. This ensures the network is not flooded with ChildBlock transactions even if every node is running a bundler, and allows bundlers to compete for propagating their transactions through the network by offering to pay higher fees.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
It is now possible for child transactions to be submitted with zero fees, in child chain coins. If a bundler is willing to pay the Ardor fees for those, they will be included in the blockchain in the ChildBlock created by such&lt;br /&gt;
bundler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
To prevent the unconfirmed pool from being overfilled with such zero-fees child chain transactions, once the maxUnconfirmedTransactions limit (configured in nxt.properties, default 2000) has been exceeded, child chain transactions will be dropped unless a bundler has already submitted a ChildBlock transaction which includes them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Bundlers advertise their accepted bundling rates to other peers, signing such rates announcements with the private key of the bundler&#039;s account. To prevent fake rates announcements, they can be filtered based on this account effective balance (default set in nxt.minBundlerBalanceFXT is 1000 ARDR).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The GetBundlerRates API can be used to retrieve known bundlers rates, again with optional filtering by minimum bundler effective balance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bundler Setup== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Bundling like Forging requires sending the passphrase to the remote node. Therefore only run a bundler on a node under your control. To view the running bundler on a node, the wallet has to include the remote node admin password in its account settings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
The bundlers, like other similar local node tools like standby shufflers or forgers, are not persisted across node reboots. Check the [[Node_Processes_Configuration|Processes]] feature for an easy-to-use and secure tool to help you with recovering the configuration upon node restart.&lt;br /&gt;
&lt;br /&gt;
===Existing bundlers known to the remote node=== &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
[[File:bundlers.list.png|border|none|thumb|630px|figure 1]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Start a new bundler=== &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
[[File:start.bundler.png|||figure 2]]&lt;br /&gt;
&lt;br /&gt;
==Bundling rules== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Since [[Ardor_Software_Change_Log#ardor-client-2.1.0|Ardor 2.10e]] it is possible to enable bundling rules. The bundling process is used to group child chain transactions from a child chain into a transaction on the Ardor chain. Bundlers accept the fees from those child chain transactions, in the corresponding child chain coin, and pay fees in ARDR to the parent chain forgers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
Bundlers can be started from the cogwheel/bundlers menu. The bundler will operate on the currently selected child chain. One or more bundling rules must be added to each bundler, and also a limit specifying the total fees in ARDR, which the bundler will pay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
The bundling rule has following properties:&lt;br /&gt;
&lt;br /&gt;
====Minimum Rate==== &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
The coin to ARDR exchange rate of this rule. Transactions are accepted by this rule if the fee included by the transaction sender, in child chain coins, when converted to ARDR using this rate is at least equal to the [https://www.jelurida.com/sites/default/files/ArdorFees.pdf minimum Ardor fee required for this transaction].&lt;br /&gt;
&lt;br /&gt;
====Fee Calculator==== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Function used to determine the fee in ARDR, which the bundler will finally pay for each transaction, having the fee in child chain coins received from the transaction.&lt;br /&gt;
* MIN_FEE (default value, bundlers in Ardor v2.0 use this function): the Bundler will always pay the [https://www.jelurida.com/sites/default/files/ArdorFees.pdf minimum protocol fee], no matter how much child chain coins are received from the child transaction.&lt;br /&gt;
* PROPORTIONAL_FEE: the Bundler pays fee in ARDR proportionally to the received child chain coins, according to the Minimum Rate. This would give an advantage to the bundler versus bundlers using the MIN_FEE function in case the transaction creators start competing for block space by specifying higher fee in child chain coins.&lt;br /&gt;
* Custom calculators can be developed as add-ons by implementing the Bundler.FeeCalculator interface. Their classes must be listed in the nxt.customBundlingFeeCalculators configuration property.&lt;br /&gt;
&lt;br /&gt;
====Overpay==== &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
An additional factor of the Ardor fee to pay for each transaction. Used to give advantage to this bundler when competing with other bundlers. This is a multiplier of what you will pay in terms of the ARDR fee (the result of the Fee Calculator function). So if the fee is 100 ARDR and overpay is set to 0.1 you will pay 100 + 100 * 0.1 = 110 as bundling fee. Custom Fee Calculators may use this value for a different purpose, or disregard it.&lt;br /&gt;
====Filters====&lt;br /&gt;
Zero or more additional filters are applied to the bundled transactions. The transaction must satisfy the minimum fee rate and &#039;&#039;&#039;all&#039;&#039;&#039; filters to be processed. Filters can check various properties of the transaction like the sender, the recipient the transaction type, or even the presence of other transaction(s). A parameter can be specified for every added filter. The parameter is a filter-specific arbitrary string. Default filters provided &amp;quot;out-of-the-box&amp;quot;:&lt;br /&gt;
{{BundlerFilters}}&lt;br /&gt;
Additional filters can be developed as add-ons by implementing the Bundler.Filter interface. Their classes must be added to the nxt.availableBundlingFilters property.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Bundlers with at least one non-filtered rule advertise to other peers the minimum rate among their non-filtered rules. This is the minimum rate at which the bundler will accept child transactions without checking any other property except the fee. The bundler signs such rates announcements with the private key of the bundler&#039;s account. To prevent fake rates announcements, they can be filtered based on this account effective balance (default set in nxt.minBundlerBalanceFXT is 1000 ARDR). Bundlers that have at least one filter added to all of their rules are considered private and their rates are not announced.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
When running a subsidizing bundler, it is more efficient to add a not-filtered rule with some acceptable rate at the last position in the list, so that the bundler bundles both zero-fee and regular (public) transactions. This will increase the total amount of ARDR in the ChildBlock transaction and will give it priority over ChildBlock transactions created by other bundlers. The transactions are prioritized first by the index of the rule accepting them, and then by the fee in child chain coins they pay. So a subsidizing bundler will include the subsidized transactions before the public transactions even if it receives 0 fee from them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
The GetBundlerRates API can be used to retrieve known bundlers rates, again with optional filtering by minimum bundler effective balance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Bundler Setup 2.1.0e=== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Bundling like Forging requires sending the passphrase to the remote node. Therefore only run a bundler on a node under your control. To view the running bundler on a node, the wallet has to include the remote node admin password in its account settings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
Existing bundlers known to the remote node for the currently selected child chain (switch to ARDR chain to see the bundlers for all chains).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
[[File:BundlersList_2.1.png|border|none|630px|figure 1]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
Start a new bundler&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
[[File:StartBundler_2.1.png|border|none|630px|figure 2]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
Initially the bundler is started with only one rule. More rules can be added with the Add Rule button:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
[[File:MyBundler.png|none|border|750px|figure 3]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Asset_Properties&amp;diff=12843</id>
		<title>Asset Properties</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Asset_Properties&amp;diff=12843"/>
		<updated>2021-04-15T17:07:56Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Asset Properties&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, account Properties, Asset Properties feature&lt;br /&gt;
|description=Asset Properties feature gives Ardor users the ability to permanently ‘tag’ any asset with a small amount of data.&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Asset properties give Ardor users the ability to permanently ‘tag’ any asset with a small amount of data. These properties tags can be used to provide meta-information about an asset, for example:&lt;br /&gt;
* A company can tag an asset to be identified as part of their ecosystem.&lt;br /&gt;
* A venture capital that manages different investments in form of assets, which can be tagged from a master account to set them as either &#039;&#039;approve&#039;&#039;, &#039;&#039;approval process&#039;&#039; or &#039;&#039;rejected&#039;&#039;&lt;br /&gt;
* For managing the lifecycle of a tokenized asset. For instance, a singleton asset that represents a renting vehicle can be tagged as &#039;&#039;on duty&#039;&#039; or &#039;&#039;in the workshop&#039;&#039; for calculating working hours&lt;br /&gt;
&lt;br /&gt;
== How to set an asset property == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|1. Visit http://localhost:27876/ (or https://localhost:27876/ if you enabled SSL) and log in.&lt;br /&gt;
|-&lt;br /&gt;
|2. Select the Ignis chain, click on &#039;&#039;Assets&#039;&#039; under &amp;quot;Dashboard&amp;quot; in the left sidebar and click on the &amp;quot;Asset Properties&amp;quot; link as shown in the following figure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
[[File:Asset properties_1.png|center|thumb|770px|Figure 1]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|3. A window showing the current asset properties for your account will appear. Click the &#039;Set&#039;&#039; tab in the top right:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
[[File:Asset properties_2.png|center|thumb|770px|Figure 2]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|4. A form allowing you to set an asset property will appear.  From here you can specify the asset id is selected allowing to set the property on, the name of the property, and the value for that property:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
[[File:Asset properties_3.png|center|thumb|630px|Figure 3]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Asset_exchange&amp;diff=12842</id>
		<title>Asset exchange</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Asset_exchange&amp;diff=12842"/>
		<updated>2021-04-15T17:07:38Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Asset exchange&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, Asset exchange&lt;br /&gt;
|description=Asset exchange feature allows the following operation with assets: Issue, transfer, increase and delete shares, paying dividends, and exchange&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
__TOC__&lt;br /&gt;
==Description==  &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
This page covers the decentralized Asset Exchange within the Ardor multichain platform. Before jumping into the details, we can start with an example that shows one of the possible uses of this feature. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
In the words of &#039;&#039;BCNext (developer of the [https://nxtplatform.org Nxt blockchain]):&#039;&#039;&lt;br /&gt;
{|border=&amp;quot;0&amp;quot;&lt;br /&gt;
 |&amp;lt;blockquote&amp;gt;&#039;&#039;I want to run a business.  I issue an asset (let&#039;s call it Krusty Krab tokens - KKT). I set the quantity of KKT to 1000.  I announce that I sell KKT for 20 NXT each and pay 5 NXT monthly interest within the next 6 months.  I create an ask order -- 1000 KKT for 20,000 NXT.&#039;&#039;  &lt;br /&gt;
&#039;&#039;You create a transaction that sends me 500 NXT for 25 KKT.  It&#039;s up to you what to do with your 25 KKT (you can place an ask order and sell them for 27 NXT) but each month I will check the blockchain to see who owns KKT.  And I will send 5 NXT for each KKT to those who own them.&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==Accessing the Asset Exchange== &amp;lt;!--T:19--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Ardor has the decentralized asset exchange feature since its deployment in production (the 1st of January of 2018)&lt;br /&gt;
If you do not know how to install the Ardor client, check out the [[Getting_started|getting started]] page or the [[common problems and resolutions]] page in case you are having problems.&lt;br /&gt;
&lt;br /&gt;
==The Interface==  &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
With the server running, access the Ardor interface of your client by visiting http://localhost:27876/ (or https://localhost:27876/ if you have enabled SSL). On the sidebar, select a child chain that has the asset exchange enabled (e.g.: Ignins), click the menu &#039;&#039;Asset Exchange&#039;&#039;, this will give you access to the following options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
[[File:AE_menu.PNG|frame|left]]&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Asset Exchange&#039;&#039;&#039;: This tab gives you access to the Asset Exchange itself. To observe an asset click the &amp;quot;Add asset&amp;quot; button and enter either the Asset ID or ID of the issuing account. Assets of your interest will be listed on the left. By selecting an asset, further information is provided: a description, buy and sell orders, the quantity, etc.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Trade History&#039;&#039;&#039;: This page will list all the assets traded by your account: both those bought by you and those you sold from the exchange.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Transfer History&#039;&#039;&#039;: This page will list all the assets transferred and received by your account.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Quantity Change History&#039;&#039;&#039;: This page will list the quantity change history of your assets.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;My Assets&#039;&#039;&#039;: This page will list all the assets in your possession: both those issued by you and those you bought from the exchange.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Open Orders&#039;&#039;&#039;: Here is provided a list of all your orders, notably the assets you are either trying to sell or to buy. It also allows you to cancel them.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Approval Request&#039;&#039;&#039;: Approval request for transactions related to your assets, see [[Asset_control|Asset control]]&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Issue Asset&#039;&#039;&#039;: A window will pop up allowing you to issue your own assets into the exchange.&lt;br /&gt;
|}&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Asset Exchange menu=== &amp;lt;!--T:21--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
By default, the Asset Exchange does not list any assets. You will have therefore to add the assets (using the &#039;&#039;Add Asset&#039;&#039; button) you are interested in, manually, yourself. For this purpose websites that rank the assets in meaningful ways (by volume, by the number of trades, etc) and that offer specific filters are starting to appear. In the future, you will be able to load asset lists in bulk instead of having to load them one by one. If you find yourself on the page of an asset, a &#039;&#039;Bookmark this Asset&#039;&#039; button will appear that will allow you to keep track of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Remind always to check that the asset id you are adding correspond with the legit asset:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
* Asset names &#039;&#039;&#039;are not&#039;&#039;&#039; unique, asset ids &#039;&#039;&#039;are&#039;&#039;&#039; unique&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; you can only add assets to the list if you are using the browser in normal mode. If you are in incognito (or equivalent) then any added list will disappear once you close the browser window. In the future, more portable systems will be implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
[[File:Asset_Exchange.PNG|thumb|none|border|630px|the Asset Exchange available within the client.]]&lt;br /&gt;
{|&lt;br /&gt;
|This is the main menu for the Asset Exchange, it is fundamentally organized in two areas.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:*a list with all the assets you are tracking.&lt;br /&gt;
:*an interface that allows interaction with these assets.&lt;br /&gt;
|-&lt;br /&gt;
|If you own tokens for an asset, it will appear in yellow on the side list.&lt;br /&gt;
|-&lt;br /&gt;
|By selecting an asset, the interface area will automatically display the corresponding information. This includes the amount of tokens that have been created &#039;&#039;(&amp;quot;quantity&amp;quot;)&#039;&#039;, how divisible is the token &#039;&#039;(&amp;quot;asset decimals&amp;quot;)&#039;&#039;, a brief description of the asset, who created the asset &#039;&#039;(&amp;quot;account&amp;quot;)&#039;&#039; and the asset identifier &#039;&#039;(&amp;quot;asset ID&amp;quot;)&#039;&#039;. These informations are crucial, in fact the asset names are &#039;&#039;&#039;&#039;&#039;non-unique&#039;&#039;&#039;&#039;. What this means is that there can be multiple assets that have the same name. &lt;br /&gt;
|-&lt;br /&gt;
|The cost of issuing an asset will be charged in child-chain tokens corresponding value of 100 Ardor, see [[Create_Transaction#Create Transaction Request|Create Transaction Request]]  should discourage people from spamming the exchange with assets whose only purpose is confusion and abuse. Without entering this worst-case scenario, it is reasonable to assume that perfectly legit users may create assets of the same name. Therefore a good degree of vigilance before buying is always beneficial.&lt;br /&gt;
|-&lt;br /&gt;
| To buy an asset, follow these simple steps:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:1. select the asset from the list.&lt;br /&gt;
:2. &#039;&#039;&#039;quantity&#039;&#039;&#039;: define how many tokens you are interested in buying.&lt;br /&gt;
:3. &#039;&#039;&#039;price&#039;&#039;&#039;: set how much you are willing to pay.&lt;br /&gt;
::&#039;&#039;&#039;ATTENTION&#039;&#039;&#039;: &amp;quot;price&amp;quot; refers to the cost of a unit of tokens. So, by entering 10, you are willing to pay 10 child chain tokens &#039;&#039;per&#039;&#039; asset token.&lt;br /&gt;
:4. &#039;&#039;&#039;fee&#039;&#039;&#039;: define the fee, see fees in [[Create_Transaction#Create Transaction Request|Create Transaction Request]] or click on the &amp;quot;Calculate&amp;quot; button, which will automatically calculate the current network fee.&lt;br /&gt;
:5. press buy.&lt;br /&gt;
:6. it will ask you for your passphrase and finally press &#039;&#039;buy asset&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===My Assets menu===  &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
[[File:My_assets.PNG|none|thumb|border|600px|Transfer Asset]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
In this menu all your confirmed assets will be displayed, this includes the assets you issued and those you obtained through trading.&lt;br /&gt;
&lt;br /&gt;
====Transfer asset==== &amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
Assets are also transferable, the procedure is very simple:&lt;br /&gt;
#Under &#039;&#039;&#039;&#039;&#039;My Assets&#039;&#039;&#039;&#039;&#039;, find the asset you wish to transfer.&lt;br /&gt;
#Click &#039;&#039;transfer&#039;&#039;.&lt;br /&gt;
#Complete the fields as follows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
[[File:Transfer_asset.PNG|border|thumb|400px|left]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;RECIPIENT&#039;&#039;&#039;: the account you wish to transfer the assets to.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;COMMENT&#039;&#039;&#039;: you can attach a brief commentary to the transfer. when marking &amp;quot;Add a message&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Optional&#039;&#039;: this field is optional.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Characters allowed&#039;&#039;: it can contain any Unicode characters but should be URL-encoded. Maximum length of 1000 characters. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;QUANTITY&#039;&#039;&#039;: specify the amount of assets you wish to transfer.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Limits&#039;&#039;: there is no upper limit, you can transfer all your assets. The minimum amount you can transfer depends on the nature of the asset. In particular, it depends on what has been defined as &#039;&#039;decimals&#039;&#039;. For 0 decimals, the minimum would be 1 token. For 1 decimal, it would be 0.1 tokens and so on.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;FEE&#039;&#039;&#039;: set the fee you are willing to pay for the transaction.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Limits&#039;&#039;: there is no upper limit. However the minimum fee is 0.01 tokens, see [[Create_Transaction#Create Transaction Request|fees]].&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;SECRET PASSPHRASE&#039;&#039;&#039;: enter &#039;&#039;&#039;&#039;&#039;your&#039;&#039;&#039;&#039;&#039; passphrase.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;VOUCHER&#039;&#039;&#039;: see [[Transaction_Vouchers#Usage_Example|Transaction Voucher]].&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Optional&#039;&#039;: this field is optional.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
====Delete shares==== &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
The asset issuer can delete assets shares, the procedure is very simple:&lt;br /&gt;
#Under &#039;&#039;&#039;&#039;&#039;My Assets&#039;&#039;&#039;&#039;&#039;, find the asset you wish to delete shares.&lt;br /&gt;
#Click &#039;&#039;Delete Shares&#039;&#039;.&lt;br /&gt;
#Complete the fields as follows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
[[File:DeleteShares.png|border|thumb|400px|left]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;QUANTITY&#039;&#039;&#039;: specify the amount of shares you wish to delete.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;COMMENT&#039;&#039;&#039;: you can attach a brief commentary to the transfer. when marking &amp;quot;Add a message&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Optional&#039;&#039;: this field is optional.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Characters allowed&#039;&#039;: it can contain any Unicode characters but should be URL-encoded. Maximum length of 1000 characters. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;FEE&#039;&#039;&#039;: set the fee you are willing to pay for the transaction.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Limits&#039;&#039;: there is no upper limit. However the minimum fee is 0.01 tokens, see [[Create_Transaction#Create Transaction Request|fees]].&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;SECRET PASSPHRASE&#039;&#039;&#039;: enter &#039;&#039;&#039;&#039;&#039;your&#039;&#039;&#039;&#039;&#039; passphrase.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;VOUCHER&#039;&#039;&#039;: see [[Transaction_Vouchers#Usage_Example|Transaction Voucher]].&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Optional&#039;&#039;: this field is optional.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Increase shares==== &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
The asset issuer can increase assets shares, the procedure is very simple:&lt;br /&gt;
#Under &#039;&#039;&#039;&#039;&#039;My Assets&#039;&#039;&#039;&#039;&#039;, find the asset you wish to increase shares.&lt;br /&gt;
#Click &#039;&#039;Increase Shares&#039;&#039;.&lt;br /&gt;
#Complete the fields as follows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
[[File:IncreaseShares.png|border|thumb|400px|left]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;QUANTITY&#039;&#039;&#039;: specify the amount of shares you wish to increase.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;COMMENT&#039;&#039;&#039;: you can attach a brief commentary to the transfer. when marking &amp;quot;Add a message&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Optional&#039;&#039;: this field is optional.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Characters allowed&#039;&#039;: it can contain any Unicode characters but should be URL-encoded. Maximum length of 1000 characters. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;FEE&#039;&#039;&#039;: set the fee you are willing to pay for the transaction.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Limits&#039;&#039;: there is no upper limit. However the minimum fee is 0.01 tokens, see [[Create_Transaction#Create Transaction Request|fees]].&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;SECRET PASSPHRASE&#039;&#039;&#039;: enter &#039;&#039;&#039;&#039;&#039;your&#039;&#039;&#039;&#039;&#039; passphrase.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;VOUCHER&#039;&#039;&#039;: see [[Transaction_Vouchers#Usage_Example|Transaction Voucher]].&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Optional&#039;&#039;: this field is optional.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Open Orders menu===  &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
Under this menu you can see all your orders that are currently open.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
[[File:Open_orders_menu.PNG|none|border|thumb|630px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;What to keep in mind:&#039;&#039;&#039;&lt;br /&gt;
* You can cancel any order you made. &#039;&#039;However&#039;&#039;&lt;br /&gt;
** The process is not instantaneous. Your cancel order is broadcasted to the network, your order may get accepted before you can manage to cancel it.&lt;br /&gt;
** The process of canceling an order is a transaction, meaning it involves a fee of 0.01 Tokens, see: [[Create_Transaction#Create Transaction Request|fees]].&lt;br /&gt;
** An order in the process of being canceled will appear in red under your Open Orders menu.&lt;br /&gt;
* In this image, the sell order I am willing to sell the shares (5 IGnis).&lt;br /&gt;
** The TESTAPPROV asset refers to an asset named TESTAPPROV, whose ID is 14572747084550678873, and that has been created by me.  &lt;br /&gt;
&lt;br /&gt;
===Issue Asset menu===  &amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Under this menu, you can issue assets yourself. These will be publicly available on the Asset Exchange where they can be traded for Ignis and vice-versa. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
The following window will pop up:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;NOTE: as the warning mentions, when you issue your asset you will not be able to modify any of the fields, ever. The reason why it is imperative to make sure all the information entered is correct.&#039;&#039;&#039;&lt;br /&gt;
[[File:Issue_asset.PNG|border|thumb|400px|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;ASSET NAME&#039;&#039;&#039;: the name of the asset you intend to issue. This is also the name announced to other traders, allowing them to find this asset.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: you cannot issue an unnamed asset.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Names are non-unique&#039;&#039;: multiple assets can be issued with the same name. &lt;br /&gt;
:&#039;&#039;&#039;Note&#039;&#039;&#039;: for this reason, pay attention to what you are buying or selling!&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Length&#039;&#039;: between 3 and 10 characters.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Characters allowed&#039;&#039;: uppercase letters, lowercase letters, and numbers.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;DESCRIPTION&#039;&#039;&#039;: in this field, you can briefly describe the asset being issued.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory. &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Characters allowed&#039;&#039;: it can contain any Unicode characters but should be URL-encoded. Maximum length of 1000 characters. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;QUANTITY&#039;&#039;&#039;: specify how many tokens you intend to create.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Must be a whole number&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;DECIMALS&#039;&#039;&#039;: this field defines the divisibility of the token. As an example, by defining 2 decimals, the minimum amount of tokens you can sell or buy is 0.01.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Limits&#039;&#039;: you can set from 0 to, at most, 8 decimals. The latter corresponds to the minimum of 0.00000001 tokens.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;FEE&#039;&#039;&#039;: define the fee related to issuing the asset. To avoid spam on the Asset Exchange, the IGNIS equivalent of 100 ARDR are the minimum required to issue an asset.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;DEADLINE&#039;&#039;&#039;: how long you are willing to wait before the request gets automatically deleted.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Expressed in hours&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;PASSPHRASE&#039;&#039;&#039;: the asset belongs to the person issuing it. Therefore it is required to enter your own passphrase. It will not be broadcasted.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;&#039;Note&#039;&#039;&#039;: assets belong to the person that creates them, but they can be bought, sold, and transferred.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Mandatory&#039;&#039;: this field is mandatory.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;VOUCHER&#039;&#039;&#039;: see [[Transaction_Vouchers#Usage_Example|Transaction Voucher]].&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Constraints&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;Optional&#039;&#039;: this field is optional.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==FAQ==  &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
See more: &lt;br /&gt;
* [[Asset_Exchange#Asset_Exchange_Operations|API Asset Exchange Operations]]&lt;br /&gt;
&lt;br /&gt;
==External Links== &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
* [http://nxter.org/how-to-use-nxt-asset-exchange-tutorial/ Nxter Magazine: How to Use the Nxt Asset Exchange] &lt;br /&gt;
* [https://www.youtube.com/watch?v=0ZtFYEeHk8o Asset Exchange Introductory Video]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Asset_control&amp;diff=12841</id>
		<title>Asset control</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Asset_control&amp;diff=12841"/>
		<updated>2021-04-15T17:04:38Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Asset control&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, Asset control&lt;br /&gt;
|description=Asset control feature allows imposing phasing restrictions to all transactions involving a given asset&lt;br /&gt;
}}&lt;br /&gt;
__TOC__&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
==Description== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Similar to [[Account control|Account Control]] which once set requires all transactions of an account to be subject to approval (i.e. to use phasing), the new Asset Control feature allows imposing such restriction to all transactions involving a given asset - such as placing a bid and ask orders, transfers, share deletions, and dividend payments that use the asset as a dividend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
This feature enables for example a private company to issue its shares on the Ardor blockchain, yet to impose control over who can purchase or sell them, for example requiring asset transactions to be approved by its board of directors, or a shareholder voting. It also allows asset issuers to be KYC compliant, by only allowing verified accounts to transact with their assets when using the &amp;quot;By Property&amp;quot; voting model.&lt;br /&gt;
&lt;br /&gt;
==Setting Asset Control== &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Only the asset issuer can set asset control. From the Asset Exchange page header locate the asset control &#039;&#039;Setup&#039;&#039; to load the asset control setup dialog. &lt;br /&gt;
Also, use this dialog to clear asset control.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
[[File:asset.control.setup.png|||figure 1]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Use the &#039;&#039;View&#039;&#039; button to view a JSON representation of the asset control data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
[[File:asset.control.view.png|||figure 2]]&lt;br /&gt;
&lt;br /&gt;
==Using Asset Control== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
For every transaction which involves the controlled asset, a new widget will show up on the create transaction dialog to allow the user to set the phasing height for the transaction.&lt;br /&gt;
The approval model set by the asset control has to be approved before this height for the transaction to execute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
[[File:asset.control.transaction.png|||figure 3]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Arbitrary_messages&amp;diff=12840</id>
		<title>Arbitrary messages</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Arbitrary_messages&amp;diff=12840"/>
		<updated>2021-04-15T17:04:03Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Arbitrary messages&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, Arbitrary messages&lt;br /&gt;
|description=Messaging system of the Ardor blockchain. It allows the transmission of data messages up to 1000 bytes in length from any account to any other account.&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Description==  &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Transmission of data messages up to 1000 bytes in length from any account to any other account. In Ardor this feature is restricted for child chains such as Ignis. It is also possible to send messages encrypted, allowing a third party to decrypt the message using a unique shared key for each message.&lt;br /&gt;
&lt;br /&gt;
==Details==  &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Arbitrary messages are limited only by length.  Any string can be transmitted, using any data structure or form of data encryption.  Encoding, decoding, linked messages, data structures, and more can be implemented by any application that uses the system. For instance, it can be implemented groups ids, sequencing, message and correlation ids linked to the transaction, offsets, and so on to have a complete messaging system. Parsing of the messages is part of the end-party distributed applications.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Each arbitrary message has a shared key that allows a third party to decrypt the messages that were encrypted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
The base implementation allows for the transmission of simple, unencrypted text messages between accounts, but since the messages are truly &amp;quot;arbitrary&amp;quot; the range of possible applications is vast.  Secure messaging, torrent applications, voting systems, data storage systems, and even simple distributed applications have been suggested.&lt;br /&gt;
&lt;br /&gt;
==How To==  &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
* [[Messages#Arbitrary_Message_System_Operations|High-level API calls for implementing arbitrary messages]]&lt;br /&gt;
&lt;br /&gt;
===Sending a message===  &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
#When sending a message using your local node the Ardor software must be running, then browse to http://127.0.0.1:27876/ and log in to your account providing your passphrase. It is also possible to connect to the [[Testnet|testnet]] or to the [https://testardor.jelurida testnet node of Jelurida] to test this feature&lt;br /&gt;
#Select a chain that has the messages feature enable (ie: Ignis) [[File:Arbitrary_messages_cogwheel.png|200px|border|none]]&lt;br /&gt;
#*The &amp;quot;Messages&amp;quot; section and a &amp;quot;Send Message&amp;quot; button on top will appear. Click on the &amp;quot;Send Message&amp;quot; button and a modal will pop-up [[File:Arbitrary_messages_2.png|300px|border|none]]&lt;br /&gt;
#Complete the modal form shown below with the following entries: [[File:Arbitrary_messages_3.png|450px|border|none]]&lt;br /&gt;
#*&#039;&#039;Recipient&#039;&#039;: The account that will receive the message&lt;br /&gt;
#*&#039;&#039;Message&#039;&#039;:  The message you would like to send (up to 1000 characters)&lt;br /&gt;
#*&#039;&#039;&#039;Note:&#039;&#039;&#039;: This message is encrypted by default, which means the recipient must know how to decrypt the message once they receive it. To submit the message as plain text, you must manually select this option. The “messaging” feature is simple and open-ended on purpose to allow other developers to create more advanced tools and applications.&lt;br /&gt;
#*&#039;&#039;Fee&#039;&#039;:  Expressed in child chain tokens such as Ignis. Enter the fee you are willing to pay for this transaction.  The minimum fee in child chain tokens must be equal to 0.01 ARDR (see [https://www.jelurida.com/sites/default/files/ArdorFees.pdf Fee Structures]).&lt;br /&gt;
#*&#039;&#039;Passphrase&#039;&#039;:  Your account passphrase.&lt;br /&gt;
#Click &amp;quot;Submit&amp;quot;&lt;br /&gt;
#*The server will respond with the box &amp;quot;Your message has been sent&amp;quot;. [[File:Arbitrary_messages_4.png|450px|border|none]] Afterwards, the transaction will be shown in the [[Ardor_client_interface#My_Transactions|&amp;quot;My Transactions section of the user interface&amp;quot;]]&lt;br /&gt;
#*When the transaction is confirmed, it will appear in the &amp;quot;transactions&amp;quot; block in your client interface [[File:Arbitrary_messages_5.png|650px|border|none]]&lt;br /&gt;
&lt;br /&gt;
===Sending an encrypted message===  &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
#Follow the instructions 1 and 2 from the [[Arbitrary_messages#Sending_a_message|previous section]] above.&lt;br /&gt;
#Complete the modal form shown below with the following entries: [[File:Arbitrary_messages_6.png|450px|border|none]]&lt;br /&gt;
#*&#039;&#039;Recipient&#039;&#039;: The account that will receive the message&lt;br /&gt;
#*&#039;&#039;Message&#039;&#039;:  The message you would like to send (up to 1000 characters)&lt;br /&gt;
#*&#039;&#039;&#039;Encrypt message:&#039;&#039;&#039;: Check this box. The sender and recipient accounts must have published their [[Faq#What_is_my_public_key|public keys]] before this operation.&lt;br /&gt;
#*&#039;&#039;Fee&#039;&#039;:  Expressed in child chain tokens such as Ignis. Enter the fee you are willing to pay for this transaction.  The minimum fee in child chain tokens must be equal to 0.01 ARDR (see [https://www.jelurida.com/sites/default/files/ArdorFees.pdf Fee Structures]).&lt;br /&gt;
#*&#039;&#039;Passphrase&#039;&#039;:  Your account passphrase.&lt;br /&gt;
#Click &amp;quot;Submit&amp;quot;&lt;br /&gt;
#*The UI will respond with the box &amp;quot;Your message has been sent&amp;quot;. [[File:Arbitrary_messages_4.png|450px|border|none]] Afterwards, the transaction will be shown in the [[Ardor_client_interface#My_Transactions|&amp;quot;My Transactions section of the user interface&amp;quot;]]&lt;br /&gt;
#*When the transaction is confirmed, it will appear in the &amp;quot;transactions&amp;quot; block in your client interface. Clicking on it will open a new modal with the transaction&#039;s details [[File:Arbitrary_messages_7.png|650px|border|none]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Decrypting a message==== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
The message can be decrypted either using the sender or recipient&#039;s private key or the shared key provided with each arbitrary message transaction. For instance, using the user interface:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
[[File:Arbitrary_messages_7.5.png|650px|border|none]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
When providing the private key of the sender and clicking on the &amp;quot;Decrypt&amp;quot; button, the encrypted message and the shared key is shown:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
[[File:Arbitrary_messages_8.png|650px|border|none]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
The shared key is also a way to share the content of the message without revealing neither the sender nor the recipient&#039;s private keys. Hence, a third party can have access to the message. The message can be decrypted using this method using the UI or the API as the following picture shows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
[[File:Arbitrary_messages_9.png|650px|border|none]] &lt;br /&gt;
&lt;br /&gt;
==External Links==  &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
* [http://nxter.org/nxt-core-arbitrary-messages/ Nxter Magazine: Nxt Arbitrary Messages] &lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Alias_system&amp;diff=12839</id>
		<title>Alias system</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Alias_system&amp;diff=12839"/>
		<updated>2021-04-15T17:02:48Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Alias system&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, Alias system, Alias system feature&lt;br /&gt;
|description=Alias system feature allows one piece of text to be substituted for another so that keywords or keyphrases can be used to represent other things.&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
__TOC__&lt;br /&gt;
==Description== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
The Alias System feature of Ardor essentially allows one piece of text to be substituted for another so that keywords or keyphrases can be used to represent other things – names, telephone numbers, physical addresses, web sites, account numbers, email addresses, product SKU codes... almost anything you can think of. The types are URI, Account, or Other&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
For example, you could ask Ardor to associate &amp;quot;search&amp;quot; with &amp;quot;www.google.com&amp;quot;. Once this is done, all you have to do to get to Google is type &amp;quot;uri:search&amp;quot; into an Ardor-capable browser, and it will translate your request into one for &amp;quot;www.google.com&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Immediate applications are simple: you can create an easy-to-remember alias for your Ardor account number, for example. But since the Alias System is open-ended, it can be used to implement a decentralized DNS system, shopping cart applications, and more.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Creating aliases is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
# A user sends a transaction that states &amp;quot;ThisText = ThatText&amp;quot;&lt;br /&gt;
# If the alias is to be changed, just send another transaction with a new definition. Only the account that created an alias can change it.&lt;br /&gt;
&lt;br /&gt;
==Details== &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
The alias can be any string of latin-character numbers and letters. The address can be anything like:&lt;br /&gt;
*&amp;quot;173.194.112.174&amp;quot; (an IPv4 address)&lt;br /&gt;
*&amp;quot;2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d&amp;quot; (an IPv6 address)&lt;br /&gt;
*&amp;quot;mydomain.com/secretpage.php?parameter=value&amp;quot; (a URI)&lt;br /&gt;
*&amp;quot;johnsmith@matrix.com&amp;quot;&lt;br /&gt;
*&amp;quot;tel:+44-20-8123-4567&amp;quot;&lt;br /&gt;
*...or even &amp;quot;bitcoin:1BTCorgHwCg6u2YSAWKgS17qUad6kHmtQW&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
There are 2 main ways to use Ardor aliases without having to rely on third-party plugins for your browser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Server-side. &#039;&#039;&#039; A web server analyses the Ardor blockchain and replaces &amp;quot;ardor-links&amp;quot; with corresponding addresses before sending HTML documents to users.&lt;br /&gt;
# &#039;&#039;&#039;Client-side. &#039;&#039;&#039; A web browser runs javascript code that connects to Ardor bootstrapping nodes and replaces &amp;quot;Ardor-links&amp;quot; with their addresses. This requires embedding a small script that is executed in an &amp;quot;onload&amp;quot; event. The script will do all the work via CORS, JSON, or other techniques.&lt;br /&gt;
&lt;br /&gt;
==Alias Operations== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Aliases can be transferred for a 0.1 Ardor fee. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
An alias can be sold to either specific Ardor Accounts or the general public.&lt;br /&gt;
To sell an alias, you can set the price to sell for every alias.&lt;br /&gt;
&lt;br /&gt;
===Create Alias=== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
Go to &#039;Aliases&#039; in your client.&lt;br /&gt;
First click on &#039;Aliases&#039; in the wallet, then click on &#039;Register Alias&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
[[File:Aliases_001.png|none|border|600px|Figure 1]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Here you can choose to use the alias for different purposes: By choosing &#039;Account&#039;, you can link to an Ardor account. If you choose &#039;URI&#039; you can e.g. link any website with your alias. The third option &#039;Other&#039; allows you to insert any text you like.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
Please note, aliases are unique. There can never be two aliases with the same name. Aliases are not case sensitive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Your new alias will now be listed on the &#039;Aliases&#039; page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
You can either transfer your alias to any person or sell it to any person for a specific amount.&lt;br /&gt;
&lt;br /&gt;
===Edit Alias=== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
You can at any time edit the content of the alias. Just click &#039;Edit&#039; on the Alias tab. You will see this panel to input the specific information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
[[File:Aliases_002.png|none|border|600px|Figure 2]]&lt;br /&gt;
&lt;br /&gt;
===Transfer Alias=== &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
Click &#039;Transfer&#039; in the Alias panel and input the Ardor Account where you want to transfer your alias:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
[[File:Aliases_003.png|none|border|600px|Figure 3]]&lt;br /&gt;
&lt;br /&gt;
===Sell Alias=== &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
You can either sell the Alias to a specific Ardor Account or the public. Specific Ardor accounts will see an offer to buy the alias.&lt;br /&gt;
&lt;br /&gt;
====Sell alias to any specific Ardor account==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Sell it by clicking on &#039;Sell&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
[[File:Aliases_004.png|none|border|600px|Figure 4]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
After submitting the order, you should see:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
[[File:Aliases_005.png|none|border|600px|Figure 5]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
You can cancel the sell offer anytime before the partner has accepted it. To change the amount of the sell order, you can create a new sell order.&lt;br /&gt;
&lt;br /&gt;
====Sell alias to the public==== &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
This way every user can see your offer and buy it for the price you entered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
[[File:Aliases_006.png|none|border|600px|Figure 6]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
Input the price. After submitting the order, you should see&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
[[File:Aliases_007.png|none|border|600px|Figure 7]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Every user can now buy your alias. Both submitting a sell order and buying an alias incur a transaction fee.&lt;br /&gt;
&lt;br /&gt;
===Buy public Alias=== &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
There is no way to browse all aliases up for sale within the Ardor network. Just try to register the alias you want. If it has already been registered but is up for sale, you can see the offer if you search for it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
[[File:Aliases_008.png|none|border|600px|Figure 8]]&lt;br /&gt;
&lt;br /&gt;
==External Links== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
* [http://nxter.org/nxt-core-alias-system/ Nxter Magazine: The Nxt Alias System]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Account_Properties&amp;diff=12837</id>
		<title>Account Properties</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Account_Properties&amp;diff=12837"/>
		<updated>2021-04-15T17:00:33Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Account Properties&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, account Properties, account Properties feature&lt;br /&gt;
|description=Account Properties feature gives Ardor users the ability to permanently ‘tag’ any Ardor account with a small amount of data.&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Account properties give Ardor users the ability to permanently ‘tag’ any Ardor account with a small amount of data. These properties tags can be used to provide meta-information about an account: for example&lt;br /&gt;
* A seller can tag buyer accounts that he has sold to in the past.&lt;br /&gt;
* An exchange can tag already identified user accounts for providing KYC and AML features&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
These properties are also used by the [[Account Monitor]] feature and for the [[Phasing (f)#Vote_By_Property|By-property phasing]] &lt;br /&gt;
&lt;br /&gt;
== How to set an account property == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|1. Visit http://localhost:27876/ (or https://localhost:27876/ if you enabled SSL) and log in.&lt;br /&gt;
|-&lt;br /&gt;
|2. Click on &#039;&#039;Account Properties&#039;&#039; under &amp;quot;Dashboard&amp;quot; in the left sidebar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
[[File:Account Properties1.png|none|border|Figure 1]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|3. A window showing the current Account Properties for your account will appear. Click the &#039;Set&#039; tab in the top right:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
[[File:Account Properties2.png|none|border||600px|Figure 2]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|4. A form allowing you to set an Account Property will appear.  From here you can specify the account you want to set the property on, the name of the property, and the value for that property:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
[[File:Account Properties3.png|none|border|Figure 3]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Account_Monitor&amp;diff=12836</id>
		<title>Account Monitor</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Account_Monitor&amp;diff=12836"/>
		<updated>2021-04-15T16:59:52Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title= Account Monitor&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, account Monitor, account Monitor feature&lt;br /&gt;
|description=Account Monitor feature allows transferring IGNIS or other child chain tokens, ASSET, or CURRENCY from a funding account to recipient accounts when the amount held by the recipient account drops below a set threshold.&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Server-side component which automatically will transfer IGNIS or other child chain tokens, ASSET or CURRENCY from a funding account to recipient accounts when the amount held by the recipient account drops below a set threshold. The transfer will not be done until the current block height is greater than equal to the block height of the last transfer plus the interval.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
The funding account is identified by your secret phrase.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
The recipient accounts are identified by specified [[Account Properties]]. Each account that has this property set by the funding account will be monitored for changes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
This feature is useful to make sure the account owners always poses enough tokens to transact.&lt;br /&gt;
&lt;br /&gt;
Funding monitors, like other similar local node tools like standby shufflers or bundlers, are not persisted across node reboots. Check the [[Node_Processes_Configuration|Processes]] feature for an easy-to-use and secure tool to help you with recovering the configuration upon node restart.&lt;br /&gt;
&lt;br /&gt;
== How to start an account monitor == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
1. Visit http://localhost:27876/ (or https://localhost:27876/ if you enabled SSL) and log in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
2. Click on the cogwheel in the top right and select &amp;quot;Monitors&amp;quot;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
[[File:Account_Monitor.png|caption|none|border|Figure 1]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
3. A window showing the current Account Monitors for your account will appear. Click the &amp;quot;Start Monitor&amp;quot; button in the top right: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
[[File:Account_Monitor2.png|none|border|600px|Figure 2]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
4. A form allowing you to set the specifications of the Account Monitor will appear.  From here you can specify the account you want to set the property on, the name of the property, and the value for that property: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
[[File:Account_Monitor3.png|none|border|600px|Figure 3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;&#039;&#039;Fields to complete&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
: &#039;&#039;&#039;CONTROL PROPERTY&#039;&#039;&#039;: The account property set by the funding account to look for.&lt;br /&gt;
: &#039;&#039;&#039;AMOUNT&#039;&#039;&#039;: Amount to transfer.&lt;br /&gt;
: &#039;&#039;&#039;THRESHOLD&#039;&#039;&#039;: Minimal amount of chain tokens in account before transfer happens.&lt;br /&gt;
: &#039;&#039;&#039;INTERVAL&#039;&#039;&#039;: The number of blocks between transfers.&lt;br /&gt;
: &#039;&#039;&#039;FEE RATIO&#039;&#039;&#039;: The fee ratio for coin exchange conversions.&lt;br /&gt;
: &#039;&#039;&#039;PASSPHRASE&#039;&#039;&#039;: The secret phrase of your account.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Account_Leasing&amp;diff=12835</id>
		<title>Account Leasing</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Account_Leasing&amp;diff=12835"/>
		<updated>2021-04-15T16:58:41Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title= Account Leasing&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, account Leasing, account Leasing feature&lt;br /&gt;
|description=The Account Leasing feature allows a user to lease its forging power to another account for a fixed period of time&lt;br /&gt;
}}&lt;br /&gt;
[[Category: Features]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== What is Account Leasing == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Account Leasing allows a user to lease its forging power to another account for a fixed period of time. This feature enables the creation of forging pools, where the forging power of multiple users is combined to increase the chance of generating a block. Account leasing is also relevant if a user wants to take part in the forging process without having to keep a node running 24/7. &lt;br /&gt;
&lt;br /&gt;
== How to lease your balance == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
[[File:Balance1.png|thumb|right|figure 1]]&lt;br /&gt;
[[File:Account_leasing1.png|thumb|right|figure 2]]&lt;br /&gt;
[[File:Account_leasing_details1.png|thumb|right|figure 3]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|1. Visit http://localhost:27876/ (or https://localhost:27876/ if you enabled SSL) and log in.&lt;br /&gt;
|-&lt;br /&gt;
|2. Click on &#039;&#039;more info&#039;&#039; under the tile showing your balance. (figure 1)&lt;br /&gt;
|-&lt;br /&gt;
|3. A window showing the details regarding your account will appear. Click the &#039;&#039;Account leasing&#039;&#039; tab. (figure 2)&lt;br /&gt;
|-&lt;br /&gt;
|4. Click &#039;&#039;lease your balance to another account&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|5. The form allowing you to lease your balance will appear. (figure 3)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:&#039;&#039;&#039;&#039;&#039;Fields to complete&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
: &#039;&#039;&#039;RECIPIENT&#039;&#039;&#039;: address of the account you wish to lease your balance to.&lt;br /&gt;
: &#039;&#039;&#039;PERIOD&#039;&#039;&#039;: for how long your balance will be leased. Expressed in blocks (1440 blocks is roughly 24h). Between 1440 and 65535. You cannot cancel a leasing once submitted. &lt;br /&gt;
: &#039;&#039;&#039;FEE&#039;&#039;&#039;: the fee you wish to pay. The minimum is 1 ARDR.&lt;br /&gt;
: &#039;&#039;&#039;SECRET PHRASE&#039;&#039;&#039;: the passphrase of your account.&lt;br /&gt;
|-&lt;br /&gt;
|6. Click &#039;&#039;Lease Balance&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How does it work == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
When you lease your balance, you are essentially giving your forging power to another account. It is important to clarify certain points:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
:&#039;&#039;Your balance never leaves your account&#039;&#039;&lt;br /&gt;
::* Your funds are still on your account after you lease them. They are still available for use: you can spend them, receive more, etc. The only thing given is your forging power, by consequence while your balance is leased, you will not be able to forge on your own.&lt;br /&gt;
::* If your funds vary, so will do your forging power. If you lease 1000 ARDR to a forging pool and the next day you spend half of them, you are now leasing only 500 ARDR. &lt;br /&gt;
::* This also means that the person you lease your balance to will not be able to do anything with your funds. They are still under your control.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
:&#039;&#039;You cannot cancel a lease&#039;&#039;&lt;br /&gt;
::* This is important, so make sure you keep this in mind when you set the leasing period. When the leasing period expires, the forging power will return to you automatically. Not before.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
:&#039;&#039;You have control over your funds, not the rewards of block generation&#039;&#039;&lt;br /&gt;
::* If you decide to lease your balance to a forging pool or a wealthy owner of NXT, there is no guarantee you will be paid accordingly when (if) a block is generated. So, make sure you lease your forging power to someone you trust will pay your share.&lt;br /&gt;
&lt;br /&gt;
== Uses of account leasing == &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
This feature introduces two main benefits. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Firstly, you no longer need to leave your node running 24/7 to take part in the forging process. You can lease your balance to someone that does.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;NOTE:&#039;&#039;&#039; it is still highly suggested to run as many nodes as possible. It strengthens the stability and the security of the network.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
Secondly, it allows the formation of &#039;&#039;forging pools&#039;&#039; where multiple users can combine their forging power to increase their chance of forging a block. Any ARDR forged is not automatically sent to your account, it&#039;s up to the pool owner what to do with it. For more details, visit [https://nxtwiki.org/wiki/Forging_Pool  the page about forging pools from Nxt].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Account_control&amp;diff=12834</id>
		<title>Account control</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Account_control&amp;diff=12834"/>
		<updated>2021-04-15T16:57:28Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Account Control&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, account control, account control feature&lt;br /&gt;
|description=Explanation of the Account Control feature: Any account can be restricted to only be allowed to issue phased transactions subject to a specific voting model.&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
__TOC__&lt;br /&gt;
==Description== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Any account can be restricted to only be allowed to issue phased transactions subject to a specific voting model. This is achieved by the account submitting a setPhasingOnly transaction using&lt;br /&gt;
the setPhasingOnlyControl API. The getPhasingOnlyControl API can be used to retrieve the status of an account phasing control, and getAllPhasingOnlyControls to get all accounts subject to phasing control with their respective restrictions. The account control feature relies on the [[Phasing (f)|Phasing]] feature and is available in both Nxt and Ardor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
In Ardor, only child chain transactions can be phased. Therefore, when account control is set for an account, it can no longer submit Ardor chain transactions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Phasing parameters that refer to transaction IDs must now use transaction full hashes instead, prefixed with the chain ID separated with &#039;:&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
It is possible to refer to transactions on other chains when approving a phased transaction, or setting up a by-transaction phasing voting model. The controlMaxFees parameter when setting mandatory approval now accepts&lt;br /&gt;
multiple values, each fee being prefixed with the child chain ID and &#039;:&#039;, to indicate which child chain the limit applies to. If no max fee has been set for a child chain, there is no phasing transactions fees total limit on it for the controlled account. Currently, the UI only supports setting max fee for the current chain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
These features present some interesting account usage scenarios:&lt;br /&gt;
* Multi-signature account &amp;lt;ref&amp;gt;For a detailed step-by-step guide, you can have a look at the advance guide [[Emulating_Multi_Signature_Accounts_on_the_Blockchain|How to use the phasing feature to emulate multisig accounts in the Ardor platform]]&amp;lt;/ref&amp;gt; &lt;br /&gt;
* Tagging an account as a &amp;quot;savings&amp;quot; account, with no ability to send tokens&lt;br /&gt;
* Using a locked account as an &amp;quot;escrow&amp;quot; account&lt;br /&gt;
* limiting the ability to transfer assets, aliases, or other entities from an account&lt;br /&gt;
&lt;br /&gt;
==Setting Account Control== &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
To set account control on your account, click on the &amp;quot;Account Balance&amp;quot; tile. &lt;br /&gt;
[[File:Account.Control.Balance.png|figure 1|none|border|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
Then select the &amp;quot;Account Control&amp;quot; tab then click on the &amp;quot;Setup Mandatory Approval&amp;quot; link.&lt;br /&gt;
[[File:Account.Control.Approval.Link.png|figure 2|none|border|400px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
This will load the &amp;quot;Mandatory Approval&amp;quot; dialog. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
In Ardor, select the &amp;quot;Control Approval Model&amp;quot; from the available approval models defined in the [[Composite_phasing#Setting_up_an_Approval_Model phasing|Approval Models]] page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
The rest of the parameters are explained using balloon text on the dialog. Use the same method to remove the account control from an account that is under account control, account control removal transaction is subject to the same account control restrictions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
[[File:account.control.png|figure 3|none|border|600px]]&lt;br /&gt;
&lt;br /&gt;
==Using Account Control== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
When creating a transaction from an account that is under account control. The additional widget appears on the transaction dialog. It allows the user to select the specific phasing height and links to the account control information.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
[[File:account.control.on.create.transaction.png|||figure 4|none|border|600px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;Note: Some exchanges do not accept phased transactions. In such cases, the approach would be to transfer first into a non-controlled account (&amp;quot;Hot Wallet&amp;quot;), and from there transfer to the exchange.&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=API&amp;diff=12833</id>
		<title>API</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=API&amp;diff=12833"/>
		<updated>2021-04-15T16:56:27Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Ardordocs - Ardor API&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, API, API documentation, Application program interface&lt;br /&gt;
|description=Description and examples of the API of Ardor.&lt;br /&gt;
}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Description== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
The Ardor API allows interaction with Ardor nodes using HTTP requests to port 27876. Most HTTP requests can use either the GET or POST methods, but some API calls accept only the POST method for security reasons. Responses are returned as JSON objects. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
If you want to interact with an [[Testnet|Ardor testnet local node]], please be aware that the port for sending the HTTP requests is different, you should use 26876 instead of the mainnet one 27876. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Each API call is documented ([[All_Operations_index|see the full API list]]), with definitions given for HTTP request parameters and JSON response fields, followed by an example:&lt;br /&gt;
*The JSON response fields are each followed by one of &#039;&#039;S&#039;&#039; for string, &#039;&#039;A&#039;&#039; for array, &#039;&#039;O&#039;&#039; for object, &#039;&#039;N&#039;&#039; for number or &#039;&#039;B&#039;&#039; for boolean.&lt;br /&gt;
*In the examples, the Ardor node is represented as &#039;&#039;localhost&#039;&#039; and requests and responses are formatted for easy reading; line breaks and spaces are not actually used except in some parameter values. All requests are in URL format which implies the HTTP GET method. When GET is allowed, the URL can be entered into a browser URL field but proper URL encoding is usually required (e.g., spaces in a parameter value must be replaced by &#039;&#039;+&#039;&#039; or &#039;&#039;%20&#039;&#039;). Otherwise, the URL should be used as a guide to preparing an HTTP POST request using cURL, for example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
All API calls can be viewed and tested at http://localhost:27876/test while the local server node is running. For specific API calls, use &#039;http://localhost:27876/test?requestType=&#039;&#039;&#039;specificRequestType&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
There are some [[Sample_Java_Programs|Sample Java Programs]], which demonstrate how to perform operations such as calculating the best bundling fee for child chain transactions, the use of APIs locally without relying on a remote node among others.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
This document corresponds to Ardor Software Version {{NRSVersion}}: [https://www.jelurida.com/sites/default/files/Ardor-Developers-Cheat-Sheet.pdf Download Ardor Developers Cheat Sheet]&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Ardor developers cheat sheet&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Java Conversion Functions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;From&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;To&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Code&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Secret Phrase&#039;&#039;&lt;br /&gt;
| &#039;&#039;Public Key&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Crypto.getPublicKey(String s)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Public Key&#039;&#039;&lt;br /&gt;
| &#039;&#039;Numeric ID&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Account.getId(byte[] pk)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Numeric ID&#039;&#039;&lt;br /&gt;
| &#039;&#039;Public Key&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Account.getPublicKey(long id)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Numeric ID&#039;&#039;&lt;br /&gt;
| &#039;&#039;String ID&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Long.toUnsignedString(long id)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;String ID&#039;&#039;&lt;br /&gt;
| &#039;&#039;Numeric ID&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Convert.parseUnsignedLong(String s)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Numeric ID&#039;&#039;&lt;br /&gt;
| &#039;&#039;RS Format&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Convert.rsAccount(id)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;RS Format or String ID&#039;&#039;&lt;br /&gt;
| &#039;&#039;Numeric ID&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Convert.parseAccountId(String s)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;byte[]&#039;&#039;&lt;br /&gt;
| &#039;&#039;Hex String&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Convert.toHexString(b)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Hex String&#039;&#039;&lt;br /&gt;
| &#039;&#039;byte[]&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Convert.parseHexString(hex)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Full Hash&#039;&#039;&lt;br /&gt;
| &#039;&#039;ID&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Convert.fullHashToId(byte[] b)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Epoch Time&#039;&#039;&lt;br /&gt;
| &#039;&#039;Time Millis&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Convert.fromEpochTime(int t)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Time Millis&#039;&#039;&lt;br /&gt;
| &#039;&#039;Epoch Time&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Convert.toEpochTime(long t)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;String&#039;&#039;&lt;br /&gt;
| &#039;&#039;byte[]&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Convert.toString(byte[] b, Boolean isText)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;byte[]&#039;&#039;&lt;br /&gt;
| &#039;&#039;String&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Convert.toBytes(String s, boolean isText)&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Java Common Operations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Code&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Return&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Sign&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Crypto.sign(byte[] message, String secretPhrase)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;byte[]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Verify&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Crypto.verify(byte[] signature, byte[] message, byte[] publicKey)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Encrypt&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Account.encryptTo(byte[] publicKey, byte[] data, String senderSecretPhrase, boolean compress)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;EncryptedData&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Decrypt&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Account.decryptFrom(EncryptedData encryptedData, String recipientSecretPhrase, boolean uncompress)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;byte[]&amp;lt;/code&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;Sha256&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Crypto.sha256().digest(byte[] b)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;byte[]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Compress&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Convert.compress(byte[] bytes)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;byte[]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Uncompress&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;Convert.uncompress(byte[] bytes)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;byte[]&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Useful Constants&#039;&#039;&#039; see &amp;lt;code&amp;gt;nxt.Constants&amp;lt;/code&amp;gt; class&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Reading from properties file&#039;&#039;&#039; &amp;lt;code&amp;gt;Nxt.getBooleanProperty(), Nxt.getIntProperty(), Nxt.getStringProperty(), Nxt.getStringListProperty()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Javascript Conversion Functions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;From&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;To&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Code&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Secret Phrase&#039;&#039;&lt;br /&gt;
| &#039;&#039;Public Key&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;NRS.getPublicKey(converters.stringToHexString(secretPhrase))&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Public Key&#039;&#039;&lt;br /&gt;
| &#039;&#039;String ID&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;NRS.getAccountIdFromPublicKey(publicKeyHexString)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;String ID&#039;&#039;&lt;br /&gt;
| &#039;&#039;Public Key&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;NRS.getPublicKey(id, true)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;String ID&#039;&#039;&lt;br /&gt;
| &#039;&#039;RS Format&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;NRS.convertNumericToRSAccountFormat(id)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;byte[]&#039;&#039;&lt;br /&gt;
| &#039;&#039;Hex String&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;converters.byteArrayToHexString(bytes)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Hex String&#039;&#039;&lt;br /&gt;
| &#039;&#039;byte[]&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;converters.hexStringToByteArray(hex)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Full Hash&#039;&#039;&lt;br /&gt;
| &#039;&#039;ID&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;NRS.fullHashToId(fullHash)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Epoch Time&#039;&#039;&lt;br /&gt;
| &#039;&#039;Time Millis&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;NRS.fromEpochTime(epochTime)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Time Millis&#039;&#039;&lt;br /&gt;
| &#039;&#039;Epoch Time&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;NRS.toEpochTime(time)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;String&#039;&#039;&lt;br /&gt;
| &#039;&#039;byte[]&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;NRS.getUtf8Bytes(String), converters.stringToByteArray(String)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;byte[]&#039;&#039;&lt;br /&gt;
| &#039;&#039;String&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;converters.byteArrayToString(bytes)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;NQT&#039;&#039;&lt;br /&gt;
| &#039;&#039;Chain tokens&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;NRS.intToFloat(amountNQT, decimals)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;NQT&#039;&#039;&lt;br /&gt;
| &#039;&#039;formatted&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;NRS.formatQuantity(amountNQT, decimals) – many different variants&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Chain tokens&#039;&#039;&lt;br /&gt;
| &#039;&#039;NQT&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;NRS.floatToInt(amountNXT, decimals)&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Javascript Common Operations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Code&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Return&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Sign&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;NRS.signBytes(hexStringMessage, secretPhrase)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Hex String&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Verify&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;NRS.verifySignature(hexSignature, hexStringMessage, hexPublicKey, callback)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;boolean&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Encrypt&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;NRS.encryptNote(), NRS.encryptData() – see test.nrs.encryption.js&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;encrypted message, nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Decrypt&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;NRS.decryptNote(), NRS.decryptData() - see test.nrs.encryption.js&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Decrypted message, shared key&amp;lt;/code&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;Sha256&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;CryptoJS.algo.SHA256.create(), update(), finalize()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;word array&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Compress&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;pako.gzip(new Uint8Array(bytes))&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;byte array&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Uncompress&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;pako.inflate(new Uint8Array(bytes))&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;byte array&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Useful Constants&#039;&#039;&#039; see &amp;lt;code&amp;gt;nrs.constants.js&amp;lt;/code&amp;gt; class &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Reading account settings&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;NRS.settings[&amp;lt;setting name&amp;gt;]&amp;lt;/code&amp;gt; - account specific&lt;br /&gt;
&amp;lt;code&amp;gt;NRS.mobileSettings[&amp;lt;setting name&amp;gt;]&amp;lt;/code&amp;gt; - device specific&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==General Notes== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
===Flexible Account IDs=== &lt;br /&gt;
All API requests that require an account ID accept either an account number or the corresponding [[RS_Address_Format|Reed-Solomon address]].&lt;br /&gt;
&lt;br /&gt;
===Quantity Units amountNQT, QNT and priceNQTPer(Share, Coin, Unit, etc.)=== &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
The Ardor system is defined relative to a whole unit of the holding being transactioned. The parent chain ARDOR has a currency ARDR used to quantify value of forging in the system. Like all currencies, ARDR circulates in the system, moving from one user to another by transfers. Also, a small fee is required for every transaction, including those in which no ARDR is transferred, such as simple messages when using a child chain. This fee goes to the owner of the node that forges (generates) the new block containing the transaction that is accepted onto the blockchain, and the bundlers get the child chain fees and pay the ARDR fees to the forgers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
One billion ARDR were distributed during the snapshot, and no new ARDR will ever be created. ARDR is divisible to eight decimal places. Yet internally, the currency is still stored in integer form in units of amountNQT, where 1 ARDR = 10&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt; amountNQT. All parameters and fields in the API involving a quantity of a token are denominated in units of amountNQT, for example &#039;&#039;feeNQT&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
The Ardor system can be thought of as an asset owned by all who possess ARDR. In this sense, ARDR quantifies ownership of or stake in the system. Stakeholders are entitled to forge blocks and collect transaction fees in proportion to the amount of ARDR they possess.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
Other assets can be created within ARDR using [[Asset_Exchange#Issue_Asset|Issue Asset]] within a child chain (eg Ignis). The issuer must specify the number of decimal places to use in quantifying the asset, and the amount of the asset to create in generic units of QNT or Quant. Quantities of assets are stored internally as integers in units of QNT, and assets are priced at priceNQTper(Share, Coin, Unit, etc.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
For example, an ABTC (it represents Bitcoin) asset is divisible to eight decimal places, like the original bitcoin (BTC). Therefore a QNT of ABTC is equivalent to a Satoshi (10&amp;lt;sup&amp;gt;-8&amp;lt;/sup&amp;gt; BTC). To place an order to sell 25,000,000 QNT of the ABTC asset at a price of 20,000 priceNQTperShare, use the API Call [[Asset_Exchange#Place_Order|Place Order]] with &#039;&#039;requestType&#039;&#039;=&#039;&#039;placeAskOrder&#039;&#039;, &#039;&#039;quantityQNT&#039;&#039;=25000000 and &#039;&#039;priceNQTPerShare&#039;&#039;=20000 in the chain Ignis. If the entire quantity is sold on the Asset Exchange, the seller will receive 500,000,000,000 NQT (&#039;&#039;quantityQNT&#039;&#039; * &#039;&#039;priceNQT&#039;&#039;) from the buyer(s). This trade corresponds to selling 0.25 ABTC for 5,000 IGNIS, which is how the trade appears in the [[Ardor_client_interface|NRS client]]. In this case, the price of 20,000 in priceNQTperShare is also the price in Ignis per ABTC, since both ABTC and Ignis are divisible to eight decimal places.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Currencies in the Ardor [[Monetary_System#Monetary_System_Operations|Monetary System]] are a special kind of asset with properties and exchange methods suitable for currencies. Concerning quantities, exchange rates, and decimal places, the Monetary System API calls use amountNQT, QNT, and priceNQTPer(Share, Coin, Unit, etc.) in the same way as assets.&lt;br /&gt;
&lt;br /&gt;
===Creating Unsigned Transactions=== &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
All API requests that create a new transaction will accept either a &#039;&#039;secretPhrase&#039;&#039; or a &#039;&#039;publicKey&#039;&#039; parameter:&lt;br /&gt;
*If &#039;&#039;secretPhrase&#039;&#039; is supplied, a transaction is created, signed at the server, and broadcast by the server as usual.&lt;br /&gt;
*If only a &#039;&#039;publicKey&#039;&#039; parameter is supplied as a 64-digit (32-byte) hex string, the transaction will be prepared by the server and returned in the JSON response as &#039;&#039;transactionJSON&#039;&#039; without a signature. This JSON object along with &#039;&#039;secretPhrase&#039;&#039; can then be supplied to [[Transactions#Sign_Transaction|Sign Transaction]] as &#039;&#039;unsignedTransactionJSON&#039;&#039; and the resulting signed &#039;&#039;transactionJSON&#039;&#039; can then be supplied to [[Transactions#Broadcast_Transaction|Broadcast Transaction]]. This sequence allows for offline signing of transactions so that &#039;&#039;secretPhrase&#039;&#039; never needs to be exposed.&lt;br /&gt;
*&#039;&#039;unsignedTransactionBytes&#039;&#039; may be used instead of unsigned &#039;&#039;transactionJSON&#039;&#039; when there is no encrypted message. Messages to be encrypted require the &#039;&#039;secretPhrase&#039;&#039; for encryption and so cannot be included in &#039;&#039;unsignedTransactionBytes&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Escrow Operations=== &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
All API requests that create a new transaction will accept an optional &#039;&#039;referencedTransactionFullHash&#039;&#039; parameter which creates a chained transaction, meaning that the new transaction cannot be confirmed unless the referenced transaction is also confirmed. This feature allows a simple way of transaction escrow:&lt;br /&gt;
*Alice prepares and signs a transaction A, but doesn&#039;t broadcast it by setting the &#039;&#039;broadcast&#039;&#039; parameter to &#039;&#039;false&#039;&#039;. She sends to Bob the &#039;&#039;unsignedTransactionBytes&#039;&#039;, the &#039;&#039;fullHash&#039;&#039; of the transaction, and the &#039;&#039;signatureHash&#039;&#039;. All of those are included in the JSON returned by the API request. (Warning: make sure not to send the signed &#039;&#039;transactionBytes&#039;&#039;, or the &#039;&#039;signature&#039;&#039; itself, as then Bob can just broadcast transaction A himself).&lt;br /&gt;
*Bob prepares, signs, and broadcasts transaction B, setting the &#039;&#039;referencedTransactionFullHash&#039;&#039; parameter to the &#039;&#039;fullHash&#039;&#039; of A provided by Alice. He can verify that this hash indeed belongs to the transaction he expects from Alice, by using [[Transactions#Calculate_Full_Hash|Calculate Full Hash]], which takes &#039;&#039;unsignedTransactionBytes&#039;&#039; and &#039;&#039;signatureHash&#039;&#039; (both of which Alice has also sent to Bob). He can also use [[Transactions#Parse_Transaction|Parse Transaction]] to decode the unsigned bytes and inspect all transaction fields.&lt;br /&gt;
*Transaction B is accepted in the unconfirmed transaction pool, but as long as A is still missing, B will not be confirmed, i.e. will not be included in the blockchain. If A is never submitted, B will eventually expire -- so Bob should make sure to set a long enough deadline, such as the maximum of 32767 minutes.&lt;br /&gt;
*Once in the unconfirmed transactions pool, Bob has no way of recalling B back. So now Alice can safely submit her transaction A, by just broadcasting the &#039;&#039;signedTransactionBytes&#039;&#039; she got in the first step. Transaction A will get included in the blockchain first, and in the next block, Bob&#039;s transaction B will also be included.&lt;br /&gt;
Note that while the above scheme is good enough for a simple escrow, the blockchain does not enforce that if A is included, B will also be included. It may happen due to forks and blockchain reorganization, that B never gets a chance to be included and expires unconfirmed, while A remains in the blockchain. However, it is not practically possible for Bob to intentionally cause such chain of events and to prevent B from being confirmed.&lt;br /&gt;
&lt;br /&gt;
===Prunable Data=== &amp;lt;!--T:27--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
Prunable data can be removed from the blockchain without affecting the integrity of the blockchain. When a transaction containing prunable data is created, only the 32-byte sha256 hash of the prunable data is included in the &#039;&#039;transactionBytes&#039;&#039;, not the prunable data itself. The non-prunable signed &#039;&#039;transactionBytes&#039;&#039; are used to verify the signature and to generate the transaction&#039;s &#039;&#039;fullHash&#039;&#039; and ID; when the prunable part of the transaction is removed at a later time, none of these operations are affected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
Prunable data has a predetermined minimum lifetime of two weeks (24 hours on the [[Testnet]]) from the timestamp of the transaction. Transactions and blocks received from peer nodes are not accepted if prunable data is missing before this time has elapsed. After this time has elapsed, prunable data is no longer included with transactions and blocks transmitted to peer nodes, and is no longer included in the transaction JSON returned by general-purpose API calls such as Get Transaction; the only way to retrieve it, if still available, is through special-purpose API calls such as Get Prunable Message.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
Expired prunable data remains stored in the blockchain until removed at the same time derived tables are trimmed, which occurs automatically every 1000 blocks by default. Use [[Debug#Trim_Derived_Tables|Trim Derived Tables]] to remove expired prunable data immediately.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
Prunable data can be preserved on a node beyond the predetermined minimum lifetime by setting the &#039;&#039;nxt.maxPrunableLifetime&#039;&#039; property to a larger value than two weeks or to &#039;&#039;-1&#039;&#039; to preserve it indefinitely. To force the node to include such preserved prunable data when transactions and blocks are transmitted to peer nodes, set the &#039;&#039;nxt.includeExpiredPrunables&#039;&#039; property to &#039;&#039;true&#039;&#039;, thus making it an archival node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Currently, there are two varieties of prunable data in the Nxt system: prunable [[Messages#Arbitrary_Message_System_Operations|Arbitrary Messages]] and [[Tagged_Data#Tagged_Data_Operations|Tagged Data]]. Both varieties have a maximum prunable data length of 42 kilobytes.&lt;br /&gt;
&lt;br /&gt;
===Properties Files=== &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
The behavior of some API calls is affected by property settings loaded from files in the &#039;&#039;ardor/conf&#039;&#039; directory during Ardor server initialization. This directory contains the &#039;&#039;nxt-default.properties&#039;&#039; and &#039;&#039;logging-default.properties&#039;&#039; files, both of which contain default property settings along with documentation. A few of the property settings can be obtained while the server is running through the [[Server_info#Get_Blockchain_Status|Get Blockchain Status]] and [[Server_info#Get_State|Get State]] calls.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
It is recommended not to modify default properties files because they can be overwritten during software updates. Instead, properties in the default files can be overridden by including them in optional &#039;&#039;nxt.properties&#039;&#039; and &#039;&#039;logging.properties&#039;&#039; files in the same directory. For example, a &#039;&#039;nxt.properties&#039;&#039; file can be created with the contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
nxt.isTestnet=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
This causes the Ardor server to connect to the [[Testnet]] instead of the Mainnet.&lt;br /&gt;
&lt;br /&gt;
===Admin Password=== &amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
The admin password protects the node from malicious external access. It is not related to your passphrase or seed, your account id nor your public key.&lt;br /&gt;
Some API functions take an adminPassword parameter, which must match the nxt.adminPassword property unless the nxt.disableAdminPassword property is set to true or the API server only listens on the localhost interface (when the nxt.apiServerHost property is set to 127.0.0.1).&lt;br /&gt;
&lt;br /&gt;
====How to setup the Admin Password====&lt;br /&gt;
The setup is done in the node &amp;lt;code&amp;gt;nxt.properties&amp;lt;/code&amp;gt; [[Faq#Node_configuration_using_the_nxt.properties|configuration file]]:&lt;br /&gt;
# Password that should be provided when executing protected (administrative) API requests.&lt;br /&gt;
# Please choose a decent password here. Preferably, use a password generator.&lt;br /&gt;
# Password protection is disabled and password is not needed when the API server only listens on the localhost interface, i.e. when &amp;lt;code&amp;gt;nxt.apiServerHost=127.0.0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
# Add the &amp;lt;code&amp;gt;nxt.adminPassword=&amp;lt;type here the password&amp;gt;&amp;lt;/code&amp;gt; entry&lt;br /&gt;
# Restart the node&lt;br /&gt;
&lt;br /&gt;
The same value specified in nxt.adminPassword should be passed when calling any API which accepts adminPassword as parameter. When loading the wallet from a remote node enter this value in the account settings page &amp;quot;Administrator Password&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
==== Operations that require Admin Password ==== &amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
The admin password is required for the following operations (partial list) &lt;br /&gt;
# For any query API such as getBlockchainTransactions to return more than 100 records &lt;br /&gt;
# Get and stop APIs for forging, bundling, funding monitor, and shuffler &lt;br /&gt;
# Access to the /dbshell page to execute SQL queries &lt;br /&gt;
# Various administrative APIs: All [[Debug#Debug_Operations|Debug Operations]] require adminPassword since they require some kind of privilege. On some functions, adminPassword is used to override the maximum allowed value for the lastIndex parameter, which is set to 100 by default by the nxt.maxAPIRecords property. Giving you the option to retrieve more than objects per request.&lt;br /&gt;
&lt;br /&gt;
==== Admin Password API responses ====&lt;br /&gt;
API response errors and their meaning, as follows:&lt;br /&gt;
* &amp;quot;Administrator&#039;s password is not configured. Please set nxt.adminPassword&amp;quot; - you need to configure the admin password on the remote node. &lt;br /&gt;
* &amp;quot;adminPassword not specified&amp;quot; - password is configured on the remote node but is not specified by the API call &lt;br /&gt;
* &amp;quot;Incorrect adminPassword (the specified password does not match nxt.adminPassword)&amp;quot; - the password specified did not match the remote node password &lt;br /&gt;
* &amp;quot;Too many incorrect admin password attempts from ...&amp;quot; - you specified too many incorrect password attempts&lt;br /&gt;
&lt;br /&gt;
===Roaming and Light Client Modes=== &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
The remote node to use when in roaming and light client modes is selected randomly, but can be changed manually in the UI, or using the new [[Networking#Set_API_Proxy_Peer|set API Proxy Peer]] API, or forced to a specific peer using the &#039;&#039;nxt.forceAPIProxyServerURL&#039;&#039; property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
Remote nodes can be blacklisted from the UI, or using the [[Networking#Blacklist_API_Proxy_Peer|Blacklist API Proxy Peer]] API. This blacklisting is independent of peer blacklisting. The API proxy blacklisting period can be set using the &#039;&#039;nxt.apiProxyBlacklistingPeriod&#039;&#039; property (default 1800000 milliseconds).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
API requests that require sending the secret phrase, shared key, or admin password to the server, for features like forging, shuffling, or running a funding monitor, are disabled when in roaming or light client mode.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Features&amp;diff=12832</id>
		<title>Features</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Features&amp;diff=12832"/>
		<updated>2021-04-15T16:54:02Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Ardor features&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, features&lt;br /&gt;
|description=Functionality of the Ardor platform&lt;br /&gt;
}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Current features of Ardor, as of version {{NRSVersion}}, include:&lt;br /&gt;
&lt;br /&gt;
==Account control== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
With Account control, any account can be restricted to only issuing [[#Phasing|phased transactions]] subject to a specific voting model. This enables interesting use cases like:&lt;br /&gt;
* [https://nxtwiki.org/wiki/Account_Control_NXT Multi-signature], so that more than one key is required to authorize a transaction.&lt;br /&gt;
* Tagging, so that an account tagged as e.g. &amp;quot;savings&amp;quot; cannot, for example, send tokens.&lt;br /&gt;
* Escrow, so that a locked account cannot transfer assets, aliases, etc. except when some specific circumstances are met.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
[[Account control| Learn more about Account control]].&lt;br /&gt;
&lt;br /&gt;
== Account leasing== &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Account leasing allows users to [[Account_Leasing|lease]] their forging power to another account for a fixed period of time. This enables the creation of &#039;&#039;forging pools&#039;&#039;, where the forging power of multiple users is combined to increase the chance of generating a block. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Account leasing is also relevant if a user wants to take part in the forging process without having to keep a node running 24/7.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
[[Account Leasing| Learn more about Account leasing]].&lt;br /&gt;
&lt;br /&gt;
== Account monitor == &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
An Account monitor is a component that automatically transfers [[Bundling#Description|child chain]] tokens (eg: IGNIS), ASSET, or CURRENCY from a funding account to recipient accounts when the amount held by the recipient accounts drops below a set threshold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
[[Account Monitor| Learn more about the Account monitor]].&lt;br /&gt;
&lt;br /&gt;
== Account properties == &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Account properties enable Ardor users to permanently &#039;&#039;tag&#039;&#039; an Ardor account with a small amount of data. These properties can then be used to provide meta-information about an account and can be linked to [[phasing]] by property conditions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
[[Account Properties| Learn more about Account properties]].&lt;br /&gt;
&lt;br /&gt;
== Alias system == &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Ardor implements an alias system that translates alphanumeric text into almost anything: Ardor account addresses, email addresses, URLs, phone numbers, SKU codes, and more. The [[Alias system]] not only gives Ardor the ability to function as a Decentralized DNS system but also adds additional possibilities for mapping short names to other entities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
[[Alias system| Learn more about the Alias system]].&lt;br /&gt;
&lt;br /&gt;
== Arbitrary messages == &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Arbitrary messages allow Ardor users to send small amounts of data through the decentralized network.  This data can be optionally encrypted. The term &amp;quot;message&amp;quot; is loose: this feature can be used to send simple text messages, but can also be used to send up to 1000 bytes of any data.  As a result, it can be used to build file-sharing services, decentralized applications, and higher-level Ardor services.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
[[Arbitrary messages| Learn more about Arbitrary messages]].&lt;br /&gt;
&lt;br /&gt;
== Asset control == &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
The Asset Control feature allows restricting all transactions involving a given asset - such as placing a bid and ask orders, transfers, share deletions and dividend payments that use the asset as a dividend to be subject to approval&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
[[Asset_control| Learn more about Asset control]].&lt;br /&gt;
&lt;br /&gt;
== Asset exchange == &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Ardor&#039;s Asset exchange provides a decentralized, peer-to-peer exchange system based on the &amp;quot;[https://bitcoil.co.il/BitcoinX.pdf|colored coins]&amp;quot; concept that eliminates trust points and their associated fees.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Up until now, if you wanted to trade cryptocurrencies and other digital assets, you had to sign up for an account on a centralized platform such as Cryptsy/BTC-E/Bter/etc, transfer your assets to them, and pay them the transaction fees.  This brings in a large concern: a centralized exchange could just bail with everyone&#039;s deposits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
The same technology used to trade Ardor for other child chain tokens can allow you to trade any token within the Ardor multichain platform for almost any commodity.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
[[Asset exchange| Learn more about the Asset exchange]].&lt;br /&gt;
&lt;br /&gt;
== Asset Properties == &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
Asset properties allow attaching metadata to assets, in the form of name/value pairs. Anyone can set a property on an asset. Only the asset issuer, or the setter of the property, can delete a property. The setter of a property can edit it by setting a new property with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
[[Asset Properties| Learn more about Asset properties]].&lt;br /&gt;
&lt;br /&gt;
== Bundling == &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
[[Bundling]] is the process of grouping transactions from a child chain into a transaction on the Ardor chain. Bundlers accept fees from those child chain transactions in the corresponding child chain coin and pay fees in ARDR to the parent chain forgers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
[[Bundling| Learn more about Bundling]].&lt;br /&gt;
&lt;br /&gt;
== Changelly integration == &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Changelly is a market-making service that utilizes crypto exchanges to provide a seamless exchange of crypto tokens without user registration.&lt;br /&gt;
Starting from Ardor version 2.1.2 the Ardor wallet integrates the changelly service to enable Ardor and Ignis to exchange with any other crypto directly from the wallet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
[[Changelly Integration| Learn more about Changelly integration]].&lt;br /&gt;
&lt;br /&gt;
== Child Chain Control == &amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
The [[Child Chain Control]] is a feature that introduces permissioning to the Ardor multichain platform. It manages authorization levels of users on child chains. When operating on a chain that has permissioning policy enabled users can be restricted from performing chain transactions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
[[Child Chain Control| Learn more about the Child Chain Control]].&lt;br /&gt;
&lt;br /&gt;
== Coin exchange == &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
The [[Coin exchange]] is an Ardor feature that allows users to trade child chain tokens on the blockchain using [[Coin exchange#Coin_Exchange_menu|buy and sell orders]] and a built-in matching engine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
[[Coin exchange| Learn more about the Coin exchange]].&lt;br /&gt;
&lt;br /&gt;
== Coin shuffling == &amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
Coin shuffling is a privacy feature that enables users to mix their funds with that of others.&lt;br /&gt;
The process is quick and efficient and works by creating a random mapping between the existing user accounts and different, new recipient accounts also provided by the users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
[[Coin Shuffling| Learn more about Coin shuffling]].&lt;br /&gt;
&lt;br /&gt;
== Composite phasing == &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
Composite phasing (or &amp;quot;&#039;&#039;Smart Phasing&#039;&#039;&amp;quot;) is a powerful new feature that allows joining the current primitive approval models (such as [[Phasing (f)#Whitelisted_Approval_Requests|by whitelist]], [[Phasing (f)#Vote_By_Asset_Balance|by asset balance]], [[Phasing (f)#By_Secret|by secret]], etc) using the AND, OR, and NOT operators.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
As simple as it sounds, defining new approval models in terms of boolean expressions provides an incredible amount of flexibility to our transaction workflow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
[[Composite phasing| Learn more about Composite phasing]].&lt;br /&gt;
&lt;br /&gt;
== Data cloud == &amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The Ardor Data Cloud is a decentralized data storage system. It is a feature that is reserved for the Ardor child chains&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
In addition to keeping a record of Ardor transactions, the blockchain can also be used to store user-defined data. All forms of data can be uploaded to the Ardor blockchain, providing a secure (and, if desired, permanent) method of storing, retrieving and publishing information&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
[[Data_Cloud| Learn more about Data cloud]].&lt;br /&gt;
&lt;br /&gt;
== Forging == &amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
In Ardor the process of block generation is called forging. Every Ardor node is involved in this providing the associated wallet has at least 1.000 ARDR and stays open no less than 24 hours (1440 blocks)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
[[Forging_(f)| Learn more about Forging]]&lt;br /&gt;
&lt;br /&gt;
== Graphical installer == &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
The graphical installer provides a simple and user-friendly setup of the Ardor client software for the [[Getting_started#Client_Installation|supported operating systems]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
[[Graphical Installer| Learn more about the Graphical installer]].&lt;br /&gt;
&lt;br /&gt;
== Lightweight contracts == &amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
Lightweight contracts is a powerful new framework to develop a layer of automation on top of the existing Ardor APIs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Contracts are developed by implementing pre-defined interfaces. The contract code is deployed to the blockchain as a cloud data transaction that stores the code itself and a contract reference transaction which provides the trigger to activate the contract and provides the setup parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
[[Lightweight Contracts| Learn more about Lightweight contracts]].&lt;br /&gt;
&lt;br /&gt;
== Marketplace == &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
The Marketplace feature provides a protocol for building decentralized, peer-to-peer stores for any kind of digital goods.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
[[Marketplace| Learn more about the Marketplace]].&lt;br /&gt;
&lt;br /&gt;
== Monetary system == &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
The monetary system enables any user to issue customizable currencies secured by the Ardor network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
[[Monetary system| Learn more about Ardor&#039;s Monetary system]].&lt;br /&gt;
&lt;br /&gt;
== Phasing == &amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
Phasing allows transactions with deferred execution, with or without conditions, which form the basis of many use cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
[[Phasing (f) | Learn more about Phasing]].&lt;br /&gt;
&lt;br /&gt;
== Plugins == &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
The plugin framework allows third-party software developers to add new functionality and embed it directly into the [[Ardor_client_interface|Ardor client interface]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
[[Plugins | Learn more about Plugins]].&lt;br /&gt;
&lt;br /&gt;
== Transaction Vouchers == &amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Transaction Vouchers are a feature that simplifies and reduces the possible errors when two addresses make a transaction with each other on the blockchain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
[[Transaction Vouchers| Learn more about Transaction Vouchers]]&lt;br /&gt;
&lt;br /&gt;
== Voting System == &amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
The secure, encrypted, consensus-based nature of the Ardor network allows the implementation of a voting system that guarantees anonymity and security, without relying on a central authority to tally the votes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
[[Voting system | Learn more about the Voting System]].&lt;br /&gt;
&lt;br /&gt;
== Secret Sharing == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
Protect your account passphrase by splitting it into multiple shares that only some of them are required to reconstruct the passphrase. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
[[Secret_Sharing| Learn more about secret sharing]].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Introductory_tour_of_ardors_features&amp;diff=12829</id>
		<title>Introductory tour of ardors features</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Introductory_tour_of_ardors_features&amp;diff=12829"/>
		<updated>2021-04-15T16:50:18Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Introductory tour of ardors features&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, tutorials, basic tutorials, how to, ardors features, introduction&lt;br /&gt;
|description=This guide provides an introductory tour of the live features available on the Ardor “parent chain” mainnet as of August 2018&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Basic_tutorials]]&lt;br /&gt;
__TOC__&lt;br /&gt;
This guide provides an introductory tour of the live features available on the Ardor “parent chain” mainnet as of August 2018. The information presented here represents a modified version of the information in the 11-minute long video [[Basic_tutorials#Ardor_and_Ignis_features|Blockchain Ardor: Demo and Tour of Ardor and Ignis Features]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
If you would like to participate in this guide in real-time, you will need to download the Ardor Client from the Jelurida website. An article explaining the download process is available [[How_to_download_the_ardor_client_wallet|here]].&lt;br /&gt;
&lt;br /&gt;
==Ardor Feature Tour== &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Open your Ardor desktop client and log in to the Ardor chain.&lt;br /&gt;
&lt;br /&gt;
===Verify Your Public Address — First Time Users=== &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
If this is your first time accessing your Ardor account through the client wallet, you will likely see 8 blue boxes on the Dashboard and a message across the top to validate a public key (pictured below).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
[[File:1_dwRseq0sAaTxYCJrd6B2ow.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
Normally, you should only see 2 blue boxes on the Ardor dashboard — but you must complete the validation of the public key first. You should click the orange button in the message bar, enter your secret passphrase, and then copy the newly displayed public key. Once you are ready to make your first transfer of funds to your Ardor wallet, you must include the public key in that first transaction. This will literally change the interface you see in the client.&lt;br /&gt;
&lt;br /&gt;
===Ardor Dashboard=== &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Now that your account is verified, there are 2 blue boxes on the Ardor Dashboard — your account balance and the most recent block information. Your recent transactions on the Ardor chain are listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
[[File:1_zHXKUKk1ea0hriY-rsVoPw.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Looking at the very top of the screen, you see the button to Send ARDR (indicated in red below) — this is how you would begin a new transaction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
[[File:1_jutT4wUm42n749EO3u8HMg.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
The circular symbol (indicated in orange above) is a shortcut to your Unconfirmed Transactions. Notifications are represented by numbers displayed in the blue and gray circles (indicated in yellow above). The symbol of a person is a contact book, the gears are a shortcut to your settings, the question mark takes you to guidance documentation, the tree chart takes you to the web wallet, and the power button logs you out.&lt;br /&gt;
&lt;br /&gt;
===Navigating Between Child Chains=== &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
The current account’s public address is located in the upper left corner (red). Beneath that, you see the current Ardor balance (orange), and the blockchain we are currently on (yellow).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
[[File:1_DqCWNyaSi_DxLYfZqkRLBA.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Remember, child chains are their own blockchains, they are simply secured by Ardor. So, if you want to use the functions of a child chain or see balances on a child chain, you must navigate to the specific chain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
[[File:1_dpY_Hf80qvtOGcxXvy7Vqw.png|center|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
For example, we see in the photo below that Ignis has far more functions built-in, and there are multiple balances on the Dashboard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
[[File:1_jgJ9SN3JpFfAHhW_1ZC4Cw.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
If you are interested in learning about issuing assets, new monetary supplies, marketplaces, messaging, cloud storage, and other functionalities — you should check out the article on the features of Ignis, available [[Ignis_child_chains_features|here]].&lt;br /&gt;
&lt;br /&gt;
===Search Box=== &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Let’s navigate back to the Ardor chain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
[[File:1_qBP_eZ9MTMqNj7es3yoV6A.png|center|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
The next box allows you to search for specific accounts, transactions, or assets on the blockchain.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
[[File:1_j0CuRsa2vNtAc6rdK7EYcQ.png|center|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Understanding Your Two Ardor Balances=== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
Let’s focus on the main dashboard for another minute. Click on the “more info” button under Account Balance and let’s discuss some key terms.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
[[File:1_TaB1-hCcHITGv8O9izGfiQ.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
Your Ardor coins have two “values.” There is the actual coin itself, and the power of the coin to secure the network through Forging.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
[[File:1_S_0AtCURDS1y4VXDEp-4KA.png|center|border|440px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Actual Value (green in the image above)==== &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
That first value of the coin, the coin itself, is represented by the first 3 balances: Balance, Available Balance, Guaranteed Balance. The only difference between these 3 is the Guaranteed Balance updates every 1440 blocks or approximately every 24 hours.&lt;br /&gt;
&lt;br /&gt;
====Forging Power (blue in the image above)==== &amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
Now, the second value of your Ardor coins, the securing power of the coins, is represented by Effective Balance and Forged Balance. Both require 1440 blocks to update.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
The important thing to understand is that the actual value of your coins (Available Balance) represents your current spending power at a given moment. Your Effective Balance can be 0 for a variety of reasons, such as leasing your balance to a forging pool, but you always retain your spending power based on Available Balance. If you are interested in learning how to begin forging or leasing your balance, refer to [[Forging_and_leasing|Begin forging and leasing]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Decentralized Coin Exchange=== &amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
[[File:1_sgdCuILIE3rRq5f0DADOXg.png|center|border|640px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
Here, you can begin trading between Ardor and its [https://www.jelurida.com/ardor/child-chains child chains].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
An important note about Ardor is the fact that all of its child chains are interoperable — meaning, you can trade directly from one to the other without needing to convert to Ardor or any other intermediary token.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
Another point here — when you are on the Ardor chain and you enter the coin exchange, you can buy Ignis using Ardor. But, if you want to do the reverse transaction and you want to buy Ardor using Ignis, then you must initiate that trade from the Ignis Child Chain’s coin exchange.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
Moving on, you can review your open orders and exchange history in the left side menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Continuing with learning the basic features on Ignis== &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
During this guide, we have only just begun to scrape the surface of what Ardor can do. For those of you looking to keep it simple, [[Ignis_child_chains_features|continue learning about the basic features available on Ardor’s first child chain, Ignis]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
You also have the option of learning more about the revolutionary features of Ardor, such as Transaction Vouchers, which make it easy to send dual signature invoices and share distributions on the blockchain. They also make it possible to create counterfeit-proof “deposit” and “withdrawal” vouchers, [[Tutorial on transaction vouchers|Learn more]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
Turing-complete lightweight contracts represent the next generation in smart contract technology and it’s a feature exclusive to the Ardor ecosystem. Written guidance on lightweight contracts [[Lightweight_Contracts|is available here]] and you can refer to several articles describing the functionality [https://medium.com/@lyaffe/lightweight-contracts-articles-49c3032a50da]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=File:More_nodes5.jpg&amp;diff=12804</id>
		<title>File:More nodes5.jpg</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=File:More_nodes5.jpg&amp;diff=12804"/>
		<updated>2021-04-14T09:32:22Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_5.jpg&amp;diff=12799</id>
		<title>File:Initialize repository 5.jpg</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_5.jpg&amp;diff=12799"/>
		<updated>2021-04-13T16:47:45Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_10.jpg&amp;diff=12798</id>
		<title>File:Initialize repository 10.jpg</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_10.jpg&amp;diff=12798"/>
		<updated>2021-04-13T16:39:40Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_9.jpg&amp;diff=12797</id>
		<title>File:Initialize repository 9.jpg</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_9.jpg&amp;diff=12797"/>
		<updated>2021-04-13T16:39:32Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_8.jpg&amp;diff=12796</id>
		<title>File:Initialize repository 8.jpg</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_8.jpg&amp;diff=12796"/>
		<updated>2021-04-13T16:39:15Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_7.jpg&amp;diff=12795</id>
		<title>File:Initialize repository 7.jpg</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_7.jpg&amp;diff=12795"/>
		<updated>2021-04-13T16:39:09Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_6.jpg&amp;diff=12794</id>
		<title>File:Initialize repository 6.jpg</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_6.jpg&amp;diff=12794"/>
		<updated>2021-04-13T16:39:00Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_4.jpg&amp;diff=12792</id>
		<title>File:Initialize repository 4.jpg</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_4.jpg&amp;diff=12792"/>
		<updated>2021-04-13T16:38:46Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_3.jpg&amp;diff=12791</id>
		<title>File:Initialize repository 3.jpg</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_3.jpg&amp;diff=12791"/>
		<updated>2021-04-13T16:38:37Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_2.jpg&amp;diff=12790</id>
		<title>File:Initialize repository 2.jpg</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_2.jpg&amp;diff=12790"/>
		<updated>2021-04-13T16:38:27Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_1.jpg&amp;diff=12789</id>
		<title>File:Initialize repository 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=File:Initialize_repository_1.jpg&amp;diff=12789"/>
		<updated>2021-04-13T16:38:17Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Faq&amp;diff=12787</id>
		<title>Faq</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Faq&amp;diff=12787"/>
		<updated>2021-03-31T12:41:00Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Ardor Frequently Asked Questions &lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=What is Ardor, What is Jelurida, Where do I get started, What is my public key, How to announce my public key, Install Ardor on Windows 7 32 bit, Where to find the node log file, Exchange IGNIS to ARDR, transaction returns &amp;quot;not enough funds&amp;quot;, Ardor block rewards, What is the testnet, How to verify authenticity of Ardor installations, Dealing with Passphrase Problems, User directories per product and platform, What is my Ardor account address?, It is impossible to reset your passphrase, Changelly issues, Why do I sometimes see 0 balance (Light Client mode), Exchange deposit problems, Exchange Withdrawal Problems, What is Forging?, Cannot submit transactions while using light client in Ardor, How to download a copy of the blockchain, Ardor Scaling Parameters and Constants, What wallet/client should I use?, How to check your IGNIS balance, Is there a mobile wallet?, How do I get ARDOR/IGNIS?, Node configuration using the nxt.properties,What is the admin password?, What is the roadmap of Ardor?, Where can I find more detailed information about Ardor and its features?, Where do I find news about Ardor?, Where do I find information about the API?, What features does Ardor have, How many nodes are up for Ardor?, Where is the source code?, Does Ardor have a testnet?, How do I access my Ardor account on the Ardor client/wallet?, Why am I getting a Java error when I try to start the software?, Why cannot I open the client in a web browser?, Why doesn&#039;t my blockchain finish loading?, Does Jelurida still maintain Nxt?, How can I buy IGNIS?&lt;br /&gt;
|description=Answers to the most frequent questions with regards with Ardor, Nxt and Ignis&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Basic_tutorials]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== What is Ardor? === &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Ardor is an evolution of the Nxt software that addresses issues of blockchain bloat, scalability, and versatility. Its turn-key functionality allows new blockchain applications to be built and launched without the need for extensive custom code or architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is Jelurida? === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Jelurida BV is the name of the company that owns the Nxt and Ardor blockchain platforms. It was created in 2016 and provides blockchain-as-a-service solutions to other companies and organizations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Where do I get started? === &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Please, see [[Getting started]] on this wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is my public key === &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Our public key is not your passphrase&lt;br /&gt;
Your public key is not your account&lt;br /&gt;
In most cases, you don&#039;t need to worry about your public key at all.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
However, for a new account which never made any outgoing transactions, you can find the public key when you login using your passphrase (not using your account id)&lt;br /&gt;
It will be displayed on the dashboard as a 64 characters long stream of hexadecimal characters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
[[File:faq.public.key.png|none|border|820px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to announce my public key === &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
When sending ARDR, child chain tokens such as IGNIS or any other token to a new account using the new account&#039;s address the resulting account is protected only by 64 bit account id, which is somewhat not as secured as the 256 public key which provides ultimate protection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The risk is that someone can brute force a passphrase that maps into the same account id so that both accounts are indistinguishable so that the attacker can spend the funds in this address.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
More specifically, the reason why this one-time extra step is necessary is because the 8-byte account ID is much shorter than the 32-byte public key it is derived from. There are many secret passphrase/public key pairs that reduce to the same account ID (2^192 keys). But once a particular public key is associated with an account ID by storing it in the blockchain, no other secret passphrase that generates a different public key can access that account.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
To protect against this a simple step has to be taken to record the account public key in the blockchain. Recording the public key in the blockchain protects against the attack described above. The options to announce a public key is as follows:&lt;br /&gt;
&lt;br /&gt;
==== Option 1: Submit an outgoing transaction from the new account ==== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
Any type of outgoing transaction will do since the user is signing this transaction with his passphrase and by doing so records the public key in the blockchain. This transaction can for example be sending ARDR, IGNIS, sending a message, creating an alias, and so on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Note: your account must contain enough tokens (either ARDR or child chain tokens such as IGNIS) to pay the transaction fee, so you have to fund it with some tokens first.&lt;br /&gt;
&lt;br /&gt;
==== Option 2: Another account can announce the public key of the new account to the blockchain ==== &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Any type of transaction in which the recipient is the new account will do. The sender needs to specify the new account public key as the &amp;quot;recipientPublicKey&amp;quot; parameter for the transaction API or using the wallet &amp;quot;Recipient Public Key&amp;quot; field. Most exchanges which support ARDR or Ardor child chain tokens, already supports this public key announcement function. This procedure is also suitable for companies that want to announce the public keys of their user accounts, hence the blockchain integration in the current business processes is smoother and seamless.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
[[File:faq.public.key.announcement.png|none|border|620px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
To find your account public key, simply login to your account using your passphrase (not using your Ardor address). If the account is not registered on the blockchain yet, the public key will be displayed on the dashboard.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
For registered accounts, you can find the public key by clicking on the &amp;quot;Account Balance&amp;quot; tile from the dashboard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Install Ardor on Windows 7 32 bit === &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Install Oracle Java 8 32 bit &lt;br /&gt;
From the command line, in folder &amp;quot;c:\program files\ardor&amp;quot; or the previously folder selected during the installation run the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;java -cp classes;lib\*;conf;addons\classes;addons\lib\* -Dnxt.runtime.mode=desktop nxt.Nxt&amp;lt;/pre&amp;gt;&lt;br /&gt;
For instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;C:\Program Files (x86)\Java\jre1.8.0_172\bin\java.exe&amp;quot; -cp classes;lib\*;conf;addons\classes;addons\lib\* -Dnxt.runtime.mode=desktop nxt.Nxt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Where to find the node log file? === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
ardor.log is our main diagnostic resource for diagnosing node related problems such as startup issues, blockchain download and contract execution.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
To locate this file, first find your [[faq#User directories per product and platform|Ardor user directory]]. The log files are located in the logs subdirectory where you will find the ardor.log file. There are multiple revisions of this file named ardor.0.log, ..., ardor.9.log. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
In most cases, ardor.0.log represents the existing node log file.&lt;br /&gt;
&lt;br /&gt;
=== Exchange IGNIS to ARDR transaction returns &amp;quot;not enough funds&amp;quot; === &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
Coin exchange transactions from any child chain to the Ardor parent chain are recorded on the parent chain since it affect the ARDR balances and therefore pay fee in ARDR.&lt;br /&gt;
Therefore exchanging IGNIS to ARDR using the coin exchange is impossible unless you already have ARDR to pay for the transaction fee.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
As a temporary solution to enable users to exchange child chain coins to Ardor even if they do not already own ARDR, Jelurida has deployed the ChildToParentExchange lightweight contract at the account ARDOR-FGET-YXM3-USHQ-2SPC9 (alias: @IgnisToArdor).&lt;br /&gt;
&lt;br /&gt;
The steps to trigger the contract are as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1:&#039;&#039;&#039; Launch the [[Ardor_client_interface|Ardor User Interface]], select the IGNIS chain and click on the button &#039;Send IGNIS&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2:&#039;&#039;&#039; The sent IGNIS amount must be high enough to pay the 1 ARDR transaction fee required by the ARDR funding transaction to be submitted by the contract according to the calculated IGNIS/ARDR exchange rate, i.e. if the rate is 2:1 send more than 2 IGNIS, the contract will automatically send back ARDR based on the market rate. Enter as a recipient the values ARDOR-FGET-YXM3-USHQ-2SPC9 or the alias @IgnisToArdor:&lt;br /&gt;
&lt;br /&gt;
 [[file:IgnisToArdor_contract_1b.png|class=img-responsive|border|center|420px|@IgnisToArdor]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3:&#039;&#039;&#039; The Contract Reference selector box is now populated, select the contract &#039;ChildToParentExchange&#039; as shown in the image above. Click on the &#039;Add a message&#039; box, add either to encrypt the message or not, calculate the fee and send the transaction.&lt;br /&gt;
&lt;br /&gt;
 [[file:IgnisToArdor_contract_1c.png|class=img-responsive|border|center|420px|@IgnisToArdor]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4:&#039;&#039;&#039; Once the transaction is confirmed, switch to the parent chain Ardor:&lt;br /&gt;
&lt;br /&gt;
 [[file:IgnisToArdor_contract_3.png|class=img-responsive|center|border|300px|Switching to Ardor]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5:&#039;&#039;&#039; In the Section &#039;Recent Transactions&#039; it will be shown the transaction from the @IgnisToArdor account to your account:&lt;br /&gt;
&lt;br /&gt;
 [[file:IgnisToArdor_contract_4.png|class=img-responsive|center|750px|@IgnisToArdor Transaction back]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ardor block rewards === &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
When forging a block in Ardor all transaction fees from the included transactions are rewarded to the forger account except block rewards from transactions of type Child Chain Block which are split between forgers of the last 4 blocks 25% each.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
The reason it&#039;s implemented this way is to prevent forgers with a large stake from predicting their forging time and forge their own transactions and thus pay the transaction fees to themselves&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ardor Fee Structures === &amp;lt;!--T:120--&amp;gt;&lt;br /&gt;
A small fee is required for every transaction, including those in which no ARDR is transferred, such as simple messages when using a child chain. The Ardor fee structures are as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:121--&amp;gt;&lt;br /&gt;
[https://www.jelurida.com/sites/default/files/ArdorFees.pdf Download Ardor Fee Structures]&lt;br /&gt;
&amp;lt;accordion parent=&amp;quot;accordion&amp;quot; heading=&amp;quot;Ardor Fee Structures&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Transaction&lt;br /&gt;
! Fee (ARDR)&lt;br /&gt;
! Reasons&lt;br /&gt;
|-&lt;br /&gt;
| Default Ardor fee&lt;br /&gt;
| 1&lt;br /&gt;
| permanent transaction&lt;br /&gt;
|-&lt;br /&gt;
| Default Child Chain fee&lt;br /&gt;
| 0.01&lt;br /&gt;
| prunable transaction&lt;br /&gt;
|-&lt;br /&gt;
| New account fee&lt;br /&gt;
| 1&lt;br /&gt;
| creates permanent global entity&lt;br /&gt;
|-&lt;br /&gt;
| Balance leasing&lt;br /&gt;
| 0.1&lt;br /&gt;
| Ardor chain only, not frequently used&lt;br /&gt;
|-&lt;br /&gt;
| Ardor Coin Exchange&lt;br /&gt;
| 0.5&lt;br /&gt;
| permanent transaction&lt;br /&gt;
|-&lt;br /&gt;
| Asset issuance&lt;br /&gt;
| 100&lt;br /&gt;
| create permanent global entity, Ignis chain only, not frequently used, need to reduce scam assets&lt;br /&gt;
|-&lt;br /&gt;
| Singleton asset issuance&lt;br /&gt;
| 1 + 1 per 32b&lt;br /&gt;
| Ignis chain only, more frequently used, but still creates global permanent entity&lt;br /&gt;
|-&lt;br /&gt;
| Asset increase&lt;br /&gt;
| 10&lt;br /&gt;
| Ignis chain only, rarely used&lt;br /&gt;
|-&lt;br /&gt;
| Dividend payment&lt;br /&gt;
| 0.1&lt;br /&gt;
| needs processing, not frequently used&lt;br /&gt;
|-&lt;br /&gt;
| Set asset control&lt;br /&gt;
| 10&lt;br /&gt;
| Ignis chain only, not frequently used, asset issuers only&lt;br /&gt;
|-&lt;br /&gt;
| Set account control&lt;br /&gt;
| 1&lt;br /&gt;
| Ignis chain only, not frequently used&lt;br /&gt;
|-&lt;br /&gt;
| Cloud data upload&lt;br /&gt;
| 0.1 + 0.01 per 1kb&lt;br /&gt;
| prunable, but takes space&lt;br /&gt;
|-&lt;br /&gt;
| Poll creation&lt;br /&gt;
| 1 + 0.1 per option &amp;gt; 20 + 0.2 per 32b &amp;gt; 288b&lt;br /&gt;
| not frequently used, need to keep until the poll is over, takes space&lt;br /&gt;
|-&lt;br /&gt;
| Phasing approval&lt;br /&gt;
| 0.01 per approved tx&lt;br /&gt;
| needs processing&lt;br /&gt;
|-&lt;br /&gt;
| Account info&lt;br /&gt;
| 1 + 1 per 32b&lt;br /&gt;
| permanent, Ignis only, rarely used&lt;br /&gt;
|-&lt;br /&gt;
| Set account property&lt;br /&gt;
| 0.1 + 0.1 per 32b&lt;br /&gt;
| permanent, Ignis only, not frequently used&lt;br /&gt;
|-&lt;br /&gt;
| Alias assignment&lt;br /&gt;
| 1 + 1 per 32b&lt;br /&gt;
| creates permanent unique entity, not frequently used&lt;br /&gt;
|-&lt;br /&gt;
| Shuffling (total)&lt;br /&gt;
| 0.12&lt;br /&gt;
| takes space, but prunable, not frequently used&lt;br /&gt;
|-&lt;br /&gt;
| Shuffling penalty&lt;br /&gt;
| 10 IGNIS, 10 Bitswift&lt;br /&gt;
| must be affordable, but not negligible&lt;br /&gt;
|-&lt;br /&gt;
| Currency issuance&lt;br /&gt;
| 4 / 100 / 2500&lt;br /&gt;
| creates permanent unique entity, not frequently used&lt;br /&gt;
|-&lt;br /&gt;
| Marketplace listing&lt;br /&gt;
| 0.2 + 0.2 per 32b&lt;br /&gt;
| takes space, need to keep until delisting, not frequently used&lt;br /&gt;
|-&lt;br /&gt;
| Marketplace delivery&lt;br /&gt;
| 0.1 + 0.2 per 32b&lt;br /&gt;
| takes space, need to keep&lt;br /&gt;
|-&lt;br /&gt;
| Permanent message&lt;br /&gt;
| 0.1 + 0.1 per 32b&lt;br /&gt;
| permanent&lt;br /&gt;
|-&lt;br /&gt;
| Prunable message&lt;br /&gt;
| 0.01 per 1k&lt;br /&gt;
| prunable&lt;br /&gt;
|-&lt;br /&gt;
| Phasing appendix&lt;br /&gt;
| 0.01 balance independent, 0.2 balance dependent + 0.01 per 32b size&lt;br /&gt;
| depends on size and complexity, needs processing&lt;br /&gt;
|-&lt;br /&gt;
| Composite phasing appendix&lt;br /&gt;
| 0.02 + 0.02 per 32b + per poll fees&lt;br /&gt;
| determined by phasing complexity&lt;br /&gt;
|-&lt;br /&gt;
| Referenced Tx deposit&lt;br /&gt;
| 10&lt;br /&gt;
| refundable&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/accordion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is the testnet === &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
When we develop our blockchain products Nxt and Ardor we need to perform testing.&lt;br /&gt;
For this purpose, we keep another blockchain instance we call Testnet which is similar in functionality to the actual production blockchain also known as Mainnet but uses a worthless token.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
When you connect to the testnet you see a Red message saying &amp;quot;You are connected to the TestNet!&amp;quot;&lt;br /&gt;
This means that any information you see in the wallet is just test data and does not represent any official amount.&lt;br /&gt;
Use this blockchain only for testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
To turn on testnet add the following property to your nxt.properties file nxt.isTestnet=true and restart your node.&lt;br /&gt;
To connect to mainnet remove this property or set it to false.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to verify authenticity of Ardor installations === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
Windows exe:&lt;br /&gt;
Right-click, Properties, Digital Signatures Tab, Name of Signer should be &amp;quot;Jelurida Swiss SA&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
Mac DMG file:&lt;br /&gt;
1. Open the DMG file to create the Ardor Installer application&lt;br /&gt;
2. From the command like issue the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;codesign --verify -v /Applications/ardor-installer.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
The output should be:&lt;br /&gt;
valid on disk&lt;br /&gt;
For more a verbose output use:&lt;br /&gt;
&amp;lt;pre&amp;gt;codesign -dv --verbose=4 /Applications/ardor-installer.app&amp;lt;/pre&amp;gt;&lt;br /&gt;
Linux .sh and .zip files&lt;br /&gt;
&amp;lt;pre&amp;gt;sha256sum &amp;lt;file name&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
The result should match the sha256 hash published on https://ardorforum.org/ by account Jelurida&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Android mobile app:&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; You may need to install &#039;&#039;gpg&#039;&#039; from [http://gnupg.org/ GNUPG.org].&lt;br /&gt;
# Point your web browser at https://www.jelurida.com/ardor/downloads&lt;br /&gt;
# In this web, you will see the latest Android software in file, along with a corresponding .ASC file.  The ZIP file contains the Nxt software, and the ASC file contains the GPG signature.&lt;br /&gt;
# Download both the clint ZIP file and its corresponding ASC file, and place them into the same directory on your system&lt;br /&gt;
# Execute the following command&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;gpg --verify SIGFILE.asc&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;...where &amp;lt;code&amp;gt;SIGFILE&amp;lt;/code&amp;gt; is the name of the ASC file&lt;br /&gt;
Execute the following command&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;gpg --verify SIGFILE.asc&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;...where &amp;lt;code&amp;gt;SIGFILE&amp;lt;/code&amp;gt; is the name of the ASC file published on https://www.jelurida.com/ardor-android.apk.asc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dealing with Passphrase Problems === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
Due to the decentralized design of the blockchain, the user is the only one who received the secret passphrase during the creation of a new Ardor account with the default Ardor client. There is no way for anyone to restore or reset the passphrase, not even for the developers. So if the passphrase is lost, it is impossible to make transactions from the account.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
Every combination of characters opens a different Ardor account. So if you mistakenly add an extra space at the end of your passphrase, or make a small typo, you will open a different Ardor account.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
The default Ardor passphrase consists of 12 random English words out of a 1600+ words dictionary. This is impossible to crack by brute-forcing. Only if you think you made a small typo, or if you forgot for example 1 of the 12 words, it might be possible to find the correct passphrase by brute-forcing it. Some community members made tools for this, for example, https://ardor.tools/typo/typo.html (which needs the public key), and Ardor itself provides a basic password recovery tool [[Passphrase_Recovery]]. You can also ask for help in ardorforum.org or the Ardor Slack chat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
If your passphrase and the account that has your ARDR don&#039;t match, you are either using the wrong password, or you sent your ARDR to the wrong account by mistake, thinking it was your account.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
For example:&lt;br /&gt;
You create the account, and passphrase A is shown on screen. You enter it in the client the first time, but you, unfortunately, make a small typo, so you end up in account B. Every combination of chars opens a new (empty) account.&lt;br /&gt;
You think passphrase A matches account B, so you send your tokens to account B.&lt;br /&gt;
Now when you enter your passphrase for A without the typo, it doesn&#039;t work for account B. When you login with passphrase A, you end up in the real account A, which has 0 ARDR in it.&lt;br /&gt;
You could try to find out what password B (with the typo) is, that gets you to account B with the ARDR in it, but you&#039;ll have to be lucky to find the typo. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
The best way to prevent this is to always REALLY make sure you REALLY control your account that has the passphrase. Just send 1 small outgoing transaction from the account before you even put large amounts of funds in it. By the way, the client DOES strongly recommends you to do an outgoing transaction in order to publish your public key to the blockchain for new accounts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== User directories per product and platform === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
Default user directory:&lt;br /&gt;
Ardor on Windows: C:\Users\&amp;lt;username&amp;gt;\AppData\Roaming\ardor&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
Ardor on MAC: ~/.ardor&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
Linux: Ardor folder where the installation package was unzipped&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
If you are not sure, look for the ardor.{n}.log where {n} is the log file number. The current log file is always named ardor.0.log. Up to 10 log files are kept. These files exist under the user&#039;s logs directory. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is my Ardor account address? === &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
Your Ardor account address is the string displayed in the upper left corner of the wallet with the format ARDOR-XXXX-XXXX-XXXX-XXXXX&lt;br /&gt;
Is something else my address? No this is your address, don&#039;t use anything else as your address.&lt;br /&gt;
Your passphrase is not your address, never reveal it to anyone, don&#039;t even post it in a support ticket unless the account is empty.&lt;br /&gt;
Your public key composed of 64 hexadecimal characters, it is not your address. Only provide it when someone is asking you specifically to provide your public key.&lt;br /&gt;
In addition, remote nodes may use administrator password, this is not your account address, not your public key, and not your passphrase, and of course you should not reveal it to anyone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== It is impossible to reset your passphrase === &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
Blockchain is designed to be completely decentralized, therefore it is technically impossible to reset your passphrase or retrieve it. &lt;br /&gt;
The user is the only one who has the passphrase. There is no central authority which controls your funds, like in the traditional banking system. &lt;br /&gt;
Not even the developers can reset your passphrase. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
The only way to submit transactions from an account on the blockchain is to use the original passphrase (from which the cryptographic private/public key pair is derived).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Changelly issues === &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
The Ardor wallet includes pages that integrate with Changelly. &lt;br /&gt;
In addition, when funding your account for the first time the wallet will use the Shapeshift widget to exchange tokens.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
However, the wallet uses the exchange APIs while the actual exchange is performed using Shapeshift or Changelly, therefore if something went wrong, please open a support ticket for the relevant exchange and provide all the relevant information. From our experience they resolve tickets relatively quickly and efficiently and in most cases will simply refund your deposit to a refund address you&#039;ll provide.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
Typical reasons for problems include:&lt;br /&gt;
1. Waiting too much time between getting the deposit address and making the deposit. This process has to complete within 5-10 minutes or else the exchange will cancel the offer and your deposit will never be exchanged.&lt;br /&gt;
2. Sending a deposit amount which is smaller than the minimum&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Why do I sometimes see 0 balance (Light Client mode) === &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
After starting the Ardor client for the first time, the client needs to download a copy of the blockchain. This download process can take a while. During this time the client relies on random remote nodes for its operation.&lt;br /&gt;
Some of these nodes are not up to date and include the old state of the blockchain.&lt;br /&gt;
Therefore recent transactions are not reflected causing your balance to show 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
There is nothing to worry about.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
How to fix the problem? Any of the methods below will do&lt;br /&gt;
1. Restart your node to allow it pick another remote node&lt;br /&gt;
2. Download local copy of the Blockchain &lt;br /&gt;
3. Check your balance on a block explorer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Exchange deposit problems === &amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
If you sent your ARDR or IGNIS to an exchange and it did not arrive you should check with the exchange what happened.&lt;br /&gt;
Some exchanges manage all their tokens in a single account and identify user deposits based on message text they provide and should be attached as a message to the deposit transaction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
There are several ways to get your funds locked because of this:&lt;br /&gt;
1. Failing to send this requested message when submitting the transaction from the wallet, will surely get your funds locked and requires contacting the exchange customer support and you should expect a long delay until getting a refund.&lt;br /&gt;
2. Sending an encrypted message when the exchange asks for plain text one or vice versa is another popular way to lock your funds. If the exchange does not specify otherwise we recommend that you send the message as plain text.&lt;br /&gt;
3. Sending ARDR/IGNIS, from one exchange to the other will get your funds locked since there will be no message attachment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
Another common deposit issue is with sending a very small amount, which is not economical for the exchange to deal with.&lt;br /&gt;
It&#039;s not simple to tell what is this minimum amount and it changes between exchanges.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
Sorry, but there is nothing we can do to help with these issues since these are restrictions related to the inner working of exchanges&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Exchange Withdrawal Problems === &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
When withdrawing your funds from an exchange always make sure to provide your [[faq#What is my Ardor account address?|account address]] and make sure you have a [[faq#passphrase to this account|passphrase]]. Providing an incorrect account address or an account address to which you don&#039;t have the passphrase is a sure way to lock your funds forever.&lt;br /&gt;
Writing the amount in the account address field or any other irrelevant info is another popular way to lock your funds forever, since some exchanges do not validate the account address before withdrawal.&lt;br /&gt;
If the exchange also asks for a public key, login using your passphrase, and retrieve the 64 character long account public key.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is Forging? === &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
Forging is the process of generating new Nxt and Ardor blocks.&lt;br /&gt;
A block is a container of 0 or more transactions, blocks are generated every 1 minute on average.&lt;br /&gt;
The forger of the next block receives the transaction fees for this block.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
Q: Who can forge new blocks?&lt;br /&gt;
A: Any account with a balance of more than 1000 ARDR vested over 1440 blocks (approx. 24 hours).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
Q: Why is my wallet showing &amp;quot;Not Forging&amp;quot; indicator?&lt;br /&gt;
A: Because you are not forging, either because your balance is insufficient or because you did not start forging since your last node restart.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
Q: Should I use an account with a lot of ARDR for forging?&lt;br /&gt;
A: No, you should lease your balance to another account and forge with the other account see [[Account_Leasing|Account leasing]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cannot submit transactions while using light client in Ardor === &amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
This is a known problem we are looking to fix in one of the next releases.&lt;br /&gt;
The transaction appears to be submitted but is not being broadcast to the network. No funds are lost or affected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
This problem affects two configurations:&lt;br /&gt;
1. Light client which does not download the blockchain&lt;br /&gt;
2. Roaming client which works as light client during blockchain download&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Workaround: &lt;br /&gt;
Switch to full client&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
Option 1: Reinstall Ardor without checking the light client option during installation&lt;br /&gt;
Option 2: Add the following line to conf/nxt.properties under [[faq#User directories per product and platform|User directories per product and platform]] nxt.isLightClient=false&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
In both cases, you&#039;ll need to restart your node and wait for the blockchain to finish downloading.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to download a copy of the blockchain === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
By default, when installing the Ardor software as a &#039;full client&#039; the local wallet automatically finds other remote peers and starts the blockchain download. This process is very secure, since your node re-validates all the transactions during the download. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
However, on slow hardware or limited internet connection, this process can be very time consuming and could take several hours (Ardor). If you are in a hurry, and trust Jelurida to provide a good copy of the blockchain, you can go to the Jelurida homepage www.jelurida.com and download a copy of the blockchain database.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
There are several options:&lt;br /&gt;
[https://www.jelurida.com/Ardor-nxt_db.zip Ardor production] - is the Ardor mainnet blockchain&lt;br /&gt;
[https://www.jelurida.com/Ardor-nxt_test_db.zip Ardor testnet] - is the Ardor testnet database used for development and testing (doesn&#039;t contain real transactions)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
On Windows (when using Ardor mainnet) the blockchain will be downloaded to your &amp;quot;C:\Users\USERNAME\AppData\Roaming\ardor\nxt_db&amp;quot; folder. Make sure that you can see hidden folders. You can find your AppData folder very quickly by entering &amp;quot;%appdata%&amp;quot; in the address bar of the file explorer. &lt;br /&gt;
Shutdown your Ardor client (using the Ardor icon in your Windows system tray), and place the nxt_db folder into your &amp;quot;C:\Users\USERNAME\AppData\Roaming\ardor&amp;quot; folder. &lt;br /&gt;
Start the Ardor client again and the download should be up-to-date quickly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
On macOS (when using Ardor mainnet) your default user directory is ~/.ardor for Ardor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ardor Scaling Parameters and Constants === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
As of version 2.0.12&lt;br /&gt;
Parent block time: 1 minute on average&lt;br /&gt;
Parent transactions per block: 10&lt;br /&gt;
ChildChainBlock transaction per chain per block: 1&lt;br /&gt;
Child chain transactions per ChildChainBlock transaction on the parent chain: 100&lt;br /&gt;
ChildChainBlock transaction pay load size: 128K&lt;br /&gt;
Epoch beginning mainnet: 2018-01-01 00:00:00 UTC&lt;br /&gt;
Epoch beginning testnet: 2017-12-26 14:00:00 UTC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
For other constants and limits, [https://bitbucket.org/Jelurida/ardor/src/8269057d7889276dbe8b04fe8cd1c6e5310e6f08/src/java/nxt/Constants.java see]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What wallet/client should I use? === &amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
We recommend using the [[Getting_started#Download_Ardor|Ardor client]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to check your IGNIS balance === &amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
To check your IGNIS balance:&lt;br /&gt;
1. Install Ardor from jelurida.com (See Ardor Downloads).&lt;br /&gt;
2. Run Ardor and wait for the blockchain to download.&lt;br /&gt;
3. Login using your Ardor account.&lt;br /&gt;
4. Switch to the IGNIS chain to check your IGNIS balance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
[[File:faq.switch.chain.png|none|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Is there a mobile wallet? === &amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
There is one for Android, refer to [[Android Full Node]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:122--&amp;gt;&lt;br /&gt;
There is also an [https://play.google.com/store/apps/details?id=mrv.ardor.lite Ardor] Lite version in the Google play. Click on install with your Android device and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I get ARDOR/IGNIS? === &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
Here are places where you can get ARDR and/or IGNIS with EUR, USDT, BTC, and other currencies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
* [https://www.jelurida.com/ardor/explorers Ardor exchanges]&lt;br /&gt;
* [https://www.jelurida.com/ignis/explorers Ignis exchanges]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Node configuration using the nxt.properties === &amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
The configuration of your Ardor node is configured using properties set in the nxt.properties file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
The nxt.properties file is a text file which can be created using any text editor (notepad on Windows and vi on Linux and Mac will do)&lt;br /&gt;
Create or update the nxt.properties file in the conf directory under the [[Faq#User_directories_per_product_and_platform|user directory]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
Every change to properties will only take effect after you restart your node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
You can use the nxt-default.properties file from the conf directory of the Ardor or Nxt installation as a reference to see the existing properties and their documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
Never modify the nxt-default.properties file since your modifications will be overwritten by an upgrade to a new version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
Another configuration file you should never modify is nxt-installer.properties. This file stores the configuration selected during the installation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
Any setting set in nxt.properties will override settings in nxt-default.properties and nxt-installer.properties&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
For advanced users:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
The location from which the property files are loaded can be customized using a Java command-line argument named according to the property file name.&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;java ... -Dnxt.properties=./conf/examples/testnet.properties ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
Will tell the Ardor node to load the nxt.properties file from the ./conf/examples/testnet.properties folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
==== How to open the API access of your node from remote client ====&lt;br /&gt;
Add the following lines to nxt.properties:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;nxt.apiServerHost=0.0.0.0 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
nxt.allowedBotHosts=*&amp;lt;/pre&amp;gt;&lt;br /&gt;
and restart the node for the properties to take effect.&lt;br /&gt;
&lt;br /&gt;
=== What is the admin password?=== &amp;lt;!--T:94--&amp;gt;&lt;br /&gt;
The admin password is not your passphrase, not your account id, and your public key, it is something else, read on.&lt;br /&gt;
When connecting to a remote node using the API there are certain operations that are restricted by default unless the adminPassword parameter contains a value matching the remote node admin password is specified in the API call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
You setup the admin password in the remote node in the nxt.properties file:&lt;br /&gt;
# Password that should be provided when executing protected (administrative) API requests.&lt;br /&gt;
# Please choose a decent password here. Preferably, use a password generator.&lt;br /&gt;
# Password protection is disabled and password is not needed when the API server only listens on the localhost interface, i.e. when nxt.apiServerHost=127.0.0.1.&lt;br /&gt;
nxt.adminPassword=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
The same value specified in nxt.adminPassword should be passed when calling any API which accepts adminPassword as parameter.&lt;br /&gt;
When loading the wallet from a remote node enter this value in the account settings page &amp;quot;Administrator Password&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
The admin password is required for the following operations (partial list)&lt;br /&gt;
1. For any query API such as getBlockchainTransactions to return more than 100 records&lt;br /&gt;
2. get and stop APIs for forging, bundling, funding monitor and shuffler&lt;br /&gt;
3. Access to the /dbshell page in order to execute SQL queries&lt;br /&gt;
4. Various administrative APIs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
API response errors and their meaning:&lt;br /&gt;
&amp;quot;Administrator&#039;s password is not configured. Please set nxt.adminPassword&amp;quot; - you need to configure the admin password on the remote node.&lt;br /&gt;
&amp;quot;adminPassword not specified&amp;quot; - password is configured on the remote node but is not specified by the API call&lt;br /&gt;
&amp;quot;Incorrect adminPassword (the specified password does not match nxt.adminPassword)&amp;quot; - the password specified did not match the remote node password&lt;br /&gt;
&amp;quot;Too many incorrect admin password attempts from ...&amp;quot; - you specified too many incorrect password attempts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is the roadmap of Ardor? === &amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
Jelurida maintains a public [https://www.jelurida.com/ardor-roadmap Ardor roadmap] and have a good track record sticking to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Where can I find more detailed information about Ardor and its features? === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
You can read all the material in the [[Features]] and Tutorials section. By then you should have a pretty good foundation to dab into the [[API]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Where do I find news about Ardor? === &amp;lt;!--T:101--&amp;gt;&lt;br /&gt;
* [https://talk.jelurida.com Ardor Technical forum]&lt;br /&gt;
* [https://nxtplatform.org/slack/ slack]&lt;br /&gt;
* [https://ardorforum.org/ Ardor historical forum]&lt;br /&gt;
* [https://twitter.com/Jelurida Twitter Jelurida]&lt;br /&gt;
* [https://www.nxter.org/ Nxter newsletter]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Where do I find information about the API? === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
Please see the [[API]] section on this site.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What features does Ardor have? === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
Ardor functionality is restricted to maintain the PoS algorithm.&lt;br /&gt;
Ignis has numerous core-level features such as the ability to issue assets, a decentralized asset exchange, decentralized voting, coin shuffling (for anonymity), alias system, decentralized marketplace, multisig capabilities, and a monetary system for currencies. For more information, you can read the [[Features]] section of this site.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How many nodes are up for Ardor? === &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
PeerExplorer is a great tool to see live information about nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Where is the source code? === &amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
You can find the source code in Jelurida&#039;s Bitbucket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Does Ardor have a testnet? === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
Yes, you can [https://testardor.jelurida.com access Ardor&#039;s testnet here]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I access my Ardor account on the Ardor client/wallet? === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
Download the client and introduce your passphrase&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Why am I getting a Java error when I try to start the software? === &amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
Ardor relies on Java 8.  Make sure you download and install the latest version installed from Oracle! You can check to see which version of Java is running on your computer by running the following command in a terminal window:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
java -version&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Why cannot I open the client in a web browser? === &amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
First of all, you need to make sure that the Ardor server window has finished loading, as indicated by a message like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:111--&amp;gt;&lt;br /&gt;
Ardor Server vx.xx.xx started successfully.&lt;br /&gt;
To access your client interface, you can then use either of these addresses:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:112--&amp;gt;&lt;br /&gt;
http://localhost:27876/&lt;br /&gt;
http://127.0.0.1:27876/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Why doesn&#039;t my blockchain finish loading? === &amp;lt;!--T:113--&amp;gt;&lt;br /&gt;
Patience is usually the best fix; your client will eventually catch up with the network. Some delay may occur especially when you have updated to a new software version that performs a database upgrade. If you are in a hurry you can download a recent copy of the blockchain from the Jelurida web site.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Why do my blockchain files keep getting corrupted? === &amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
The blockchain database may get corrupted as a result of the Ardor software being forcefully terminated in a way that doesn&#039;t allow the server to close the database properly. You should be able to see &amp;quot;Database shutdown completed&amp;quot; in the log before shutdown as a sign that data files have been properly closed. To prevent data corruption when closing Ardor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:115--&amp;gt;&lt;br /&gt;
In Windows, use Ctrl-C to shut down the process in the terminal window&lt;br /&gt;
In UNIX, use kill -15 #ID PROCESS do not use kill -9 #ID PROCESS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== I keep accessing a different account number than the one I created. What&#039;s going on? === &amp;lt;!--T:116--&amp;gt;&lt;br /&gt;
Since different account numbers are accessed using different passphrases, getting a different account number than the one you expected means you used a different passphrase than the one originally used to generate your account number. Make sure you are introducing your original passphrase correctly. This means double-checking for typing mistakes, and ensuring no extra spaces are accidentally pasted (or omitted!) in the beginning or the end of your passphrase as you paste it to unlock your account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Does Jelurida still maintain Nxt? === &amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
Yes, Jelurida will continue to support and develop both Ardor and Nxt. A portion of the funds from the Ignis token sale was reserved towards Nxt development as explained in the Whitepaper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How can I buy IGNIS? === &amp;lt;!--T:118--&amp;gt;&lt;br /&gt;
You can buy IGNIS using the Ardor [[Coin exchange| coin exchange feature]] or [https://www.jelurida.com/ignis/explorers with centralized exchanges]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=Account_Setup_for_Message-based_Deposits&amp;diff=12784</id>
		<title>Account Setup for Message-based Deposits</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=Account_Setup_for_Message-based_Deposits&amp;diff=12784"/>
		<updated>2021-01-12T09:40:10Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Account Setup for Message-based Deposits&lt;br /&gt;
|titlemode=replace&lt;br /&gt;
|keywords=ardor learning hub, ardor documentation, blockchain, proof of stake, ardor, ignis, jelurida, development, ardor wiki, wiki, tutorials, advanced tutorials, how-to, message-based deposits, prevent users to send tokens without a message&lt;br /&gt;
|description=This guide explains how to prevent users from accidentally sending tokens without message setting up the property nrs_recipient_ui_options. It is covered with a step-by-step guide for both configuring the receiving account and to send tokens to the account.&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Advanced_guides]]&lt;br /&gt;
&lt;br /&gt;
==Introduction== &lt;br /&gt;
&lt;br /&gt;
This guide explains how to configure the account property &amp;lt;code&amp;gt;nrs_recipient_ui_options&amp;lt;/code&amp;gt;. It prevents users from accidentally sending tokens without a message to the account that has the property set up.&lt;br /&gt;
&lt;br /&gt;
Decentralized applications that require a message to process the funds received, or any other use case that accepts message-based deposits should enable this functionality to prevent errors.&lt;br /&gt;
&lt;br /&gt;
The guide explains the configuration of the account that will require the message-based deposit as well as the end-user steps to send funds.&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;nrs_recipient_ui_options&#039;&#039;&#039; property configuration==&lt;br /&gt;
&lt;br /&gt;
The [[Account_Properties|account property]] with name &amp;lt;code&amp;gt;nrs_recipient_ui_options&amp;lt;/code&amp;gt;, set by the recipient on itself is used to configure the modal in the [[Introductory_tour_of_ardors_features|Ardor UI]] when sending funds to that account. It also allows control over the message encryption, such as disabling it. The value of the &amp;lt;code&amp;gt;nrs_recipient_ui_options&amp;lt;/code&amp;gt; property is a JSON object containing the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;message_format&#039;&#039;&#039;: [https://en.wikipedia.org/wiki/Regular_expression Regular expression] of the message format which is required when depositing to this address. For instance:&lt;br /&gt;
** The expression &amp;lt;code&amp;gt;[0-9]+&amp;lt;/code&amp;gt; will only allow a numeric message.&lt;br /&gt;
*** For instance: &amp;lt;code&amp;gt;291&amp;lt;/code&amp;gt;&lt;br /&gt;
** If the message should be of a particular length use the expression as follows: &amp;lt;code&amp;gt;[a-zA-Z0-9]{4,8}&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** This format will only allow alphanumeric messages with length 4 to 8 characters.&lt;br /&gt;
** Note that the regular expression is case sensitive.&lt;br /&gt;
* &#039;&#039;&#039;encrypt_message&#039;&#039;&#039;: default value for the encrypt message box. Must be boolean, not string - &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; is valid value, &amp;lt;code&amp;gt;&amp;quot;true&amp;quot;&amp;lt;/code&amp;gt; is not.&lt;br /&gt;
* &#039;&#039;&#039;encrypt_message_disabled&#039;&#039;&#039;: if &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the encrypt message box is disabled. Set this to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if you can accept either only encrypted or only unencrypted messages. Must be boolean, not string. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the &#039;&#039;&#039;encrypt_message&#039;&#039;&#039; field must also be set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. Or else the configuration is invalid.&lt;br /&gt;
&lt;br /&gt;
Example of the &amp;lt;code&amp;gt;nrs_recipient_ui_options&amp;lt;/code&amp;gt; property: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;message_format&amp;quot;:&amp;quot;[a-zA-Z0-9]{4,8}&amp;quot;,&amp;quot;encrypt_message&amp;quot;:true,&amp;quot;encrypt_message_disabled&amp;quot;:true}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Checking the &#039;&#039;&#039;nrs_recipient_ui_options&#039;&#039;&#039; property==&lt;br /&gt;
Applications that implement withdrawal of funds to user&#039;s account (like exchanges) should respect the &#039;&#039;&#039;nrs_recipient_ui_options&#039;&#039;&#039; property similarly to the Ardor UI - in order to protect the user from withdrawing funds to account owned by some other service which requires a message.&lt;br /&gt;
&lt;br /&gt;
To get the property, use the [[Accounts#Get_Account_Properties|Get Account Properties]] API with parameters&lt;br /&gt;
* &#039;&#039;&#039;setter&#039;&#039;&#039;: the account to which the user wants to withdraw funds&lt;br /&gt;
* &#039;&#039;&#039;recipient&#039;&#039;&#039;: again the account to which the user wants to withdraw funds. This parameter should be equal to the &#039;&#039;&#039;setter&#039;&#039;&#039; parameter because the &#039;&#039;&#039;nrs_recipient_ui_options&#039;&#039;&#039; property must be set by the account on itself.&lt;br /&gt;
* &#039;&#039;&#039;property&#039;&#039;&#039;: the string &amp;quot;nrs_recipient_ui_options&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;btn size=&amp;quot;sm&amp;quot;&amp;gt;https://testardor.jelurida.com/test?requestType=getAccountProperties&amp;amp;property=nrs_recipient_ui_options&amp;amp;setter=ARDOR-S9Q3-GPL9-XLPB-EDW66&amp;amp;recipient=ARDOR-S9Q3-GPL9-XLPB-EDW66|&amp;lt;span class=&amp;quot;glyphicon glyphicon-cog&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; Test Get Account Properties|btn-primary&amp;lt;/btn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://localhost:26876/nxt?&lt;br /&gt;
   requestType=getAccountProperties&amp;amp;property=nrs_recipient_ui_options&amp;amp;&lt;br /&gt;
   setter=ARDOR-S9Q3-GPL9-XLPB-EDW66&amp;amp;recipient=ARDOR-S9Q3-GPL9-XLPB-EDW66&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the account ARDOR-S9Q3-GPL9-XLPB-EDW66 is properly configured for message-based deposits, the result will be something like&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;setterRS&amp;quot;: &amp;quot;ARDOR-S9Q3-GPL9-XLPB-EDW66&amp;quot;,&lt;br /&gt;
  &amp;quot;recipientRS&amp;quot;: &amp;quot;ARDOR-S9Q3-GPL9-XLPB-EDW66&amp;quot;,&lt;br /&gt;
  &amp;quot;recipient&amp;quot;: &amp;quot;13984674604228812481&amp;quot;,&lt;br /&gt;
  &amp;quot;requestProcessingTime&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;setter&amp;quot;: &amp;quot;13984674604228812481&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;property&amp;quot;: &amp;quot;nrs_recipient_ui_options&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;{\&amp;quot;message_format\&amp;quot;:\&amp;quot;[0-9]+\&amp;quot;,\&amp;quot;encrypt_message\&amp;quot;:true,\&amp;quot;encrypt_message_disabled\&amp;quot;:true}&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If it is a regular account, not configured for message-based deposits, the &#039;&#039;&#039;properties&#039;&#039;&#039; array will be empty.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;properties&#039;&#039;&#039; array cannot contain more than 1 element for this request. If not empty, get the only element and then get the &#039;&#039;&#039;value&#039;&#039;&#039; field. It should be a string. Parse it as JSON object. If the parsing failed, consider this a regular account. If the parsing succeeded: &lt;br /&gt;
&lt;br /&gt;
* Get the &#039;&#039;&#039;message_format&#039;&#039;&#039; field of the parsed object:&lt;br /&gt;
** If not present, consider this a regular account.&lt;br /&gt;
** If &#039;&#039;&#039;message_format&#039;&#039;&#039; is present in the object, check if the message which the user entered is matched by this regular expression. If your UI doesn&#039;t allow the user to enter message, block the withdrawal and show an explanatory error message to the user.&lt;br /&gt;
&lt;br /&gt;
* Get the &#039;&#039;&#039;encrypt_message_disabled&#039;&#039;&#039; field. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, this means that the destination account can accept either only encrypted or only unencrypted messaged. In this case check the &#039;&#039;&#039;encrypt_message&#039;&#039;&#039; field:&lt;br /&gt;
** If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the account accepts only encrypted messages&lt;br /&gt;
** If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the account accepts only unencrypted messages&lt;br /&gt;
** Anything else: the account is not properly configured - consider that it is a regular account&lt;br /&gt;
&lt;br /&gt;
==Step-by-step configuration of the receiving account==&lt;br /&gt;
&lt;br /&gt;
It will be used the Ardor account &amp;lt;code&amp;gt;ARDOR-GHKP-XWB5-XMZB-CTUE3&amp;lt;/code&amp;gt; for this example. First [[Login_Page_Tutorial|login into the Ardor wallet]] with the account that will receive the funds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then click on &#039;Account Properties&#039;:&lt;br /&gt;
&lt;br /&gt;
[[File:Account setup for Message-based deposits - 1.jpg|class=img-responsive|border|Account properties]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Click on &#039;Set&#039; as shows the following image:&lt;br /&gt;
&lt;br /&gt;
[[File:Account setup for Message-based deposits - 2.jpg|class=img-responsive|border|Set property]]&lt;br /&gt;
&lt;br /&gt;
Set the values of the account property:&lt;br /&gt;
* Recipient account (it must be the same account, in this case, &amp;lt;code&amp;gt;ARDOR-GHKP-XWB5-XMZB-CTUE3&amp;lt;/code&amp;gt;&lt;br /&gt;
* Property: &amp;lt;code&amp;gt;nrs_recipient_ui_options&amp;lt;/code&amp;gt;&lt;br /&gt;
* Value: The JSON message. In this case the values of the fields are&lt;br /&gt;
** &#039;&#039;&#039;message_format&#039;&#039;&#039;: [a-zA-Z0-9]{4,8}&lt;br /&gt;
** &#039;&#039;&#039;encrypt_message&#039;&#039;&#039;: true&lt;br /&gt;
** &#039;&#039;&#039;encrypt_message_disabled&#039;&#039;&#039;: false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Account_setup_for_Message-based_deposits_-_3.jpg|class=img-responsive|border|Set property values]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the transaction is bundled, the account property will appear in the &amp;quot;Incoming&amp;quot; properties. It can be updated or deleted if needed.&lt;br /&gt;
&lt;br /&gt;
The receiving account is now already configured. When sending funds it will check the correctness of the message format and will automatically enable the message encryption. Refer to the next section to see how to send funds to the receiving account.&lt;br /&gt;
&lt;br /&gt;
==Sending funds to the receiving account==&lt;br /&gt;
&lt;br /&gt;
It will be used the Ardor account &amp;lt;code&amp;gt;ARDOR-X8ZN-WUJ2-SXY3-FBUYC&amp;lt;/code&amp;gt; to send funds to the previously created receiving account of the section above. First [[Login_Page_Tutorial|login into the Ardor wallet]] with the account that will send the funds.&lt;br /&gt;
&lt;br /&gt;
It is possible to send any token, in this guide we will send IGNIS tokens to the &amp;lt;code&amp;gt;ARDOR-GHKP-XWB5-XMZB-CTUE3&amp;lt;/code&amp;gt; already configured.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Click on the &amp;quot;Send IGNIS&amp;quot; button:&lt;br /&gt;
&lt;br /&gt;
[[File:Account setup for Message-based deposits - 4.jpg|class=img-responsive|border|Send IGNIS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fill the recipient account (for this case: &amp;lt;code&amp;gt;ARDOR-GHKP-XWB5-XMZB-CTUE3&amp;lt;/code&amp;gt;), the amount, and the message.&lt;br /&gt;
&lt;br /&gt;
===Error when sending funds due to bad-formatted message=== &lt;br /&gt;
&lt;br /&gt;
When the message does not fit the regular expression set up in the recipient account, it will disable the &amp;quot;Submit&amp;quot; button and will be prompted a message as follows:&lt;br /&gt;
&lt;br /&gt;
[[File:Account setup for Message-based deposits - 5.jpg|class=img-responsive|border|Preventing users to send funds with a wrong message]]&lt;br /&gt;
&lt;br /&gt;
===Sending funds with well-formatted message===&lt;br /&gt;
&lt;br /&gt;
When the message is well-formatted it will allow sending funds to the recipient account as the following image shows:&lt;br /&gt;
&lt;br /&gt;
[[File:Account setup for Message-based deposits - 6.jpg|class=img-responsive|border|Sending funds with a well-formatted message]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=File:Account_setup_for_Message-based_deposits_-_6.jpg&amp;diff=12761</id>
		<title>File:Account setup for Message-based deposits - 6.jpg</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=File:Account_setup_for_Message-based_deposits_-_6.jpg&amp;diff=12761"/>
		<updated>2021-01-11T17:08:10Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=File:Account_setup_for_Message-based_deposits_-_5.jpg&amp;diff=12760</id>
		<title>File:Account setup for Message-based deposits - 5.jpg</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=File:Account_setup_for_Message-based_deposits_-_5.jpg&amp;diff=12760"/>
		<updated>2021-01-11T17:08:02Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
	<entry>
		<id>https://betaardordocs.jelurida.com/index.php?title=File:Account_setup_for_Message-based_deposits_-_4.jpg&amp;diff=12759</id>
		<title>File:Account setup for Message-based deposits - 4.jpg</title>
		<link rel="alternate" type="text/html" href="https://betaardordocs.jelurida.com/index.php?title=File:Account_setup_for_Message-based_deposits_-_4.jpg&amp;diff=12759"/>
		<updated>2021-01-11T17:07:53Z</updated>

		<summary type="html">&lt;p&gt;Almonte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Almonte</name></author>
	</entry>
</feed>