Nomos
A multi-signature wallet for Archway and the Cosmos ecosystem
Welcome to the documentation for Nomos. In this section, we'll dive into the details of this contract, its purpose, functions, and usage.
Overview
Nomos is a system where different members can create proposals and vote for them. The wallet can be configured only once all members approved a new configuration. A vote threshold and optional “immediate” execution can be set on any proposal.
We recommend going to Protocol Overview before diving into this section.
Messages and Queries
Here are the main messages the contract can handle:
InstantiateMsg
InstantiateMsg
This instantiates a new wallet with all the initial configuration. The sender won't be added to the members list, so it must be added explicitly.
Parameters:
members
: The list of initial members of the wallet. These can propose and vote for proposals. The contract will only store non-repeated addresses.min_approval
: Minimum number of approvals needed from the members to execute a proposal. It must be higher than the number of members.
Example Usage: When creating a wallet, it is recommended to use our Factory. See.
ConfigureMultisig
ConfigureMultisig
This gives new configuration to the wallet. It can only be called by itself so the members need to create a proposal and approve it before configuring it. The parameters are the same as when creating a wallet.
ProposeTransaction
ProposeTransaction
This creates a new proposal with multiple transactions on the wallet. The sender must be a member.
msgs
: A CosmosMsg vector. If any of the transactions is a contract instantiation, it will make a reply where the contract metadata is set by the wallet. The owner and rewards receiver will be the wallet.description
: A string describing the proposal. For large descriptions, is recommended to upload them somewhere else and make a pointer (url) as description.manual_execution
: this field if set to true makes the proposal executable after it reaches the approved status. If set to false or not set, the proposal is executed when the last vote necessary to make it approvable is made.
VoteTransaction
VoteTransaction
This votes for an already existing proposal. The sender must be a member of the multisig. The proposal must exist, the sender must have not voted already, and the proposal must be in a pending state (not approved, rejected or executed).
tx_id
: The proposal identification inside the contract. Is returned when creating a proposal and emitted through an event.vote
: The vote of the user. Its 1 for approval and 0 for rejection.
ExecuteTransaction
ExecuteTransaction
This message is only used when a proposal is created with "manual_execution" set to true. Once the proposal is Approved, it can be executed using this function. The only argument it receives is the proposal id.
Last updated