@@ -491,6 +491,57 @@ fn command_create_pool(
491
491
Ok ( ( ) )
492
492
}
493
493
494
+ fn create_token_metadata (
495
+ config : & Config ,
496
+ stake_pool_address : & Pubkey ,
497
+ name : String ,
498
+ symbol : String ,
499
+ uri : String ,
500
+ ) -> CommandResult {
501
+ let stake_pool = get_stake_pool ( & config. rpc_client , stake_pool_address) ?;
502
+
503
+ let mut signers = vec ! [ config. fee_payer. as_ref( ) , config. manager. as_ref( ) ] ;
504
+ let instructions = vec ! [ spl_stake_pool:: instruction:: create_token_metadata(
505
+ & spl_stake_pool:: id( ) ,
506
+ stake_pool_address,
507
+ & stake_pool. manager,
508
+ & stake_pool. pool_mint,
509
+ & config. fee_payer. pubkey( ) ,
510
+ name,
511
+ symbol,
512
+ uri,
513
+ ) ] ;
514
+ unique_signers ! ( signers) ;
515
+ let transaction = checked_transaction_with_signers ( config, & instructions, & signers) ?;
516
+ send_transaction ( config, transaction) ?;
517
+ Ok ( ( ) )
518
+ }
519
+
520
+ fn update_token_metadata (
521
+ config : & Config ,
522
+ stake_pool_address : & Pubkey ,
523
+ name : String ,
524
+ symbol : String ,
525
+ uri : String ,
526
+ ) -> CommandResult {
527
+ let stake_pool = get_stake_pool ( & config. rpc_client , stake_pool_address) ?;
528
+
529
+ let mut signers = vec ! [ config. fee_payer. as_ref( ) , config. manager. as_ref( ) ] ;
530
+ let instructions = vec ! [ spl_stake_pool:: instruction:: update_token_metadata(
531
+ & spl_stake_pool:: id( ) ,
532
+ stake_pool_address,
533
+ & stake_pool. manager,
534
+ & stake_pool. pool_mint,
535
+ name,
536
+ symbol,
537
+ uri,
538
+ ) ] ;
539
+ unique_signers ! ( signers) ;
540
+ let transaction = checked_transaction_with_signers ( config, & instructions, & signers) ?;
541
+ send_transaction ( config, transaction) ?;
542
+ Ok ( ( ) )
543
+ }
544
+
494
545
fn command_vsa_add (
495
546
config : & Config ,
496
547
stake_pool_address : & Pubkey ,
@@ -2175,6 +2226,78 @@ fn main() {
2175
2226
. help ( "Bypass fee checks, allowing pool to be created with unsafe fees" ) ,
2176
2227
)
2177
2228
)
2229
+ . subcommand ( SubCommand :: with_name ( "create-token-metadata" )
2230
+ . about ( "Creates stake pool token metadata" )
2231
+ . arg (
2232
+ Arg :: with_name ( "pool" )
2233
+ . index ( 1 )
2234
+ . validator ( is_pubkey)
2235
+ . value_name ( "POOL_ADDRESS" )
2236
+ . takes_value ( true )
2237
+ . required ( true )
2238
+ . help ( "Stake pool address" ) ,
2239
+ )
2240
+ . arg (
2241
+ Arg :: with_name ( "name" )
2242
+ . index ( 2 )
2243
+ . value_name ( "TOKEN_NAME" )
2244
+ . takes_value ( true )
2245
+ . required ( true )
2246
+ . help ( "Name of the token" ) ,
2247
+ )
2248
+ . arg (
2249
+ Arg :: with_name ( "symbol" )
2250
+ . index ( 3 )
2251
+ . value_name ( "TOKEN_SYMBOL" )
2252
+ . takes_value ( true )
2253
+ . required ( true )
2254
+ . help ( "Symbol of the token" ) ,
2255
+ )
2256
+ . arg (
2257
+ Arg :: with_name ( "uri" )
2258
+ . index ( 4 )
2259
+ . value_name ( "TOKEN_URI" )
2260
+ . takes_value ( true )
2261
+ . required ( true )
2262
+ . help ( "URI of the token metadata json" ) ,
2263
+ )
2264
+ )
2265
+ . subcommand ( SubCommand :: with_name ( "update-token-metadata" )
2266
+ . about ( "Updates stake pool token metadata" )
2267
+ . arg (
2268
+ Arg :: with_name ( "pool" )
2269
+ . index ( 1 )
2270
+ . validator ( is_pubkey)
2271
+ . value_name ( "POOL_ADDRESS" )
2272
+ . takes_value ( true )
2273
+ . required ( true )
2274
+ . help ( "Stake pool address" ) ,
2275
+ )
2276
+ . arg (
2277
+ Arg :: with_name ( "name" )
2278
+ . index ( 2 )
2279
+ . value_name ( "TOKEN_NAME" )
2280
+ . takes_value ( true )
2281
+ . required ( true )
2282
+ . help ( "Name of the token" ) ,
2283
+ )
2284
+ . arg (
2285
+ Arg :: with_name ( "symbol" )
2286
+ . index ( 3 )
2287
+ . value_name ( "TOKEN_SYMBOL" )
2288
+ . takes_value ( true )
2289
+ . required ( true )
2290
+ . help ( "Symbol of the token" ) ,
2291
+ )
2292
+ . arg (
2293
+ Arg :: with_name ( "uri" )
2294
+ . index ( 4 )
2295
+ . value_name ( "TOKEN_URI" )
2296
+ . takes_value ( true )
2297
+ . required ( true )
2298
+ . help ( "URI of the token metadata json" ) ,
2299
+ )
2300
+ )
2178
2301
. subcommand ( SubCommand :: with_name ( "add-validator" )
2179
2302
. about ( "Add validator account to the stake pool. Must be signed by the pool staker." )
2180
2303
. arg (
@@ -2900,6 +3023,20 @@ fn main() {
2900
3023
unsafe_fees,
2901
3024
)
2902
3025
}
3026
+ ( "create-token-metadata" , Some ( arg_matches) ) => {
3027
+ let stake_pool_address = pubkey_of ( arg_matches, "pool" ) . unwrap ( ) ;
3028
+ let name = value_t_or_exit ! ( arg_matches, "name" , String ) ;
3029
+ let symbol = value_t_or_exit ! ( arg_matches, "symbol" , String ) ;
3030
+ let uri = value_t_or_exit ! ( arg_matches, "uri" , String ) ;
3031
+ create_token_metadata ( & config, & stake_pool_address, name, symbol, uri)
3032
+ }
3033
+ ( "update-token-metadata" , Some ( arg_matches) ) => {
3034
+ let stake_pool_address = pubkey_of ( arg_matches, "pool" ) . unwrap ( ) ;
3035
+ let name = value_t_or_exit ! ( arg_matches, "name" , String ) ;
3036
+ let symbol = value_t_or_exit ! ( arg_matches, "symbol" , String ) ;
3037
+ let uri = value_t_or_exit ! ( arg_matches, "uri" , String ) ;
3038
+ update_token_metadata ( & config, & stake_pool_address, name, symbol, uri)
3039
+ }
2903
3040
( "add-validator" , Some ( arg_matches) ) => {
2904
3041
let stake_pool_address = pubkey_of ( arg_matches, "pool" ) . unwrap ( ) ;
2905
3042
let vote_account_address = pubkey_of ( arg_matches, "vote_account" ) . unwrap ( ) ;
0 commit comments