Skip to content

Commit 494eb26

Browse files
committed
Adding miscaccounts proposal
1 parent dd57925 commit 494eb26

File tree

2 files changed

+298
-0
lines changed

2 files changed

+298
-0
lines changed

proposals/miscaccounts/README.md

Lines changed: 250 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,250 @@
1+
# Miscellaneous Vaulta Accounts Setup
2+
3+
> Infrastructure accounts for Vaulta platform services
4+
5+
### Account Overview
6+
7+
This proposal creates three essential infrastructure accounts for the Vaulta platform:
8+
9+
```mermaid
10+
graph TD
11+
eosio[eosio System Account]
12+
eosio --> |Creates & Funds| api[api.vaulta]
13+
eosio --> |Creates & Funds| open[open.vaulta]
14+
eosio --> |Creates & Funds| index[index.vaulta]
15+
16+
api --> |API Services| platform[Vaulta Platform]
17+
open --> |Account Creation| platform
18+
index --> |Registry Services| platform
19+
20+
style api fill:#e1f5ff
21+
style open fill:#e1f5ff
22+
style index fill:#e1f5ff
23+
```
24+
25+
### Account Structure
26+
27+
**api.vaulta** - API Contract
28+
- Provides readonly API calls for core network functionality
29+
- Owner: eosio@active (Network Authority)
30+
- Active: dev.vaulta@active
31+
- RAM: 8192 bytes
32+
33+
**open.vaulta** - Account Creation Contract
34+
- Allows account creation with a token transfer
35+
- Owner: eosio@active (Network Authority)
36+
- Active: dev.vaulta@active
37+
- RAM: 8192 bytes
38+
39+
**index.vaulta** - Registry Contract
40+
- Maintains registry and indexing services
41+
- Owner: eosio@active (Network Authority)
42+
- Active: dev.vaulta@active
43+
- RAM: 8192 bytes
44+
45+
### Permission Structure
46+
47+
**Owner Permission (Network Authority)**
48+
```json
49+
{
50+
"threshold": 1,
51+
"keys": [],
52+
"accounts": [
53+
{
54+
"weight": 1,
55+
"permission": {
56+
"actor": "eosio",
57+
"permission": "active"
58+
}
59+
}
60+
],
61+
"waits": []
62+
}
63+
```
64+
65+
**Active Permission (Development Authority)**
66+
```json
67+
{
68+
"threshold": 1,
69+
"keys": [],
70+
"accounts": [
71+
{
72+
"weight": 1,
73+
"permission": {
74+
"actor": "dev.vaulta",
75+
"permission": "active"
76+
}
77+
}
78+
],
79+
"waits": []
80+
}
81+
```
82+
83+
### MSIG - Miscellaneous Accounts Creation
84+
85+
#### Create Infrastructure Accounts
86+
87+
- [ ] 1.1 Purchase 8192 bytes of RAM for `api.vaulta`
88+
- [ ] 1.2 Create `api.vaulta` account with network owner and dev team active permissions
89+
90+
**buyrambytes**
91+
```json
92+
{
93+
"payer": "eosio",
94+
"receiver": "api.vaulta",
95+
"bytes": 8192
96+
}
97+
```
98+
99+
**newaccount**
100+
```json
101+
{
102+
"creator": "eosio",
103+
"name": "api.vaulta",
104+
"owner": {
105+
"threshold": 1,
106+
"keys": [],
107+
"accounts": [
108+
{
109+
"weight": 1,
110+
"permission": {
111+
"actor": "eosio",
112+
"permission": "active"
113+
}
114+
}
115+
],
116+
"waits": []
117+
},
118+
"active": {
119+
"threshold": 1,
120+
"keys": [],
121+
"accounts": [
122+
{
123+
"weight": 1,
124+
"permission": {
125+
"actor": "dev.vaulta",
126+
"permission": "active"
127+
}
128+
}
129+
],
130+
"waits": []
131+
}
132+
}
133+
```
134+
135+
- [ ] 2.1 Purchase 8192 bytes of RAM for `open.vaulta`
136+
- [ ] 2.2 Create `open.vaulta` account with network owner and dev team active permissions
137+
138+
**buyrambytes**
139+
```json
140+
{
141+
"payer": "eosio",
142+
"receiver": "open.vaulta",
143+
"bytes": 8192
144+
}
145+
```
146+
147+
**newaccount**
148+
```json
149+
{
150+
"creator": "eosio",
151+
"name": "open.vaulta",
152+
"owner": {
153+
"threshold": 1,
154+
"keys": [],
155+
"accounts": [
156+
{
157+
"weight": 1,
158+
"permission": {
159+
"actor": "eosio",
160+
"permission": "active"
161+
}
162+
}
163+
],
164+
"waits": []
165+
},
166+
"active": {
167+
"threshold": 1,
168+
"keys": [],
169+
"accounts": [
170+
{
171+
"weight": 1,
172+
"permission": {
173+
"actor": "dev.vaulta",
174+
"permission": "active"
175+
}
176+
}
177+
],
178+
"waits": []
179+
}
180+
}
181+
```
182+
183+
- [ ] 3.1 Purchase 8192 bytes of RAM for `index.vaulta`
184+
- [ ] 3.2 Create `index.vaulta` account with network owner and dev team active permissions
185+
186+
**buyrambytes**
187+
```json
188+
{
189+
"payer": "eosio",
190+
"receiver": "index.vaulta",
191+
"bytes": 8192
192+
}
193+
```
194+
195+
**newaccount**
196+
```json
197+
{
198+
"creator": "eosio",
199+
"name": "index.vaulta",
200+
"owner": {
201+
"threshold": 1,
202+
"keys": [],
203+
"accounts": [
204+
{
205+
"weight": 1,
206+
"permission": {
207+
"actor": "eosio",
208+
"permission": "active"
209+
}
210+
}
211+
],
212+
"waits": []
213+
},
214+
"active": {
215+
"threshold": 1,
216+
"keys": [],
217+
"accounts": [
218+
{
219+
"weight": 1,
220+
"permission": {
221+
"actor": "dev.vaulta",
222+
"permission": "active"
223+
}
224+
}
225+
],
226+
"waits": []
227+
}
228+
}
229+
```
230+
231+
### Execution
232+
233+
To execute this proposal:
234+
235+
```bash
236+
# Navigate to the proposal directory
237+
cd proposals/misc.accounts
238+
239+
# Run the proposal script
240+
bun run index.ts
241+
```
242+
243+
This will generate a multisig proposal that can be reviewed and approved by the network authority (eosio@active).
244+
245+
### Security Considerations
246+
247+
- **Owner Permission**: Controlled by network authority (eosio@active) for ultimate security and recovery
248+
- **Active Permission**: Delegated to dev.vaulta@active for operational control
249+
- **RAM Allocation**: Each account receives 8192 bytes, sufficient for basic contract deployment and operations
250+
- **System Funded**: All RAM costs are paid by the eosio system account

proposals/miscaccounts/index.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import type { Action } from '@wharfkit/antelope'
2+
import { logProposalLink } from '$lib/utils'
3+
import { makeSession, systemContract } from '$lib/wharf'
4+
import { NETWORK_AUTHORITY, SYSTEM_ACCOUNT } from '../../lib/constants'
5+
6+
// The new accounts to create
7+
const accounts = [
8+
'api.vaulta', // API Contract
9+
'open.vaulta', // Account Creation Contract
10+
'index.vaulta', // Registry Contract
11+
]
12+
13+
export const DEV_AUTHORITY = {
14+
threshold: 1,
15+
keys: [],
16+
accounts: [
17+
{
18+
weight: 1,
19+
permission: {
20+
actor: 'dev.vaulta',
21+
permission: 'active',
22+
},
23+
},
24+
],
25+
waits: [],
26+
}
27+
28+
const actions: Action[] = []
29+
30+
accounts.forEach((name) => {
31+
actions.push(
32+
systemContract.action('buyrambytes', {
33+
bytes: 8192,
34+
payer: SYSTEM_ACCOUNT,
35+
receiver: name,
36+
}),
37+
systemContract.action('newaccount', {
38+
active: DEV_AUTHORITY,
39+
creator: SYSTEM_ACCOUNT,
40+
name,
41+
owner: NETWORK_AUTHORITY,
42+
}),
43+
)
44+
})
45+
46+
const session = makeSession('eosio@active')
47+
const result = await session.transact({ actions }, { broadcast: true })
48+
logProposalLink(result, session)

0 commit comments

Comments
 (0)