Tags
What are Tags?
Tags are content trackers that can hold any string based content, as well as providing a way to store a checksum of the content and the algorithm used to produce the checksum. Tags can also easily be updated to change the underlying content with the option of updating the checksum and algorithm fields if necessary.
In short, Tags allow developers to attach specific, verifiable content to Items that will travel with changes in Item ownership. Anyone can verify the contents of a tag by running the defined checksum algorithm over the content and comparing to the checksum stored on the tag.
Tag Name Standards
The following are existing tag name standards in use throughout Marble.
Name
Description
image
An item's image that can be consumed by a frontend UI.
title
A title that identifies the item.
subtitle
A short tweet-length subtitle for the item.
Shared Tags
The Tags layer also includes Shared Tags, which funciton the same as normal Item Tags but are assigned to an entire group instead of an individual item. Use Shared Tags to handle Tags that all items inherit or to save on RAM costs.
Tag Locks
Tags can also be locked, which prevents any further changes to the given Tag and effectively makes it immutable. Once locked, the tag can never become unlocked again.
Table Breakdown
Table Name: tags
Table Scoping: item.serial
Field Name
Field Type
Description
tag_name
name
Tag Name Identifier
content
string
Tag Content (JSON, REST Endpoint, IPFS CID, etc.)
checksum
string
Checksum of content
algorithm
string
Algorithm used to produce checksum
locked
bool
Tag is locked if true
No extra indices.
Create a New Tag
To create a new tag for an Item call the newtag()
action.
Required Authority: group.manager
Note that parameters marked as optional still require the 'null' argument in their place and can't simply be omitted in the transaction.
Action Parameters
Name
Type
Example
Description
serial
uint64_t
5
The serial number of the Item to tag.
tag_name
name
tag1
The name of the new tag.
content
string
"content here"
The content of the tag (JSON, Markdown, IPFS CID, etc).
checksum
optional<string>
"f83jfya7"
Checksum of the content field.
algorithm
optional<string>
"sha256"
The algorithm used to produce the checksum.
shared
bool
false
Create shared tag if true.
Examples
Update a Tag
To update a tag call the updatetag()
action.
Required Authority: group.manager
Action Parameters
Name
Type
Example
Description
serial
uint64_t
5
The serial number of the Item with the tag to update.
tag_name
name
tag1
The name of the tag to update.
new_content
string
"new content here"
The new content for the tag.
new_checksum
optional<string>
"mfau72n4"
The checksum of the new content.
new_algorithm
optional<string>
"md5"
The algorithm used to produce the checksum.
shared
bool
true
Update a shared tag if true.
Examples
Lock a Tag
Lock a tag and prevent future updates with the locktag()
action.
Required Authority: group.manager
Action Parameters
Name
Type
Example
Description
group_name
name
testgroup
The name of the group with the behavior to lock.
behavior_name
name
transfer
The name of the behavior to lock.
shared
bool
true
Lock a shared tag if true.
Examples
Remove a Tag
To remove a tag from an Item call the rmvtag()
action.
Required Authority: group.manager
Action Parameters
Name
Type
Example
Description
serial
uint64_t
5
The serial of the Item with the Tag.
tag_name
name
tag1
The name of the tag to remove.
memo
string
"Removing Tag"
An optional memo field.
shared
bool
false
Remove a shared tag if true.
Examples
Last updated