{
    "version": "0.0.0",
    "name": "system",
    "ref": "https://github.com/solana-labs/solana/blob/d3aa9bce26fad697fa6c825933a46137e949adbc/sdk/program/src/system_instruction.rs",
    "docs": [
        "Create new accounts, allocate account data, assign accounts to owning programs,",
        "transfer lamports from System Program owned accounts and pay transacation fees."
    ],
    "instructions": [
        {
            "name": "CreateAccount",
            "docs": [
                "Create a new account"
            ],
            "accounts": [
            {
                "name": "FundingAccount",
                "isMut": true,
                "isSigner": true,
                "docs": [
                    "Funding account"
                ]
            },
            {
                "name": "NewAccount",
                "isMut": true,
                "isSigner": true,
                "docs": [
                    "New account"
                ]
            }],
            "args": [
            {
                "name": "lamports",
                "type": "u64",
                "docs": [
                    "Number of lamports to transfer to the new account"
                ]
            },
            {
                "name": "space",
                "type": "u64",
                "docs": [
                    "Number of bytes of memory to allocate"
                ]
            },
            {
                "name": "owner",
                "type": "publicKey",
                "docs": [
                    "Address of program that will own the new account"
                ]
            }]
        },
        {
            "name": "Assign",
            "docs": [
                "Assign account to a program"
            ],
            "accounts": [
            {
                "name": "AssignedAccount",
                "isMut": true,
                "isSigner": true,
                "docs": [
                    "Assigned account public key"
                ]
            }],
            "args": [
            {
                "name": "owner",
                "type": "publicKey",
                "docs": [
                    "Owner program account"
                ]
            }]
        },
        {
            "name": "Transfer",
            "docs": [
                "Transfer lamports"
            ],
            "accounts": [
            {
                "name": "FundingAccount",
                "isMut": true,
                "isSigner": true,
                "docs": [
                    "Funding account"
                ]
            },
            {
                "name": "RecipientAccount",
                "isMut": true,
                "isSigner": false,
                "docs": [
                    "Recipient account"
                ]
            }],
            "args": [
            {
                "name": "lamports",
                "type": "u64",
                "docs": [
                    "Number of lamports to transfer to the new account"
                ]
            }]
        },
        {
            "name": "CreateAccountWithSeed",
            "docs": [
                "Create a new account at an address derived from a base pubkey and a seed"
            ],
            "accounts": [
            {
                "name": "FundingAccount",
                "isMut": true,
                "isSigner": true,
                "docs": [
                    "Funding account"
                ]
            },
            {
                "name": "CreatedAccount",
                "isMut": true,
                "isSigner": false,
                "docs": [
                    "Created account"
                ]
            },
            {
                "name": "BaseAccount",
                "isMut": false,
                "isSigner": true,
                "docs": [
                    "Base account"
                ]
            }],
            "args": [
            {
                "name": "base",
                "type": "publicKey",
                "docs": [
                    "Base public key"
                ]
            },
            {
                "name": "seed",
                "type": "string",
                "docs": [
                    "String of ASCII chars, no longer than Pubkey::MAX_SEED_LEN"
                ]
            },
            {
                "name": "lamports",
                "type": "u64",
                "docs": [
                    "Number of lamports to transfer to the new account"
                ]
            },
            {
                "name": "space",
                "type": "u64",
                "docs": [
                    "Number of bytes of memory to allocate"
                ]
            },
            {
                "name": "owner",
                "type": "publicKey",
                "docs": [
                    "Owner program account address"
                ]
            }]
        },
        {
            "name": "AdvanceNonceAccount",
            "docs": [
                "Consumes a stored nonce, replacing it with a successor"
            ],
            "accounts": [
            {
                "name": "NonceAccount",
                "isMut": true,
                "isSigner": false,
                "docs": [
                    "Nonce account"
                ]
            },
            {
                "name": "$(SysVarRecentBlockHashesPubkey)",
                "isMut": false,
                "isSigner": false,
                "docs": [
                    "RecentBlockhashes sysvar"
                ]
            },
            {
                "name": "NonceAuthorityAccount",
                "isMut": false,
                "isSigner": true,
                "docs": [
                    "Nonce authority"
                ]
            }],
            "args": []
        },
        {
            "name": "WithdrawNonceAccount",
            "docs": [
                "Withdraw funds from a nonce account"
            ],
            "accounts": [
            {
                "name": "NonceAccount",
                "isMut": true,
                "isSigner": false,
                "docs": [
                    "Nonce account"
                ]
            },
            {
                "name": "RecipientAccount",
                "isMut": true,
                "isSigner": false,
                "docs": [
                    "Recipient account"
                ]
            },
            {
                "name": "$(SysVarRecentBlockHashesPubkey)",
                "isMut": false,
                "isSigner": false,
                "docs": [
                    "RecentBlockhashes sysvar"
                ]
            },
            {
                "name": "$(SysVarRentPubkey)",
                "isMut": false,
                "isSigner": false,
                "docs": [
                    "Rent sysvar"
                ]
            },
            {
                "name": "NonceAuthorityAccount",
                "isMut": false,
                "isSigner": true,
                "docs": [
                    "Nonce authority"
                ]
            }],
            "args": [
            {
                "name": "lamports",
                "type": "u64",
                "docs": [
                    "The u64 parameter is the lamports to withdraw, which must leave the account balance above the rent exempt reserve or at zero."
                ]
            }]
        },
        {
            "name": "InitializeNonceAccount",
            "docs": [
                "Drive state of Uninitalized nonce account to Initialized, setting the nonce value"
            ],
            "accounts": [
            {
                "name": "NonceAccount",
                "isMut": true,
                "isSigner": false,
                "docs": [
                    "Nonce account"
                ]
            },
            {
                "name": "$(SysVarRecentBlockHashesPubkey)",
                "isMut": false,
                "isSigner": false,
                "docs": [
                    "RecentBlockhashes sysvar"
                ]
            },
            {
                "name": "$(SysVarRentPubkey)",
                "isMut": false,
                "isSigner": false,
                "docs": [
                    "Rent sysvar"
                ]
            }],
            "args": [
            {
                "name": "authorized",
                "type": "publicKey",
                "docs": [
                    "The Pubkey parameter specifies the entity authorized to execute nonce instruction on the account.",
                    "No signatures are required to execute this instruction, enabling derived nonce account addresses."
                ]
            }]
        },
        {
            "name": "AuthorizeNonceAccount",
            "docs": [
                "Change the entity authorized to execute nonce instructions on the account"
            ],
            "accounts": [
            {
                "name": "NonceAccount",
                "isMut": true,
                "isSigner": false,
                "docs": [
                    "Nonce account"
                ]
            },
            {
                "name": "NonceAuthorityAccount",
                "isMut": false,
                "isSigner": true,
                "docs": [
                    "Nonce authority"
                ]
            }],
            "args": [
            {
                "name": "authorized",
                "type": "publicKey",
                "docs": [
                    "The Pubkey parameter identifies the entity to authorize."
                ]
            }]
        },
        {
            "name": "Allocate",
            "docs": [
                "Allocate space in a (possibly new) account without funding"
            ],
            "accounts": [
            {
                "name": "NewAccount",
                "isMut": true,
                "isSigner": true,
                "docs": [
                    "New account"
                ]
            }],
            "args": [
            {
                "name": "space",
                "type": "u64",
                "docs": [
                    "Number of bytes of memory to allocate"
                ]
            }]
        },
        {
            "name": "AllocateWithSeed",
            "docs": [
                "Allocate space for and assign an account at an address derived from a base public key and a seed"
            ],
            "accounts": [
            {
                "name": "AllocatedAccount",
                "isMut": true,
                "isSigner": false,
                "docs": [
                    "Allocated account"
                ]
            },
            {
                "name": "BaseAccount",
                "isMut": false,
                "isSigner": true,
                "docs": [
                    "Base account"
                ]
            }],
            "args": [
                {
                    "name": "base",
                    "type": "publicKey",
                    "docs": [
                        "Base public key"
                    ]
                },
                {
                    "name": "seed",
                    "type": "string",
                    "docs": [
                        "String of ASCII chars, no longer than pubkey::MAX_SEED_LEN"
                    ]
                },
                {
                    "name": "space",
                    "type": "u64",
                    "docs": [
                        "Number of bytes of memory to allocate"
                    ]
                },
                {
                    "name": "owner",
                    "type": "publicKey",
                    "docs": [
                        "Owner program account address"
                    ]
                }

            ]
        },
        {
            "name": "AssignWithSeed",
            "docs": [
                "Assign account to a program based on a seed"
            ],
            "accounts": [
            {
                "name": "AssignedAccount",
                "isMut": true,
                "isSigner": false,
                "docs": [
                    "Assigned account"
                ]
            },
            {
                "name": "BaseAccount",
                "isMut": false,
                "isSigner": true,
                "docs": [
                    "Base account"
                ]
            }],
            "args": [
                {
                    "name": "base",
                    "type": "publicKey",
                    "docs": [
                        "Base public key"
                    ]
                },
                {
                    "name": "seed",
                    "type": "string",
                    "docs": [
                        "String of ASCII chars, no longer than pubkey::MAX_SEED_LEN"
                    ]
                },
                {
                    "name": "owner",
                    "type": "publicKey",
                    "docs": [
                        "Owner program account"
                    ]
                }

            ]
        },
        {
            "name": "TransferWithSeed",
            "docs": [
                "Transfer lamports from a derived address"
            ],
            "accounts": [
            {
                "name": "FundingAccount",
                "isMut": true,
                "isSigner": false,
                "docs": [
                    "Funding account"
                ]
            },
            {
                "name": "BaseForFundingAccount",
                "isMut": false,
                "isSigner": true,
                "docs": [
                    "Base for funding account"
                ]
            },
            {
                "name": "RecipientAccount",
                "isMut": true,
                "isSigner": false,
                "docs": [
                    "Recipient account"
                ]
            }],
            "args": [
                {
                    "name": "lamports",
                    "type": "u64",
                    "docs": [
                        "Amount to transfer"
                    ]
                },
                {
                    "name": "from_seed",
                    "type": "string",
                    "docs": [
                        "Seed to use to derive the funding account address"
                    ]
                },
                {
                    "name": "from_owner",
                    "type": "publicKey",
                    "docs": [
                        "Owner to use to derive the funding account address"
                    ]
                }

            ]
        }

    ],
    "accounts": [],
    "state":
    {},
    "types": [],
    "events": [],
    "errors": [],
    "metadata":
    {
        "address": "11111111111111111111111111111111",
        "instruction_selector_type": "index",
        "index_size_bytes": 4
    }
}
