Skip to main content

Multi-Signature Proposal on OBE

Telos Open Block Explorer (OBE) allows for the creation of multi-sig proposed transactions.

Telos OBE provides a wrapper to interact with the eosio.msig contract easily. One user creates a proposal. Another user(s) reviews the transaction and then approves it for execution.

Telos has made it easy to propose, review, approve and execute a multi-sig transaction.

Overview

Now with Telos OBE, you can easily submit, review, approve, cancel, and execute new proposals without the hassle of using cleos or generating a JSON file for eosio.msig.

Proposal actions supported by Telos OBE include:

  1. Propose a. To submit a proposal, you need the following parameters: i. A proposer(the account proposing the transaction) ii. A proposal name (a unique name for the proposal) iii. Requested (Permission levels expected to approve the proposal).
    iv. Transaction (Proposed transaction).
  2. Approve
    a. Approves the existing proposal.
  3. Unapprove
    a. Revokes an existing proposal.
  4. Cancel
    a. Cancels an existing proposal.
  5. Execute a. The execute action allows an account to execute the proposal under certain conditions: i. Executer has authorization. ii. Proposal name is found in the proposals table. iii. All requested approvals are received. iv. Proposed transaction has not expired. v. None of the approval accounts are in the invalidations table.
  6. Invalidate

__Note: Once the threshold of signers is reached, the proposal will not execute automatically. Any account must trigger the execute command to perform the final transaction.

Multi-transfer actions

Telos OBE offers multi-transfer actions(more than one action) within one multi-sig proposal. Just import a .csv file to execute more than one token send transaction in one go.

Actor for approval vs. actor for authorization

Note: There is a difference between an "actor for approval" and an "actor for authorization".

● The actor for approving a proposal is all the accounts required to approve a msig transaction for an account. ● The actor for authorization is the actual msig account that will perform the transaction AFTER approvers have signed.

Walkthrough single transfer action

In this tutorial, we will create a multi-sig proposal to transfer tokens from one account to another using the eosio.token contract as an example.

Steps

  1. Go to explorer.telos.net.
  2. Select "connect" to connect your wallet(Anchor or Cleos).
  3. Now select "Proposal", which will display all proposals associated with your account.

My Proposals

  1. You may check all recent and active proposals in the "All Proposals" tab.
  2. Please click on "New Proposal".

New Proposal

  1. Start giving your proposal a unique name, or use the automatically generated proposal name. It may consist of 2-13 characters, only including "a-z" or "1-5" or ".", while character 13 may only consist of "a-j" or "1-5". It is impossible to create a name that does not follow these rules.

Proposal Naming Convention

  1. The proposer field is automatically updated with your account information.
  2. Click on “Add action” to generate a proposed action.

Add action

Note: You also have the option to perform batch transfers (for eosio.token transfer contract actions only).

We will return to the “Requested approvals” section at step 12.

Note: The "All block producers need approvals" feature will automatically select all active Block Producers as signing actors. This feature is not recommended for non-Telos Core Development / Block Producer proposals.

  1. Type the account name (contract), and select the appropriate action. For this example, we are using eosio.token contract to transfer tokens from one account to another.

Note: Once a valid account is selected, all contract interactions are available inside the actions field. A "standard" user account will not show any actions. The user interface will adjust dynamically based on the action selected.

account action overview

  1. Add “from” = account that currently holds the token, also determined as "sender", “to” = receiver of the tokens, quantity including decimals and token symbol = 1.0000 TLOS, and give the transaction a description name (memo).

msig single action

  1. Add the authorization actor (the account to which the transaction is related) with their respective permissions. If multiple signatures are required to interact with the actor account, a small "people" icon appears next to the account permission. You will need to add some or all of these signing accounts as approvers inside your proposal.

Note: The "people" icon will show all accounts with signing permissions once clicked. Please verify the threshold for signatures before you continue.

Authorization signers

Note: It is generally possible to propose an action for any account with single active/owner permissions.

Simple permission acting account

  1. You can add additional actions by clicking “Add Action” below.

Telos offers a powerful tool to execute multiple actions within one proposal. A simplified option to create a multiple transfer proposal is explained further below.

  1. Since you are now aware of the required signing/approving actors, you can add those to the "Request Approver" section.

add proposal approvers signers

  1. Advanced transaction settings are available for experienced users. The majority of proposals will not require any manipulation of the available settings.

Advance transaction settings (transaction_header fields):

  • max_net_usage_words: Network bandwidth billing limit.
  • max_cpu_usage_ms: CPU time billing limit, in milliseconds.
  • delay_sec: The number of seconds to delay transaction, default: 0 sec. This causes the transaction to be executed a specified number of seconds after being. Included in a block. The transactions may be canceled anytime during the delay.
  • context_free_actions
  • transaction_extensions
  • ref_block_num: The reference block number helps to prevent replay attacks.
  • ref_block_prefix: The reference block prefix helps to prevent replay attacks.
  • expiration: The time it takes the transaction to expire and can no longer be included in a block.

For more information regarding advanced transaction settings, go to the class eosio::transaction and eosio::transaction_header documents found here.

advanced settings

  1. Please verify the proposal's content, including all actors, accounts, and parameters, and click "Send Proposal", Anchor will prompt you to sign the transaction.

Note: Signers are not informed automatically. Please copy the proposal URL and distribute it manually for signature.

Walkthrough multiple transfer action, file import(eosio.token transfer only)

The transfer in batch feature enables the fast creation of proposals which include various token transfers. We recommend limiting the number of transfers to approximately 100-125 for safe execution.

As mentioned above, proposals can also be used for accounts with a simple permission structure. Therefore ANY account can initiate multiple transfers encapsulated in a single transaction using this feature.

Follow steps 1-6 as outlined above.

  1. Select the "Transfer in Batch" option.

transfer in batch interface

  1. Download the example file provided, which will provide the required source file structure. When exporting the source file from Excel, Numbers, or Google Tables, including the header row, "," is used as the separator.

import file structure

msig file example 5 accounts

  1. Click "Select the CSV File" this will prompt you to select a file from your local hard drive. Important once the file is selected, you need to click on "Upload" to process the file.

msig transfer file upload

  1. The site will create a single action for each line of the uploaded CSV file. Please verify the imported data carefully and verify addresses and quantities.

imported actions overview

Please follow the further steps explained above to finalize the creation of the proposal.