---
# System prepended metadata

title: Acala governance

---

# Acala governance

## 当前Acala的权限

1. Democray 当前的公投执行时，权限都为 Root 权限
2. Authority 供 council 构造 Root 权限， 以及dispatch as Treasury, Homa, Honzon等模块账户(目前的治理很少用到， 一般都走Democray的公投来操作模块账户)

 Acala 的 council:

+ GeneralCouncil: 6 members
+ FinancialCouncil: 3 members
+ HomaCouncil: 2 members
+ TechnicalCommittee: 3 members


| pallet | authority type | current allowed origin | adjust after OpenGov | description |
| --- | --- | --- | --- | --- |
| CollatorSelection | UpdateOrigin | Root, 1/2 GeneralCouncil |  |  |
| Treasury | ApproveOrigin | Root, 1/2 GeneralCouncil |  |  |
| Treasury | RejectOrigin | Root, 1/2 GeneralCouncil |  |  |
| Treasury | SpendOrigin | NONE |  | OpenGov 可以配置不同资金级别的Origin来使用Treasury资金 |
| Democracy | ExternalOrigin | Root, 1/2 GeneralCouncil |  |  |
| Democracy | ExternalMajorityOrigin | Root, 1/2 GeneralCouncil |  |  |
| Democracy | ExternalDefaultOrigin | Root, 1/1 GeneralCouncil |  |  |
| Democracy | FastTrackOrigin | Root, 2/3 TechnicalCommittee |  |  |
| Democracy | InstantOrigin | Root, 1/1 TechnicalCommittee |  |  |
| Democracy | CancellationOrigin | Root, 2/3 GeneralCounci |  |  |
| Democracy | VetoOrigin | any TechnicalCommittee member |  |  |
| Authority | 构造AuthoritysOriginId::Root | Root, 3/4 GeneralCounci 发起 delay 1天 |  | AuthoritysOriginId::Root 相当于发起 Root 权限 |
| Authority | 构造AuthoritysOriginId::Treasury | Root, 1/2 GeneralCounci 发起 delay 1天 |  | AuthoritysOriginId::Treasury相当于dispatch as Treasury pallet account |
| Authority | 构造AuthoritysOriginId::HonzonTreasury | Root, 1/2 FinancialCouncil 发起 delay 1天 |  | AuthoritysOriginId::HonzonTreasury相当于dispatch as Honzon pallet account |
| Authority | 构造AuthoritysOriginId::HomaTreasury | Root, 1/2 HomaCouncil 发起 delay 1天 |  | AuthoritysOriginId::HomaTreasury相当于dispatch as Homa pallet account |
| Authority | 构造AuthoritysOriginId::TreasuryReserve | Root |  | AuthoritysOriginId::TreasuryReserve相当于dispatch as TreasuryReserve account(目前交易手续费收到该账户) |
| Authority | 加速Authority构造的scheduler | Root, 2/3 TechnicalCommittee 加速到12小时以内, 1/3 TechnicalCommittee 只能加速到 12小时以上  |  |  |
| Prices | LockOrigin | Root, 2/3 GeneralCouncil |  |  |
| Currencies | SweepOrigin | Root, any GeneralCouncil member |  |  |
| Vesting | VestedTransferOrigin | Acala Foundation Account |  |  |
| Scheduler | ScheduleOrigin | Root |  |  |
| Preimage | ManagerOrigin | Root |  |  |
| CdpEngine | UpdateOrigin | Root, 1/2 FinancialCouncil |  |  |
| CdpEngine | LiquidationContractsUpdateOrigin | Root, 1/2 GeneralCouncil |  |  |
| EmergencyShutdown | ShutdownOrigin | Root |  |  |
| Dex | ListingOrigin | Root, 1/2 GeneralCouncil |  |  |
| AggregatedDex | GovernanceOrigin | Root, 1/2 GeneralCouncil |  |  |
| DexOracle | UpdateOrigin | Root, 1/2 GeneralCouncil |  |  |
| CdpTreasury | UpdateOrigin | Root, 1/2 FinancialCouncil |  |  |
| TransactionPause | UpdateOrigin | Root, 2/3 FinancialCouncil |  |  |
| TransactionPayment | UpdateOrigin | Root, 1/2 GeneralCouncil |  |  |
| AssetRegistry | RegisterOrigin | Root, 1/2 GeneralCouncil |  |  |
| Incentives | UpdateOrigin | Root, 3/4 GeneralCouncil |  |  |
| EVM | NetworkContractOrigin | Root, 3/4 GeneralCouncil |  |  |
| EVM | FreePublicationOrigin | Root, 1/2 GeneralCouncil |  |  |
| Homa | GovernanceOrigin | Root, 1/2 GeneralCouncil |  |  |
| XcmInterface | UpdateOrigin | Root, 1/2 GeneralCouncil |  |  |
| Xcm | SovereignOrigin | Root, 3/4 GeneralCouncil |  |  |
| StableAsset | ListingOrigin | Root, 1/2 GeneralCouncil |  |  |
| LiquidCrowdloan | GovernanceOrigin | Root, 3/4 GeneralCouncil |  |  |
| Parameters | AdminOrigin | Root, 3/4 GeneralCouncil |  |  |
| OperatorMembership | 多个配置member的Origin | Root, 2/3 GeneralCouncil | | OperatorMembership的member为 Oracle 的 feeder |

## OpenGov Config

TBD:  

1. 看需要配置哪些 Custom Origin ， OpenGov参数怎么配， 以及可以用于行使什么权限？
2. 新增了一些pallet， 关键参数需要确定一下.
3. 原先一些council可以操作的权限， 可以review下哪些安全级别需要提高，哪些门槛需要调低一些.
4. 原先哪一些权限，在允许Custom Origin后， 需要拿掉 council 的权限？
4. pallet-tips 模块好像没有用到， polkadot早就移除掉了， Acala也拿掉？


### Custom Origins 配置

例子：

```
// moonbeam 配置
pub enum Origin {
	/// Origin able to dispatch a whitelisted call.
	WhitelistedCaller,
	/// General admin
	GeneralAdmin,
	/// Origin able to cancel referenda.
	ReferendumCanceller,
	/// Origin able to kill referenda.
	ReferendumKiller,
}

// referenda 对于 Custom Origins 的治理配置：
[
	(
		0,
		pallet_referenda::TrackInfo {
			// Name of this track.
			name: "root",
			// A limit for the number of referenda on this track that can be being decided at once.
			// For Root origin this should generally be just one.
			max_deciding: 5,
			// Amount that must be placed on deposit before a decision can be made.
			decision_deposit: 20 * KILOGLMR * SUPPLY_FACTOR,
			// Amount of time this must be submitted for before a decision can be made.
			prepare_period: 1 * DAYS,
			// Amount of time that a decision may take to be approved prior to cancellation.
			decision_period: 14 * DAYS,
			// Amount of time that the approval criteria must hold before it can be approved.
			confirm_period: 1 * DAYS,
			// Minimum amount of time that an approved proposal must be in the dispatch queue.
			min_enactment_period: 1 * DAYS,
			// Minimum aye votes as percentage of overall conviction-weighted votes needed for
			// approval as a function of time into decision period.
			min_approval: Curve::make_reciprocal(4, 14, percent(80), percent(50), percent(100)),
			// Minimum pre-conviction aye-votes ("support") as percentage of overall population that
			// is needed for approval as a function of time into decision period.
			min_support: Curve::make_linear(14, 14, permill(5), percent(25)),
		},
	),
	(
		1,
		pallet_referenda::TrackInfo {
			name: "whitelisted_caller",
			max_deciding: 100,
			decision_deposit: 2 * KILOGLMR * SUPPLY_FACTOR,
			prepare_period: 10 * MINUTES,
			decision_period: 14 * DAYS,
			confirm_period: 10 * MINUTES,
			min_enactment_period: 30 * MINUTES,
			min_approval: Curve::make_reciprocal(1, 14, percent(96), percent(50), percent(100)),
			min_support: Curve::make_reciprocal(1, 14 * 24, percent(1), percent(0), percent(2)),
		},
	),
	(
		2,
		pallet_referenda::TrackInfo {
			name: "general_admin",
			max_deciding: 10,
			decision_deposit: 100 * GLMR * SUPPLY_FACTOR,
			prepare_period: 1 * HOURS,
			decision_period: 14 * DAYS,
			confirm_period: 1 * DAYS,
			min_enactment_period: 1 * DAYS,
			min_approval: Curve::make_reciprocal(4, 14, percent(80), percent(50), percent(100)),
			min_support: Curve::make_reciprocal(7, 14, percent(10), percent(0), percent(50)),
		},
	),
	(
		3,
		pallet_referenda::TrackInfo {
			name: "referendum_canceller",
			max_deciding: 20,
			decision_deposit: 2 * KILOGLMR * SUPPLY_FACTOR,
			prepare_period: 1 * HOURS,
			decision_period: 14 * DAYS,
			confirm_period: 3 * HOURS,
			min_enactment_period: 10 * MINUTES,
			min_approval: Curve::make_reciprocal(1, 14, percent(96), percent(50), percent(100)),
			min_support: Curve::make_reciprocal(1, 14, percent(1), percent(0), percent(10)),
		},
	),
	(
		4,
		pallet_referenda::TrackInfo {
			name: "referendum_killer",
			max_deciding: 100,
			decision_deposit: 4 * KILOGLMR * SUPPLY_FACTOR,
			prepare_period: 1 * HOURS,
			decision_period: 14 * DAYS,
			confirm_period: 3 * HOURS,
			min_enactment_period: 10 * MINUTES,
			min_approval: Curve::make_reciprocal(1, 14, percent(96), percent(50), percent(100)),
			min_support: Curve::make_reciprocal(1, 14, percent(1), percent(0), percent(10)),
		},
	),
]
```

### 引入OpenGov 后， 新增的模块

+ pallet\_conviction\_voting: for managing actual voting in polls.
+ pallet\_whitelist: The purpose of this pallet is to queue calls to be dispatched as by root later => the Dispatch
+ pallet\_referenda: A pallet for executing referenda. No voting logic is present here, and the `Polling` and `PollStatus` traits are used to allow the voting logic (likely in a pallet) to be utilized.

important parameters:

| pallet | parameters | config | description |
| --- | --- | --- | --- | 
| pallet\_conviction\_voting | MaxVotes |  | Maximum number of concurrent votes an account may have |
| pallet\_conviction\_voting | VoteLockingPeriod |  | Minimum period of vote locking |
| pallet\_whitelist | WhitelistOrigin |  | Required origin for whitelisting a call |
| pallet\_whitelist | DispatchWhitelistedOrigin |  | Required origin for dispatching whitelisted call with root origin |
| pallet\_referenda | CancelOrigin |  | Origin from which any vote may be cancelled |
| pallet\_referenda | KillOrigin |  | Origin from which any vote may be killed |
| pallet\_referenda | SubmissionDeposit |  | The minimum amount to be used as a deposit for a public referendum proposal |
| pallet\_referenda | MaxQueued |  | Maximum size of the referendum queue for a single track |
| pallet\_referenda | UndecidingTimeout |  | The number of blocks after submission that a referendum must begin being decided by. Once this passes, then anyone may cancel the referendum |
| pallet\_referenda | AlarmInterval |  | Quantization level for the referendum wakeup scheduler. A higher number will result in fewer storage reads/writes needed for smaller voters, but also result in delays to the automatic referendum status changes. Explicit servicing instructions are unaffected. |