6 "github.com/vapor/crypto/ed25519/chainkd"
7 chainjson "github.com/vapor/encoding/json"
8 "github.com/vapor/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"`
22 Size uint64 `json:"size"`
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"`
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"`
59 //AnnotatedAccount means an annotated account.
60 type AnnotatedAccount struct {
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"`
69 //AnnotatedAsset means an annotated asset.
70 type AnnotatedAsset struct {
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"`
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"`
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"`