Skip to content

Commit 8bbea95

Browse files
committed
Create proposal script
1 parent d870079 commit 8bbea95

2 files changed

Lines changed: 94 additions & 23 deletions

File tree

Anchor.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ airdrop = "yarn run ts-node scripts/airdrop.ts"
2121
autocrat_v0 = "yarn run ts-node scripts/autocratV0.ts"
2222
clob = "yarn run tsc scripts/clob.ts --esModuleInterop --resolveJsonModule && node scripts/clob.js && rm scripts/clob.js"
2323
crank = "yarn run ts-node scripts/crank.ts"
24+
main = "yarn run ts-node scripts/main.ts"
2425
initialize_vault = "yarn run tsc scripts/initializeVault.ts --esModuleInterop --resolveJsonModule && node scripts/initializeVault.js"
2526
place_order = "yarn run ts-node scripts/placeOrder.ts"
2627
test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/*.ts"

scripts/main.ts

Lines changed: 93 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,18 @@ import {
1919
} from "../target/types/conditional_vault";
2020

2121
import { OpenbookTwap } from "../tests/fixtures/openbook_twap";
22+
import { AutocratMigrator } from "../target/types/autocrat_migrator";
2223

2324
const AutocratIDL: AutocratV0 = require("../target/idl/autocrat_v0.json");
2425
const OpenbookTwapIDL: OpenbookTwap = require("../tests/fixtures/openbook_twap.json");
26+
const AutocratMigratorIDL: AutocratMigrator = require("../target/idl/autocrat_migrator.json");
2527

26-
const AUTOCRAT_PROGRAM_ID = new PublicKey(
28+
const NEW_AUTOCRAT_PROGRAM_ID = new PublicKey(
2729
"metaX99LHn3A7Gr7VAcCfXhpfocvpMpqQ3eyp3PGUUq"
2830
);
31+
const AUTOCRAT_PROGRAM_ID = new PublicKey(
32+
"meta3cxKzFBmWYgCVozmvCQAS3y9b3fGxrG9HkHL7Wi"
33+
);
2934
const CONDITIONAL_VAULT_PROGRAM_ID = new PublicKey(
3035
"vaU1tVLj8RFk7mNj1BxqgAsMKKaL8UvEUHvU3tdbZPe"
3136
);
@@ -39,9 +44,18 @@ const OPENBOOK_PROGRAM_ID = new PublicKey(
3944
export const META = new PublicKey(
4045
"METADDFL6wWMWEoKTFJwcThTbUmtarRJZjRpzUvkxhr"
4146
);
47+
export const DEVNET_USDC = new PublicKey(
48+
"B9CZDrwg7d34MiPiWoUSmddriCtQB5eB2h9EUSDHt48b"
49+
);
50+
export const USDC = new PublicKey(
51+
"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
52+
);
4253
export const PROPH3t_PUBKEY = new PublicKey(
4354
"65U66fcYuNfqN12vzateJhZ4bgDuxFWN9gMwraeQKByg"
4455
);
56+
const AUTOCRAT_MIGRATOR_PROGRAM_ID = new PublicKey(
57+
"migkwAXrXFN34voCYQUhFQBXZJjHrWnpEXbSGTqZdB3"
58+
);
4559

4660
export const provider = anchor.AnchorProvider.env();
4761
anchor.setProvider(provider);
@@ -53,6 +67,11 @@ export const autocratProgram = new Program<AutocratV0>(
5367
AUTOCRAT_PROGRAM_ID,
5468
provider
5569
);
70+
export const newAutocratProgram = new Program<AutocratV0>(
71+
AutocratIDL,
72+
NEW_AUTOCRAT_PROGRAM_ID,
73+
provider
74+
);
5675

5776
export const vaultProgram = new Program<ConditionalVault>(
5877
ConditionalVaultIDL,
@@ -67,6 +86,12 @@ export const openbookTwap = new Program<OpenbookTwap>(
6786
provider
6887
);
6988

89+
export const migrator = new anchor.Program<AutocratMigrator>(
90+
AutocratMigratorIDL,
91+
AUTOCRAT_MIGRATOR_PROGRAM_ID,
92+
provider
93+
);
94+
7095
const [dao] = PublicKey.findProgramAddressSync(
7196
[anchor.utils.bytes.utf8.encode("WWCACOTMICMIBMHAFTTWYGHMB")],
7297
autocratProgram.programId
@@ -77,6 +102,17 @@ const [daoTreasury] = PublicKey.findProgramAddressSync(
77102
autocratProgram.programId
78103
);
79104

105+
const [newDao] = PublicKey.findProgramAddressSync(
106+
[anchor.utils.bytes.utf8.encode("WWCACOTMICMIBMHAFTTWYGHMB")],
107+
newAutocratProgram.programId
108+
);
109+
110+
const [newDaoTreasury] = PublicKey.findProgramAddressSync(
111+
[newDao.toBuffer()],
112+
newAutocratProgram.programId
113+
);
114+
115+
80116
async function createMint(
81117
mintAuthority: any,
82118
freezeAuthority: any,
@@ -159,57 +195,85 @@ async function initializeDAO(META: any, USDC: any) {
159195
}
160196

161197
async function initializeProposal() {
162-
const senderAcc = await token.getOrCreateAssociatedTokenAccount(
198+
const treasuryMetaAccount = await token.getOrCreateAssociatedTokenAccount(
163199
provider.connection,
164200
payer,
165201
META,
166202
daoTreasury,
167203
true
168204
);
169205

170-
const receiverAcc = await token.getOrCreateAssociatedTokenAccount(
206+
const treasuryUsdcAccount = await token.getOrCreateAssociatedTokenAccount(
207+
provider.connection,
208+
payer,
209+
USDC,
210+
daoTreasury,
211+
true
212+
);
213+
214+
const newTreasuryMetaAccount = await token.getOrCreateAssociatedTokenAccount(
171215
provider.connection,
172216
payer,
173217
META,
174-
PROPH3t_PUBKEY
218+
newDaoTreasury,
219+
true
175220
);
176221

177-
const transferIx = token.createTransferInstruction(
178-
senderAcc.address,
179-
receiverAcc.address,
180-
daoTreasury,
181-
1000 * 1_000_000_000 // 1,000 META
222+
const newTreasuryUsdcAccount = await token.getOrCreateAssociatedTokenAccount(
223+
provider.connection,
224+
payer,
225+
USDC,
226+
newDaoTreasury,
227+
true
182228
);
183229

184-
const programId = transferIx.programId;
185-
const accounts = transferIx.keys;
186-
const data = transferIx.data;
230+
const ix = await migrator.methods
231+
.multiTransfer2()
232+
.accounts({
233+
authority: daoTreasury,
234+
from0: treasuryMetaAccount.address,
235+
to0: newTreasuryMetaAccount.address,
236+
from1: treasuryUsdcAccount.address,
237+
to1: newTreasuryUsdcAccount.address,
238+
lamportReceiver: newDaoTreasury,
239+
})
240+
.instruction();
187241

188242
const instruction = {
189-
programId,
190-
accounts,
191-
data,
243+
programId: ix.programId,
244+
accounts: ix.keys,
245+
data: ix.data,
192246
};
193247

248+
// const programId = transferIx.programId;
249+
// const accounts = transferIx.keys;
250+
// const data = transferIx.data;
251+
252+
// const instruction = {
253+
// programId,
254+
// accounts,
255+
// data,
256+
// };
257+
194258
const proposalKeypair = Keypair.generate();
195259

196-
const storedDAO = await autocratProgram.account.dao.fetch(dao);
197-
console.log(storedDAO);
260+
// const storedDAO = await autocratProgram.account.dao.fetch(dao);
261+
// console.log(storedDAO);
198262

199263
// least signficant 32 bits of nonce are proposal number
200264
// most significant bit of nonce is 0 for base and 1 for quote
201265

202-
let baseNonce = new BN(storedDAO.proposalCount);
266+
let baseNonce = new BN(1);
203267

204268
const baseVault = await initializeVault(
205-
storedDAO.treasury,
206-
storedDAO.metaMint,
269+
daoTreasury,
270+
META,
207271
baseNonce
208272
);
209273

210274
const quoteVault = await initializeVault(
211-
storedDAO.treasury,
212-
storedDAO.usdcMint,
275+
daoTreasury,
276+
USDC,
213277
baseNonce.or(new BN(1).shln(63))
214278
);
215279

@@ -300,7 +364,7 @@ async function initializeProposal() {
300364
})
301365
.rpc();
302366

303-
const proposalURL = "https://hackmd.io/ammvq88QRtayu7c9VLnHOA?view";
367+
const proposalURL = "https://hackmd.io/5ZkjJtE5STGZn2fH9iMPPw?view";
304368

305369
await autocratProgram.methods
306370
.initializeProposal(proposalURL, instruction)
@@ -554,3 +618,9 @@ async function getOrCreateAccount(mint: anchor.web3.PublicKey) {
554618
)
555619
).address;
556620
}
621+
622+
async function main() {
623+
await initializeProposal();
624+
}
625+
626+
main();

0 commit comments

Comments
 (0)