Arbitrary Transaction Proposals (ATPs)
ATPs are proposals that execute a predefined EOS transaction. This transaction carries the authority of the DAO once the proposal is accepted. This is a very powerful tool in the decentralization of Effect Network.
This means that an ATP can do anything that is possible in a transaction. Some examples include:
- Send any type of tokens from the DAO account
- Update smart contracts owned by the DAO
- Interact with Effect Force
- Swap tokens on Defibox
- Adjust network parameters (such as the fee percentage)
Under the hood, the transaction attached to an ATP is a regular eosio.msig
transactions that carries the authority of daoproposals@dao
.
The following 2 steps are needed to create an ATP:
- Create the
eosio.msig
transaction - Create the DAO proposal and link the ATP to it
Creating an eosio.msig using Bloks
A simple way to create an eosio.msig
transaction is to use https://bloks.io.
In this example we will create a transaction that sends NFX tokens from daoproposals
to an other account.
Login and enter Multisig Mode
In the login dropdown, switch the toggle to activate “Multisig Mode”
Create the transaction in Bloks
Go to “Wallet” and and enter the fields for sending the NFX tokens. Make sure to switch to “Use custom token” as your account might not own the tokens you wish to send. Then click the “Transfer” button.
Add the daoproposals@dao authority
In the multisig form, change the following fields:
- Authorization: enter
daoproposals
as Actor, anddao
as Permission. - Data -> From: change the sending account to
daoproposals
(as we are spending tokens from this account)
Note down proposal name and add Requested Approvers
Take note of the Proposal Name at the bottom. Then add daoproposals@dao
as a Requested Approver.
Set the eosio.msig expiration
It’s important to set the expiration of the transaction at least 5 weeks in the future.
This is because DAO cycles take 2 weeks and it can take more time for you proposal to be executed afterwards. If you omit this step your ATP will be invalid and can not be executed.
To do this, expand “Transaction Settings” and adjust the “expiration” field to be sufficiently far in the future.
Finally click Propose.
Create the DAO proposal
Enter the eosio.msig
proposal name in the “Advanced” section of the DAO proposal form: