Skip to content

Commit 97431f1

Browse files
musitdev0xmovses
andauthored
Features to activate / deactivate (#1287)
Co-authored-by: Richard Melkonian <[email protected]>
1 parent 6ce52ca commit 97431f1

File tree

1 file changed

+214
-1
lines changed
  • protocol-units/execution/maptos/framework/releases

1 file changed

+214
-1
lines changed

protocol-units/execution/maptos/framework/releases/README.md

Lines changed: 214 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,217 @@ We use this directory to track framework releases and migrations. The path of mi
1313
4. Implement the new release in the new directory.
1414
5. Write a migration test for it against the named release which is now in the [`parent`](./parent/) directory.
1515
6. Update the [`latest`](./latest/) directory to re-export the new release.
16-
- The [`head`](./head/) crate is a special case that is used to track the release that is on the current branch head. It can be used for intermediately testing changes that are not yet ready to be published.
16+
- The [`head`](./head/) crate is a special case that is used to track the release that is on the current branch head. It can be used for intermediately testing changes that are not yet ready to be published.
17+
18+
# Feature migration
19+
20+
The feature comparission between MVT Network and Aptos Network gives these features that are different.
21+
22+
| ID | Title | MVT | APTOS | MIGRATED Network |
23+
|----|--------------------------------------------|---------|---------|------------------|
24+
| 4 | APTOS_STD_CHAIN_ID_NATIVES | ENABLE | DISABLE | DISABLE |
25+
| 6 | COLLECT_AND_DISTRIBUTE_GAS_FEES | DISABLE | DISABLE | ENABLE |
26+
| 16 | PERIODICAL_REWARD_RATE_DECREASE | DISABLE | ENABLE | DISABLE |
27+
| 17 | PARTIAL_GOVERNANCE_VOTING | DISABLE | ENABLE | ENABLE |
28+
| 21 | DELEGATION_POOL_PARTIAL_GOVERNANCE_VOTING | DISABLE | ENABLE | ENABLE |
29+
| 40 | VM_BINARY_FORMAT_V7 | DISABLE | ENABLE | DISABLE |
30+
| 46 | KEYLESS_ACCOUNTS | ENABLE | ENABLE | DISABLE |
31+
| 47 | KEYLESS_BUT_ZKLESS_ACCOUNTS | ENABLE | DISABLE | DISABLE |
32+
| 48 | REMOVE_DETAILED_ERROR_FROM_HASH | ENABLE | DISABLE | DISABLE |
33+
| 54 | KEYLESS_ACCOUNTS_WITH_PASSKEYS | ENABLE | DISABLE | DISABLE |
34+
| 64 | NEW_ACCOUNTS_DEFAULT_TO_FA_APT_STORE | DISABLE | ENABLE | ENABLE |
35+
| 67 | CONCURRENT_FUNGIBLE_BALANCE | ENABLE | DISABLE | DISABLE |
36+
| 71 | DISALLOW_USER_NATIVES | DISABLE | ENABLE | ENABLE |
37+
| 72 | ALLOW_SERIALIZED_SCRIPT_ARGS | DISABLE | ENABLE | ENABLE |
38+
| 74 | ENABLE_ENUM_TYPES | DISABLE | ENABLE | ENABLE |
39+
| 76 | REJECT_UNSTABLE_BYTECODE_FOR_SCRIPT | DISABLE | ENABLE | ENABLE |
40+
| 77 | FEDERATED_KEYLESS | DISABLE | ENABLE | ENABLE |
41+
| 78 | TRANSACTION_SIMULATION_ENHANCEMENT | DISABLE | ENABLE | ENABLE |
42+
| 79 | COLLECTION_OWNER | DISABLE | ENABLE | ENABLE |
43+
| 80 | NATIVE_MEMORY_OPERATIONS | DISABLE | ENABLE | ENABLE |
44+
| 81 | _ENABLE_LOADER_V2 | DISABLE | ENABLE | ENABLE |
45+
| 82 | DISALLOW_INIT_MODULE_TO_PUBLISH_MODULES | DISABLE | ENABLE | ENABLE |
46+
| 90 | NEW_ACCOUNTS_DEFAULT_TO_FA_STORE | DISABLE | ENABLE | ENABLE |
47+
| 91 | DEFAULT_ACCOUNT_RESOURCE | DISABLE | ENABLE | ENABLE |
48+
| XX | GOVERNED_GAS_POOL | ENABLE | ENABLE | DISABLE |
49+
50+
## Feature description
51+
### 4 APTOS_STD_CHAIN_ID_NATIVES
52+
Activate this function `native public fun get(): u8;` which allow to access the chain Id inside Move code.
53+
54+
Enable in Movement network and disable in Aptos. Value after migration ?
55+
56+
### 6 PERIODICAL_REWARD_RATE_DECREASE
57+
Enables scheduled reductions in validator/staker reward rates over epochs.
58+
59+
Disable in Movement network and enable in Aptos. Value after migration ?
60+
### 17 PARTIAL_GOVERNANCE_VOTING
61+
Changes how governance proposals are resolved when not all validators vote
62+
63+
When this feature is disabled (default):
64+
- A proposal only passes if quorum is reached and a majority of the total voting power approves.
65+
- If not enough validators vote, the proposal fails by default.
66+
67+
When this feature is enabled:
68+
- The proposal outcome only considers the validators who actually voted.
69+
- Abstention is no longer equivalent to a "no" vote.
70+
71+
Disable in Movement network and enable in Aptos. Value after migration ?
72+
73+
### 21 DELEGATION_POOL_PARTIAL_GOVERNANCE_VOTING
74+
Allows partial vote counting for delegated stake within validator delegation pools
75+
76+
This feature changes how votes are counted within delegation pools, especially when:
77+
- Delegators do not cast votes
78+
- A validator or part of the pool abstains
79+
80+
With this feature enabled:
81+
- Only the delegated votes actually cast are used in calculating the outcome
82+
- It becomes possible for a subset of the delegation pool to pass/fail proposals
83+
84+
Without this feature, if a validator has 100 delegated tokens but only 30 are used to vote, the system assumes the other 70 abstained — and still counts them against quorum or majority thresholds
85+
86+
Disable in Movement network and enable in Aptos. Value after migration ?
87+
88+
89+
### 64 NEW_ACCOUNTS_DEFAULT_TO_FA_APT_STORE
90+
Changes the default storage model for APT coins in new accounts.
91+
When NEW_ACCOUNTS_DEFAULT_TO_FA_APT_STORE is enabled:
92+
93+
All new accounts created after feature activation will:
94+
- Use FA-based storage for their APT coins by default
95+
- No longer use CoinStore<AptosCoin> unless explicitly created that way
96+
97+
This enables faster scaling of account creation and APT payments at the protocol level.
98+
99+
Without this feature :
100+
- New accounts use CoinStore-based APT storage
101+
- Less concurrency for transfers
102+
- Less optimized for high-throughput workloads
103+
104+
Disable in Movement network and enable in Aptos. Value after migration ?
105+
106+
### 67 CONCURRENT_FUNGIBLE_BALANCE
107+
Enables a new implementation of CoinStore optimized for concurrency and performance
108+
109+
When CONCURRENT_FUNGIBLE_BALANCE is enabled, Aptos switches the underlying CoinStore implementation to a new model using:
110+
- Aggregator-backed CoinStore
111+
- Native Rust implementation optimized for:
112+
- Parallelism in the VM
113+
- Reduced gas costs for coin transfers
114+
- Concurrent writes to many CoinStores
115+
116+
Enable in Movement network and disable in Aptos. Value after migration ?
117+
118+
### 71 DISALLOW_USER_NATIVES
119+
`DISALLOW_USER_NATIVES` is a VM feature flag that forbids non-framework modules from defining Move “native” items (i.e., native fun and native struct).
120+
When this flag is enabled, the Aptos VM will reject publishing or upgrading any module that contains user-defined natives unless it belongs to the core code addresses (e.g., 0x1 AptosFramework / AptosStd / MoveStdlib).
121+
122+
Disable in Movement network and enable in Aptos. Value after migration ?
123+
124+
### 72 ALLOW_SERIALIZED_SCRIPT_ARGS
125+
The Aptos feature flag ALLOW_SERIALIZED_SCRIPT_ARGS controls whether Move script/function arguments can be passed in serialized (BCS) form instead of structured command-line input.
126+
127+
Use Cases
128+
- Protocol governance automation: Tools like aptos-governance can submit exact arguments on-chain in BCS format
129+
- Cross-language SDKs: Rust, Python, JavaScript SDKs can encode arguments once and submit them to the chain without decoding
130+
- Batch transactions or replay systems can record + replay exact inputs
131+
132+
Disable in Movement network and enable in Aptos. Value after migration ?
133+
134+
### 74 ENABLE_ENUM_TYPES
135+
Enables the enum type system in Move (akin to Rust-style enums or sum types)
136+
137+
Disable in Movement network and enable in Aptos. Value after migration ?
138+
139+
### 76 REJECT_UNSTABLE_BYTECODE_FOR_SCRIPT
140+
Prevent scripts from using unstable VM bytecodes (e.g., Move 2 experimental opcodes).
141+
142+
Disable in Movement network and enable in Aptos. Value after migration ?
143+
144+
### 77 FEDERATED_KEYLESS
145+
Enables federated (off-chain) authentication and signing for special keyless Aptos accounts
146+
147+
Keyless accounts:
148+
- Don’t store a public key in the account
149+
- Instead, rely on off-chain verifiable authentication protocols (e.g., WebAuthn, federated ID systems)
150+
- Authentication and signature checks are delegated to a federated service (trusted by the network)
151+
152+
Disable in Movement network and enable in Aptos. Value after migration ?
153+
154+
### 78 TRANSACTION_SIMULATION_ENHANCEMENT
155+
Improves consistency, safety, and reliability of transaction simulations
156+
157+
### 79 COLLECTION_OWNER
158+
Enables collection ownership logic for NFTs (Token v2), giving collection creators ownership rights and management capabilities
159+
160+
Disable in Movement network and enable in Aptos. Value after migration ?
161+
162+
### 80 NATIVE_MEMORY_OPERATIONS
163+
Enables native (Rust-implemented) Move functions for low-level memory access or manipulation.
164+
It enable these functions:
165+
166+
```
167+
native public fun memcpy(dst: &mut vector<u8>, src: &vector<u8>, len: u64);
168+
native public fun memcmp(a: &vector<u8>, b: &vector<u8>): bool;
169+
```
170+
171+
Disable in Movement network and enable in Aptos. Value after migration ?
172+
173+
### ENABLE_LOADER_V2
174+
Activates Loader v2, a new Move module loading engine with improved design and performance
175+
176+
Disable in Movement network and enable in Aptos. Value after migration ?
177+
178+
### 82 DISALLOW_INIT_MODULE_TO_PUBLISH_MODULES
179+
Prevent modules from calling move_to or publish_module during their own initialization (init_module)
180+
181+
Disable in Movement network and enable in Aptos. Value after migration ?
182+
183+
### 90 NEW_ACCOUNTS_DEFAULT_TO_FA_STORE
184+
Makes all newly created accounts default to using FA (aggregator-based) CoinStores for any fungible token, not just APT
185+
186+
Disable in Movement network and enable in Aptos. Value after migration ?
187+
188+
### 91 DEFAULT_ACCOUNT_RESOURCE
189+
Enables the use of the new DefaultAccount resource layout for newly created accounts
190+
191+
Disable in Movement network and enable in Aptos. Value after migration ?
192+
193+
### GOVERNED_GAS_POOL
194+
Movement feature removed.
195+
196+
## Proposition
197+
From my understanding of the feature I propose theses changes:
198+
199+
### Features that can be enable without risk
200+
201+
CONCURRENT_FUNGIBLE_BALANCE
202+
ALLOW_SERIALIZED_SCRIPT_ARGS
203+
REJECT_UNSTABLE_BYTECODE_FOR_SCRIPT
204+
TRANSACTION_SIMULATION_ENHANCEMENT
205+
COLLECTION_OWNER
206+
NATIVE_MEMORY_OPERATIONS
207+
ENABLE_LOADER_V2
208+
DISALLOW_INIT_MODULE_TO_PUBLISH_MODULES
209+
DISALLOW_USER_NATIVES
210+
211+
### Features that can be disable without risk
212+
None
213+
214+
### Feature that can cause an issue where we need to decide.
215+
These feature can change the current movement network behavior is their state is changed.
216+
217+
APTOS_STD_CHAIN_ID_NATIVES: Disable in Aptos, some of our deployed smart contract can use it so it would break their execution.
218+
219+
PERIODICAL_REWARD_RATE_DECREASE: Depend on how we reward validators.
220+
221+
PARTIAL_GOVERNANCE_VOTING and DELEGATION_POOL_PARTIAL_GOVERNANCE_VOTING depends on own the new network governance should work.
222+
223+
NEW_ACCOUNTS_DEFAULT_TO_FA_APT_STORE: change how new account are created. Perhaps, it can create some incompatibilities with the current deployed smart contract.
224+
225+
ENABLE_ENUM_TYPES: I think it's related to move2 that won't be activated during the migration but after.
226+
227+
FEDERATED_KEYLESS: It's a new feature, do we support it?
228+
229+
NEW_ACCOUNTS_DEFAULT_TO_FA_STORE and DEFAULT_ACCOUNT_RESOURCE: change how account are created, it can affect existing application.

0 commit comments

Comments
 (0)