-
Notifications
You must be signed in to change notification settings - Fork 93
/
Operation.yaml
74 lines (70 loc) · 3.34 KB
/
Operation.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# Copyright 2020 Coinbase, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
description: |
Operations contain all balance-changing information within a
transaction. They are always one-sided (only affect 1 AccountIdentifier)
and can succeed or fail independently from a Transaction.
Operations are used both to represent on-chain data (Data API) and to construct
new transactions (Construction API), creating a standard interface for reading
and writing to blockchains.
type: object
required:
- operation_identifier
- type
properties:
operation_identifier:
$ref: 'OperationIdentifier.yaml'
related_operations:
description: |
Restrict referenced related_operations to identifier indices
< the current operation_identifier.index. This ensures there
exists a clear DAG-structure of relations.
Since operations are one-sided, one could imagine relating operations
in a single transfer or linking operations in a call tree.
type: array
items:
$ref: 'OperationIdentifier.yaml'
example:
- index: 1
- index: 2
type:
description: |
Type is the network-specific type of the operation. Ensure that any type that can be returned here is also
specified in the NetworkOptionsResponse. This can be very useful to downstream consumers that parse all
block data.
type: string
example: "Transfer"
status:
description: |
Status is the network-specific status of the operation. Status is not defined on the transaction object
because blockchains with smart contracts may have transactions that partially apply (some operations
are successful and some are not). Blockchains with atomic transactions (all operations succeed or
all operations fail) will have the same status for each operation.
On-chain operations (operations retrieved in the `/block` and `/block/transaction` endpoints) MUST have
a populated status field (anything on-chain must have succeeded or failed). However, operations provided
during transaction construction (often times called "intent" in the documentation) MUST NOT
have a populated status field (operations yet to be included on-chain have not yet succeeded or failed).
type: string
example: "Reverted"
account:
$ref: 'AccountIdentifier.yaml'
amount:
$ref: 'Amount.yaml'
coin_change:
$ref: 'CoinChange.yaml'
metadata:
type: object
example:
asm: "304502201fd8abb11443f8b1b9a04e0495e0543d05611473a790c8939f089d073f90509a022100f4677825136605d732e2126d09a2d38c20c75946cd9fc239c0497e84c634e3dd01 03301a8259a12e35694cc22ebc45fee635f4993064190f6ce96e7fb19a03bb6be2"
hex: "48304502201fd8abb11443f8b1b9a04e0495e0543d05611473a790c8939f089d073f90509a022100f4677825136605d732e2126d09a2d38c20c75946cd9fc239c0497e84c634e3dd012103301a8259a12e35694cc22ebc45fee635f4993064190f6ce96e7fb19a03bb6be2"