All About Evrmore Assets
This page is a work in progress.
If you would like to make corrections or provide additional detail, please make a pull request on
this website's github source or visit us at our
discord server.
At this time, most transaction examples point to transactions on the Ravencoin blockchain, which is similar to Evrmore in those cases.
This webpage will attempt to describe Evrmore assets at a high level, and then dig deeper into the technical implementation.
For more precise asset naming rules and some of the datafield contents, please also see
HERE and HERE
Table of Contents
- Evrmore Asset Fundamentals
- Evrmore Asset Technical Implementation
Evrmore Asset Fundamentals:
What is an asset?
An Evrmore asset (sometimes referred to as a token) is an on-chain data object which contains user-generated information. An asset can be used as an event ticket, a subscription, a coupon, a badge, an authentication approval, a coin, a financial security, or a representation of a physical asset such as real estate, art, precious metal, etc. It is created and processed according to the blockchain consensus rules, which dictate the conditions under which it can be created, under which it can be moved (traded) to a different address, under which the enclosed information can be edited, and under which additional assets of the same type or derivative type may be created.
An Evrmore asset has a human-readable guaranteed unique name which is chosen by the user when created.
In bitcoin terminology, every Evrmore asset is contained in a UTXO or group of UTXOs.
Where can I trade assets?
Marketplaces can be public, global, and free of regulation such as the EVRSea NFT Marketplace at https://evrsea.io which specializes in the trading of NFT art implemented as Evrmore assets. Other marketplaces are proprietary and require a membership. A financial security marketplace would require regulatory approvals based on the juristiction of the participants.
Privacy and Access
An Evrmore asset, like a Bitcoin, is held at a blockchain address and all movements on the chain are publicly viewable. Ownership of an asset is therefore pseudonomous based on knowledge of who owns which address. Some data contained in the asset, such as its name, are also publicly viewable. But other data, such as data pointed to by an IPFS link contained within the asset, could be encrypted so that only users who possess the decryption key can view that data.
The ability to buy and sell most assets is unrestricted beyond the requirement that the owner must prove ownership by proving possession of the keys associated with the address at which the asset resides. However, Evrmore does also support a special Restricted Asset type which is subject to a number of addtional restrictions including mechanisms to limit which addresses are allowed to receive the asset or to globally freeze and unfreeze trading for all addresses.
The Nomenclature
The following terms are commonly used to describe Evrmore asset capabilities or operations:
-
Reissuability
This is a metadata flag which denotes whether or not an asset can be reissued, which also provides an opportunity to change some of the asset's metadata. Once this flag is set to false it CANNOT be changed back! If you want (or if there is even a small chance that you will want) to change your asset's information in the future, ensure that you issue your asset as reissuable when you create it!
-
Divisibility (Units)
Units is a metadata value from zero to eight which denotes how much an asset can be broken up. Specifically this number is how many digits past the decimal this asset can be divided into (a minimum size of 10-d where d is the divisibility).
Units=0 means the tokens are not divisible at all -- whole tokens only can be transferred. Units=2 would be two decimal places like cents on a dollar it would be possible to transfer 0.01. Units=8 is the most divisible and allows tokens to be tranferred in increments of 0.00000001. -
Reissuing
Reissuing an asset is an act which does one or both of the following:
- Changing the metadata associated with an asset.
- Creating more of an asset.
In order to reissue an asset, the asset must be reissuable and you must have the associated ownership asset.
When changing divisibility during a reissuance, the divisibility may only be kept the same or increased, never decreased.
When increasing divisibility, you cannot use the new lowest asset amount when creating more of the asset; the asset still has the old divisibility amount until the reissue transaction has been mined into a block
-
Ownership Assets
When creating an asset of type "main", you will also receive an ownership asset. Ownship assets allow a user to reissue an asset and create "child assets" which we will explore in the next section. Ownership assets are designated by an exclamation point (!) appended to the chosen name of the Asset. For instance, for an asset created with the name "ASSET", the associated ownership asset would be "ASSET!". If an asset A requires the ownership asset of asset B to be created, asset B is said to be asset A's "parent" and asset A is said to be asset B's "child".
-
Associated Data
This is a 32-byte data field which contains user-supplied data. It usually contains an IPFS hash or a Transaction Identifier (TXID), but it can be anything.
-
Message Broadcasts
Any owner of any asset can broadcast a 32 byte message associated with that asset. We will go more in-depth with broadcasts later.
-
Null Asset Tags
These are special scripts used by holders of qualifier assets and restricted ownership assets to define behavior between restricted assets and addresses. The relationship between qualifiers, restricted assets, tags, and addresses is fairly complicated. We will go more in-depth further down the page.
Creating Assets
When creating an asset, you need to know what type of asset you want, the name you want for the asset, the quantity of the asset which you want to issue, how much it costs to create the asset, and the metadata you want associated with the asset.
Assets are easily identified by their names, which must be unique. An asset creation will not be accepted by the chain if the name is not unique.
Asset names are encoded using plain ascii. Therefore asset names can only contain characters in the latin alphabet.
The cost of creating an asset can be viewed as the cost to "reserve the name" similar to purchasing a DNS name. The cost is not a function of the quantity of tokens issued of that asset.
To put this information in a more readable format, all of the upcoming asset types will contain the following chart:
Metadata | Information |
---|---|
Asset Name | Name specifications |
Ownership Asset | Ownership specifications |
Prerequisites | Prerequisite specifications |
Asset Amount | Amount specifications |
Cost | Cost specifications |
Reissuability | Reissuability specifications |
Divisibility | Divisibility specifications |
Associated Data | Associated data specifications |
This table denotes the fields avaliable and their limitations.
For instance, an ownership asset table looks like this:
Metadata | Information |
---|---|
Asset Name | Base asset name + '!' |
Ownership Asset | No associated ownership asset |
Prerequisites | Created with another asset |
Asset Amount | There can only be 1 of some ownership asset |
Cost | Comes with the base asset |
Reissuability | Cannot be reissued |
Divisibility | Has 0 divisibility |
Associated Data | No data can be associated |
Main Assets, Subassets, and Unique Assets
When working with Evrmore assets you will most likely be using one of these three. They are by far the most used types of assets.
Main assets
Using a website analogy, a main asset is like a domain name.
Metadata | Information |
---|---|
Asset Name | From 3 to 30 of the symbols A-Z 0-9 . _ The point or underscore cannot be the first or last characters or repeated. The names EVR, EVER, EVRMORE. EVERMORE. EVRMORECOIN, EVERMORECOIN, EVRS, EVERS, EVRMORES. EVERMORES. EVRMORECOINS, EVERMORECOINS, RVN, RAVEN, RAVENCOIN RVNS, RAVENS, and RAVENCOINS are reserved. |
Ownership Asset | Main assets have an associated ownership asset |
Prerequisites | None |
Asset Amount | 1 - 21,000,000,000 of this asset can be created |
Cost | 500 EVR |
Reissuability | This asset can be set to be reissued |
Divisibility | Divisibility can be set from 0-8 |
Associated Data | This asset can have associated data |
The ownership asset of a main asset is required to create the following two asset types.
Sub-assets
A sub-asset is like a path within a website or like a filesystem subdirectory. Creating a sub asset requires a main asset ownership token.
Metadata | Information |
---|---|
Asset Name | The sub-portion of the name must be at least 1 capital letter. '.' and '_' are also allowed, but they cannot be at the beginning or end of the sub-portion. More than one of these special characters also cannot be next to one another. The full sub-asset name takes the form [main asset name]/[sub-portion]. This full name must be 30 or less characters. |
Ownership Asset | Sub-assets have an associated ownership asset |
Prerequisites | A main asset's ownership asset |
Asset Amount | 1 - 21,000,000,000 of this asset can be created |
Cost | 100 EVR |
Reissuability | This asset can be set to be reissued |
Divisibility | Divisibility can be set from 0-8 |
Associated Data | This asset can have associated data |
Unique assets
A unique asset can be likened to a file on a website. Creating a unique asset requires a main asset ownership token or a sub-asset ownership token. There can only be 1 of a unique asset.
Metadata | Information |
---|---|
Asset Name | The unique portion of the name must be at least 1 character. The full unique asset name takes the form [main or sub asset name]#[unique portion]. This full name must be 30 or less characters. |
Ownership Asset | Unique assets have no associated ownership asset |
Prerequisites | A main asset or sub-asset's ownership asset |
Asset Amount | 1 of this asset can be created |
Cost | 5 EVR |
Reissuability | This asset cannot be reissued |
Divisibility | Divisibility is 0 |
Associated Data | This asset can have associated data |
Broadcasts and Message Channels
Message Channel is an asset type which is defined in Evrmore. However, it is not supported in any of the mainstream community software releases, and it is rarely used. It is included here only for the sake of completeness.
Asset Messages
Any user can send an asset message on any asset of any type which they own. An asset message is a 34 bytes long data field in any asset transfer transaction which the user can set to carry a message. It uses the same datafield which is used to associate an IPFS link or Transaction ID as metadata to an asset when the asset is created or reissued. During other asset operations it just becomes usable as a general purpose message field. When the transfer is to another address, the message is interpreted to be intended to be directed to the owner of that address.
Asset Broadcasts
In a message channel asset transfer transaction, if the receiving address is the same as the sending address, this is interpreted as a message broadcast. Only message channels can broadcast messages. It is important to note that the term "broadcast" is actually a misnomer since there is nothing being sent to multiple destinations beyond the usual transaction relaying. It is solely a scheme by which the client software could interpret use of the data field in a transaction, but no such user interface for message broadcasts has been implemented in the core wallet and may never be implemented.
Message Channels
A message channel requires a main or sub-asset's ownership asset. A message channel is an asset specifically made for broadcasting messages. Their purpose is to add more control to whoever might be subscribed to the message channel's parent.
On-chain messages are a very limited and expensive way to send messages because the data field is very small and because every transaction costs a transaction fee. On the other hand, the data field size problem can be avoided by making it a link to (possibly changing) data off-chain. Also, the transaction fees do provide a mechanism to discourage spam.
Metadata | Information |
---|---|
Asset Name | The message channel portion of the name must at most 12 characters. It can contain letters, numbers, and '_'. '_' cannot be at the beginning or end of the message channel portion and two or more '_''s cannot be next to each other. The message channel asset name takes the form [main or sub asset name]~[message channel portion]. This full name must be 30 or less characters. |
Ownership Asset | Message channel assets have no associated ownership asset |
Prerequisites | A main asset or sub-asset's ownership asset |
Asset Amount | 1 of this asset can be created |
Cost | 100 EVR |
Reissuability | This asset cannot be reissued |
Divisibility | Divisibility is 0 |
Associated Data | This asset cannot have associated data |
Qualifiers, restricted assets, addresses, and tags
Restricted assets, qualifiers, address tagging, and other related items are a complex topic. They are fully supported on-chain and in the Evrmore core code. And you may find an interesting way to use them in your application. But it is more likely that you won't need to understand or use them. They were created specifically to support the regulatory requirements of Security Token Offerings, Financial Security trading, and the required Know-Your-Customer regulations. Restricted assets are restricted in the sense that only certain addresses may receive them. Those address must satisfy the requirements of a "Verifier String" defined for that Restricted Asset. A Verifier String is a boolean expressed composed from Qualifier names. Qualifier names are the names of Qualifier Assets which represent the satisfaction of some requirement such as having been KYC vetted or being a member of a club. Addresses can be tagged or untagged by the holder of a Qualifier Asset, and the result of those address tagging operations must satisfy the boolean Verifier String in order for that address to receive the Restricted Asset. The creator of a Qualifier Asset can create more than one of them with the same name, which he can give to other addresses, effectively delegating to the owner of that address the ability to tag any address on his behalf with the Qualifier.
Lets start out with some definitions.
-
Asset Tags
An asset tag determines whether or not an address is able to receive a restricted asset. It costs 0.1 EVR to create an asset tag. There are three types of asset tags:
Null Asset Tag
A null asset tag has two sub-types:
- Qualifying Null Asset Tag: This type of null asset tag can be created with a qualifier asset. It qualifies or unqualifies some address.
- Restricted Null Asset Tag: This type of null asset tag can be created with a restricted asset's ownership asset. It can add or remove an address from being blacklisted from receiving this restricted asset no matter the address's qualifications.
-
Verifier Asset Tag
A verifier asset tag can be created with a restricted asset's ownership asset. It associates this restricted asset with one or more qualifiers. (This means that to recieve this restricted asset, an address must be qualified by all of the qualifiers defined in this tag).
-
Restricted Asset Tag
Also known as a global freeze tag, a restricted asset tag can be created with a restricted asset's ownership asset. This tag can freeze or unfreeze all movements across all addresses of this restricted asset.
-
Qualifier Asset
Qualifier assets are administrative assets (in the same group as ownership assets) used to determine what addresses can receive restricted assets. Simply owning a qualifier asset gives a user this power.
Metadata Information Asset Name The qualifier portion of the name has the same naming rules as a main asset.
The qualifier asset name takes the form #[qualifier portion]. Note how this is differentiated from unique assets with the fact that a qualifier has no parent. This full name must be less than 30 characters.
Ownership Asset Qualifier assets have no associated ownership asset Prerequisites None Asset Amount 1 - 10 of this asset can be created Cost 1000 EVR Reissuability This asset cannot be reissued Divisibility Divisibility is 0 Associated Data This asset can have associated data. Note: because qualifiers cannot be reissued, if you choose to have associated data, it cannot be changed in the future. -
Sub-qualifier Asset
Currently, sub-qualifiers have exactly the same powers as their parents. Sub-qualifiers use a parent qualifier asset in lieu of a parent ownership asset in its creation.
Metadata Information Asset Name The sub-qualifier portion of the name has the same naming rules as a sub-asset.
The sub-qualifier asset name takes the form #[qualifier portion]/#[sub-qualifier]. Note how this is differentiated from unique assets with the fact the the intermediary characters are '/#' This full name must be less than 30 characters.
Ownership Asset Qualifier assets have no associated ownership asset Prerequisites A qualifier Asset Amount 1 - 10 of this asset can be created Cost 100 EVR Reissuability This asset cannot be reissued Divisibility Divisibility is 0 Associated Data This asset can have associated data. Note: because qualifiers cannot be reissued, if you choose to have associated data, it cannot be changed in the future. -
Restricted Asset
Restricted assets are comparable to main assets except for the fact that they are, well, restricted. Currently restricted assets can only be associated with main qualifiers (not sub-qualifiers). If a restricted asset is not associated with any qualifier, it cannot be transfered. Restricted assets are also somewhat unique in the fact that if they can be reissued, they are able to change what qualifiers they are associated with.
Metadata Information Asset Name The restricted portion of the name has the same naming rules as a main asset.
The restricted asset name takes the form $[restricted protion]. This full name must be less than 30 characters.
Ownership Asset Restricted assets have an associated ownership asset Prerequisites A qualifier Asset Amount 1 - 21,000,000,000 of this asset can be created Cost 1500 EVR Reissuability This asset can be reissued Divisibility (Units) Divisibility (Units) can be 0 - 8 Associated Data This asset can have associated data.
Evrmore Asset Technical Implementation:
TLDR:
If you understand Bitcoin's transaction and UTXO structures and you just want to see an example of how Evrmore differs from Bitcoin in order to support Assets, then look HERE
What is stored on the chain?
All asset creations, reissues, transfers, and tags are special scripts and are part of normal transactions.
When an asset is created, nodes store the asset name, reissuability, divisions, associated data, and respective VOUT information in a database. This is how nodes easily access metadata. During a reissuance, the ownership asset must be sent to prove ownership on-chain and the node will save the new metadata. These asset creation and reissuance transactions are the only places where the metadata is stored on the chain.
This means that, say, a 3rd party wallet sends you asset information. Whatever protocol they are using will need to send the client the VOUT of asset creations or reissues so that the client may verify the integrity of the metadata.
The same is true for asset tags. They only exist on the chain in one singular transaction. The node then keeps track of where that transaction is in a database for verification later.
As discussed earlier, there is also an optional 34-byte data field in the asset script portion of any asset transaction. During creation or reissue of an asset, that datafield determines the IPFS or TXID metadata attached to the asset. During other asset operations it can serve as a general purpose message field.
Burn Addresses and Cost of Asset Operations
In order to create an asset, a certain amount of EVR must be sent to a burn address.
The first two characters are due to Evrmore's P2PKH address type of 0x21 and the seeming random characters at the end of each address are the public key's checksum.
Mainnet Address | Testnet Address | Amount | |
---|---|---|---|
Issue Asset | EXissueAssetXXXXXXXXXXXXXXXXYiYRBD | n1issueAssetXXXXXXXXXXXXXXXXWdnemQ | 500 EVR |
Reissue Asset | EXReissueAssetXXXXXXXXXXXXXXY1ANQH | n1ReissueAssetXXXXXXXXXXXXXXWG9NLd | 100 EVR |
Issue Sub-Asset | EXissueSubAssetXXXXXXXXXXXXXWW1ASo | n1issueSubAssetXXXXXXXXXXXXXbNiH6v | 100 EVR |
Issue Unique Asset | EXissueUniqueAssetXXXXXXXXXXTZjZJ5 | n1issueUniqueAssetXXXXXXXXXXS4695i | 5 EVR |
Issue Message Channel | EXissueMsgChanneLAssetXXXXXXXD3mRa | n1issueMsgChanneLAssetXXXXXXT2PBdD | 100 EVR |
Issue Qualifier | EXissueQuaLifierXXXXXXXXXXXXW5Zxyf | n1issueQuaLifierXXXXXXXXXXXXUysLTj | 1000 EVR |
Issue Sub-Qualifier | EXissueSubQuaLifierXXXXXXXXXUgTjtu | n1issueSubQuaLifierXXXXXXXXXYffPLh | 100 EVR |
Issue Restricted Asset | EXissueRestrictedXXXXXXXXXXXZZMynb | n1issueRestrictedXXXXXXXXXXXXZVT9V | 1500 EVR |
Add Asset Tag | EXaddTagBurnXXXXXXXXXXXXXXXXb5HLXh | n1addTagBurnXXXXXXXXXXXXXXXXX5oLMH | 0.1 EVR |
General Burn | EXBurnXXXXXXXXXXXXXXXXXXXXXXZ8ZjfN | n1BurnXXXXXXXXXXXXXXXXXXXXXXU1qejP | N/A |
Asset Scripts
The following sections describe the low-level implementation details of asset scripts. They assume hat you are familiar with script and
transactions.
We do not endorse any of the assets shown in examples.
If you are looking to use this as a guide to parse the Evrmore chain, please see a note at the end of this section.
For more precise asset naming rules and some of the datafield contents, please also see
HERE and HERE
New asset script
New asset scripts are used to transfer an amount of an asset into and address during an asset create as well as associate metadata with the created asset.
Script portion | Number of bytes |
---|---|
Standard vout script (P2PKH) | Var bytes |
OP_EVR_ASSET (C0) | 1 byte |
Length of the asset data (OP_PUSH) (Not including OP_DROP) | 1 or 2 bytes |
'evr' in ascii (657672) | 3 bytes |
Asset script type 'q' (71) | 1 byte |
Length of asset name (OP_PUSH) | 1 byte |
Asset name in ascii | Var bytes |
Amount in sats (little endian) | 8 bytes |
Divisions (00-08) | 1 byte |
Reissuability (00-01) | 1 byte |
Has associated data (00-01) | 1 byte |
Associated data (Optional; only if previous byte is 01) Contains 1 byte Type (usually 0x12 for IPFS or 0x54 for TXID) + 1 byte Length (usually 0x20) + 32 bytes |
Optional 34 bytes user defined data |
OP_DROP (75) | 1 byte |
On chain example: 8eefce8d264d723b6b8f3cf87bcb400a009d01c2771f94e5cc07af252851aa96 VOUT 3
Ownership asset script
Ownership asset scripts are used in tandem with a new asset script if the new asset has an associated ownership asset. Notice how ownership assets have no extra information, not even an amount.
Script portion | Number of bytes |
---|---|
Standard vout script (P2PKH) | Var bytes |
OP_EVR_ASSET (C0) | 1 byte |
Length of the asset data (OP_PUSH) (Not including OP_DROP) | 1 or 2 bytes |
'evr' in ascii (657672) | 3 bytes |
Asset script type 'o' (6F) | 1 byte |
Length of asset name (OP_PUSH) | 1 byte |
Asset name in ascii | Var bytes |
OP_DROP (75) | 1 byte |
On chain example: 8eefce8d264d723b6b8f3cf87bcb400a009d01c2771f94e5cc07af252851aa96 VOUT 2
Reissue asset script
Reissue asset scripts are used to change an asset's metadata. If the amount is not zero, that amount of the asset is created for the pubkey in the standard script.
Script portion | Number of bytes |
---|---|
Standard vout script (P2PKH) | Var bytes |
OP_EVR_ASSET (C0) | 1 byte |
Length of the asset data (OP_PUSH) (Not including OP_DROP) | 1 or 2 bytes |
'evr' in ascii (657672) | 3 bytes |
Asset script type 'r' (72) | 1 byte |
Length of asset name (OP_PUSH) | 1 byte |
Asset name in ascii | Var bytes |
Amount in sats (little endian) (Amount to add into circulation) | 8 bytes |
Divisions (00-08) (FF for unchanged; can only increase) | 1 byte |
Reissuability (00-01) | 1 byte |
Associated data (Optional; only if associating new data) | 1 type byte, 1 length byte, 32 bytes user data |
OP_DROP (75) | 1 byte |
On chain example: b9d3ba355acbf58e44e893dccbcad06a10af88727adc340eeacd10d11b026f52 VOUT 3
Transfer asset script
Transfer asset scripts are used to transfer an amount of an asset to another address. If transfering an ownership asset, use 100,000,000 (00:E1:F5:05:00:00:00:00) for the sat value.
Script portion | Number of bytes |
---|---|
Standard vout script (P2PKH) | Var bytes |
OP_EVR_ASSET (C0) | 1 byte |
Length of the asset data (OP_PUSH) (Not including OP_DROP) | 1 or 2 bytes |
'evr' in ascii (657672) | 3 bytes |
Asset script type 't' (74) | 1 byte |
Length of asset name (OP_PUSH) | 1 byte |
Asset name in ascii | Var bytes |
Amount in sats (little endian) | 8 bytes |
Associated data (Optional; only if a broadcast) | 1 type byte, 1 length byte, 32 bytes user data |
OP_DROP (75) | 1 byte |
On chain example: bae95f349f15effe42e75134ee7f4560f53462ddc19c47efdd03f85ef4ab8f40 VOUT 0
Null asset tag script
Dictates if an address is qualified for a restricted asset.
If the asset is a qualifier, a flag of 1 denotes a qualification. A flag of 0 denotes a revocation.
If the asset is a restricted asset, a flag of 1 denotes blacklisting the address. A flag of 0 denotes unblacklisting the address.
Script portion | Number of bytes |
---|---|
OP_EVR_ASSET (C0) | 1 byte |
Length of the pubkey h160 (OP_PUSH) | 1 byte |
Pubkey h160 | 20 bytes |
Length of the asset portion (OP_PUSH) | 1 byte |
Length of the asset name (OP_PUSH) | 1 byte |
Qualifier or restricted asset name | Var bytes |
Flag (00-01) | 1 byte |
On chain example: 4ea3369ef6fb57fc26e176ad5903d4684a8c64f641aa0e1f02e5c7428609e060 VOUT 1
Verifier asset tag script
This script must be sent with a new asset script or a reissue asset script for a restricted asset. It associates qualifiers with the restricted asset.
An asset name portion of 'true' in ascii is the default to denote no associated qualifiers.
Script portion | Number of bytes |
---|---|
OP_EVR_ASSET (C0) | 1 byte |
OP_RESERVED (50) | 1 byte |
Length of the asset portion (OP_PUSH) | 1 byte |
Length of the qualifier name(s) (OP_PUSH) | 1 byte |
Qualifier name(s) (joined with & in ascii) | Var bytes |
On chain example: 477a0b2214475d11e316524b500e29837c6763fec256594c2ca7aa369b15888b VOUT 2
Global restriction asset tag script
If the flag is 1, this stops all movement of the restricted asset. A flag of 0 re-enables movement.
Script portion | Number of bytes |
---|---|
OP_EVR_ASSET (C0) | 1 byte |
OP_RESERVED (50) | 1 byte |
OP_RESERVED (50) | 1 byte |
Length of the asset portion (OP_PUSH) | 1 byte |
Length of the asset name (OP_PUSH) | 1 byte |
Restricted asset name | Var bytes |
Flag (00-01) | 1 byte |
On chain example: 2fc0bb7e3a33d12ca08f72add0effc3d059cf63382bebcad96e8923e91c3c537 VOUT 2
Asset transaction structures
Similar to normal Evrmore (and bitcoin) transactions, the amount of an asset from the VINS must equal the amount in the VOUTS (Not including created assets).
A EVR fee must be paid for asset-only transactions just like any other.
All of the protocols pertaining to transactions are the same. The only thing that changes is the scripts.
The order of the VOUTS does matter when creating and reissuing assets.
When creating transactions the created ownership asset (if there is one) must be sent to the same address as the created asset.
Transfer asset transaction
VINS | VOUTS |
---|---|
EVR outpoint(s) for fee Asset outpoint(s) for transfer |
EVR change address(s) Asset transfer script(s) |
On chain example: bae95f349f15effe42e75134ee7f4560f53462ddc19c47efdd03f85ef4ab8f40
Creating a main asset transaction
Note that when creating assets, you get to freely determine what address to send the assets and ownership asset to.VINS | VOUTS |
---|---|
EVR outpoint(s) for fee and burn |
Issue asset burn address EVR change address(s) Ownership asset script New asset script |
On chain example: 8eefce8d264d723b6b8f3cf87bcb400a009d01c2771f94e5cc07af252851aa96
Creating a sub-asset transaction
VINS | VOUTS |
---|---|
EVR outpoint(s) for fee and burn Parent ownership asset outpoint |
Issue sub-asset burn address EVR change address(s) Transfer asset script (For parent ownership asset) Ownership asset script New asset script |
On chain example: 15127b9ea4c21c323dde1f2dd64b24b12efef2adec43b0b5f2e2377ad4aea369
Creating a unique asset transaction
VINS | VOUTS |
---|---|
EVR outpoint(s) for fee and burn Parent ownership asset outpoint |
Issue unique asset burn address EVR change address(s) Transfer asset script (For parent ownership asset) New asset script |
On chain example: 12f39ab78609e312e80c86d1ed3f25937120cbdeee6fc81b1068c400eb1c8518
Creating a reissue asset transaction
VINS | VOUTS |
---|---|
EVR outpoint(s) for fee and burn Ownership asset outpoint |
Reissue asset burn address EVR change address(s) Transfer asset script (For ownership asset) Reissue asset script |
On chain example: 1370040248ba64a2676f125e645a83421adb2859c8c2aacc74017d738309ebda
Creating a message channel asset transaction
VINS | VOUTS |
---|---|
EVR outpoint(s) for fee and burn Parent ownership asset outpoint |
Issue message channel asset burn address EVR change address(s) Transfer asset script (For parent ownership asset) New asset script |
On chain example: d5a13003bff69513b1bb172164ba015afd9bd5afc0a2d654cf10daf1ae470a8c
Creating a qualifier asset transaction
VINS | VOUTS |
---|---|
EVR outpoint(s) for fee and burn |
Issue qualifier asset burn address EVR change address(s) New asset script |
On chain example: 748c7e0996e0a4f599c51635c8fce8ddd6ae0e625be640fa4074f51f2574d7a1
Creating a sub-qualifier asset transaction
VINS | VOUTS |
---|---|
EVR outpoint(s) for fee and burn Parent asset outpoint |
Issue sub-qualifier asset burn address EVR change address(s) Transfer asset script (For parent asset) New asset script |
On chain example: 748c7e0996e0a4f599c51635c8fce8ddd6ae0e625be640fa4074f51f2574d7a1
Creating a restricted asset transaction
VINS | VOUTS |
---|---|
EVR outpoint(s) for fee and burn |
Issue restricted asset burn address EVR change address(s) Verifier asset tag script Ownership asset script New asset script |
On chain example: c1e61a69bfb3a02f15c44b530a76fee8d69c8b54b0cc69c0fab81a583e3e5c33
Creating a reissue restricted asset with new qualifiers transaction
VINS | VOUTS |
---|---|
EVR outpoint(s) for fee and burn Ownership asset outpoint |
Reissue asset burn address EVR change address(s) Verifier asset tag script Transfer asset script (For ownership asset) Reissue asset script |
On chain example: a2b634e160974348647484302501a64bc80a841d4a9ea833498a47e72e987628 (testnet)
Creating a null asset script transaction
VINS | VOUTS |
---|---|
EVR outpoint(s) for fee and burn Qualifier or restricted ownership asset outpoint |
Tag burn address EVR change address(s) Transfer asset script (For qualifier or restricted ownership asset) Null asset tag script |
On chain example: 0332beef9c76cf300b166cf5f56e8acd83788201eae1fc93f05364c28cd882f2
Creating a freeze restricted asset transaction
VINS | VOUTS |
---|---|
EVR outpoint(s) for fee and burn Restricted ownership asset outpoint |
Tag burn address EVR change address(s) Transfer asset script (For restricted ownership asset) Global restriction asset tag script |
On chain example: cb6f7a7cf7d65d532101a259ef37cebff77ccb1e9f86823910537d6580071668