#transaction #help #json #pubkey #account #signature #encode

app solxact

solxact is a utility program that can perform many useful actions on solana transactions

5 releases

0.1.4 Feb 12, 2024
0.1.3 Nov 16, 2023
0.1.2 Sep 20, 2023
0.1.1 Sep 19, 2023
0.1.0 Apr 13, 2023

#4 in #pubkey

GPL-3.0-only

115KB
3K SLoC

solxact is a utility program that can perform many useful actions on solana
transactions.

For help on subcommands:

solxact help encode        -- for encoding a transaction
solxact help decode        -- for decoding a transaction
solxact help hash          -- for setting the recent blockhash of a transaction
solxact help sign          -- for signing a transaction
solxact help show-unsigned -- for showing which signatures are still required
solxact help signature     -- for showing a transaction's signature
solxact help simulate      -- for simulating a transaction
solxact help submit        -- for submitting a transaction
solxact help pda           -- for computing program derived addresses
solxact help pubkey        -- for displaying pubkeys


Some example use cases of solxact:

# The following will create a split-stake transaction and submit it.  The
# format of the transaction was derived by looking at the stake program's
# "Split" instruction.  Note that comments can be embedded.

$ solxact encode encoding rust_bincode_fixedint                          \
                 fee_payer ./my_key.json                                 \
                 // Stake program //                                     \
                 program Stake11111111111111111111111111111111111111     \
                 // Stake account to split lamports from (writable) //   \
                 account ./from_stake_account.json w                     \
                 // Stake account to split lamports into (writable) //   \
                 account ./to_stake_account.json w                       \
                 // Stake withdraw authority (signer) //                 \
                 account ./my_key.json s                                 \
                 // Data: 3 = split-stake, and then lamports //          \
                 enum 3 [ u64 10000000 ]                                 \
  | solxact hash                                                         \
  | solxact sign ./my_key.json                                           \
  | solxact submit


# The following will create a simple lamports transfer transaction and
# then decode it and pretty-print the json output using 'jq'.

$ solxact encode encoding rust_bincode_fixedint                          \
                 fee_payer ./my_key.json                                 \
                 // System program //                                    \
                 program 11111111111111111111111111111111                \
                 // Funds source (writable and signer) //                \
                 account ./my_key.json ws                                \
                 // Funds destination (writable) //                      \
                 account AVheJF4ZzCZjfysZP2FHdFERY3r7dh9AdBRRcJRWKARc w  \
                 // Data: 2 = transfer, and then lamports //             \
                 enum 2 [ u64 12131001000 ]                              \
  | solxact decode                                                       \
  | jq .


# The following reads an encoded transaction that was stored in a file and then
# simulates it using the testnet cluster, printing out the results of the
# simulation.

$ cat transaction.bin | solxact simulate testnet


# The following reads an encoded transaction from standard input and prints out
# the list of pubkeys that have not yet signed it.

$ solxact show-unsigned


# The following will create a simple lamports transfer transaction, apply a
# recent blockhash to it, sign it, and then print out the transaction
# signature.
  
$ solxact encode encoding rust_bincode_fixedint                          \
                 fee_payer ./my_key.json                                 \
                 // System program //                                    \
                 program 11111111111111111111111111111111                \
                 // Funds source (writable and signer) //                \
                 account ./my_key.json ws                                \
                 // Funds destination (writable) //                      \
                 account AVheJF4ZzCZjfysZP2FHdFERY3r7dh9AdBRRcJRWKARc w  \
                 // Data: 2 = transfer, and then lamports //             \
                 enum 2 [ u64 12131001000 ]                              \
  | solxact hash                                                         \
  | solxact sign ./my_key.json                                           \
  | solxact signature


# The following will compute the Program Derived Address for a metaplex
# metadata account associated with a token mint, and will print out
# the address followed by a dot followed by the bump seed.  The token mint
# in this example is is EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v.

$ solxact pda metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s                \
              [ string metadata                                          \
                pubkey metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s       \
                pubkey EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v ]


# The following will print out the pubkey for the keypair stored in the
# file key.json

$ solxact pubkey key.json


Dependencies

~8.5MB
~188K SLoC