@@ -19,13 +19,18 @@ import {
1919} from "../target/types/conditional_vault" ;
2020
2121import { OpenbookTwap } from "../tests/fixtures/openbook_twap" ;
22+ import { AutocratMigrator } from "../target/types/autocrat_migrator" ;
2223
2324const AutocratIDL : AutocratV0 = require ( "../target/idl/autocrat_v0.json" ) ;
2425const 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+ ) ;
2934const CONDITIONAL_VAULT_PROGRAM_ID = new PublicKey (
3035 "vaU1tVLj8RFk7mNj1BxqgAsMKKaL8UvEUHvU3tdbZPe"
3136) ;
@@ -39,9 +44,18 @@ const OPENBOOK_PROGRAM_ID = new PublicKey(
3944export 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+ ) ;
4253export const PROPH3t_PUBKEY = new PublicKey (
4354 "65U66fcYuNfqN12vzateJhZ4bgDuxFWN9gMwraeQKByg"
4455) ;
56+ const AUTOCRAT_MIGRATOR_PROGRAM_ID = new PublicKey (
57+ "migkwAXrXFN34voCYQUhFQBXZJjHrWnpEXbSGTqZdB3"
58+ ) ;
4559
4660export const provider = anchor . AnchorProvider . env ( ) ;
4761anchor . 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
5776export 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+
7095const [ 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+
80116async function createMint (
81117 mintAuthority : any ,
82118 freezeAuthority : any ,
@@ -159,57 +195,85 @@ async function initializeDAO(META: any, USDC: any) {
159195}
160196
161197async 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