OSDN Git Service

30d197f00be9671aa95c652965fc3de4782c9d2b
[bytom/bytom.git] / blockchain / query / annotated.go
1 package query
2
3 import (
4         "encoding/json"
5
6         "github.com/bytom/crypto/ed25519/chainkd"
7         chainjson "github.com/bytom/encoding/json"
8         "github.com/bytom/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         IssuanceProgram  chainjson.HexBytes   `json:"issuance_program,omitempty"`
33         ControlProgram   chainjson.HexBytes   `json:"control_program,omitempty"`
34         Address          string               `json:"address,omitempty"`
35         SpentOutputID    *bc.Hash             `json:"spent_output_id,omitempty"`
36         AccountID        string               `json:"account_id,omitempty"`
37         AccountAlias     string               `json:"account_alias,omitempty"`
38         Arbitrary        chainjson.HexBytes   `json:"arbitrary,omitempty"`
39         InputID          bc.Hash              `json:"input_id"`
40         WitnessArguments []chainjson.HexBytes `json:"witness_arguments"`
41 }
42
43 //AnnotatedOutput means an annotated transaction output.
44 type AnnotatedOutput struct {
45         Type            string             `json:"type"`
46         OutputID        bc.Hash            `json:"id"`
47         TransactionID   *bc.Hash           `json:"transaction_id,omitempty"`
48         Position        int                `json:"position"`
49         AssetID         bc.AssetID         `json:"asset_id"`
50         AssetAlias      string             `json:"asset_alias,omitempty"`
51         AssetDefinition *json.RawMessage   `json:"asset_definition,omitempty"`
52         Amount          uint64             `json:"amount"`
53         AccountID       string             `json:"account_id,omitempty"`
54         AccountAlias    string             `json:"account_alias,omitempty"`
55         ControlProgram  chainjson.HexBytes `json:"control_program"`
56         Address         string             `json:"address,omitempty"`
57 }
58
59 //AnnotatedAccount means an annotated account.
60 type AnnotatedAccount struct {
61         ID         string         `json:"id"`
62         Alias      string         `json:"alias,omitempty"`
63         XPubs      []chainkd.XPub `json:"xpubs"`
64         Quorum     int            `json:"quorum"`
65         KeyIndex   uint64         `json:"key_index"`
66         DeriveRule uint8          `json:"derive_rule"`
67 }
68
69 //AnnotatedAsset means an annotated asset.
70 type AnnotatedAsset struct {
71         AnnotatedSigner
72         ID                bc.AssetID         `json:"id"`
73         Alias             string             `json:"alias"`
74         VMVersion         uint64             `json:"vm_version"`
75         IssuanceProgram   chainjson.HexBytes `json:"issue_program"`
76         RawDefinitionByte chainjson.HexBytes `json:"raw_definition_byte"`
77         Definition        *json.RawMessage   `json:"definition"`
78         LimitHeight       int64              `json:"limit_height"`
79 }
80
81 //AnnotatedSigner means an annotated signer for asset.
82 type AnnotatedSigner struct {
83         Type       string         `json:"type"`
84         XPubs      []chainkd.XPub `json:"xpubs"`
85         Quorum     int            `json:"quorum"`
86         KeyIndex   uint64         `json:"key_index"`
87         DeriveRule uint8          `json:"derive_rule"`
88 }
89
90 //AnnotatedUTXO means an annotated utxo.
91 type AnnotatedUTXO struct {
92         Alias               string `json:"account_alias"`
93         OutputID            string `json:"id"`
94         AssetID             string `json:"asset_id"`
95         AssetAlias          string `json:"asset_alias"`
96         Amount              uint64 `json:"amount"`
97         AccountID           string `json:"account_id"`
98         Address             string `json:"address"`
99         ControlProgramIndex uint64 `json:"control_program_index"`
100         Program             string `json:"program"`
101         SourceID            string `json:"source_id"`
102         SourcePos           uint64 `json:"source_pos"`
103         ValidHeight         uint64 `json:"valid_height"`
104         Change              bool   `json:"change"`
105         DeriveRule          uint8  `json:"derive_rule"`
106 }