Hive Developer Portal
Ops:
Virtual Ops:
An operation on Hive is a way of expressing intention on the blockchain.
They are also known as Broadcast Operations. They have types, like vote
or comment
. They pass parameters like author
and permlink
, depending
on what their purpose is.
Operations are grouped into transactions and passed as parameters to
methods like network_broadcast_api.broadcast_transaction
, in
the operations
array. Transactions must be signed in order for the
blockchain to accept them. Here is an example of a transaction that
contains one operation (shown without signatures).
{
"jsonrpc":"2.0",
"method":"condenser_api.broadcast_transaction",
"params":{
"trx":{
"ref_block_num":1097,
"ref_block_prefix":2181793527,
"expiration":"2016-03-24T18:00:21",
"operations":[
[
"vote",
{
"voter":"hiveio",
"author":"alice",
"permlink":"a-post-by-alice",
"weight":10000
}
]
],
"extensions":[],
"signatures":[]
}
},
"id":1
}
Also see: Broadcast Transaction
- SDK Reference
- Related
vote
This operation is used to cast a vote on a post/comment. The primary purpose of voting is to express Proof-of-Brain about content to the blockchain. When a vote is cast, the content is considered in the consensus rules involving author and curation rewards.
A secondary aspect to voting involves reputation, which is not part of consensus.
Reputation Rules:
- Must have non-negative reputation to effect another user’s reputation.
- If you are down voting another user, you must have more reputation than them to impact their reputation.
Notes:
voter
: must be a valid account nameauthor
: must be a valid account namepermlink
: must be content created byauthor
weight
: absolute value must not be more than 10000 (100.00 %).
Roles: posting active owner
Parameters: voter author permlink weight
Example Op:
[
"vote",
{
"voter": "hiveio",
"author": "alice",
"permlink": "a-post-by-alice",
"weight": 10000
}
]
- SDK Reference
- Related
comment
Creates a post/comment.
Parameters:
parent_author
- the author that comment is being submitted to, when posting a new blog this is an empty stringparent_permlink
- specific post that comment is being submitted to, when posting a new blog this is an empty stringauthor
- author of the post/comment being submitted (account name)permlink
- unique string identifier for the post, linked to the author of the posttitle
- human readable title of the post being submitted, this is often blank when commentingbody
- body of the post/comment being submitted, ordiff-match-patch
when updatingjson_metadata
- JSON object string
Rules:
- The “title” must not be longer than 256 bytes
- The “title” must be UTF-8
- The “body” must be larger than 0 bytes
- The “body” much also be UTF-8
Additional Parameter Definitions:
permlink
- Two authors may have the same permlink as it’s unique to the author only. For example, there could be two authors, alice and bob, and both could have a permlink offirstpost
json_metadata
- There is no blockchain enforced validation onjson_metadata
, but the community has adopted a particular structure. It should contain a JSON object with the following keys:tags
- An array of up to 5 strings. Although the blockchain will accept more than 5, the tags plugin only looks at the first fiveapp
- A user agent style application identifier. Typicallyapp_name/version
, e.g.hiveblog/0.1
format
- The format of the body, e.g. markdown- In addition to the above keys, application developers are free to add any other keys they want to help manage the content they broadcast.
A typical comment
operation would look similar to the below:
{
"author": "Joe",
"title": "A post by Joe",
"body": "Look at my awesome post",
"parent_author": "",
"parent_permlink": "hiveio",
"permlink": "a-post-by-joe",
"json_metadata": "{\"tags\":[\"hiveio\",\"example\",\"tags\"]}"
}
Create vs. Update
When a comment is first broadcast, the permlink
must be unique for the author
. Otherwise, it is interpreted as an update operation. Updating will either replace the entire body with the latest operation or patch the body if using diff-match-patch
.
For example, if we have a paragraph that has already been broadcast:
“It’s been quite a lot of fun working with these wonderful folk on the Open Hive Network”
And we want to change it to:
“It’s been quite a lot of fun working with these wonderful people on the Open Hive Network”
We can broadcast the comment
operation with the following body
:
- "@@ -406,12 +406,14 @@"
- ful
- -folk
- +people
- at
The blockchain will know that this means we have changed the word ‘folk’ to ‘people’ within that paragraph so when fetching this content, this diff will be applied.
In addition to body, the title
and json_metadata
fields will also be replaced by the latest operation.
See: comment_options
, vote
, custom_json
It should also be noted that a vote
operation can accompany a comment
and comment_options
in the same transaction when the author self votes.
Roles: posting active owner
Parameters: parent_author parent_permlink author permlink title body json_metadata
Example Op:
[
"comment",
{
"parent_author": "",
"parent_permlink": "hiveio",
"author": "alice",
"permlink": "a-post-by-alice",
"title": "A Post By Alice",
"body": "This is my post.",
"json_metadata": "{\"tags\":[\"hiveio\",\"example\",\"tags\"]}"
}
]
- SDK Reference
- Related
transfer
Transfers asset from one account to another. The memo is plain-text, any encryption on the memo is up to a higher level protocol.
Notes:
- Transferring of Hive Power (VESTS) is not allowed.
- Cannot transfer a negative amount (aka: stealing).
- Memo must be less than 2048 bytes.
- Memo must be UTF-8.
Roles: active owner
Parameters: from to amount memo
Example Op:
[
"transfer",
{
"from": "hiveio",
"to": "alice",
"amount": {
"amount": "10",
"precision": 3,
"nai": "@@000000021"
},
"memo": "Thanks for all the fish."
}
]
transfer_to_vesting
This operation converts HIVE into VFS (Vesting Fund Shares) at the current exchange rate. With this operation it is possible to give another account vesting shares so that faucets can pre-fund new accounts with vesting shares.
Notes:
- Amount must be in HIVE.
- Must transfer a nonzero amount.
See: delayed_voting
Roles: active owner
Parameters: from to amount
Example Op:
[
"transfer_to_vesting",
{
"from": "alice",
"to": "",
"amount": {
"amount": "357000",
"precision": 3,
"nai": "@@000000021"
}
}
]
withdraw_vesting
At any given point in time an account can be withdrawing from their vesting shares. A user may change the number of shares they wish to cash out at any time between 0 and their total vesting stake.
After applying this operation, vesting_shares will be withdrawn at a rate of vesting_shares/13 per week for 13 weeks starting one week after this operation is included in the blockchain.
This operation is not valid if the user has no vesting shares.
Notes:
- Amount must be VESTS.
Roles: active owner
Parameters: account vesting_shares
Example Op:
[
"withdraw_vesting",
{
"account": "hiveio",
"vesting_shares": {
"amount": "200000000000",
"precision": 6,
"nai": "@@000000037"
}
}
]
limit_order_create
This operation creates a limit order and matches it against existing
open orders. The maximum expiration time for any limit order is 28 days from head_block_time()
.
Roles: active owner
Parameters: owner orderid amount_to_sell min_to_receive fill_or_kill expiration
Example Op:
[
"limit_order_create",
{
"owner": "hiveio",
"orderid": 10,
"amount_to_sell": {
"amount": "9950",
"precision": 3,
"nai": "@@000000021"
},
"min_to_receive": {
"amount": "3500",
"precision": 3,
"nai": "@@000000013"
},
"fill_or_kill": false,
"expiration": "2035-10-29T06:32:22"
}
]
limit_order_cancel
Cancels an internal market order and returns the balance to owner.
Roles: active owner
Parameters: owner orderid
Example Op:
[
"limit_order_cancel",
{"owner": "hiveio", "orderid": 10}
]
price
Roles: active owner
Parameters: base quote
feed_publish
Witnesses regularly publish a price feed that enables the blockchain to calculate a conversion ratio between HBD and HIVE.
Feeds can only be published by the top N witnesses which are included in every round and are used to define the exchange rate between HIVE and the US dollar.
Roles: active owner
Parameters: publisher exchange_rate
Example Op:
[
"feed_publish",
{
"publisher": "alice",
"exchange_rate": {
"base": {
"amount": "1000",
"precision": 3,
"nai": "@@000000013"
},
"quote": {
"amount": "1000000",
"precision": 3,
"nai": "@@000000021"
}
}
}
]
convert
This operation instructs the blockchain to start a conversion between HIVE and HBD, the funds are deposited after 3.5 days.
The identifier requestid
will match the one found in fill_convert_request when the request is executed.
Roles: active owner
Parameters: owner requestid amount
Example Op:
[
"convert",
{
"owner": "hiveio",
"requestid": 1467592156,
"amount": {
"amount": "5000",
"precision": 3,
"nai": "@@000000013"
}
}
]
account_create
Broadcasted to the blockchain to create a new account.
Roles: active owner
Parameters: fee creator new_account_name owner active posting memo_key json_metadata
Example Op:
[
"account_create",
{
"fee": {
"amount": "0",
"precision": 3,
"nai": "@@000000021"
},
"creator": "hiveio",
"new_account_name": "alice",
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM5b4i9gBqvh4sbgrooXPu2dbGLewNPZkXeuNeBjyiswnu2szgXx",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM7ko5nzqaYfjbD4tKWGmiy3xtT9eQFZ3Pcmq5JmygTRptWSiVQy",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM5xAKxnMT2y9VoVJdF63K8xRQAohsiQy9bA33aHeyMB5vgkzaay",
1
]
]
},
"memo_key": "STM8ZSyzjPm48GmUuMSRufkVYkwYbZzbxeMysAVp7KFQwbTf98TcG",
"json_metadata": "{}"
}
]
account_update
Updates account information.
Roles: active owner
Parameters: account owner active posting memo_key json_metadata
Example Op:
[
"account_update",
{
"account": "hiveio",
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM6FATHLohxTN8RWWkU9ZZwVywXo6MEDjHHui1jEBYkG2tTdvMYo",
1
],
[
"STM76EQNV2RTA6yF9TnBvGSV71mW7eW36MM7XQp24JxdoArTfKA76",
1
]
]
},
"memo_key": "STM6FATHLohxTN8RWWkU9ZZwVywXo6MEDjHHui1jEBYkG2tTdvMYo",
"json_metadata": ""
}
]
witness_update
Users who wish to become a witness must apply for the position and allow voting to begin.
If the owner isn’t a witness they will become a witness. If the block_signing_key
is null then the witness is removed from
contention. The network will pick the top 21 witnesses for producing blocks.
Notes:
url
cannot be more than 2048 bytes.url
must be UTF-8.fee
should be zero and not confused withprops["account_creation_fee"]
(see: #410).
Roles: active owner
Parameters: owner url block_signing_key props fee
Example Op:
[
"witness_update",
{
"owner": "alice",
"url": "witness-category/my-witness",
"block_signing_key": "STM8LoQjQqJHvotqBo7HjnqmUbFW9oJ2theyqonzUd9DdJ7YYHsvD",
"props": {
"account_creation_fee": {
"amount": "100000",
"precision": 3,
"nai": "@@000000021"
},
"maximum_block_size": 131072,
"hbd_interest_rate": 1000
},
"fee": {
"amount": "0",
"precision": 3,
"nai": "@@000000021"
}
}
]
account_witness_vote
All accounts with a VFS (Vesting Fund Shares) can vote for or against
any witness, up to 30 witnesses. See: HIVE_MAX_ACCOUNT_WITNESS_VOTES
If a proxy is specified then all existing votes are removed.
Roles: active owner
Parameters: account witness approve
Example Op:
[
"account_witness_vote",
{
"account": "alice",
"witness": "bob",
"approve": true
}
]
account_witness_proxy
Allows one account to delegate witness votes to another account.
If a proxy is specified then all existing witness votes are removed.
Note, as of HF21, setting a witness proxy also applies to Hive DHF proposal approval. If you trust someone to cast your witness votes, it is assumed that you would also trust them to cast your proposal votes.
Roles: active owner
Parameters: account proxy
Example Op:
[
"account_witness_proxy",
{"account": "alice", "proxy": "bob"}
]
pow
Disabled in HF14.
Roles: active owner
Parameters: worker input signature work
Example Op:
[
"pow",
{
"worker_account": "admin",
"block_id": "000004433bd4602cf5f74dbb564183837df9cef8",
"nonce": 82,
"work": {
"worker": "STM65wH1LZ7BfSHcK69SShnqCAH5xdoSZpGkUjmzHJ5GCuxEK9V5G",
"input": "59b009f89477919f95914151cef06f28bf344dd6fb7670aca1c1f4323c80446b",
"signature": "1f3f83209097efcd01b7d6f27ce726164323d503d6fcf4d55bfb7cb3032796f6766738b36062b5850d69447fdf9c091cbc70825df5eeacc4710a0b11ffdbf0912a",
"work": "0b62f4837801cd857f01d6a541faeb13d6bb95f1c36c6b4b14a47df632aa6c92"
},
"props": {
"account_creation_fee": {
"amount": "100000",
"precision": 3,
"nai": "@@000000021"
},
"maximum_block_size": 131072,
"hbd_interest_rate": 1000
}
}
]
custom
Provides a generic way to add higher level protocols on top of witness consensus.
There is no validation for this operation other than that required auths are valid.
Roles: active owner
Parameters: required_auths id data
Example Op:
[
"custom",
{
"required_auths": ["bytemaster"],
"id": 777,
"data": "0a627974656d617374657207737465656d697402a3d13897d82114466ad87a74b73a53292d8331d1bd1d3082da6bfbcff19ed097029db013797711c88cccca3692407f9ff9b9ce7221aaa2d797f1692be2215d0a5f6d2a8cab6832050078bc5729201e3ea24ea9f7873e6dbdc65a6bd9899053b9acda876dc69f11a13df9ca8b26b6"
}
]
witness_block_approve
This is an operation for witnesses to approve the block quicker
Roles: witness_signature
Parameters: required_auths witness block_id
delete_comment
A post or comment can only be deleted when it has no positive rshares applied (i.e., has no pending payout from upvotes) and has no replies. They are not really deleted from the blockchain as they are still recorded in the original block.
Roles: posting active owner
Parameters: author permlink
Example Op:
[
"delete_comment",
{
"author": "alice",
"permlink": "a-post-by-alice"
}
]
- SDK Reference
- Related
custom_json
Serves the same purpose as custom
but also supports required posting
authorities. Unlike custom
, this operation is designed to be human
readable/developer friendly.
follow
As of HF9, the follow plugin will track follow/unfollow/ignore events.
reblog
As of HF14, allows users to share blogs they find with those who follow them. This change implemented entirely outside the blockchain consensus which means that reblogging does not create a new post, it merely shares an existing post with people who follow you.
witness
As of HF18, the witness plugin has a custom operation called
enable_content_editing
that allows a user to signal they want to edit
their content. By consensus, content is editable indefinitely, but is
soft forked to be frozen after payout. This operation requires an
active
key and is designed to prevent vandalism if a posting key is
compromised. #1017
Roles: posting active owner
Parameters: required_auths required_posting_auths id json
Example Op:
[
"custom_json",
{
"required_auths": [],
"required_posting_auths": ["hiveio"],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"hiveio\",\"following\":\"alice\",\"what\":[\"blog\"]}]"
}
]
[
"custom_json",
{
"required_auths": [],
"required_posting_auths": ["alice"],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"alice\",\"following\":\"eve\",\"what\":[\"ignore\"]}]"
}
]
[
"custom_json",
{
"required_auths": [],
"required_posting_auths": ["bob"],
"id": "reblog",
"json": "[\"reblog\", {\"account\":\"bob\",\"author\":\"alice\",\"permlink\":\"a-post-by-alice\"}]"
}
]
[
"custom_json",
{
"required_auths": ["alice"],
"required_posting_auths": [],
"id": "witness",
"json": "[\"enable_content_editing\", {\"account\": \"alice\", \"relock_time\": \"2100-01-01T12:00:00\"}]"
}
]
comment_options
Authors of posts may not want all of the benefits that come from creating a post. This operation allows authors to update properties associated with their post.
Typically, these options will accompany a comment
operation in the same transaction.
As of HF17, content can specify beneficiaries to receive a part of
their author rewards. The beneficiaries are specified in the extension
field of the comment_options_operation
and is a sorted vector (by
account name) of account name, weight pairs. The beneficiaries can only
be specified once and must be specified before any votes are cast on the
comment. Most apps are already adding a comment_options
in the
transaction that creates the comment, so this should not be much of a
challenge to add to existing apps.
Notes:
- The max_accepted_payout may be decreased, but never increased.
- The percent_hbd may be decreased, but never increased.
- Part of
comment_option
validation process, to be called whenallowed_vote_assets
object has been added as comment option extension are:- When votable assets are greater than maximum votable assets: “Too much votable assets specified”
- When the symbol is not allowed in the list for votable assets: “HIVE can not be explicitly specified as one of allowed_vote_assets”
max_accepted_payout
: HBD value of the maximum payout this post will receivepercent_hbd
: the percent of Hive Dollars to key, unkept amounts will be received as Hive Powerallow_votes
: allows/disallows a post to receive votes;allow_curation_rewards
: allows/disllows voters to recieve curation rewards. Rewards return to reward fund.beneficiaries
- Must have at least one (empty
beneficiaries
not allowed). - Cannot have more than 127 (witness currently only allow up to 8).
- Cannot allocate more than 100% of rewards to one account.
- Cannot allocate more than 100% of rewards to a comment.
- Must be specified in sorted order (account ascending; no duplicates).
- Must have at least one (empty
Roles: posting active owner
Parameters: author permlink max_accepted_payout percent_hbd allow_votes allow_curation_rewards extensions
Example Op:
[
"comment_options",
{
"author": "alice",
"permlink": "a-post-by-alice",
"max_accepted_payout": {
"amount": "1000000",
"precision": 3,
"nai": "@@000000013"
},
"percent_hbd": 5000,
"allow_votes": true,
"allow_curation_rewards": true,
"extensions": []
}
]
[
"comment_options",
{
"author": "bob",
"permlink": "a-post-with-a-beneficiary",
"max_accepted_payout": {
"amount": "1000000",
"precision": 3,
"nai": "@@000000013"
},
"percent_hbd": 63,
"allow_votes": true,
"allow_curation_rewards": true,
"extensions": [
[
0,
{
"beneficiaries": [{"account": "charlie", "weight": 1000}]
}
]
]
}
]
[
"comment_options",
{
"author": "charlie",
"permlink": "a-post-with-multiple-beneficiaries",
"max_accepted_payout": {
"amount": "1000000",
"precision": 3,
"nai": "@@000000013"
},
"percent_hbd": 62688,
"allow_votes": true,
"allow_curation_rewards": true,
"extensions": [
[
0,
{
"beneficiaries": [
{"account": "david", "weight": 500},
{"account": "erin", "weight": 500},
{"account": "faythe", "weight": 1000},
{"account": "frank", "weight": 500}
]
}
]
]
}
]
set_withdraw_vesting_route
Allows an account to setup a vesting withdraw but with the additional request for the funds to be transferred directly to another account’s balance rather than the withdrawing account. In addition, those funds can be immediately vested again, circumventing the conversion from vests to hive and back, guaranteeing they maintain their value.
Notes:
- Percent must be valid hive percent.
Roles: active owner
Parameters: from_account to_account percent auto_vest
Example Op:
[
"set_withdraw_vesting_route",
{
"from_account": "alice",
"to_account": "bob",
"percent": 10000,
"auto_vest": true
}
]
limit_order_create2
This operation is identical to limit_order_create
except it serializes
the price rather than calculating it from other fields. The maximum expiration time for any limit order is 28 days from head_block_time()
.
- For prices involving Hive Dollars (HBD), the base asset must be HBD.
- For prices involving SMT assets, the base asset must be HIVE.
- The quote must be a power of 10.
See: #1573
Roles: active owner
Parameters: owner orderid amount_to_sell exchange_rate fill_or_kill expiration
Example Op:
[
"limit_order_create2",
{
"owner": "alice",
"orderid": 492991,
"amount_to_sell": {
"amount": "1",
"precision": 3,
"nai": "@@000000013"
},
"exchange_rate": {
"base": {
"amount": "1",
"precision": 3,
"nai": "@@000000013"
},
"quote": {
"amount": "10",
"precision": 3,
"nai": "@@000000021"
}
},
"fill_or_kill": false,
"expiration": "2017-05-12T23:11:13"
}
]
claim_account
Requests from users or dApps to get an account creation ticket in order to create new accounts. These operations are issued before the actual creation of the account on the blockchain.
See: 0.20.2 Release Notes
Roles: active owner
Parameters: fee creator extensions
Example Op:
[
"claim_account",
{
"fee": {
"amount": "0",
"precision": 3,
"nai": "@@000000021"
},
"creator": "hiveio",
"extensions": []
}
]
create_claimed_account
When used with claim_account
, works identically to account_create
. See: 0.20.2 Release Notes
Roles: active owner
Parameters: creator new_account_name owner active posting memo_key json_metadata
Example Op:
[
"create_claimed_account",
{
"creator": "hiveio",
"new_account_name": "alice",
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM5b4i9gBqvh4sbgrooXPu2dbGLewNPZkXeuNeBjyiswnu2szgXx",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM7ko5nzqaYfjbD4tKWGmiy3xtT9eQFZ3Pcmq5JmygTRptWSiVQy",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM5xAKxnMT2y9VoVJdF63K8xRQAohsiQy9bA33aHeyMB5vgkzaay",
1
]
]
},
"memo_key": "STM8ZSyzjPm48GmUuMSRufkVYkwYbZzbxeMysAVp7KFQwbTf98TcG",
"json_metadata": "{}"
}
]
request_account_recovery
All account recovery requests come from a listed recovery account. This is secure based on the assumption that only a trusted account should be a recovery account. It is the responsibility of the recovery account to verify the identity of the account holder of the account to recover by whichever means they have agreed upon. The blockchain assumes identity has been verified when this operation is broadcast.
This operation creates an account recovery request which the account to recover has 24 hours to respond to before the request expires and is invalidated.
There can only be one active recovery request per account at any one time. Pushing this operation for an account to recover when it already has an active request will either update the request to a new new owner authority and extend the request expiration to 24 hours from the current head block time or it will delete the request. To cancel a request, simply set the weight threshold of the new owner authority to 0, making it an open authority.
Additionally, the new owner authority must be satisfiable. In other words, the sum of the key weights must be greater than or equal to the weight threshold.
This operation only needs to be signed by the the recovery account. The account to recover confirms its identity to the blockchain in the recover account operation.
Notes:
recovery_account
: The recovery account is listed as the recovery account on the account to recover.account_to_recover
: The account to recover. This is likely due to a compromised owner authority.new_owner_authority
: The new owner authority the account to recover wishes to have. This is secret known by the account to recover and will be confirmed in arecover_account
.
See: #169
Roles: active owner
Parameters: recovery_account account_to_recover new_owner_authority extensions
Example Op:
[
"request_account_recovery",
{
"recovery_account": "hiveio",
"account_to_recover": "alice",
"new_owner_authority": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM6LYxj96zdypHYqgDdD6Nyh2NxerN3P1Mp3ddNm7gci63nfrSuZ",
1
]
]
},
"extensions": []
}
]
recover_account
Broadcasted to the blockchain by the hacked account’s owner to confirm the account recovery request sent by its Recovery Account.
Roles: owner
Parameters: account_to_recover new_owner_authority recent_owner_authority extensions
Example Op:
[
"recover_account",
{
"account_to_recover": "alice",
"new_owner_authority": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM7j3nhkhHTpXqLEvdx2yEGhQeeorTcxSV6WDL2DZGxwUxYGrHvh",
1
]
]
},
"recent_owner_authority": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM78Xth94gNxp8nmByFV2vNAhg9bsSdviJ6fQXUTFikySLK3uTxC",
1
]
]
},
"extensions": []
}
]
change_recovery_account
Each account lists another account as their recovery account.
The recovery account has the ability to create account_recovery_requests
for the account to recover. An account can change their recovery account
at any time with a 30 day delay. This delay is to prevent
an attacker from changing the recovery account to a malicious account
during an attack. These 30 days match the 30 days that an
owner authority is valid for recovery purposes.
On account creation the recovery account is set either to the creator of the account (The account that pays the creation fee and is a signer on the transaction) or to the empty string if the account was mined. An account with no recovery has the top voted witness as a recovery account, at the time the recover request is created. Note: This does mean the effective recovery account of an account with no listed recovery account can change at any time as witness vote weights. The top voted witness is explicitly the most trusted witness according to stake.
See: #169, PY: Account Recovery
Roles: owner
Parameters: account_to_recover new_recovery_account extensions
Example Op:
[
"change_recovery_account",
{
"account_to_recover": "alice",
"new_recovery_account": "bob",
"extensions": []
}
]
escrow_transfer
The purpose of this operation is to enable someone to send money contingently to another individual. The funds leave the from account and go into a temporary balance where they are held until from releases it to to or to refunds it to from.
In the event of a dispute the agent can divide the funds between the to/from account. Disputes can be raised any time before or on the dispute deadline time, after the escrow has been approved by all parties.
This operation only creates a proposed escrow transfer. Both the agent and to must agree to the terms of the arrangement by approving the escrow.
The escrow agent is paid the fee on approval of all parties. It is up to the escrow agent to determine the fee.
Escrow transactions are uniquely identified by from
and escrow_id
,
the escrow_id
is defined by the sender.
Roles: active owner
Parameters: from to agent escrow_id hbd_amount hive_amount fee ratification_deadline escrow_expiration json_meta
Example Op:
[
"escrow_transfer",
{
"from": "alice",
"to": "bob",
"hbd_amount": {
"amount": "1000",
"precision": 3,
"nai": "@@000000013"
},
"hive_amount": {
"amount": "0",
"precision": 3,
"nai": "@@000000021"
},
"escrow_id": 23456789,
"agent": "charlie",
"fee": {
"amount": "100",
"precision": 3,
"nai": "@@000000013"
},
"json_meta": "{}",
"ratification_deadline": "2017-02-26T11:22:39",
"escrow_expiration": "2017-02-28T11:22:39"
}
]
escrow_dispute
If either the sender or receiver of an escrow payment has an issue, they can raise it for dispute. Once a payment is in dispute, the agent has authority over who gets what.
Roles: active owner
Parameters: from to agent who escrow_id
Example Op:
[
"escrow_dispute",
{
"from": "alice",
"to": "bob",
"agent": "charlie",
"who": "alice",
"escrow_id": 72526562
}
]
escrow_release
This operation can be used by anyone associated with the escrow transfer to release funds if they have permission.
The permission scheme is as follows:
- If there is no dispute and escrow has not expired, either party can release funds to the other.
- If escrow expires and there is no dispute, either party can release funds to either party.
- If there is a dispute regardless of expiration, the agent can release funds to either party following whichever agreement was in place between the parties.
After the expiration, the receiver can use this operation to claim the funds. If the funds are not claimed by the receiver within 1 month of expiration then the sender can reclaim the funds.
Roles: active owner
Parameters: from to agent who receiver escrow_id hbd_amount hive_amount
Example Op:
[
"escrow_release",
{
"from": "alice",
"to": "bob",
"agent": "charlie",
"who": "charlie",
"receiver": "bob",
"escrow_id": 72526562,
"hbd_amount": {
"amount": "5000",
"precision": 3,
"nai": "@@000000013"
},
"hive_amount": {
"amount": "0",
"precision": 3,
"nai": "@@000000021"
}
}
]
pow2
Disabled in HF17.
Roles: active owner
Parameters: input pow_summary
Example Op:
[
"pow2",
{
"work": [
0,
{
"input": {
"worker_account": "alice",
"prev_block": "003ea604345523c344fbadab605073ea712dd76f",
"nonce": "1052853013628665497"
},
"pow_summary": 3817904373
}
],
"props": {
"account_creation_fee": {
"amount": "1",
"precision": 3,
"nai": "@@000000021"
},
"maximum_block_size": 131072,
"hbd_interest_rate": 1000
}
}
]
escrow_approve
After creating an escrow transaction, both the receiver or the agent can approve or disapprove the deal. If nobody approves or disapproves the transaction before the deadline date, the funds are returned to the sender.
The agent and to accounts must approve an escrow transaction for it to be valid on the blockchain. Once a party approves the escrow, they cannot revoke their approval. Subsequent escrow approve operations, regardless of the approval, will be rejected.
Roles: active owner
Parameters: from to agent who escrow_id approve
Example Op:
[
"escrow_approve",
{
"from": "alice",
"to": "bob",
"agent": "charlie",
"who": "charlie",
"escrow_id": 59102208,
"approve": true
}
]
transfer_to_savings
For time locked savings accounts. A user can place Hive and Hive Dollars into time locked savings balances. Funds can be withdrawn from these balances after a three day delay. The point of this addition is to mitigate loss from hacked and compromised account. The max a user can lose instantaneously is the sum of what the hold in liquid balances. Assuming an account can be recovered quickly, loss in such situations can be kept to a minimum.
Roles: active owner
Parameters: from to amount memo
Example Op:
[
"transfer_to_savings",
{
"from": "alice",
"to": "alice",
"amount": {
"amount": "1000",
"precision": 3,
"nai": "@@000000013"
},
"memo": ""
}
]
transfer_from_savings
Funds withdrawals from the savings to an account take three days. Their execution is recorded in the blockchain with the fill_transfer_from_savings
virtual operation.
Roles: active owner
Parameters: from request_id to amount memo
Example Op:
[
"transfer_from_savings",
{
"from": "alice",
"request_id": 101,
"to": "alice",
"amount": {
"amount": "1000",
"precision": 3,
"nai": "@@000000013"
},
"memo": ""
}
]
cancel_transfer_from_savings
Funds withdrawals from the savings can be canceled at any time before it is executed.
Roles: active owner
Parameters: from request_id
Example Op:
[
"cancel_transfer_from_savings",
{"from": "alice", "request_id": 1}
]
decline_voting_rights
An account can chose to decline their voting rights after a 30 day delay. This includes voting on content and witnesses. The voting rights cannot be acquired again once they have been declined. This is only to formalize a smart contract between certain accounts and the community that currently only exists as a social contract.
Roles: owner
Parameters: account decline
Example Op:
[
"decline_voting_rights",
{"account": "judy", "decline": true}
]
claim_reward_balance
Author and curator rewards are not automatically transferred to the account’s balances. One has to issue a claim_reward_balance
operation to trigger the transfer from the reward pool to its balance.
Roles: posting active owner
Parameters: account reward_hive reward_hbd reward_vests
Example Op:
[
"claim_reward_balance",
{
"account": "alice",
"reward_hive": {
"amount": "17",
"precision": 3,
"nai": "@@000000021"
},
"reward_hbd": {
"amount": "11",
"precision": 3,
"nai": "@@000000013"
},
"reward_vests": {
"amount": "185025103",
"precision": 6,
"nai": "@@000000037"
}
}
]
delegate_vesting_shares
Delegate vesting shares from one account to the other. The vesting
shares are still owned by the original account, but content voting
rights and resource credit are transferred to the receiving
account. This sets the delegation to vesting_shares
, increasing it or
decreasing it as needed (i.e. a delegation of 0 removes the delegation).
When a delegation is removed the shares are placed in limbo for a week to prevent using them and voting on the same content twice.
Also see:
Roles: active owner
Parameters: delegator delegatee vesting_shares
Example Op:
[
"delegate_vesting_shares",
{
"delegator": "alice",
"delegatee": "bob",
"vesting_shares": {
"amount": "94599167138276",
"precision": 6,
"nai": "@@000000037"
}
}
]
account_create_with_delegation
Deprecated as of HF20 If an account creation service would still like to provide a delegation of Hive Power
to the accounts they create, they can still follow the account creation operation with an additional call to
delegate_vesting_shares
to add a delegation of HP to the account.
Instead of paying the entire account creation fee with Hive, creators can now pay a smaller fee (30x less) and delegate some Hive Power for 30 days. The exact amount is 5 * min_fee + HIVE_POWER == 150 * min_fee. You can pay any combination of HIVE and Hive Power along that curve (so long as the minimum fee is paid).
The witness voted HIVE fee is now the minimum required HIVE fee for delegation. Witnesses should reduce their fee by 30x when the hardfork goes live to preserve the same required fee for an all HIVE account creation.
Also see:
Roles: active owner
Parameters: fee delegation creator new_account_name owner active posting memo_key json_metadata extensions
Example Op:
[
"account_create_with_delegation",
{
"fee": {
"amount": "3000",
"precision": 3,
"nai": "@@000000021"
},
"delegation": {
"amount": "0",
"precision": 6,
"nai": "@@000000037"
},
"creator": "hiveio",
"new_account_name": "alice",
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM5Tki3ecCdCCHCjhhwvQvXuKryL2s34Ma6CXsRzntSUTYVYxCQ9",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM6LUoAA8gCL9tHRz7v9xcwR4ZWD3KDRHP5t1U7UAZHdfanLxyBE",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM8anmpHdfVE4AmwsDpcSXpRsydHysEbv6vGJkRQy1d1CC83zeTA",
1
]
]
},
"memo_key": "STM67RYDyEkP1Ja1jFehJ45BFGA9oHHUnRnYbxKJEtMhVQiHW3S3k",
"json_metadata": "{}",
"extensions": []
}
]
witness_set_properties
Added in HF20 to replace the witness_update
which was not easily extendable. While it is recommended to use witness_set_properties
, witness_update
will continue to work. See: Witness Parameters
Roles: block_signing active owner
Parameters: owner props extensions
Example Op:
[
"witness_set_properties",
{
"owner": "alice",
"props": {
"account_creation_fee": "0.000 HIVE",
"account_subsidy_budget": 10000,
"account_subsidy_decay": 330782,
"maximum_block_size": 65536,
"hbd_interest_rate": "0.000 HIVE",
"hbd_exchange_rate": {"base": "0.000 HBD", "quote": "0.000 HIVE"},
"url": "68747470733A2F2F737465656D69742E636F6D",
"new_signing_key": "25688bbe7b1204f26e40be054c8b2ff1997eec6d4e7be6a105aab8a0e6f11c616d7cb6066"
},
"extensions": []
}
]
account_update2
This operation behaves identically to the existing
account_update_operation
except that it allows the posting authority
to sign when the owner and active authorities and memo key are not
present (i.e. only valid for posting and JSON metadata).
See: #3274
Roles: posting active owner
Parameters: account owner active posting memo_key json_metadata posting_json_metadata
Example Op:
[
"account_update",
{
"account": "hiveio",
"posting_json_metadata": ""
}
]
create_proposal
Creates a new proposal.
Roles: postingactive owner
Parameters: creator receiver start_date end_date daily_pay subject permlink
Example Op:
[
"create_proposal",
{
"creator": "alice",
"receiver": "bob",
"start_date": "2019-08-26T11:22:39",
"end_date": "2019-08-26T11:22:39",
"daily_pay": {
"amount": "3000",
"precision": 3,
"nai": "@@000000013"
},
"subject": "subject",
"permlink": "creator-proposal-permlink"
}
]
update_proposal_votes
Update proposal votes by proposal.id
.
Note, proposal votes are only summed at payment time (once per hour) and may not be reported immediately by related API.
Roles: posting active owner
Parameters: voter proposal_ids approve
Example Op:
[
"update_proposal_votes",
{
"voter": "alice",
"proposal_ids": [0],
"approve": true,
"extensions": []
}
]
remove_proposal
Removes proposal using proposal.id
of a given proposal.
Roles: posting active owner
Parameters: creator proposal_ids
Example Op:
[
"remove_proposal",
{"creator": "alice", "proposal_ids": [0]}
]
update_proposal
Update a proposal using proposal.id
of a given proposal. Allows creator to lower daily_pay
but not increase it, change subject, and point to a new permlink.
Roles: posting active owner
Parameters: proposal_id creator daily_pay subject permlink
Example Op:
[
"update_proposal",
{
"proposal_id": 0,
"creator": "alice",
"daily_pay": {
"amount": "3000",
"precision": 3,
"nai": "@@000000013"
},
"subject": "New Subject",
"permlink": "creator-proposal-permlink"
}
]
collateralized_convert
The collateralized_convert
operation is similar to convert
operation (see: convert), and instructs the blockchain to convert HIVE to HBD. The operation is performed after a 3.5 days delay, but the owner gets HBD immediately. The price risk is cushioned by extra HIVE. After actual conversion takes place the excess HIVE is returned to the owner.
Roles:
Parameters: owner requestid amount
Example Op:
[
"collateralized_convert",
{
"owner": "hiveio",
"requestid": 1467592156,
"amount": {
"amount": "5000",
"precision": 3,
"nai": "@@000000021"
}
}
]
recurrent_transfer
The recurrent_transfer
operation creates/updates/removes a recurrent transfer (transfers any liquid asset every fixed amount of time from one account to another). If amount is set to 0, the recurrent transfer is be deleted. If there is already a recurrent transfer matching from and to, the recurrent transfer is updated.
Also see: database_api.find_recurrent_transfers
Roles:
Parameters: from to amount memo recurrence executions extensions
prove_authority
Roles: active owner
Parameters: challenged require_owner
custom_binary
The semmantics for this operation are the same as the custom_json
operation, but with a binary payload. The json deserialization has a
non-trivial cost associated with it. This operation will allow for
binary deserialization of plugin operations and should improve overall
performance of plugins that chose to use it.
Roles: posting active owner
Parameters: id data
Example Op:
["custom_binary", {"id": 0, "data": ""}]
- Since: Mysterious Future
- Related
claim_reward_balance2
Differs with original operation with extensions field and a container of tokens that will be rewarded to an account.
Note: The reward tokens are required to be unique and sorted (both by asset symbol) in ascending order. Otherwise operation validation will fail.
See: #1859
Roles: posting active owner
Parameters: account reward_tokens extensions
Example Op:
[
"claim_reward_balance2",
{
"account": "alice",
"reward_tokens": [
{
"amount": "1",
"precision": 0,
"nai": "@@904705667"
}
],
"extensions": []
}
]
- Since: Mysterious Future
- Related
vote2
This operation is used to cast a vote on a post/comment using multiple votable assets.
See: #2748, SMT Voting Mana Deep Dive
Roles: posting active owner
Parameters: voter author permlink weight extensions
Example Op:
[
"vote2",
{
"voter": "hiveio",
"author": "alice",
"permlink": "a-post-by-alice",
"rshares": [[{"nai": "@@904705667", "decimals": 0}, 0]],
"extensions": []
}
]
- Since: Mysterious Future
- Related
smt_setup
Setup a Smart Media Token. Each SMT has an associated descriptor object which has permanent configuration data. This data cannot be changed after launch.
Parameters:
control_account
- The name of the controlling account.symbol
- The asset symbol of the created token.max_supply
- The maximum supply of a smart media token.contribution_begin_time
- The start time of the ICO contribution process.contribution_end_time
- The end time of the ICO contribution process.launch_time
- The time in which a token should launch.hive_units_min
- The minimum HIVE units required for a successful ICO.hive_units_soft_cap
- The HIVE unit cap in which the pre_soft_cap_unit generation policy applies.hive_units_hard_cap
- The HIVE unit cap in which the post_soft_cap_unit generation policy applies.initial_generation_policy
- A JSON string of the HIVE and token destination routes of the ICO process.
Example Initial Generation Policy JSON:
{"type": "smt_capped_generation_policy", "value": {
"pre_soft_cap_unit": {
"hive_unit": [["alice", 100]],
"token_unit": [["$from", 5], ["alice", 1]]
},
"post_soft_cap_unit": {
"hive_unit": [["alice", 100]],
"token_unit": [["$from", 5], ["alice", 1]]
},
"min_hive_units_commitment": {
"lower_bound": 1,
"upper_bound": 1,
"hash": "32edb6022c0921d99aa347e9cda5dc2db413f5574eebaaa8592234308ffebd2b"
},
"hard_cap_hive_units_commitment": {
"lower_bound": "166666666666",
"upper_bound": "166666666666",
"hash": "93c5a6b892de788c5b54b63b91c4b692e36099b05d3af0d16d01c854723dda21"
},
"soft_cap_percent": 10000,
"min_unit_ratio": 1000,
"max_unit_ratio": 1000,
"extensions": []
}}
Roles: active owner
Parameters: control_account symbol contribution_begin_time contribution_end_time launch_time max_supply hive_units_hard_cap hive_units_soft_cap hive_units_min initial_generation_policy extensions
Example Op:
[
"smt_setup",
{
"control_account": "alice",
"symbol": {"nai": "@@000000000", "decimals": 0},
"contribution_begin_time": "2019-08-26T11:22:39",
"contribution_end_time": "2019-08-26T11:22:39",
"launch_time": "2019-09-26T11:22:39",
"max_supply": 1000000000000000,
"hive_units_hard_cap": 10000,
"hive_units_soft_cap": 1000,
"hive_units_min": 0,
"initial_generation_policy": "{\"type\":\"smt_capped_generation_policy\",\"value\":{\"pre_soft_cap_unit\":{\"hive_unit\":[[\"alice\",100]],\"token_unit\":[[\"$from\",5],[\"alice\",1]]},\"post_soft_cap_unit\":{\"hive_unit\":[[\"alice\",100]],\"token_unit\":[[\"$from\",5],[\"alice\",1]]},\"min_hive_units_commitment\":{\"lower_bound\":1,\"upper_bound\":1,\"hash\":\"32edb6022c0921d99aa347e9cda5dc2db413f5574eebaaa8592234308ffebd2b\"},\"hard_cap_hive_units_commitment\":{\"lower_bound\":\"166666666666\",\"upper_bound\":\"166666666666\",\"hash\":\"93c5a6b892de788c5b54b63b91c4b692e36099b05d3af0d16d01c854723dda21\"},\"soft_cap_percent\":10000,\"min_unit_ratio\":1000,\"max_unit_ratio\":1000,\"extensions\":[]}}",
"extensions": []
}
]
- Since: Mysterious Future
- Related
smt_setup_emissions
Create Smart Media Token emissions (inflation).
Parameters:
control_account
- The name of the controlling account.symbol
- The asset symbol of the created token.schedule_time
- The time the token is applicable.emissions_unit
- The emissions unit.interval_seconds
- The seconds between intervals.interval_count
- The number of intervals.lep_time
- The time of the left endpoint.rep_time
- The time of the right endpoint.lep_abs_amount
- The absolute emission amount of the left endpoint.rep_abs_amount
- The absolute emission amount of the right endpoint.lep_rel_amount_numerator
- The relative emission numerator of the left endpoint.rep_rel_amount_numerator
- The relative emission numerator of the right endpoint.rel_amount_denom_bits
- The about of bits to shift for the relative denominator.remove
- Indicates whether an emission should be added or removed.floor_emissions
- Indicates whether we should consider the lowest or highest value with regards to relative and absolute emissions.
See: #1513, #2738, SMT Pre-Setup, Inflation Operations, Full JSON Examples, Inflation FAQ
Roles: active owner
Parameters: control_account symbol emissions_unit interval_seconds interval_count lep_time rep_time lep_abs_amount rep_abs_amount lep_rel_amount_numerator rep_rel_amount_numerator rel_amount_denom_bits remove floor_emissions
Example Op:
[
"smt_setup_emissions",
{
"control_account": "alice",
"symbol": {"nai": "@@904705667", "decimals": 0},
"schedule_time": "2019-08-26T11:22:39",
"emissions_unit": {"token_unit": [["alice", 1]]},
"interval_seconds": 21600,
"interval_count": 1,
"lep_time": "2019-08-26T11:22:39",
"rep_time": "2019-08-26T11:22:39",
"lep_abs_amount": {
"amount": "1",
"precision": 0,
"nai": "@@904705667"
},
"rep_abs_amount": {
"amount": "1",
"precision": 0,
"nai": "@@904705667"
},
"lep_rel_amount_numerator": 0,
"rep_rel_amount_numerator": 0,
"rel_amount_denom_bits": 0,
"remove": false,
"floor_emissions": false,
"extensions": []
}
]
- Since: Mysterious Future
- Related
smt_set_setup_parameters
Creates Smart Media Token setup parameters.
Parameters:
control_account
- The name of the controlling account.symbol
- The asset symbol of the created token.setup_parameters
- The SMT setup parameters
See: #2727, Named Token Parameters
Roles: active owner
Parameters: control_account symbol setup_parameters
Example Op:
[
"smt_set_setup_parameters",
{
"control_account": "alice",
"symbol": {"nai": "@@000000000", "decimals": 0},
"setup_parameters": [
{
"type": "smt_param_allow_voting",
"value": {"value": true}
}
],
"extensions": []
}
]
- Since: Mysterious Future
- Related
smt_set_runtime_parameters
Creates Smart Media Token runtime parameters.
Parameters:
control_account
- The name of the controlling account.symbol
- The asset symbol of the created token.runtime_parameters
- The SMT runtime parameters.
Allowed Author Reward Curves:
linear
quadratic
Allowed Curation Reward Curves:
linear
square_root
bounded_curation
Roles: active owner
Parameters: control_account symbol runtime_parameters
Example Op:
[
"smt_set_runtime_parameters",
{
"control_account": "alice",
"symbol": {"nai": "@@000000000", "decimals": 0},
"runtime_parameters": [
{
"type": "smt_param_windows_v1",
"value": {
"cashout_window_seconds": 90001,
"reverse_auction_window_seconds": 110
}
},
{
"type": "smt_param_vote_regeneration_period_seconds_v1",
"value": {
"vote_regeneration_period_seconds": 7000,
"votes_per_regeneration_period": 1
}
},
{
"type": "smt_param_rewards_v1",
"value": {
"content_constant": 9005,
"percent_curation_rewards": 9006,
"author_reward_curve": "quadratic",
"curation_reward_curve": "bounded_curation"
}
},
{
"type": "smt_param_allow_downvotes",
"value": {"value": true}
}
],
"extensions": []
}
]
- Since: Mysterious Future
- Related
smt_create
Create a Smart Media Token.
This operation introduces new SMT into blockchain as identified by Numerical Asset Identifier (NAI). Also the SMT precision (decimal points) is explicitly provided.
Initial Case
The first operation to be executed is an smt_create
operation. This operation creates an SMT object in the blockchain state. After executing this operation, the newly created SMT object is not yet fully configured.
Most of the configuration occurs in subsequent operations (smt_set_setup_parameters
, smt_setup_inflation
, and smt_setup
). These later operations may occur in the same transaction, but they may also occur at any later point in time.
Reset Case
Re-issuing smt_create
with zero smt_creation_fee
and the NAI of a token in the initial setup will reset emmisions and setup state. This is useful for token creators who have put their token in an unlaunchable state.
This will allow deleting of emission schedules with and changing of precision if there are no emission objects already created.
Parameters:
control_account
- The name of the controlling account.symbol
- The asset symbol of the created token.smt_creation_fee
- The amount to be transfered from @account to null account as elevation fee. The amount required is set by thesmt_creation_fee
field of thedynamic_global_properties
object. This field may contain a value in HIVE or HBD.precision
- Separately provided precision for clarity and redundancy.
See: SMT Object Creation
Roles: active owner
Parameters: control_account symbol smt_creation_fee precision
Example Op:
[
"smt_create",
{
"control_account": "alice",
"symbol": {"nai": "@@000000000", "decimals": 0},
"smt_creation_fee": {
"amount": "3000",
"precision": 3,
"nai": "@@000000013"
},
"precision": 0,
"extensions": []
}
]
- Since: Mysterious Future
- Related
smt_contribute
Contribute to a token ICO.
Parameters:
contributor
The name of the contributorsymbol
The asset symbol of the SMTcontribution_id
A unique contribution ID numbercontribution
The contribution (in HIVE)
See: #2730, Token Units
Roles: active owner
Parameters: contributor symbol contribution_id contribution
Example Op:
[
"smt_contribute",
{
"contributor": "alice",
"symbol": {"nai": "@@422838704", "decimals": 0},
"contribution_id": 0,
"contribution": {
"amount": "1000",
"precision": 3,
"nai": "@@000000021"
},
"extensions": []
}
]
clear_null_account_balance
For per-block processing that clears null account balances.
See: #2627, #3556 (possibly planned for deprecation with SMT Hardfork, if implemented)
Roles: active owner
Parameters: total_cleared
Example Op:
[
"clear_null_account_balance",
{
"total_cleared": [
{
"amount": "3000",
"precision": 3,
"nai": "@@000000021"
}
]
}
]
proposal_pay
Dedicated operation to be generated during proposal payment phase to provide info in Account History related to funds transfer.
This virtual operation is issued every hour during a proposal payment phase.
Proposals without any votes are not considered active and do not receive any payment.
If the payment of a proposal exceeds the amount of the available daily budget, it will receive a partial payment with what’s left in the daily budget.
Roles: active owner
Parameters: receiver payment trx_id op_in_trx
Example Op:
[
"proposal_pay",
{
"receiver": "hive.fund",
"payment": "1.637 HBD",
"trx_id": "0000000000000000000000000000000000000000",
"op_in_trx": 0
}
]
sps_fund
Created once per maintenance interval to document how much HBD was added to the threasury from inflation in that maintenance interval (i.e., to track the funding of the DHF).
Roles: active owner
Parameters: additional_funds
Example Op:
["sps_fund", {"additional_funds": "71.460 HBD"}]
fill_convert_request
Fills when conversion requests with a conversion date before the head block time and then converts them to/from HIVE/HBD at the current median price feed history price times the premium.
Roles: active owner
Parameters: owner requestid amount_in amount_out
Example Op:
[
"fill_convert_request",
{
"owner": "titofit",
"requestid": 3347004874,
"amount_in": {
"amount": "3770",
"precision": 3,
"nai": "@@000000013"
},
"amount_out": {
"amount": "8849",
"precision": 3,
"nai": "@@000000021"
}
}
]
author_reward
Triggered after the payout period on posts and comments.
Roles: posting active owner
Parameters: author permlink hbd_payout hive_payout vesting_payout curators_vesting_payout
Example Op:
[
"author_reward",
{
"author": "dianadora",
"permlink": "actifit-dianadora-20210527t193130754z",
"hbd_payout": {
"amount": "11",
"precision": 3,
"nai": "@@000000013"
},
"hive_payout": {
"amount": "0",
"precision": 3,
"nai": "@@000000021"
},
"vesting_payout": {
"amount": "52734247",
"precision": 6,
"nai": "@@000000037"
},
"curators_vesting_payout": {
"amount": "96051664",
"precision": 6,
"nai": "@@000000037"
}
}
]
curation_reward
Issued by the blockchain after the payout period on posts and comments.
Roles: posting active owner
Parameters: curator reward comment_author comment_permlink
Example Op:
[
"curation_reward",
{
"curator": "hendrikdegrote",
"reward": {
"amount": "9349621710",
"precision": 6,
"nai": "@@000000037"
},
"comment_author": "crypt0",
"comment_permlink": "metropolis-by-end-of-june-swt-token-now-trading-on-bittrex-roger-ver-offering-his-own-btc"
}
]
comment_reward
Issued after the payout period on posts and comments.
The value of this operation is the global payout value for the post or comment. A separate virtual operation is issued for the author, the curators and the beneficiaries (see author_reward, comment_benefactor_reward and curation_reward).
The value is the equivalent HBD value of the payout even if no HBD will be effectively paid to the author, curators, or beneficiaries.
See: #774
Roles: posting active owner
Parameters: author permlink payout author_rewards curator_payout_value beneficiary_payout_value
Example Op:
[
"comment_reward",
{
"author": "karla95",
"permlink": "blogging-challenge-13-pelicula-favorita",
"payout": {
"amount": "199",
"precision": 3,
"nai": "@@000000013"
},
"author_rewards": 256,
"total_payout_value": {
"amount": "108",
"precision": 3,
"nai": "@@000000013"
},
"curator_payout_value": {
"amount": "90",
"precision": 3,
"nai": "@@000000013"
},
"beneficiary_payout_value": {
"amount": "0",
"precision": 3,
"nai": "@@000000013"
}
}
]
interest
Issued when interests are paid on HBD or HBD saving.
Roles: active owner
Parameters: owner interest
Example Op:
[
"interest",
{"owner": "alice", "interest": "0.001 HBD"}
]
fill_vesting_withdraw
Issued when each week after a user has initiated a withdrawal from VESTS to HIVE (see: withdraw_vesting).
See: #78
Roles: active owner
Parameters: from_account to_account withdrawn deposited
Example Op:
[
"fill_vesting_withdraw",
{
"from_account": "alice",
"to_account": "alice",
"withdrawn": "0.026475 VESTS",
"deposited": "0.710 HIVE"
}
]
fill_order
Issued when orders on the internal market are filled (see: limit_order_create).
Roles: posting active owner
Parameters: current_owner current_orderid current_pays open_owner open_orderid open_pays
Example Op:
[
"fill_order",
{
"current_owner": "alice",
"current_orderid": 42896,
"current_pays": "94.999 HBD",
"open_owner": "bob",
"open_orderid": 10001,
"open_pays": "500.000 HIVE"
}
]
shutdown_witness
This virtual operation was previously issued when the system automatically disables a witness because it was missing too many blocks.
This operation has been introduced with HF14 and deprecated with HF20.
See: #278
Roles: posting active owner
Parameters: owner
Example Op:
["shutdown_witness", {"owner": "alice"}]
fill_transfer_from_savings
Issued when the delay for a transfer request from a savings balance is complete and the transfer is effectively executed (see: transfer_from_savings)
Roles: posting active owner
Parameters: from to amount request_id memo
Example Op:
[
"fill_transfer_from_savings",
{
"from": "learngerman",
"to": "learngerman",
"amount": {
"amount": "1000",
"precision": 3,
"nai": "@@000000021"
},
"request_id": 1618177172,
"memo": ""
}
]
hardfork
Tracks hardfork activation.
Hardfork | Sheduled Hardfork Time | Actual Block |
---|---|---|
HF0 | 2016-03-24 16:00:00 UTC | 1 |
HF1 | 2016-04-25 17:30:00 UTC | 905693 |
HF2 | 2016-04-26 18:00:00 UTC | 934585 |
HF3 | 2016-04-27 13:00:00 UTC | 953363 |
HF4 | 2016-04-30 15:00:00 UTC | 1041497 |
HF5 | 2016-05-31 17:00:00 UTC | 1934236 |
HF6 | 2016-06-30 14:00:00 UTC | 2790882 |
HF7 | 2016-07-04 00:00:00 UTC | 2889019 |
HF8 | 2016-07-04 01:00:00 UTC | 2889959 |
HF9 | 2016-07-14 00:00:00 UTC | 3202773 |
HF10 | 2016-07-15 12:00:00 UTC | 3239649 |
HF11 | 2016-07-17 15:00:00 UTC | 3276913 |
HF12 | 2016-07-26 15:00:00 UTC | 3533567 |
HF13 | 2016-08-15 14:00:00 UTC | 4105155 |
HF14 | 2016-09-20 15:00:00 UTC | 5137542 |
HF15 | 2016-11-08 16:00:00 UTC | 6547932 |
HF16 | 2016-12-06 16:00:00 UTC | 7353249 |
HF17 | 2017-03-30 15:00:00 UTC | 10629455 |
HF18 | 2017-03-30 15:00:00 UTC | 10629486 |
HF19 | 2017-06-20 15:00:00 UTC | 12988978 |
HF20 | 2018-09-25 15:00:00 UTC | 26256743 |
HF21 | 2019-08-27 15:00:00 UTC | 35921786 |
HF22 | 2019-08-29 15:00:00 UTC | 35974326 |
HF23 | 2020-03-20 14:00:00 UTC | 41818752 |
HF24 | 2020-10-06 14:00:00 UTC | 47797680 |
HF25 | 2021-06-30 14:00:00 UTC | 55235767 |
HF26 | 2022-10-11 12:00:00 UTC | 68676505 |
See: PR2616, database_api.get_hardfork_properties, condenser_api.get_next_scheduled_hardfork
Roles: posting active owner
Parameters: hardfork_id
comment_payout_update
Issued when a post or comment reaches the end of the payout windows and its final payout values are computed.
Roles: posting active owner
Parameters: author permlink
Example Op:
[
"comment_payout_update",
{
"author": "pinmapple",
"permlink": "pinmapple162222420235626"
}
]
return_vesting_delegation
Occurs when the Hive Power that has been previously delegated by an account to another account comes back to the original owner. When a user cancels its delegation, it takes 7 days to complete (see: delegate_vesting_shares).
Roles: posting active owner
Parameters: account vesting_shares
Example Op:
[
"return_vesting_delegation",
{
"account": "artemisha",
"vesting_shares": {
"amount": "18833102935",
"precision": 6,
"nai": "@@000000037"
}
}
]
comment_benefactor_reward
Triggered after the payout period on posts and comments if the original author has decided to share his reward with other users.
Roles: posting active owner
Parameters: benefactor author permlink hbd_payout hive_payout vesting_payout
Example Op:
[
"comment_benefactor_reward",
{
"benefactor": "hiveonboard",
"author": "yossaeluz",
"permlink": "importance-of-the-implementation-of-continuous-improvement-in-processes",
"hbd_payout": {
"amount": "40",
"precision": 3,
"nai": "@@000000013"
},
"hive_payout": {
"amount": "0",
"precision": 3,
"nai": "@@000000021"
},
"vesting_payout": {
"amount": "178904599",
"precision": 6,
"nai": "@@000000037"
}
}
]
producer_reward
Occurs each time a block is produced. It contains the rewards that are given to witnesses (and previously miners) for their work.
Witness rewards for block signing are hard to account for. Making these rewards visible will help witnesses and prospective witnesses by providing them with more complete and accurate information to guide their decisions to invest in the platform.
Roles: posting active owner
Parameters: producer vesting_shares
Example Op:
[
"producer_reward",
{
"producer": "alice",
"vesting_shares": "14403.626449 VESTS"
}
]
hardfork_hive
At the point of the Hive hardfork, the only accounts who were not included in the initial airdrop were those containing the Steemit, Inc. ninja-mined stake and those who actively contributed to (and publicly declared support for) the centralization of the Steem Blockchain.
This virual operation tracks the initial consolidation of stake into the treasury, on the above criteria.
Also represents the moment Hive forked from the previous chain.
See: Hive Announcement, Block No. 41818752, e9f2f73
Roles: posting active owner
Parameters: account treasury hbd_transferred hive_transferred vests_converted total_hive_from_vests
Example Op:
[
"hardfork_hive",
{
"account": "steem",
"treasury": "steem.dao",
"hbd_transferred": {
"amount": "861823",
"precision": 3,
"nai": "@@000000013"
},
"hive_transferred": {
"amount": "40590",
"precision": 3,
"nai": "@@000000021"
},
"vests_converted": {
"amount": "22870822335791719",
"precision": 6,
"nai": "@@000000037"
},
"total_hive_from_vests": {
"amount": "11678135805",
"precision": 3,
"nai": "@@000000021"
}
}
]
hardfork_hive_restore
To restore the liquid balance of accounts that were not airdropped in the original Hive hardfork.
VESTS were restored in a later transaction:
https://hiveblocks.com/tx/1d600db22fc6f9b362db36d9f0fc521b95f8894f
See: Block No. 47797680, !19, 5edf4f0, restore.js
Roles:
Parameters:
Example Op:
[
"hardfork_hive_restore",
{
"account": "yellowbird",
"treasury": "steem.dao",
"hbd_transferred": {
"amount": "0",
"precision": 3,
"nai": "@@000000013"
},
"hive_transferred": {
"amount": "1280",
"precision": 3,
"nai": "@@000000021"
}
}
]
delayed_voting
Tracks when newly powered up VESTS become counted towards witness and DHF proposals (after a 30 day delay is complete).
See: transfer_to_vesting, fa63145, 5, !21
Roles:
Parameters:
Example Op:
[
"delayed_voting",
{"voter": "fordummies", "votes": 191547046}
]
consolidate_treasury_balance
Tracks when balances move from old treasury account to current one, on an ongoing basis. Note that the obsolete account is still considered a treasury (cannot be reused for other purposes), but all funds and actions are redirected to new one.
For example, if an author designates the obsolete account as beneficiary, the reward will briefly exist in the obsolete account until consoldated to the new account.
See: 2074917, OBSOLETE_TREASURY_ACCOUNT
, NEW_HIVE_TREASURY_ACCOUNT
Roles: posting active owner
Parameters: total_moved
Example Op:
[
"consolidate_treasury_balance",
{
"total_moved": [
{
"amount": "8853",
"precision": 3,
"nai": "@@000000013"
}
]
}
]
- Since: HF24
- Virtual Operation
- Related
effective_comment_vote
This virtual operation is issued when a vote on a post or comment becomes effective (see: vote)
Needed by hivemind to index estimated pending_payout
from a given vote.
See: 2074917
Roles: posting active owner
Parameters: voter author permlink weight rshares total_vote_weight pending_payout
Example Op:
[
"effective_comment_vote",
{
"voter": "hivebuzz",
"author": "papilloncharity",
"permlink": "re-hivebuzz-qrevvy",
"weight": 3658,
"rshares": "7332260842",
"total_vote_weight": 3658,
"pending_payout": {
"amount": "4",
"precision": 3,
"nai": "@@000000013"
}
}
]
- Since: HF24
- Virtual Operation
- Related
ineffective_delete_comment
Track comments that were intended to be removed but weren’t due to having a payout due to net positive votes. This operation is used to communicate to hivemind in order to avoid hiding comments with payout.
See: !94
Roles:
Parameters:
sps_convert
Issued when a Proposals Fund (DHF) conversion from HIVE to HBD occurs.
When the Hardfork that created Hive happened back in March 2020, the Steemit Inc ninja-mined funds were moved into the @hive.fund account as a development fund. As proposals are paid in HBD and most of the moved funds were in HIVE, an automatic conversion process has been put in place.
See: 96254ae
Roles:
Parameters: fund_account hive_amount_in hbd_amount_out
Example Op:
[
"sps_convert",
{
"fund_account": "hive.fund",
"hive_amount_in": {
"amount": "37111024",
"precision": 3,
"nai": "@@000000021"
},
"hbd_amount_out": {
"amount": "15735074",
"precision": 3,
"nai": "@@000000013"
}
}
]
account_created
Issued each time a new account has been successfully created.
Roles:
Parameters: new_account_name creator initial_vesting_shares initial_delegation
Example Op:
[
"account_created",
{
"new_account_name": "init-2",
"creator": "initminer",
"initial_vesting_shares": {
"amount": "0",
"precision": 6,
"nai": "@@000000037"
},
"initial_delegation": {
"amount": "0",
"precision": 6,
"nai": "@@000000037"
}
}
]
changed_recovery_account
Issued when the blockchain effectively changes the recovery account of an account after it issued such request (see: change_recovery_account).
Roles:
Parameters: account old_recovery_account new_recovery_account
Example Op:
[
"changed_recovery_account",
{
"account": "alice",
"old_recovery_account": "eve",
"new_recovery_account": "bob"
}
]
expired_account_notification
Issued when governance votes for an account have expired and are removed.
Roles:
Parameters: account
Example Op:
[
"expired_account_notification",
{"account": "init-2"}
]
failed_recurrent_transfer
Issued when a recurrent transfer has failed to be executed (see: recurrent_transfer).
Roles:
Parameters: from to amount memo consecutive_failures remaining_executions deleted
fill_collateralized_convert_request
Issued when a HIVE to HBD conversion is completed (see: recurrent_transfer).
Roles:
Parameters: owner requestid amount_in amount_out excess_collateral
fill_recurrent_transfer
Issued when a recurrent transfer is executed (see: recurrent_transfer).
Roles:
Parameters: from to amount memo remaining_executions
transfer_to_vesting_completed
Issued when a power-up is finally taken into account for governance votes (see: transfer_to_vesting).
See: #111