# Echo Operations¶

#### Account Management¶

Name Description
account_create_operation Create new account
account_update_operation Update an existing account
account_whitelist_operation This operation is used to whitelist and blacklist accounts, primarily for transacting in whitelisted assets
account_upgrade_operation Manage an account's membership status
account_transfer_operation Transfers the account to another account while clearing the white list

#### Assert Conditions¶

Name Description
assert_operation Assert that some conditions are true

#### Asset management¶

Name Description
asset_create_operation Create new asset
asset_global_settle_operation Allows global settling of BitAssets (black swan or prediction markets)
asset_settle_operation Schedules a market-issued asset for automatic settlement
asset_settle_cancel_operation [VIRTUAL] Virtual op generated when force settlement is cancelled.
asset_fund_fee_pool_operation
asset_update_operation Update options common to all assets
asset_update_bitasset_operation Update options specific to BitAssets
asset_update_feed_producers_operation Update the set of feed-producing accounts for a BitAsset
asset_publish_feed_operation Publish price feeds for market-issued assets
asset_issue_operation
asset_reserve_operation Used to take an asset out of circulation, returning to the issuer
asset_claim_fees_operation Used to transfer accumulated fees back to the issuer's balance.

#### Balance Object¶

Name Description
balance_claim_operation Claim a balance in a balance_object

#### For Committee Members¶

Name Description
committee_member_create_operation Create a committee_member object, as a bid to hold a committee_member seat on the network
committee_member_update_operation Update a committee_member object
committee_member_update_global_parameters_operation Used by committee members to update the global parameters of the blockchain

#### Contract operations¶

Name Description
create_contract_operation Creates a contract.
call_contract_operation Calls a contract.
contract_transfer_operation [VIRTUAL] Indicates internal contract transfers
contract_update_operation Update contract data
contract_fund_pool_operation Transfer asset to fee pool.
contract_whitelist_operation

#### Custom Extension¶

Name Description
custom_operation Provides a generic way to add higher level protocols on top of witness consensus

#### Assets Market¶

Name Description
limit_order_create_operation Instructs the blockchain to attempt to sell one asset for another
limit_order_cancel_operation Used to cancel an existing limit order
call_order_update_operation This operation can be used to add collateral, cover, and adjust the margin call price for a particular user
fill_order_operation [VIRTUAL] This is a virtual operation that is created while matching orders and emitted for the purpose of accurately tracking account history, accelerating a reindex
bid_collateral_operation This operation can be used after a black swan to bid collateral for taking over part of the debt and the settlement_fund (see BSIP-0018)
execute_bid_operation [VIRTUAL] This is a virtual operation that is created while reviving a bitasset from collateral bids

#### Transaction Proposal Protocol¶

Echo allows users to propose a transaction which requires approval of multiple accounts in order to execute. The user proposes a transaction using proposal_create_operation, then signatory accounts use proposal_update_operations to add or remove their approvals from this operation. When a sufficient number of approvals have been granted, the operations in the proposal are used to create a virtual transaction which is subsequently evaluated. Even if the transaction fails, the proposal will be kept until the expiration time, at which point, if sufficient approval is granted, the transaction will be evaluated a final time. This allows transactions which will not execute successfully until a given time to still be executed through the proposal mechanism. The first time the proposed transaction succeeds, the proposal will be regarded as resolved, and all future updates will be invalid.

The proposal system allows for arbitrarily complex or recursively nested authorities. If a recursive authority (i.e. an authority which requires approval of 'nested' authorities on other accounts) is required for a proposal, then a second proposal can be used to grant the nested authority's approval. That is, a second proposal can be created which, when sufficiently approved, adds the approval of a nested authority to the first proposal. This multiple-proposal scheme can be used to acquire approval for an arbitrarily deep authority tree.

Note that at any time, a proposal can be approved in a single transaction if sufficient signatures are available on the proposal_update_operation, as long as the authority tree to approve the proposal does not exceed the maximum recursion depth. In practice, however, it is easier to use proposals to acquire all approvals, as this leverages on-chain notification of all relevant parties that their approval is required. Off-chain multi-signature approval requires some off-chain mechanism for acquiring several signatures on a single transaction. This off-chain synchronization can be avoided using proposals.

##### Proposal operations¶
Name Description
proposal_create_operation Creates a transaction proposal, for use in multi-sig scenarios
proposal_update_operation Updates an existing transaction proposal
proposal_delete_operation Deletes an existing transaction proposal

#### Asset Transfer¶

Name Description
transfer_operation Transfers an amount of one asset from one account to another
override_transfer_operation Allows the issuer of an asset to transfer an asset from any account to any account if they have override_authority

#### Vesting Balances¶

Name Description
vesting_balance_create_operation Create a vesting balance
vesting_balance_withdraw_operation Withdraw from a vesting balance

#### Withdrawal Permissions¶

Name Description
withdraw_permission_create_operation Create a new withdrawal permission
withdraw_permission_update_operation Update an existing withdraw permission
withdraw_permission_claim_operation Withdraw from an account which has published a withdrawal permission
withdraw_permission_delete_operation Delete an existing withdrawal permission