Newer
Older
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
Given account A and A's balance at block k0 (Ak0), if we sum all the
operations for A from block k1 through kn against Ak0, we will end up
with A's balance at block kn (Akn). Thus, operations can be used to audit
that balances change as expected.
This is useful for Substrate based chains because the advanced business
logic can make it difficult to ensure auditable balance reconciliation
based purely on events. Instead of using events one can use the
operations given from this endpoint.
Note - each operation corresponds to a delta of a single field of the
`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`
and `fee_frozen`).
Note - operations are assigned a block execution phase (and extrinsic index
for those in the apply extrinsic phase) based on an "action group". For
example all the operations for 1 extrinsic will be in the same action group.
The action groups can optionally be fetched with the `action` query param
for closer auditing.
Note - There are no 0 value operations (e.g. a transfer of 0, or a
transfer to itself)
To learn more about operation and action group creation please consult
[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)
parameters:
- name: blockId
in: path
description: Block identifier, as the block height or block hash.
required: true
schema:
pattern: 'a-km-zA-HJ-NP-Z1-9{8,64}'
type: string
- name: actions
in: query
description: Whether or not to include action groups.
required: false
schema:
type: boolean
default: false
responses:
"200":
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/BlocksTraceOperations'
components:
schemas:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
amount:
type: string
description: The amount of funds approved for the balance transfer from the owner
to some delegated target.
format: unsignedInteger
description: The amount reserved on the owner's account to hold this item in storage.
format: unsignedInteger
AccountAssetsBalances:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
assets:
type: array
description: An array of queried assets.
items:
$ref: '#/components/schemas/AssetsBalance'
AccountBalanceInfo:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
nonce:
type: string
description: Account nonce.
format: unsignedInteger
tokenSymbol:
type: string
description: Token symbol of the balances displayed in this response.
format: unsignedInteger
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
free:
type: string
description: Free balance of the account. Not equivalent to _spendable_
balance. This is the only balance that matters in terms of most operations
on tokens.
format: unsignedInteger
reserved:
type: string
description: Reserved balance of the account.
format: unsignedInteger
miscFrozen:
type: string
description: The amount that `free` may not drop below when withdrawing
for anything except transaction fee payment.
format: unsignedInteger
feeFrozen:
type: string
description: The amount that `free` may not drop below when withdrawing
specifically for transaction fee payment.
format: unsignedInteger
locks:
type: array
description: Array of locks on a balance. There can be many of these on
an account and they "overlap", so the same balance is frozen by multiple
locks
items:
$ref: '#/components/schemas/BalanceLock'
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
AccountConvert:
type: object
properties:
ss58Prefix:
type: string
description: SS58 prefix based on which the account ID or Public Key (hex) is converted to an SS58 address.
format: unsignedInteger
network:
type: string
description: The network based on which the returned address is encoded. It depends on the prefix
that was given as a query param.
address:
type: string
description: The returned SS58 address which is the result of the conversion
of the account ID or Public Key (hex).
accountId:
type: string
description: The given account ID or Public Key (hex) that is converted to an SS58 address.
scheme:
type: string
description: The cryptographic scheme/algorithm used to encode the given account ID or Public Key (hex).
publicKey:
type: boolean
description: Whether the given path parameter is a Public Key (hex) or not.
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
rewardDestination:
type: string
description: The account to which rewards will be paid. Can be 'Staked' (Stash
account, adding to the amount at stake), 'Stash' (Stash address, not
adding to the amount at stake), or 'Controller' (Controller address).
format: ss58
enum:
- Staked
- Stash
- Controller
controller:
type: string
description: Controller address for the given Stash.
format: ss58
numSlashingSpans:
type: string
description: Number of slashing spans on Stash account; `null` if provided address
is not a Controller.
format: unsignedInteger
nominations:
$ref: '#/components/schemas/Nominations'
stakingLedger:
$ref: '#/components/schemas/StakingLedger'
description: >-
Note: Runtime versions of Kusama less than 1062 will either have `lastReward` in place of
`claimedRewards`, or no field at all. This is related to changes in reward distribution. See: [Lazy Payouts](https://github.com/paritytech/substrate/pull/4474), [Simple Payouts](https://github.com/paritytech/substrate/pull/5406)
AccountStakingPayouts:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
erasPayouts:
type: object
properties:
era:
type: string
format: unsignedInteger
description: Era this information is associated with.
totalEraRewardPoints:
type: string
format: unsignedInteger
description: Total reward points for the era. Equals the sum of
reward points for all the validators in the set.
totalEraPayout:
type: string
format: unsignedInteger
description: Total payout for the era. Validators split the payout
based on the portion of `totalEraRewardPoints` they have.
payouts:
$ref: '#/components/schemas/Payouts'
AccountValidation:
type: object
properties:
isValid:
type: boolean
description: Whether the given address is valid ss58 formatted.
ss58Prefix:
type: string
description: SS58 prefix of the given address. If the address is a valid
base58 format, but incorrect ss58, a prefix for the given address will still be returned.
format: unsignedInteger
Dominique
committed
network:
type: string
description: The network based on which the given address is encoded.
accountId:
type: string
description: The account id of the given address.
AccountVestingInfo:
type: object
description: Sidecar version's <= v10.0.0 have a`vesting` return value that defaults to an object for
when there is no available vesting-info data. It also returns a `VestingInfo` as an object.
For Sidecar >=11.0.0, that value will now default as an array when there is no value, and `Vec<PalletsPalletVestingInfo>`
is returned when there is.
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
vesting:
$ref: '#/components/schemas/VestingSchedule'
AssetsBalance:
type: object
properties:
assetId:
type: string
description: The identifier of the asset.
format: unsignedInteger
type: string
description: The balance of the asset.
format: unsignedInteger
type: boolean
description: Whether the asset is frozen for non-admin transfers.
type: boolean
description: Whether a non-zero balance of this asset is a deposit of sufficient
value to account for the state bloat associated with its balance storage. If set to
`true`, then non-zero balances may be stored without a `consumer` reference (and thus
an ED in the Balances pallet or whatever else is used to control user-account state
growth).
AssetInfo:
type: object
properties:
owner:
type: string
description: Owner of the assets privileges.
format: SS58
type: string
description: The `AccountId` able to mint tokens.
format: SS58
type: string
description: The `AccountId` that can thaw tokens, force transfers and burn token from
any account.
format: SS58
type: string
description: The `AccountId` that can freeze tokens.
format: SS58
type: string
description: The total supply across accounts.
format: unsignedInteger
type: string
description: The balance deposited for this. This pays for the data stored.
format: unsignedInteger
type: string
description: The ED for virtual accounts.
format: unsignedInteger
type: boolean
description: If `true`, then any account with this asset is given a provider reference. Otherwise, it
requires a consumer reference.
type: string
description: The total number of accounts.
format: unsignedInteger
type: string
description: The total number of accounts for which is placed a self-sufficient reference.
type: string
description: The total number of approvals.
format: unsignedInteger
isFrozen:
type: boolean
description: Whether the asset is frozen for non-admin transfers.
AssetMetadata:
type: object
properties:
type: string
description: The balance deposited for this metadata. This pays for the data
stored in this struct.
format: unsignedInteger
type: string
description: The user friendly name of this asset.
format: $hex
type: string
description: The ticker symbol for this asset.
format: $hex
decimals:
type: string
description: The number of decimals this asset uses to represent one unit.
format: unsignedInteger
type: boolean
description: Whether the asset metadata may be changed by a non Force origin.
type: object
properties:
description: An identifier for this lock. Only one lock may be in existence
for each identifier.
amount:
description: The amount below which the free balance may not drop with this
lock in effect.
format: unsignedInteger
description: Reasons for withdrawing balance.
enum:
- Fee = 0
- Misc = 1
- All = 2
Block:
type: object
properties:
hash:
description: The block's hash.
format: hex
number:
type: string
description: The block's height.
format: unsignedInteger
parentHash:
type: string
description: The hash of the parent block.
format: hex
stateRoot:
type: string
description: The state root after executing this block.
format: hex
extrinsicRoot:
type: string
description: The Merkle root of the extrinsics.
format: hex
authorId:
type: string
description: The account ID of the block author (may be undefined for some
chains).
format: ss58
logs:
type: array
items:
$ref: '#/components/schemas/DigestItem'
description: Array of `DigestItem`s associated with the block.
onInitialize:
$ref: '#/components/schemas/BlockInitialize'
extrinsics:
type: array
description: Array of extrinsics (inherents and transactions) within the
block.
items:
$ref: '#/components/schemas/Extrinsic'
onFinalize:
$ref: '#/components/schemas/BlockFinalize'
finalized:
type: boolean
description: >-
A boolean identifying whether the block is finalized or not.
Note: on chains that do not have deterministic finality this field is omitted.
description: >-
Note: Block finalization does not correspond to consensus, i.e. whether
the block is in the canonical chain. It denotes the finalization of block
_construction._
Blocks:
type: array
items:
$ref: '#/components/schemas/Block'
type: object
properties:
type: array
items:
$ref: '#/components/schemas/SanitizedEvent'
description: Object with an array of `SanitizedEvent`s that occurred during
block construction finalization with the `method` and `data` for each.
BlockHeader:
type: object
properties:
description: The hash of the parent block.
format: hex
number:
description: The block's height.
format: unsignedInteger
description: The state root after executing this block.
format: hex
extrinsicRoot:
description: The Merkle root of the extrinsics.
format: hex
digest:
type: object
logs:
type: array
items:
$ref: '#/components/schemas/DigestItem'
description: Array of `DigestItem`s associated with the block.
BlockIdentifiers:
type: object
properties:
hash:
type: string
description: The block's hash.
format: hex
height:
type: string
description: The block's height.
format: unsignedInteger
description: Block number and hash at which the call was made.
type: object
properties:
events:
type: array
items:
$ref: '#/components/schemas/SanitizedEvent'
description: Object with an array of `SanitizedEvent`s that occurred during
block initialization with the `method` and `data` for each.
BlocksTrace:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
blockHash:
events:
type: array
items:
$ref: '#/components/schemas/TraceEvent'
parentHash:
type: array
items:
$ref: '#/components/schemas/TraceSpan'
storageKeys:
type: string
description: Hex encoded storage keys used to filter events.
tracingTargets:
type: string
description: Targets used to filter spans and events.
BlocksTraceOperations:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
operations:
type: array
items:
$ref: '#/components/schemas/Operation'
BondedPool:
type: object
properties:
points:
type: number
state:
type: string
memberCounter:
type: number
roles:
type: object
properties:
depositor:
type: string
root:
type: string
nominator:
type: string
stateToggler:
type: string
ChainType:
type: object
description: Type of the chain. It will return one of the following enum variants as a key. Live, Development, Local, or Custom. Each variant will have a value as null except when the ChainType is Custom, it will return a string.
type: string
nullable: true
default: null
development:
type: string
nullable: true
default: null
type: string
nullable: true
default: null
custom:
type: string
example: "{\"live\": null}"
ContractsInkQuery:
type: object
description: Result from calling a query to a Ink contract.
properties:
debugMessage:
type: string
gasConsumed:
type: string
gasRequired:
type: string
output:
type: boolean
result:
type: object
description: Will result in an Ok or Err object depending on the result of the query.
storageDeposit:
type: object
type: object
description: Metadata used to instantiate a ContractPromise. This metadata can be generated
by compiling the contract you are querying.
type: object
properties:
format: unsignedInteger
value:
type: array
items:
type: string
ElectionStatus:
type: object
properties:
status:
type: object
description: >-
[Deprecated](Works for polkadot runtimes before v0.8.30).
Era election status: either `Close: null` or `Open: <BlockNumber>`.
A status of `Close` indicates that the submission window for solutions
from off-chain Phragmen is not open. A status of `Open` indicates that the
submission window for off-chain Phragmen solutions has been open since
BlockNumber. N.B. when the submission window is open, certain
extrinsics are not allowed because they would mutate the state that the
off-chain Phragmen calculation relies on for calculating results.
toggleEstimate:
description: Upper bound estimate of the block height at which the `status`
will switch.
format: unsignedInteger
description: Information about the off-chain election. Not included in response when
`forceEra.isForceNone`.
Error:
type: object
properties:
code:
type: number
message:
type: string
ExtrinsicMethod:
type: object
properties:
pallet:
type: string
type: string
description: Extrinsic method
Extrinsic:
type: object
properties:
method:
$ref: '#/components/schemas/ExtrinsicMethod'
signature:
$ref: '#/components/schemas/Signature'
nonce:
type: string
description: Account nonce, if applicable.
format: unsignedInteger
args:
type: object
description: >-
Object of arguments keyed by parameter name. Note: if you are expecting an [`OpaqueCall`](https://substrate.dev/rustdocs/v2.0.0/pallet_multisig/type.OpaqueCall.html)
and it is not decoded in the response (i.e. it is just a hex string), then Sidecar was
not able to decode it and likely that it is not a valid call for the runtime.
tip:
type: string
description: Any tip added to the transaction.
format: unsignedInteger
hash:
type: string
description: The transaction's hash.
format: hex
info:
$ref: '#/components/schemas/RuntimeDispatchInfo'
era:
$ref: '#/components/schemas/GenericExtrinsicEra'
events:
type: array
description: An array of `SanitizedEvent`s that occurred during extrinsic
execution.
items:
$ref: '#/components/schemas/SanitizedEvent'
success:
type: boolean
description: Whether or not the extrinsic succeeded.
paysFee:
type: boolean
description: Whether the extrinsic requires a fee. Careful! This field relates
to whether or not the extrinsic requires a fee if called as a transaction.
Block authors could insert the extrinsic as an inherent in the block
and not pay a fee. Always check that `paysFee` is `true` and that the
extrinsic is signed when reconciling old blocks.
ExtrinsicIndex:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
extrinsic:
$ref: '#/components/schemas/Extrinsic'
description: A single extrinsic at a given block.
type: object
properties:
verifier:
type: string
deposit:
type: string
format: unsignedInteger
format: unsignedInteger
end:
format: unsignedInteger
cap:
format: unsignedInteger
lastConstribution:
enum:
- preEnding
- ending
firstPeriod:
type: string
format: unsignedInteger
format: unsignedInteger
trieIndex:
type: string
format: unsignedInteger
GenericExtrinsicEra:
type: object
description: |
The return value for era can either be `mortalEra`, or `immortalEra` and is represented as an enum in substrate. `immortalEra` meaning
the transaction is valid forever. `mortalEra` consists of a tuple containing a period and phase.
ex: `"{"mortalEra": ["64", "11"]}"`. The Period is the period of validity from the block hash found in the signing material.
The Phase is the period that this transaction's lifetime begins (and, importantly,
implies which block hash is included in the signature material).
properties:
type: array
description: Tuple of a Phase, and Period. Each item in the array will be a string formatted as an integer.
immortalEra:
type: string
description: Hardcoded constant '0x00'.
format: hex
example: "{\"mortalEra\":[\"64\", \"11\"]}"
NodeNetwork:
type: object
properties:
nodeRoles:
$ref: '#/components/schemas/NodeRole'
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
type: string
description: Number of peers the node is connected to.
format: unsignedInteger
isSyncing:
type: boolean
description: Whether or not the node is syncing. `False` indicates that the node is in sync.
shouldHavePeers:
type: boolean
description: Whether or not the node should be connected to peers. Might be false
for local chains or when running without discovery.
localPeerId:
type: string
description: Local copy of the `PeerId`.
localListenAddresses:
type: array
description: Multiaddresses that the local node is listening on. The addresses
include a trailing `/p2p/` with the local PeerId, and are thus suitable
to be passed to `system_addReservedPeer` or as a bootnode address for
example.
items:
type: string
type: array
items:
$ref: '#/components/schemas/PeerInfo'
NodeRole:
type: string
description: Role of this node. (N.B. Sentry nodes are being deprecated.)
enum:
- Full
- LightClient
- Authority
- Sentry
NodeVersion:
type: object
properties:
description: Node's binary version.
clientImplName:
description: Node's implementation name.
chain:
description: Node's chain name.
description: Version information of the node.
Nominations:
type: object
properties:
type: array
items:
type: string
description: The targets of the nomination.
submittedIn:
type: string
format: unsignedInteger
description: >-
The era the nominations were submitted. (Except for initial
nominations which are considered submitted at era 0.)
suppressed:
type: boolean
description: Whether the nominations have been suppressed.
OnboardingAs:
type: string
enum:
- parachain
- parathread
description: |
This property only shows up when `paraLifecycle=onboarding`. It
describes if a particular para is onboarding as a `parachain` or a
`parathread`.
Operation:
type: object
properties:
phase:
$ref: '#/components/schemas/OperationPhase'
parentSpanId:
$ref: '#/components/schemas/SpanId'
primarySpanId:
$ref: '#/components/schemas/SpanId'
eventIndex:
type: string
format: unsignedInteger
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
description: Index of the underlying trace event.
address:
type: string
description: |
Account this operation affects. Note - this will be an object like
`{ id: address }` if the network uses `MultiAddress`
storage:
type: object
properties:
pallet:
type: string
item:
type: string
field1:
type: string
description: |
A field of the storage item. (i.e `system::Account::get(address).data`)
field2:
type: string
description: |
A field of the struct described by field1 (i.e
`system::Account::get(address).data.free`)
amount:
$ref: '#/components/schemas/OperationAmount'
OperationAmount:
type: object
properties:
type: string
format: unsignedInteger
currency:
$ref: '#/components/schemas/OperationAmountCurrency'
OperationAmountCurrency:
type: object
properties:
symbol:
type: string
example: KSM
OperationPhase:
type: object
properties:
variant:
type: string
enum:
- onInitialize
- initialChecks
- applyExtrinsic
- onFinalize
- finalChecks
description: Phase of block execution pipeline.
extrinsicIndex:
type: string
format: unsignedInteger
description: |
If phase variant is `applyExtrinsic` this will be the index of
the extrinsic. Otherwise this field will not be present.
PalletsAssetsInfo:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
assetInfo:
$ref: '#/components/schemas/AssetInfo'
$ref: '#/components/schemas/AssetMetadata'
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
PalletConstants:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
pallet:
type: string
description: Name of the pallet.
example: "democracy"
palletIndex:
type: string
description: Index of the pallet for looking up constants.
example: "14"
items:
type: array
items:
$ref: '#/components/schemas/PalletConstantsItemMetadata'
description: Array containing metadata for each constant entry of the pallet.
PalletConstantsItem:
type: object
properties:
pallet:
type: string
description: Name of the pallet.
example: "democracy"
palletIndex:
type: string
description: Index of the pallet for looking up constants.
example: "14"
errorItem:
type: string
description: Name of the constant item.
example: "EnactmentPeriod"
metadata:
$ref: '#/components/schemas/PalletConstantsItemMetadata'
PalletConstantsItemMetadata:
type: object
properties:
name:
type: string
example: "VotingPeriod"
description: The constant item's name (which is the same as the constant item's ID).
type:
type: string
example: "4"
value:
type: string
example: "0x00270600"
description: The hex value of the constant
docs:
type: string
example: "Information concerning any given constant.\n\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control."
description: Metadata of an constant item from a FRAME pallet.
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
PalletDispatchables:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
pallet:
type: string
description: Name of the pallet.
example: "democracy"
palletIndex:
type: string
description: Index of the pallet for looking up dispatchables.
example: "14"
items:
type: array
items:
$ref: '#/components/schemas/PalletDispatchablesItemMetadata'
description: Array containing metadata for each dispatchable entry of the pallet.
PalletDispatchablesItem:
type: object
properties:
pallet:
type: string
description: Name of the pallet.
example: "democracy"
palletIndex:
type: string
description: Index of the pallet for looking up dispatchables.
example: "14"
dispatchableItem:
type: string
description: Name of the dispatchable item.
example: "vote"
metadata:
$ref: '#/components/schemas/PalletDispatchablesItemMetadata'
PalletDispatchablesItemMetadata:
type: object
properties:
name:
type: string
example: "propose"
description: The dispatchable item's name (which is the same as the dispatchable item's ID).
fields:
type: array
items:
type: string
index:
type: string
example: "0"
description: The index of the dispatchable item in the lists of pallet dispatchables.
docs:
type: string
example: "Information concerning any given dispatchable.\n\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control."
args:
type: array
items:
type: string
description: Metadata of a dispatchable item from a FRAME pallet.
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
pallet:
type: string
description: Name of the pallet.
example: "democracy"
palletIndex:
type: string
description: Index of the pallet for looking up errors.
example: "14"
items:
type: array
items:
$ref: '#/components/schemas/PalletErrorsItemMetadata'
description: Array containing metadata for each error entry of the pallet.
PalletErrorsItem:
type: object
properties:
pallet:
type: string
description: Name of the pallet.
example: "democracy"
palletIndex:
type: string
description: Index of the pallet for looking up errors.
example: "14"
errorItem:
type: string
description: Name of the error item.
example: "ValueLow"
metadata:
$ref: '#/components/schemas/PalletErrorsItemMetadata'
PalletErrorsItemMetadata:
type: object