# Hive Developer Portal

Ops:

- account_create
- account_create_with_delegation
- account_update
- account_witness_proxy
- account_witness_vote
- cancel_transfer_from_savings
- challenge_authority
- change_recovery_account
- claim_account
- claim_reward_balance
- claim_reward_balance2
- comment
- comment_options
- convert
- create_claimed_account
- create_proposal
- custom
- custom_binary
- custom_json
- decline_voting_rights
- delegate_vesting_shares
- delete_comment
- escrow_approve
- escrow_dispute
- escrow_release
- escrow_transfer
- feed_publish
- limit_order_cancel
- limit_order_create
- limit_order_create2
- pow
- pow2
- price
- prove_authority
- recover_account
- remove_proposal
- report_over_production
- request_account_recovery
- reset_account
- set_reset_account
- set_withdraw_vesting_route
- smt_contribute
- smt_create
- smt_set_runtime_parameters
- smt_set_setup_parameters
- smt_setup
- smt_setup_emissions
- transfer
- transfer_from_savings
- transfer_to_savings
- transfer_to_vesting
- update_proposal_votes
- vote
- vote2
- withdraw_vesting
- witness_set_properties
- witness_update

Virtual Ops:

- author_reward
- clear_null_account_balance
- comment_benefactor_reward
- comment_payout_update
- comment_reward
- curation_reward
- fill_convert_request
- fill_order
- fill_transfer_from_savings
- fill_vesting_withdraw
- hardfork
- interest
- liquidity_reward
- producer_reward
- proposal_pay
- return_vesting_delegation
- shutdown_witness
- sps_fund

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

- 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.

An upvote can be cast from the point in time that the content is created up to 6.5 days. The remaining 12 hours are locked out of upvotes at which time only downvotes may be cast.

A secondary aspect to voting involves reputation, which is not part of consensus.

Reputation Rules:

1. Must have non-negative reputation to effect another user’s reputation.
2. 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 name
- `author`: must be a valid account name
- `permlink`: must be content created by `author`
- `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
      }
    ]

- 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 string
- `parent_permlink` - specific post that comment is being submitted to, when posting a new blog this is an empty string
- `author` - author of the post/comment being submitted (account name)
- `permlink` - unique string identifier for the post, linked to the author of the post
- `title` - human readable title of the post being submitted, this is often blank when commenting
- `body` - body of the post/comment being submitted, or `diff-match-patch` when updating
- `json_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 of `firstpost`
- `json_metadata` - There is no blockchain enforced validation on `json_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 five
  - `app` - A user agent style application identifier. Typically `app_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": "steem",
        "author": "alice",
        "permlink": "a-post-by-alice",
        "title": "A Post By Alice",
        "body": "This is my post.",
        "json_metadata": "{\"tags\":[\"hiveio\",\"example\",\"tags\"]}"
      }
    ]

- 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."
      }
    ]

- Related

#### `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.

##### Roles: `active owner`

##### Parameters: `from to amount`

##### Example Op:

    [
      "transfer_to_vesting",
      {
        "from": "alice",
        "to": "",
        "amount": {
          "amount": "357000",
          "precision": 3,
          "nai": "@@000000021"
        }
      }
    ]

- Related

#### `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"
        }
      }
    ]

- Related

#### `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"
      }
    ]

- Related

#### `limit_order_cancel`

Cancels an order and returns the balance to owner.

##### Roles: `active owner`

##### Parameters: `owner orderid`

##### Example Op:

    [
      "limit_order_cancel",
      {"owner": "hiveio", "orderid": 10}
    ]

- Related

#### `price`

##### Roles: `active owner`

##### Parameters: `base quote`

- Related

#### `feed_publish`

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 steem and the 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"
          }
        }
      }
    ]

- Related

#### `convert`

This operation instructs the blockchain to start a conversion between HIVE and HBD, the funds are deposited after 3.5 days.

##### Roles: `active owner`

##### Parameters: `owner requestid amount`

##### Example Op:

    [
      "convert",
      {
        "owner": "hiveio",
        "requestid": 1467592156,
        "amount": {
          "amount": "5000",
          "precision": 3,
          "nai": "@@000000013"
        }
      }
    ]

- Related

#### `account_create`

##### 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": "{}"
      }
    ]

- Since: HF20
- Related

#### `create_claimed_account`

When used with `claim_account`, works identically to `account_create`. See: Steem 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": "{}"
      }
    ]

- Since: HF20
- Related

#### `claim_account`

When used with `create_claimed_account`, works identically to `account_create`. See: Steem 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": []
      }
    ]

- Since: HF20
- Related

#### `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,
          "sbd_interest_rate": "0.000 HIVE",
          "sbd_exchange_rate": {"base": "0.000 HBD", "quote": "0.000 HIVE"},
          "url": "68747470733A2F2F737465656D69742E636F6D",
          "new_signing_key": "25688bbe7b1204f26e40be054c8b2ff1997eec6d4e7be6a105aab8a0e6f11c616d7cb6066"
        },
        "extensions": []
      }
    ]

- Related

#### `account_update`

##### 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": ""
      }
    ]

- Disabled
- Related

#### `report_over_production`

Disabled in HF4

This operation is used to report a miner who signs two blocks at the same time. To be valid, the violation must be reported within HIVE_MAX_WITNESSES blocks of the head block (1 round) and the producer must be in the ACTIVE witness set.

Users not in the ACTIVE witness set should not have to worry about their key getting compromised and being used to produced multiple blocks so the attacker can report it and steel their vesting steem.

The result of the operation is to transfer the full VESTING HIVE balance of the block producer to the reporter.

##### Roles: `active owner`

##### Parameters: `reporter first_block second_block`

- Related

#### `witness_update`

Users who wish to become a witness must pay a fee acceptable to the current witnesses to apply for the position and allow voting to begin.

If the owner isn’t a witness they will become a witness. Witnesses are charged a fee equal to 1 weeks worth of witness pay which in turn is derived from the current share supply. The fee is only applied if the owner is not already 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:

- The fee paid to register a new witness, should be 10x current block production pay.
- `url` cannot be more than 2048 bytes.
- `url` must be UTF-8.
- `fee` cannot be negative.

##### 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,
          "sbd_interest_rate": 1000
        },
        "fee": {
          "amount": "0",
          "precision": 3,
          "nai": "@@000000021"
        }
      }
    ]

- Related

#### `account_witness_vote`

All accounts with a VFS (Vesting Fund Shares) can vote for or against any witness. 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
      }
    ]

- Related

#### `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"}
    ]

- Disabled
- Related

#### `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,
          "sbd_interest_rate": 1000
        }
      }
    ]

- Related

#### `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"
      }
    ]

- Related

#### `delete_comment`

##### Roles: `posting active owner`

##### Parameters: `author permlink`

##### Example Op:

    [
      "delete_comment",
      {
        "author": "alice",
        "permlink": "a-post-by-alice"
      }
    ]

- 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": "{\"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\"}]"
      }
    ]

- Related

#### `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_steem_dollars may be decreased, but never increased.
- Part of `comment_option` validation process, to be called when `allowed_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 receive
- `percent_steem_dollars`: the percent of Hive Dollars to key, unkept amounts will be received as Hive Power
- `allow_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).

##### Roles: `posting active owner`

##### Parameters: `author permlink max_accepted_payout percent_steem_dollars 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_steem_dollars": 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_steem_dollars": 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_steem_dollars": 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}
              ]
            }
          ]
        ]
      }
    ]

- Related

#### `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 steem and back, guaranteeing they maintain their value.

Notes:

- Percent must be valid steem 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
      }
    ]

- Related

#### `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"
      }
    ]

- Disabled
- Related

#### `challenge_authority`

Disabled in HF14.

##### Roles: `posting active owner`

##### Parameters: `challenger challenged require_owner`

- Related

#### `prove_authority`

##### Roles: `active owner`

##### Parameters: `challenged require_owner`

- Since: HF11
- Related

#### `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 a `recover_account`.

See: #169

##### Roles: `active owner`

##### Parameters: `recovery_account account_to_recover new_owner_authority extensions`

##### Example Op:

    [
      "request_account_recovery",
      {
        "recovery_account": "steem",
        "account_to_recover": "alice",
        "new_owner_authority": {
          "weight_threshold": 1,
          "account_auths": [],
          "key_auths": [
            [
              "STM6LYxj96zdypHYqgDdD6Nyh2NxerN3P1Mp3ddNm7gci63nfrSuZ",
              1
            ]
          ]
        },
        "extensions": []
      }
    ]

- Since: HF11
- Related

#### `recover_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": []
      }
    ]

- Since: HF11
- Related

#### `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

##### Roles: `owner`

##### Parameters: `account_to_recover new_recovery_account extensions`

##### Example Op:

    [
      "change_recovery_account",
      {
        "account_to_recover": "alice",
        "new_recovery_account": "bob",
        "extensions": []
      }
    ]

- Since: HF14
- Related

#### `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.

See: steem_operations.hpp:229

##### Roles: `active owner`

##### Parameters: `from to agent escrow_id sbd_amount steem_amount fee ratification_deadline escrow_expiration json_meta`

##### Example Op:

    [
      "escrow_transfer",
      {
        "from": "alice",
        "to": "bob",
        "sbd_amount": {
          "amount": "1000",
          "precision": 3,
          "nai": "@@000000013"
        },
        "steem_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"
      }
    ]

- Since: HF14
- Related

#### `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.

See: steem_operations.hpp:229

##### 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
      }
    ]

- Since: HF14
- Related

#### `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.

See: steem_operations.hpp:229

##### Roles: `active owner`

##### Parameters: `from to agent who receiver escrow_id sbd_amount steem_amount`

##### Example Op:

    [
      "escrow_release",
      {
        "from": "alice",
        "to": "bob",
        "agent": "charlie",
        "who": "charlie",
        "receiver": "bob",
        "escrow_id": 72526562,
        "sbd_amount": {
          "amount": "5000",
          "precision": 3,
          "nai": "@@000000013"
        },
        "steem_amount": {
          "amount": "0",
          "precision": 3,
          "nai": "@@000000021"
        }
      }
    ]

- Disabled
- Related

#### `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,
          "sbd_interest_rate": 1000
        }
      }
    ]

- Since: HF14
- Related

#### `escrow_approve`

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.

See: steem_operations.hpp:229

##### 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
      }
    ]

- Since: HF14
- Related

#### `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.

See: steem_operations.hpp:868

##### 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": ""
      }
    ]

- Since: HF14
- Related

#### `transfer_from_savings`

##### 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": ""
      }
    ]

- Since: HF14
- Related

#### `cancel_transfer_from_savings`

##### Roles: `active owner`

##### Parameters: `from request_id`

##### Example Op:

    [
      "cancel_transfer_from_savings",
      {"from": "alice", "request_id": 1}
    ]

- Since: HF14
- Related

#### `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.

See: steem_operations.hpp:491

##### Roles: `posting active owner`

##### Parameters: `id data`

- Since: HF14
- Related

#### `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.

See: steem_operations.hpp:897

##### Roles: `owner`

##### Parameters: `account decline`

##### Example Op:

    [
      "decline_voting_rights",
      {"account": "judy", "decline": true}
    ]

- Since: HF11
- Disabled
- Related

#### `reset_account`

This operation allows `recovery_account` to change `account_to_reset`’s owner authority to `new_owner_authority` after 60 days of inactivity.

See: #169

##### Roles: `active owner`

##### Parameters: `reset_account account_to_reset new_owner_authority`

- Since: HF11
- Disabled
- Related

#### `set_reset_account`

This operation allows `account` owner to control which account has the power to execute the `reset_account` operation after 60 days.

See: #169

##### Roles: `owner posting`

##### Parameters: `account current_reset_account reset_account`

- Related

#### `claim_reward_balance`

##### Roles: `posting active owner`

##### Parameters: `account reward_steem reward_sbd reward_vests`

##### Example Op:

    [
      "claim_reward_balance",
      {
        "account": "alice",
        "reward_steem": {
          "amount": "17",
          "precision": 3,
          "nai": "@@000000021"
        },
        "reward_sbd": {
          "amount": "11",
          "precision": 3,
          "nai": "@@000000013"
        },
        "reward_vests": {
          "amount": "185025103",
          "precision": 6,
          "nai": "@@000000037"
        }
      }
    ]

- Since: HF17
- Related

#### `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 a satoshi of VESTS from voting on the same content twice.

Also see:

- steem_evaluator.cpp:2309

##### 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"
        }
      }
    ]

- Since: HF17
- Deprecated
- Related

#### `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 SP 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:

- config.hpp:145
- steem_evaluator.cpp:400

##### 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": []
      }
    ]

- Since: HF21
- Related

#### `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"
      }
    ]

- Since: HF21
- Related

#### `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]}
    ]

- Since: HF21
- Related

#### `update_proposal_votes`

Update proposal votes by `proposal.id`.

##### Roles: `posting active owner`

##### Parameters: `voter proposal_ids approve`

##### Example Op:

    [
      "update_proposal_votes",
      {
        "voter": "alice",
        "proposal_ids": [0],
        "approve": true
      }
    ]

- 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.
- `steem_units_min` - The minimum steem units required for a successful ICO.
- `steem_units_soft_cap` - The steem unit cap in which the pre_soft_cap_unit generation policy applies.
- `steem_units_hard_cap` - The steem 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": {
        "steem_unit": [["alice", 100]],
        "token_unit": [["$from", 5], ["alice", 1]]
      },
      "post_soft_cap_unit": {
        "steem_unit": [["alice", 100]],
        "token_unit": [["$from", 5], ["alice", 1]]
      },
      "min_steem_units_commitment": {
        "lower_bound": 1,
        "upper_bound": 1,
        "hash": "32edb6022c0921d99aa347e9cda5dc2db413f5574eebaaa8592234308ffebd2b"
      },
      "hard_cap_steem_units_commitment": {
        "lower_bound": "166666666666",
        "upper_bound": "166666666666",
        "hash": "93c5a6b892de788c5b54b63b91c4b692e36099b05d3af0d16d01c854723dda21"
      },
      "soft_cap_percent": 10000,
      "min_unit_ratio": 1000,
      "max_unit_ratio": 1000,
      "extensions": []
    }}

See #3455, SMT Setup

Structure

##### Roles: `active owner`

##### Parameters: `control_account symbol contribution_begin_time contribution_end_time launch_time max_supply steem_units_hard_cap steem_units_soft_cap steem_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,
        "steem_units_hard_cap": 10000,
        "steem_units_soft_cap": 1000,
        "steem_units_min": 0,
        "initial_generation_policy": "{\"type\":\"smt_capped_generation_policy\",\"value\":{\"pre_soft_cap_unit\":{\"steem_unit\":[[\"alice\",100]],\"token_unit\":[[\"$from\",5],[\"alice\",1]]},\"post_soft_cap_unit\":{\"steem_unit\":[[\"alice\",100]],\"token_unit\":[[\"$from\",5],[\"alice\",1]]},\"min_steem_units_commitment\":{\"lower_bound\":1,\"upper_bound\":1,\"hash\":\"32edb6022c0921d99aa347e9cda5dc2db413f5574eebaaa8592234308ffebd2b\"},\"hard_cap_steem_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

Structure

##### 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

Structure

##### 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`

See: Named Token Parameters

Structure

##### 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 the `smt_creation_fee` field of the `dynamic_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

Structure

##### 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 contributor
- `symbol` The asset symbol of the SMT
- `contribution_id` A unique contribution ID number
- `contribution` The contribution (in HIVE)

See: #2730, Token Units

Structure

##### 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": []
      }
    ]

- Since: HF20
- Virtual Operation
- Deprecated
- Related

#### `clear_null_account_balance`

Deprecated as of HF23, see: #3556.

For per-block processing that clears null account balances (prior to HF23).

See: #2627

##### Roles: `active owner`

##### Parameters: `total_cleared`

- Since: HF21
- Virtual Operation
- Related

#### `proposal_pay`

Dedicated operation to be generated during proposal payment phase to provide info in Account History related to funds transfer.

##### Roles: `active owner`

##### Parameters: `receiver payment trx_id op_in_trx`

##### Example Op:

    [
      "proposal_pay",
      {
        "receiver": "steem.dao",
        "payment": "1.637 HBD",
        "trx_id": "0000000000000000000000000000000000000000",
        "op_in_trx": 0
      }
    ]

- Since: HF21
- Virtual Operation
- Related

#### `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 SPS).

##### Roles: `active owner`

##### Parameters: `additional_funds`

##### Example Op:

    ["sps_fund", {"additional_funds": "71.460 HBD"}]

- Virtual Operation
- Related

#### `fill_convert_request`

Fills when conversion requests with a conversion date before the head block time and then converts them to/from steem/sbd at the current median price feed history price times the premium.

##### Roles: `active owner`

##### Parameters: `owner requestid amount_in amount_out`

- Virtual Operation
- Related

#### `author_reward`

##### Roles: `posting active owner`

##### Parameters: `author permlink sbd_payout steem_payout vesting_payout`

- Virtual Operation
- Related

#### `curation_reward`

##### Roles: `posting active owner`

##### Parameters: `curator reward comment_author comment_permlink`

- Since: HF17
- Virtual Operation
- Related

#### `comment_reward`

See: #774

##### Roles: `posting active owner`

##### Parameters: `author permlink payout`

- Virtual Operation
- Disabled
- Related

#### `liquidity_reward`

Deprecated as of HF12, see: #178.

##### Roles: `active owner`

##### Parameters: `owner payout`

- Virtual Operation
- Related

#### `interest`

##### Roles: `active owner`

##### Parameters: `owner interest`

##### Example Op:

    [
      "interest",
      {"owner": "alice", "interest": "0.001 HBD"}
    ]

- Since: HF6
- Virtual Operation
- Related

#### `fill_vesting_withdraw`

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"
      }
    ]

- Virtual Operation
- Related

#### `fill_order`

##### 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"
      }
    ]

- Since: HF14
- Virtual Operation
- Related

#### `shutdown_witness`

When a witness goes offline.

See: #278

##### Roles: `posting active owner`

##### Parameters: `owner`

##### Example Op:

    ["shutdown_witness", {"owner": "alice"}]

- Since: HF14
- Virtual Operation
- Related

#### `fill_transfer_from_savings`

##### Roles: `posting active owner`

##### Parameters: `from to amount request_id memo`

- Since: HF9
- Virtual Operation
- Related

#### `hardfork`

##### Roles: `posting active owner`

##### Parameters: `hardfork_id`

- Virtual Operation
- Related

#### `comment_payout_update`

##### Roles: `posting active owner`

##### Parameters: `author permlink`

- Since: HF17
- Virtual Operation
- Related

#### `return_vesting_delegation`

##### Roles: `posting active owner`

##### Parameters: `account vesting_shares`

- Since: HF17
- Virtual Operation
- Related

#### `comment_benefactor_reward`

##### Roles: `posting active owner`

##### Parameters: `benefactor author permlink reward`

- Since: HF17
- Virtual Operation
- Related

#### `producer_reward`

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"
      }
    ]