Avalanche — EVM methods, P-Chain methods (2/2)
API reference for Avalanche. All methods ->
Part 2 of 2: 1 · 2
P-Chain methods
platform.getPendingValidators
Retrieves the list of validators in the pending validator set of the specified Subnet.
Each validator is not currently validating the Subnet but will be doing so in the future.
Parameters
Signature:
platform.getPendingValidators({
subnetID: string, // optional
nodeIDs: string[], // optional
}) -> {
validators: []{
txID: string,
startTime: string,
endTime: string,
stakeAmount: string,
nodeID: string,
delegationFee: string,
connected: bool,
signer: {
publicKey: string,
proofOfPosession: string
},
weight: string,
},
delegators: []{
txID: string,
startTime: string,
endTime: string,
stakeAmount: string,
nodeID: string
}
}
Request parameters:
-
id(integer; required): a request ID (example: 1). -
jsonrpc(string; required): a JSON RPC spec used (example: 2.0). -
method(string; required): a method used for the request. -
params(object; required):subnetID: the Subnet whose current validators are returned; if omitted, returns the current validators of the Primary Network.nodeIDs: a list of the NodeIDs of pending validators to request; if omitted, all pending validators are returned; if a specified NodeID is not in the set of pending validators, it will not be included in the response.
Response parameters:
validators:txID: the validator transaction.startTime: the Unix time when the validator starts validating the Subnet.endTime: the Unix time when the validator stops validating the Subnet.stakeAmount: the amount of tokens this validator staked. Omitted if subnetID is not a PoS Subnet.nodeID: the validator’s node ID.connected: shows if the node is connected and tracks the Subnet.signer: the node's BLS public key and proof of possession. Omitted if the validator doesn't have a BLS public key.weightthe validator’s weight when sampling validators. Omitted if subnetID is a PoS Subnet.
delegators:txID: the delegator transaction.startTime: the Unix time when the delegator starts.endTime: the Unix time when the delegator stops.stakeAmount: the amount of tokens this delegator staked.nodeIDthe validating node’s node ID.
Request example
curl -X POST 'https://rpc.ankr.com/avalanche-p/YOUR_ANKR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"id" :1,
"method" :"platform.getPendingValidators",
"params" :{}
}'
Response example
{
"jsonrpc": "2.0",
"result": {
"validators": [
{
"txID": "2NNkpYTGfTFLSGXJcHtVv6drwVU2cczhmjK2uhvwDyxwsjzZMm",
"startTime": "1600368632",
"endTime": "1602960455",
"stakeAmount": "200000000000",
"nodeID": "NodeID-5mb46qkSBj81k9g9e4VFjGGSbaaSLFRzD",
"delegationFee": "10.0000",
"connected": false
}
],
"delegators": [
{
"txID": "Bbai8nzGVcyn2VmeYcbS74zfjJLjDacGNVuzuvAQkHn1uWfoV",
"startTime": "1600368523",
"endTime": "1602960342",
"stakeAmount": "20000000000",
"nodeID": "NodeID-7Xhw2mDxuDS44j42TCB6U5579esbSt3Lg"
}
]
},
"id": 1
}
platform.getRewardUTXOs
Retrieves the UTXOs rewarded after the provided transaction's staking or delegation period has ended.
Parameters
Signature:
platform.getRewardUTXOs({
txID: string,
encoding: string // optional
}) -> {
numFetched: integer,
utxos: []string,
encoding: string
}
Request parameters:
-
id(integer; required): a request ID (example: 1). -
jsonrpc(string; required): a JSON RPC spec used (example: 2.0). -
method(string; required): a method used for the request. -
params(object; required):txID: the ID of the staking or delegating transaction.
Response parameters:
numFetched: the number of returned UTXOs.utxos: an array of encoded reward UTXOs.encodingspecifies the format for the returned UTXOs; can only behexwhen a value is provided.
Request example
curl -X POST 'https://rpc.ankr.com/avalanche-p/YOUR_ANKR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"id" :1,
"method" :"platform.getRewardUTXOs",
"params" :{
"txID":"2nmH8LithVbdjaXsxVQCQfXtzN9hBbmebrsaEYnLM9T32Uy2Y5",
"encoding": "hex"
}
}'
Response example
{
"jsonrpc": "2.0",
"result": {
"numFetched": "2",
"utxos": [
"0x0000a195046108a85e60f7a864bb567745a37f50c6af282103e47cc62f036cee404700000000345aa98e8a990f4101e2268fab4c4e1f731c8dfbcffa3a77978686e6390d624f000000070000000000000001000000000000000000000001000000018ba98dabaebcd83056799841cfbc567d8b10f216c1f01765",
"0x0000ae8b1b94444eed8de9a81b1222f00f1b4133330add23d8ac288bffa98b85271100000000345aa98e8a990f4101e2268fab4c4e1f731c8dfbcffa3a77978686e6390d624f000000070000000000000001000000000000000000000001000000018ba98dabaebcd83056799841cfbc567d8b10f216473d042a"
],
"encoding": "hex"
},
"id": 1
}
platform.getStake
Retrieves the amount of nAVAX staked by a set of addresses.
The amount returned does not include staking rewards.
Parameters
Signature:
platform.getStake({
addresses: []string,
validatorsOnly: true or false
}) ->
{
stakeds: string -> int,
stakedOutputs: []string,
encoding: string
}
Request parameters:
-
id(integer; required): a request ID (example: 1). -
jsonrpc(string; required): a JSON RPC spec used (example: 2.0). -
method(string; required): a method used for the request. -
params(object; required):addresses: the addresses to get information about.validatorsOnly: can be eithertrueorfalse. Iftrue, will skip checking delegators for stake.
Response parameters:
stakeds: a map from assetID to the amount staked by addresses provided.stakedOutputs: the string representation of staked outputs.encoding: specifies the format for the returned outputs.
Request example
curl -X POST 'https://rpc.ankr.com/avalanche-p/YOUR_ANKR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"id" :1,
"method" :"platform.getStake",
"params" :{
"addresses": [
"P-avax1pmgmagjcljjzuz2ve339dx82khm7q8getlegte"
],
"validatorsOnly": true
},
}'
Response example
{
"jsonrpc": "2.0",
"result": {
"staked": "6500000000000",
"stakeds": {
"FvwEAhmxKfeiG8SnEvq42hc6whRyY3EFYAvebMqDNDGCgxN5Z": "6500000000000"
},
"stakedOutputs": [
"0x000021e67317cbc4be2aeb00677ad6462778a8f52274b9d605df2591b23027a87dff00000007000005e96630e800000000000000000000000001000000011f1c933f38da6ba0ba46f8c1b0a7040a9a991a80dd338ed1"
],
"encoding": "hex"
},
"id": 1
}
platform.getStakingAssetID
Retrieves an assetID for a Subnet’s staking asset.
Parameters
Signature:
platform.getStakingAssetID({
subnetID: string // optional
}) -> {
assetID: string
}
Request parameters:
-
id(integer; required): a request ID (example: 1). -
jsonrpc(string; required): a JSON RPC spec used (example: 2.0). -
method(string; required): a method used for the request. -
params(object; required):subnetID: the Subnet whose assetID is requested.
Response parameters:
assetID: the assetID for a Subnet’s staking asset.
Request example
curl -X POST 'https://rpc.ankr.com/avalanche-p/YOUR_ANKR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"id" :1,
"method" :"platform.getStakingAssetID",
"params" :{
"subnetID": "11111111111111111111111111111111LpoYY"
},
}'
Response example
{
"jsonrpc": "2.0",
"result": {
"assetID": "2fombhL7aGPwj3KH4bfrmJwW6PVnMobf9Y2fn9GwxiAAJyFDbe"
},
"id": 1
}
platform.getSubnets
Retrieves info about the Subnets.
Parameters
Signature:
platform.getSubnets({
ids: []string
}) ->
{
subnets: []{
id: string,
controlKeys: []string,
threshold: string
}
}
Request parameters:
-
id(integer; required): a request ID (example: 1). -
jsonrpc(string; required): a JSON RPC spec used (example: 2.0). -
method(string; required): a method used for the request. -
params(object; required):ids: the IDs of the Subnets to get information about. If omitted, gets information about all Subnets.
Response parameters:
subnets:id: the Subnet’s ID.threshold: signatures from addresses incontrolKeysare needed to add a validator to the Subnet; if the Subnet is a PoS Subnet, thenthresholdwill be0andcontrolKeyswill be empty.
Request example
curl -X POST 'https://rpc.ankr.com/avalanche-p/YOUR_ANKR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"id" :1,
"method" :"platform.getSubnets",
"params" :{
"ids":[
"hW8Ma7dLMA7o4xmJf3AXBbo17bXzE7xnThUd3ypM4VAWo1sNJ"
]
}
}'
Response example
{
"jsonrpc": "2.0",
"result": {
"subnets": [
{
"id": "hW8Ma7dLMA7o4xmJf3AXBbo17bXzE7xnThUd3ypM4VAWo1sNJ",
"controlKeys": [
"KNjXsaA1sZsaKCD1cd85YXauDuxshTes2",
"Aiz4eEt5xv9t4NCnAWaQJFNz5ABqLtJkR"
],
"threshold": "2"
}
]
},
"id": 1
}
platform.getTimestamp
Retrieves the current P-Chain timestamp.
Parameters
Signature:
platform.getTimestamp() -> {time: string}
Request parameters:
id(integer; required): a request ID (example: 1).jsonrpc(string; required): a JSON RPC spec used (example: 2.0).method(string; required): a method used for the request.params(object; required): None.
Request example
curl -X POST 'https://rpc.ankr.com/avalanche-p/YOUR_ANKR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"id" :1,
"method" :"platform.getTimestamp",
"params" :{}
}'
Response example
{
"jsonrpc": "2.0",
"result": {
"timestamp": "2021-09-07T00:00:00-04:00"
},
"id": 1
}
platform.getTotalStake
Retrieves the total amount of tokens staked on the requested Subnet.
Parameters
Signature:
platform.getTotalStake({
subnetID: string
}) -> {
stake: int
weight: int
}
Request parameters:
-
id(integer; required): a request ID (example: 1). -
jsonrpc(string; required): a JSON RPC spec used (example: 2.0). -
method(string; required): a method used for the request. -
params(object; required):subnetID: a string of a Subnet.
Request example (Primary network)
curl -X POST 'https://rpc.ankr.com/avalanche-p/YOUR_ANKR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"id" :1,
"method" :"platform.getTotalStake",
"params" :{
"subnetID": "11111111111111111111111111111111LpoYY"
}
}'
Response example (Primary network)
{
"jsonrpc": "2.0",
"result": {
"stake": "279825917679866811",
"weight": "279825917679866811"
},
"id": 1
}
Request example (Subnet)
curl -X POST 'https://rpc.ankr.com/avalanche-p/YOUR_ANKR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"id" :1,
"method" :"platform.getTotalStake",
"params" :{
"subnetID": "2bRCr6B4MiEfSjidDwxDpdCyviwnfUVqB2HGwhm947w9YYqb7r"
}
}'
Response example (Subnet)
{
"jsonrpc": "2.0",
"result": {
"weight": "100000"
},
"id": 1
}
platform.getTx
Retrieves a transaction by its ID.
Optional encoding parameter to specify the format for the returned transaction. Can be either hex or json. Defaults to hex.
Parameters
Signature:
platform.getTx({
txID: string,
encoding: string // optional
}) -> {
tx: string,
encoding: string,
}
Request parameters:
-
id(integer; required): a request ID (example: 1). -
jsonrpc(string; required): a JSON RPC spec used (example: 2.0). -
method(string; required): a method used for the request. -
params(object; required):txID: a string of a transaction ID.
Request example
curl -X POST 'https://rpc.ankr.com/avalanche-p/YOUR_ANKR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"id" :1,
"method" :"platform.getTx",
"params" :{
"txID": "28KVjSw5h3XKGuNpJXWY74EdnGq4TUWvCgEtJPymgQTvudiugb",
"encoding": "json"
}
}'
Response example
{
"jsonrpc": "2.0",
"result": {
"tx": {
"unsignedTx": {
"networkID": 1,
"blockchainID": "11111111111111111111111111111111LpoYY",
"outputs": [],
"inputs": [
{
"txID": "NXNJHKeaJyjjWVSq341t6LGQP5UNz796o1crpHPByv1TKp9ZP",
"outputIndex": 0,
"assetID": "FvwEAhmxKfeiG8SnEvq42hc6whRyY3EFYAvebMqDNDGCgxN5Z",
"fxID": "spdxUxVJQbX85MGxMHbKw1sHxMnSqJ3QBzDyDYEP3h6TLuxqQ",
"input": {
"amount": 20824279595,
"signatureIndices": [
0
]
}
},
{
"txID": "2ahK5SzD8iqi5KBqpKfxrnWtrEoVwQCqJsMoB9kvChCaHgAQC9",
"outputIndex": 1,
"assetID": "FvwEAhmxKfeiG8SnEvq42hc6whRyY3EFYAvebMqDNDGCgxN5Z",
"fxID": "spdxUxVJQbX85MGxMHbKw1sHxMnSqJ3QBzDyDYEP3h6TLuxqQ",
"input": {
"amount": 28119890783,
"signatureIndices": [
0
]
}
}
],
"memo": "0x",
"validator": {
"nodeID": "NodeID-VT3YhgFaWEzy4Ap937qMeNEDscCammzG",
"start": 1682945406,
"end": 1684155006,
"weight": 48944170378
},
"stake": [
{
"assetID": "FvwEAhmxKfeiG8SnEvq42hc6whRyY3EFYAvebMqDNDGCgxN5Z",
"fxID": "spdxUxVJQbX85MGxMHbKw1sHxMnSqJ3QBzDyDYEP3h6TLuxqQ",
"output": {
"addresses": [
"P-avax1tnuesf6cqwnjw7fxjyk7lhch0vhf0v95wj5jvy"
],
"amount": 48944170378,
"locktime": 0,
"threshold": 1
}
}
],
"rewardsOwner": {
"addresses": [
"P-avax19zfygxaf59stehzedhxjesads0p5jdvfeedal0"
],
"locktime": 0,
"threshold": 1
}
},
"credentials": [
{
"signatures": [
"0x6954e90b98437646fde0c1d54c12190fc23ae5e319c4d95dda56b53b4a23e43825251289cdc3728f1f1e0d48eac20e5c8f097baa9b49ea8a3cb6a41bb272d16601"
]
},
{
"signatures": [
"0x6954e90b98437646fde0c1d54c12190fc23ae5e319c4d95dda56b53b4a23e43825251289cdc3728f1f1e0d48eac20e5c8f097baa9b49ea8a3cb6a41bb272d16601"
]
}
],
"id": "28KVjSw5h3XKGuNpJXWY74EdnGq4TUWvCgEtJPymgQTvudiugb"
},
"encoding": "json"
},
"id": 1
}
platform.getTxStatus
Retrieves a transaction’s status by its ID.
If the transaction was dropped, response will include a reason field with more information why the transaction was dropped.
Parameters
Signature:
platform.getTxStatus({
txID: string
}) -> {status: string}
Request parameters:
-
id(integer; required): a request ID (example: 1). -
jsonrpc(string; required): a JSON RPC spec used (example: 2.0). -
method(string; required): a method used for the request. -
params(object; required):txID: a string of a transaction ID.
Response parameters:
status: either of the following:Committed: the transaction is (or will be) accepted by every node.Processing: the transaction is being voted on by this node.Dropped: the transaction will never be accepted by any node in the network, check reason field for more information.Unknown: the transaction hasn’t been seen by this node.
Request example
curl -X POST 'https://rpc.ankr.com/avalanche-p/YOUR_ANKR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0",
"id" :1,
"method" :"platform.getTxStatus",
"params" :{
"txID":"TAG9Ns1sa723mZy1GSoGqWipK6Mvpaj7CAswVJGM6MkVJDF9Q"
}
}'
Response example
{
"jsonrpc": "2.0",
"result": {
"status": "Committed"
},
"id": 1
}