forked from ori-shem-tov/algosearch
/
printTransaction.go
169 lines (143 loc) · 6.62 KB
/
printTransaction.go
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
package indexer
import (
"encoding/base64"
"fmt"
"github.com/algorand/go-algorand-sdk/client/v2/common/models"
"github.com/algorand/go-algorand-sdk/types"
)
func printPaymentTx(txn models.TransactionPayment, padding int) {
var paddingStr = ""
for i := 0; i < padding; i++ {
paddingStr += "\t"
}
fmt.Println(paddingStr + "\t- Payment Transaction")
fmt.Println(paddingStr + "\t- Receiver: " + txn.Receiver)
fmt.Printf(paddingStr + "\t- Amount: %d\n", txn.Amount)
fmt.Println(paddingStr + "\t- Close Remainder To: " + txn.CloseRemainderTo)
}
func printKeyRegistrationTx(txn models.TransactionKeyreg, padding int) {
var paddingStr = ""
for i := 0; i < padding; i++ {
paddingStr += "\t"
}
fmt.Print(paddingStr + "\t- Vote Participation Key: " + base64.StdEncoding.EncodeToString(txn.VoteParticipationKey[:]))
fmt.Print(paddingStr + "\t- Selection Key: " + base64.StdEncoding.EncodeToString(txn.SelectionParticipationKey[:]))
fmt.Printf(paddingStr + "\t- Vote First Valid: %d\n", txn.VoteFirstValid)
fmt.Printf(paddingStr + "\t- Vote Last Valid: %d\n", txn.VoteLastValid)
fmt.Printf(paddingStr + "\t- Vote Key Dilution: %d\n", txn.VoteKeyDilution)
fmt.Printf(paddingStr + "\t- Non Participation: %t\n", txn.NonParticipation)
}
func printAssetTransferTx(txn models.TransactionAssetTransfer, padding int) {
var paddingStr = ""
for i := 0; i < padding; i++ {
paddingStr += "\t"
}
fmt.Printf(paddingStr + "\t- XferAsset: %d\n", txn.AssetId)
fmt.Printf(paddingStr + "\t- Asset Amount: %d\n", txn.Amount)
fmt.Println(paddingStr + "\t- Asset Sender:" + txn.Sender)
fmt.Println(paddingStr + "\t- Asset Receiver:" + txn.Receiver)
fmt.Println(paddingStr + "\t- Asset Close To:" + txn.CloseTo)
// Note that I can't find this is block msgpack data
fmt.Printf(paddingStr + "\t- Asset Close Amount: %d\n", txn.CloseAmount)
}
func printAssetConfigTx(txn models.TransactionAssetConfig, padding int) {
var paddingStr = ""
for i := 0; i < padding; i++ {
paddingStr += "\t"
}
fmt.Printf(paddingStr + "\t- Config Asset Index: %d\n", txn.AssetId)
fmt.Println(paddingStr + "\t- Asset Params:")
fmt.Printf(paddingStr + "\t\t- Total: %d\n", txn.Params.Total)
fmt.Printf(paddingStr + "\t\t- Decimals: %d\n", txn.Params.Decimals)
fmt.Printf(paddingStr + "\t\t- Default Frozen: %t\n", txn.Params.DefaultFrozen)
fmt.Println(paddingStr + "\t\t- Unit Name: " + txn.Params.UnitName)
fmt.Println(paddingStr + "\t\t- Asset Name: " + txn.Params.Name)
fmt.Println(paddingStr + "\t\t- URL: " + txn.Params.Url)
fmt.Println(paddingStr + "\t\t- MetadataHash: " + base64.StdEncoding.EncodeToString(txn.Params.MetadataHash[:]))
fmt.Println(paddingStr + "\t\t- Manager: " + txn.Params.Manager)
fmt.Println(paddingStr + "\t\t- Reserve: " + txn.Params.Reserve)
fmt.Println(paddingStr + "\t\t- Freeze: " + txn.Params.Freeze)
fmt.Println(paddingStr + "\t\t- Clawback: " + txn.Params.Clawback)
}
func printAssetFreezeTx(txn models.TransactionAssetFreeze, padding int) {
var paddingStr = ""
for i := 0; i < padding; i++ {
paddingStr += "\t"
}
fmt.Println(paddingStr + "\t- Freeze Account:" + txn.Address)
fmt.Printf(paddingStr + "\t- Freeze Asset: %d\n", txn.AssetId)
fmt.Printf(paddingStr + "\t- Asset Frozen: %t\n", txn.NewFreezeStatus)
}
func PrintTransactionInBlock(txn models.Transaction, padding int) {
var paddingStr = ""
for i := 0; i < padding; i++ {
paddingStr += "\t"
}
var padding2Str = ""
if len(txn.GenesisId) == 0 {
fmt.Printf(paddingStr + "- Has Genesis ID: false\n")
} else {
fmt.Printf(paddingStr + "- Has Genesis ID: true\n")
}
if len(txn.GenesisHash) == 0 {
fmt.Printf(paddingStr + "- Has Genesis Hash: false\n")
} else {
fmt.Printf(paddingStr + "- Has Genesis Hash: true\n")
}
fmt.Println(paddingStr + "- SignedTxnWithAD")
// - SignedTxn
padding2Str = "\t"
fmt.Println(paddingStr + "- SignedTxn")
fmt.Println(paddingStr + padding2Str + "- Signature: " + base64.StdEncoding.EncodeToString(txn.Signature.Sig[:]))
// TODO: Process it
fmt.Println(paddingStr + padding2Str + "- Sub Siguatures (Msig MultisigSig): Not processing it")
// TODO: Process it
fmt.Println(paddingStr + padding2Str + "- Logic Signature (LSig LogicSig): Not processing it")
fmt.Println(paddingStr + padding2Str + "- Auth Addreess: " + txn.AuthAddr)
// -- Transaction Info
padding2Str = "\t\t"
fmt.Println(paddingStr + "\t- Transaction Info:")
// --- Type
fmt.Println(paddingStr + padding2Str + "- Type: " + txn.Type)
// --- Header
padding2Str = "\t\t\t"
fmt.Println(paddingStr + "\t\t- Header")
fmt.Println(paddingStr + padding2Str + "- Sender: " + txn.Sender)
fmt.Printf(paddingStr + padding2Str + "- Fee: %d\n", txn.Fee)
fmt.Printf(paddingStr + padding2Str + "- First Valid Round: %d\n", txn.FirstValid)
fmt.Printf(paddingStr + padding2Str + "- Last Valid Round: %d\n", txn.LastValid)
fmt.Println(paddingStr + padding2Str + "- Note: " + base64.StdEncoding.EncodeToString(txn.Note))
fmt.Println(paddingStr + padding2Str + "- Genesis ID: " + txn.GenesisId)
var genesisHashStr = base64.StdEncoding.EncodeToString(txn.GenesisHash[:])
fmt.Println(paddingStr + padding2Str + "- Genesis Hash: " + genesisHashStr)
var groupStr = base64.StdEncoding.EncodeToString(txn.Group[:])
fmt.Println(paddingStr + padding2Str + "- Group: " + groupStr)
fmt.Println(paddingStr + padding2Str + "- Lease (Not Verified): " + base64.StdEncoding.EncodeToString(txn.Lease[:]))
fmt.Println(paddingStr + padding2Str + "- RekeyTo: " + txn.RekeyTo)
fmt.Println(paddingStr + padding2Str + "- Transaction Specific Info for:" + txn.Type)
switch txn.Type {
case string(types.PaymentTx):
printPaymentTx(txn.PaymentTransaction, 6)
case string(types.KeyRegistrationTx):
printKeyRegistrationTx(txn.KeyregTransaction, 6)
case string(types.AssetConfigTx):
printAssetConfigTx(txn.AssetConfigTransaction, 6)
case string(types.AssetTransferTx):
printAssetTransferTx(txn.AssetTransferTransaction, 6)
case string(types.AssetFreezeTx):
printAssetFreezeTx(txn.AssetFreezeTransaction, 6)
case string(types.ApplicationCallTx):
// TODO: finish this
break
}
// - ApplyData
padding2Str = "\t\t"
fmt.Println(paddingStr + "\t- ApplyData")
fmt.Printf(paddingStr + padding2Str + "- Closing Amount: %d\n", txn.ClosingAmount)
//fmt.Printf(paddingStr + padding2Str + "- Asset Closing Amount: %d\n", txn.AssetClosingAmount)
fmt.Printf(paddingStr + padding2Str + "- Asset Closing Amount: Unavailable in data\n")
fmt.Printf(paddingStr + padding2Str + "- Sender Rewards: %d\n", txn.SenderRewards)
fmt.Printf(paddingStr + padding2Str + "- Receiver Rewards: %d\n", txn.ReceiverRewards)
fmt.Printf(paddingStr + padding2Str + "- Close Rewards: %d\n", txn.CloseRewards)
fmt.Println(paddingStr + padding2Str + "- EvalDelta is ignored")
}