OSDN Git Service

init for remove issue (#63)
[bytom/vapor.git] / blockchain / query / annotated.go
1 package query
2
3 import (
4         "encoding/json"
5
6         "github.com/vapor/crypto/ed25519/chainkd"
7         chainjson "github.com/vapor/encoding/json"
8         "github.com/vapor/protocol/bc"
9 )
10
11 //AnnotatedTx means an annotated transaction.
12 type AnnotatedTx struct {
13         ID                     bc.Hash            `json:"tx_id"`
14         Timestamp              uint64             `json:"block_time"`
15         BlockID                bc.Hash            `json:"block_hash"`
16         BlockHeight            uint64             `json:"block_height"`
17         Position               uint32             `json:"block_index"`
18         BlockTransactionsCount uint32             `json:"block_transactions_count,omitempty"`
19         Inputs                 []*AnnotatedInput  `json:"inputs"`
20         Outputs                []*AnnotatedOutput `json:"outputs"`
21         StatusFail             bool               `json:"status_fail"`
22         Size                   uint64             `json:"size"`
23 }
24
25 //AnnotatedInput means an annotated transaction input.
26 type AnnotatedInput struct {
27         Type             string               `json:"type"`
28         AssetID          bc.AssetID           `json:"asset_id"`
29         AssetAlias       string               `json:"asset_alias,omitempty"`
30         AssetDefinition  *json.RawMessage     `json:"asset_definition,omitempty"`
31         Amount           uint64               `json:"amount"`
32         ControlProgram   chainjson.HexBytes   `json:"control_program,omitempty"`
33         Address          string               `json:"address,omitempty"`
34         SpentOutputID    *bc.Hash             `json:"spent_output_id,omitempty"`
35         AccountID        string               `json:"account_id,omitempty"`
36         AccountAlias     string               `json:"account_alias,omitempty"`
37         Arbitrary        chainjson.HexBytes   `json:"arbitrary,omitempty"`
38         InputID          bc.Hash              `json:"input_id"`
39         WitnessArguments []chainjson.HexBytes `json:"witness_arguments"`
40 }
41
42 //AnnotatedOutput means an annotated transaction output.
43 type AnnotatedOutput struct {
44         Type            string             `json:"type"`
45         OutputID        bc.Hash            `json:"id"`
46         TransactionID   *bc.Hash           `json:"transaction_id,omitempty"`
47         Position        int                `json:"position"`
48         AssetID         bc.AssetID         `json:"asset_id"`
49         AssetAlias      string             `json:"asset_alias,omitempty"`
50         AssetDefinition *json.RawMessage   `json:"asset_definition,omitempty"`
51         Amount          uint64             `json:"amount"`
52         AccountID       string             `json:"account_id,omitempty"`
53         AccountAlias    string             `json:"account_alias,omitempty"`
54         ControlProgram  chainjson.HexBytes `json:"control_program"`
55         Address         string             `json:"address,omitempty"`
56 }
57
58 //AnnotatedAccount means an annotated account.
59 type AnnotatedAccount struct {
60         ID         string         `json:"id"`
61         Alias      string         `json:"alias,omitempty"`
62         XPubs      []chainkd.XPub `json:"xpubs"`
63         Quorum     int            `json:"quorum"`
64         KeyIndex   uint64         `json:"key_index"`
65         DeriveRule uint8          `json:"derive_rule"`
66 }
67
68 //AnnotatedAsset means an annotated asset.
69 type AnnotatedAsset struct {
70         ID                bc.AssetID         `json:"id"`
71         Alias             string             `json:"alias"`
72         VMVersion         uint64             `json:"vm_version"`
73         RawDefinitionByte chainjson.HexBytes `json:"raw_definition_byte"`
74         Definition        *json.RawMessage   `json:"definition"`
75 }
76
77 //AnnotatedUTXO means an annotated utxo.
78 type AnnotatedUTXO struct {
79         Alias               string `json:"account_alias"`
80         OutputID            string `json:"id"`
81         AssetID             string `json:"asset_id"`
82         AssetAlias          string `json:"asset_alias"`
83         Amount              uint64 `json:"amount"`
84         AccountID           string `json:"account_id"`
85         Address             string `json:"address"`
86         ControlProgramIndex uint64 `json:"control_program_index"`
87         Program             string `json:"program"`
88         SourceID            string `json:"source_id"`
89         SourcePos           uint64 `json:"source_pos"`
90         ValidHeight         uint64 `json:"valid_height"`
91         Change              bool   `json:"change"`
92         DeriveRule          uint8  `json:"derive_rule"`
93 }