6 "github.com/bytom/crypto/ed25519/chainkd"
7 chainjson "github.com/bytom/encoding/json"
8 "github.com/bytom/protocol/bc"
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"`
24 //AnnotatedInput means an annotated transaction input.
25 type AnnotatedInput struct {
26 Type string `json:"type"`
27 AssetID bc.AssetID `json:"asset_id"`
28 AssetAlias string `json:"asset_alias,omitempty"`
29 AssetDefinition *chainjson.HexBytes `json:"asset_definition"`
30 Amount uint64 `json:"amount"`
31 IssuanceProgram chainjson.HexBytes `json:"issuance_program,omitempty"`
32 ControlProgram chainjson.HexBytes `json:"-"`
33 SpentOutputID *bc.Hash `json:"spent_output_id,omitempty"`
34 AccountID string `json:"account_id,omitempty"`
35 AccountAlias string `json:"account_alias,omitempty"`
36 Arbitrary chainjson.HexBytes `json:"arbitrary,omitempty"`
39 //AnnotatedOutput means an annotated transaction output.
40 type AnnotatedOutput struct {
41 Type string `json:"type"`
42 OutputID bc.Hash `json:"id"`
43 TransactionID *bc.Hash `json:"transaction_id,omitempty"`
44 Position int `json:"position"`
45 AssetID bc.AssetID `json:"asset_id"`
46 AssetAlias string `json:"asset_alias,omitempty"`
47 AssetDefinition *chainjson.HexBytes `json:"asset_definition"`
48 Amount uint64 `json:"amount"`
49 AccountID string `json:"account_id,omitempty"`
50 AccountAlias string `json:"account_alias,omitempty"`
51 ControlProgram chainjson.HexBytes `json:"control_program"`
54 //AnnotatedAccount means an annotated account.
55 type AnnotatedAccount struct {
57 Alias string `json:"alias,omitempty"`
58 XPubs []chainkd.XPub `json:"xpubs"`
59 Quorum int `json:"quorum"`
60 Tags *json.RawMessage `json:"tags"`
61 KeyIndex uint64 `json:"key_index"`
64 //AnnotatedAsset means an annotated asset.
65 type AnnotatedAsset struct {
66 ID bc.AssetID `json:"id"`
67 Alias string `json:"alias,omitempty"`
68 IssuanceProgram chainjson.HexBytes `json:"issuance_program"`
69 Keys []*AssetKey `json:"keys"`
70 Quorum int `json:"quorum"`
71 Definition *json.RawMessage `json:"definition"`
72 Tags *json.RawMessage `json:"tags"`
75 //AssetKey means an asset key.
76 type AssetKey struct {
77 RootXPub chainkd.XPub `json:"root_xpub"`
78 AssetPubkey chainjson.HexBytes `json:"asset_pubkey"`
79 AssetDerivationPath []chainjson.HexBytes `json:"asset_derivation_path"`
82 type AnnotatedUTXO struct {
83 Alias string `json:"account_alias"`
84 OutputID string `json:"id"`
85 AssetID string `json:"asset_id"`
86 AssetAlias string `json:"asset_alias"`
87 Amount uint64 `json:"amount"`
88 AccountID string `json:"account_id"`
89 Address string `json:"address"`
90 ControlProgramIndex uint64 `json:"control_program_index"`
91 Program string `json:"program"`
92 SourceID string `json:"source_id"`
93 SourcePos uint64 `json:"source_pos"`
94 ValidHeight uint64 `json:"valid_height"`