Expand description

Returns account changes from transactions in a given account.

The RpcStateChangesInBlockByTypeRequest struct takes in a BlockReference and a StateChangesRequestView, and returns an RpcStateChangesInBlockResponse.

§Examples

The StateChangesRequestView enum has a couple of variants that can be used to specify what kind of changes to return.

  • AccountChanges

    use unc_primitives::{views::StateChangesRequestView, types::{BlockReference, BlockId}};
    
    let client = JsonRpcClient::connect("https://archival-rpc.testnet.unc.org");
    
    let request = methods::EXPERIMENTAL_changes::RpcStateChangesInBlockByTypeRequest {
        block_reference: BlockReference::BlockId(BlockId::Hash("94yBWhN848vHMnKcw5DxgBQWJW6JHRXnXD6FCLJGjxMU".parse()?)),
        state_changes_request: StateChangesRequestView::AccountChanges {
           account_ids: vec!["fido.testnet".parse()?, "rpc_docs.testnet".parse()?],
        }
    };
    
    let response = client.call(request).await?;
    
    assert!(matches!(
        response,
        methods::EXPERIMENTAL_changes::RpcStateChangesInBlockResponse { .. }
    ));
  • SingleAccessKeyChanges

    use unc_jsonrpc_client::{methods, JsonRpcClient};
    use unc_primitives::{views::StateChangesRequestView, types::{BlockReference, BlockId, AccountWithPublicKey}};
    
    let client = JsonRpcClient::connect("https://archival-rpc.testnet.unc.org");
    
    let request = methods::EXPERIMENTAL_changes::RpcStateChangesInBlockByTypeRequest {
        block_reference: BlockReference::BlockId(BlockId::Hash("94yBWhN848vHMnKcw5DxgBQWJW6JHRXnXD6FCLJGjxMU".parse()?)),
        state_changes_request: StateChangesRequestView::SingleAccessKeyChanges {
           keys: vec![
                    AccountWithPublicKey {
                        account_id: "fido.testnet".parse()?,
                        public_key: "ed25519:GwRkfEckaADh5tVxe3oMfHBJZfHAJ55TRWqJv9hSpR38".parse()?,
                    },
                    AccountWithPublicKey {
                        account_id: "rpc_docs.testnet".parse()?,
                        public_key: "ed25519:FxGiXr6Dgn92kqBqbQzuoYdKngiizCnywpaN7ALar3Vv".parse()?,
                    }
    
               ],
        }
    };
    
    let response = client.call(request).await?;
    
    assert!(matches!(
        response,
        methods::EXPERIMENTAL_changes::RpcStateChangesInBlockResponse { .. }
    ));
  • AllAccessKeyChanges

    use unc_primitives::{views::StateChangesRequestView, types::{BlockReference, BlockId}};
    
    let client = JsonRpcClient::connect("https://archival-rpc.testnet.unc.org");
    
    let request = methods::EXPERIMENTAL_changes::RpcStateChangesInBlockByTypeRequest {
        block_reference: BlockReference::BlockId(BlockId::Hash("94yBWhN848vHMnKcw5DxgBQWJW6JHRXnXD6FCLJGjxMU".parse()?)),
        state_changes_request: StateChangesRequestView::AllAccessKeyChanges {
           account_ids: vec!["fido.testnet".parse()?, "rpc_docs.testnet".parse()?],
        }
    };
    
    let response = client.call(request).await?;
    
    assert!(matches!(
        response,
        methods::EXPERIMENTAL_changes::RpcStateChangesInBlockResponse { .. }
    ));
  • ContractCodeChanges

    use unc_primitives::{views::StateChangesRequestView, types::{BlockReference, BlockId}};
    
    let client = JsonRpcClient::connect("https://archival-rpc.testnet.unc.org");
    
    let request = methods::EXPERIMENTAL_changes::RpcStateChangesInBlockByTypeRequest {
        block_reference: BlockReference::BlockId(BlockId::Hash("94yBWhN848vHMnKcw5DxgBQWJW6JHRXnXD6FCLJGjxMU".parse()?)),
        state_changes_request: StateChangesRequestView::ContractCodeChanges {
           account_ids: vec!["fido.testnet".parse()?, "rpc_docs.testnet".parse()?],
        }
    };
    
    let response = client.call(request).await?;
    
    assert!(matches!(
        response,
        methods::EXPERIMENTAL_changes::RpcStateChangesInBlockResponse { .. }
    ));
  • DataChanges

    use unc_primitives::{views::StateChangesRequestView, types::{BlockReference, BlockId, StoreKey}, hash::CryptoHash};
    
    let client = JsonRpcClient::connect("https://archival-rpc.testnet.unc.org");
    
    let request = methods::EXPERIMENTAL_changes::RpcStateChangesInBlockByTypeRequest {
        block_reference: BlockReference::BlockId(BlockId::Hash("94yBWhN848vHMnKcw5DxgBQWJW6JHRXnXD6FCLJGjxMU".parse::<CryptoHash>()?)),
        state_changes_request: StateChangesRequestView::DataChanges {
           account_ids: vec!["fido.testnet".parse()?, "rpc_docs.testnet".parse()?],
           key_prefix: StoreKey::from(vec![]),
        }
    };
    
    let response = client.call(request).await?;
    
    assert!(matches!(
        response,
        methods::EXPERIMENTAL_changes::RpcStateChangesInBlockResponse { .. }
    ));

Structs§

Enums§