/
TransPay.go
138 lines (113 loc) · 2.65 KB
/
TransPay.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
package httpjsonrpc
import (
. "XBlock/common"
"XBlock/core/asset"
. "XBlock/core/contract"
. "XBlock/core/transaction"
"XBlock/core/transaction/payload"
"bytes"
)
type Payload interface {
Data() []byte
}
type BookKeeping struct {
}
func (dc *BookKeeping) Data() []byte {
return []byte{0}
}
type FunctionCode struct {
Code string
ParameterTypes string
ReturnTypes string
}
type DeployCode struct {
Code *FunctionCode
Name string
CodeVersion string
Author string
Email string
Description string
}
func (dc *DeployCode) Data() []byte {
return []byte{0}
}
type IssueAsset struct {
}
func (a *IssueAsset) Data() []byte {
return []byte{0}
}
type Issuer struct {
X, Y string
}
type RegisterAsset struct {
Asset *asset.Asset
Amount Fixed64
Issuer Issuer
Controller string
}
func (a *RegisterAsset) Data() []byte {
return []byte{0}
}
type TransferAsset struct {
}
func (a *TransferAsset) Data() []byte {
return []byte{0}
}
type Record struct {
RecordType string
RecordData string
}
func (a *Record) Data() []byte {
return []byte{0}
}
type PrivacyPayload struct {
PayloadType uint8
Payload string
EncryptType uint8
EncryptAttr string
}
func (a *PrivacyPayload) Data() []byte {
return []byte{0}
}
func TransPay(p Payload) Payload {
switch object := p.(type) {
case *payload.BookKeeping:
case *payload.BookKeeper:
case *payload.IssueAsset:
case *payload.TransferAsset:
case *payload.DeployCode:
obj := new(DeployCode)
obj.Code.Code = ToHexString(object.Code.Code)
obj.Code.ParameterTypes = ToHexString(ContractParameterTypeToByte(object.Code.ParameterTypes))
obj.Code.ReturnTypes = ToHexString(ContractParameterTypeToByte(object.Code.ReturnTypes))
obj.Name = object.Name
obj.CodeVersion = object.CodeVersion
obj.Author = object.Author
obj.Email = object.Email
obj.Description = object.Description
return obj
case *payload.RegisterAsset:
obj := new(RegisterAsset)
obj.Asset = object.Asset
obj.Amount = object.Amount
obj.Issuer.X = object.Issuer.X.String()
obj.Issuer.Y = object.Issuer.Y.String()
obj.Controller = ToHexString(object.Controller.ToArray())
return obj
case *payload.Record:
obj := new(Record)
obj.RecordType = object.RecordType
obj.RecordData = ToHexString(object.RecordData)
return obj
case *payload.PrivacyPayload:
obj := new(PrivacyPayload)
obj.PayloadType = uint8(object.PayloadType)
obj.Payload = ToHexString(object.Payload)
obj.EncryptType = uint8(object.EncryptType)
bytesBuffer := bytes.NewBuffer([]byte{})
object.EncryptAttr.Serialize(bytesBuffer)
obj.EncryptAttr = ToHexString(bytesBuffer.Bytes())
return obj
}
return nil
}