-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
questionFurther information is requestedFurther information is requested
Description
Is your feature request related to a problem
Currently, the Proposal contract supports only a single transaction via the ProposalData structure:
struct ProposalData {
receiver: Address;
body: Cell;
...
}This limits each proposal to executing only one action (e.g., a transfer, a call, or config update). In practice, communities often need to bundle multiple operations under a single vote — for example:
- Transfer tokens to multiple addresses
- Change multiple parameters
- Execute a series of contract calls
Describe the solution you'd like
Enable multiple transactions per proposal.
Each proposal should be able to store and execute an ordered list of transactions. During execution, the contract should iterate through them and process each action in sequence.
Implementation ideas
Two approaches to store multiple transactions:
1. Linked List
Each transaction contains an optional reference to the next one:
struct ProposalPayload {
receiver: Address;
body: Cell;
next: ProposalPayload? // or Cell?
}2. Indexed Map (Dictionary)
Use a Map<Int, ProposalPayload> to store transactions by index:
Map<Int, ProposalPayload> // key = transaction indexOpen questions
- Should proposal execution fail on first error, or continue through all transactions?
- Should individual payloads be limited in size?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
questionFurther information is requestedFurther information is requested