@@ -318,6 +318,11 @@ yargs(hideBin(process.argv))
318
318
type : "string" ,
319
319
choices : [ "locking" , "burning" ] ,
320
320
} )
321
+ . option ( "solana-priority-fee" , {
322
+ describe : "Priority fee for Solana deployment (in microlamports)" ,
323
+ type : "number" ,
324
+ default : 50000 ,
325
+ } )
321
326
. option ( "signer-type" , options . signerType )
322
327
. option ( "skip-verify" , options . skipVerify )
323
328
. option ( "ver" , options . version )
@@ -372,7 +377,7 @@ yargs(hideBin(process.argv))
372
377
const ch = wh . getChain ( chain ) ;
373
378
374
379
// TODO: make manager configurable
375
- const deployedManager = await deploy ( version , mode , ch , token , signerType , ! argv [ "skip-verify" ] , argv [ "yes" ] , argv [ "payer" ] , argv [ "program-key" ] , argv [ "binary" ] ) ;
380
+ const deployedManager = await deploy ( version , mode , ch , token , signerType , ! argv [ "skip-verify" ] , argv [ "yes" ] , argv [ "payer" ] , argv [ "program-key" ] , argv [ "binary" ] , argv [ "solana-priority-fee" ] ) ;
376
381
377
382
const [ config , _ctx , _ntt , decimals ] =
378
383
await pullChainConfig ( network , deployedManager , overrides ) ;
@@ -1058,6 +1063,7 @@ async function deploy<N extends Network, C extends Chain>(
1058
1063
solanaPayer ?: string ,
1059
1064
solanaProgramKeyPath ?: string ,
1060
1065
solanaBinaryPath ?: string ,
1066
+ solanaPriorityFee ?: number
1061
1067
) : Promise < ChainAddress < C > > {
1062
1068
if ( version === null ) {
1063
1069
await warnLocalDeployment ( yes ) ;
@@ -1073,7 +1079,7 @@ async function deploy<N extends Network, C extends Chain>(
1073
1079
process . exit ( 1 ) ;
1074
1080
}
1075
1081
const solanaCtx = ch as ChainContext < N , SolanaChains > ;
1076
- return await deploySolana ( worktree , version , mode , solanaCtx , token , solanaPayer , true , solanaProgramKeyPath , solanaBinaryPath ) as ChainAddress < C > ;
1082
+ return await deploySolana ( worktree , version , mode , solanaCtx , token , solanaPayer , true , solanaProgramKeyPath , solanaBinaryPath , solanaPriorityFee ) as ChainAddress < C > ;
1077
1083
default :
1078
1084
throw new Error ( "Unsupported platform" ) ;
1079
1085
}
@@ -1191,7 +1197,8 @@ async function deploySolana<N extends Network, C extends SolanaChains>(
1191
1197
payer : string ,
1192
1198
initialize : boolean ,
1193
1199
managerKeyPath ?: string ,
1194
- binaryPath ?: string
1200
+ binaryPath ?: string ,
1201
+ priorityFee ?: number
1195
1202
) : Promise < ChainAddress < C > > {
1196
1203
ensureNttRoot ( pwd ) ;
1197
1204
@@ -1351,16 +1358,31 @@ async function deploySolana<N extends Network, C extends SolanaChains>(
1351
1358
1352
1359
await checkSolanaBinary ( binary , wormhole , providedProgramId , version ?? undefined )
1353
1360
1354
- // do the actual deployment
1355
- const deployProc = Bun . spawn (
1356
- [ "solana" ,
1357
- "program" ,
1358
- "deploy" ,
1359
- "--program-id" , programKeypairPath ,
1360
- binary ,
1361
- "--keypair" , payer ,
1362
- "-u" , ch . config . rpc
1363
- ] ) ;
1361
+ // if buffer.json doesn't exist, create it
1362
+ if ( ! fs . existsSync ( `buffer.json` ) ) {
1363
+ execSync ( `solana-keygen new -o buffer.json --no-bip39-passphrase` ) ;
1364
+ } else {
1365
+ console . info ( "buffer.json already exists." )
1366
+ askForConfirmation ( "Do you want continue an exiting deployment? If not, delete the buffer.json file and run the command again." ) ;
1367
+ }
1368
+
1369
+ const deployCommand = [
1370
+ "solana" ,
1371
+ "program" ,
1372
+ "deploy" ,
1373
+ "--program-id" , programKeypairPath ,
1374
+ "--max-sign-attempts" , "20" ,
1375
+ "--buffer" , `buffer.json` ,
1376
+ binary ,
1377
+ "--keypair" , payer ,
1378
+ "-u" , ch . config . rpc
1379
+ ] ;
1380
+
1381
+ if ( priorityFee !== undefined ) {
1382
+ deployCommand . push ( "--with-compute-unit-price" , priorityFee . toString ( ) ) ;
1383
+ }
1384
+
1385
+ const deployProc = Bun . spawn ( deployCommand ) ;
1364
1386
1365
1387
const out = await new Response ( deployProc . stdout ) . text ( ) ;
1366
1388
0 commit comments