@@ -134,16 +134,6 @@ func (b *Transaction) UnmarshalJSON(data []byte) error {
134134 Type string `json:"type"`
135135 }
136136
137- type tmpPayload struct {
138- ElectionPayload
139- RetirePayload
140- // RegisterPayload
141- UpdateVotingPowerPayload
142- PivotBlockDecision
143- DisputePayload
144- ConflictSignature
145- }
146-
147137 tmpTx := tmpTransaction {}
148138
149139 if err := json .Unmarshal (data , & tmpTx ); err != nil {
@@ -154,39 +144,31 @@ func (b *Transaction) UnmarshalJSON(data []byte) error {
154144 tmpTx .Timestamp , tmpTx .Number , nil , tmpTx .Status , tmpTx .Type }
155145
156146 if tmpTx .Payload != nil {
157- marshaed , err := json .Marshal (tmpTx .Payload )
158- if err != nil {
159- return errors .WithStack (err )
160- }
161-
162- payload := tmpPayload {}
163- err = json .Unmarshal (marshaed , & payload )
147+ marshaled , err := json .Marshal (tmpTx .Payload )
164148 if err != nil {
165149 return errors .WithStack (err )
166150 }
167151
168152 realPayload := TransactionPayload {}
153+ realPayload .SetTransactionType (tmpTx .Type )
169154 switch tmpTx .Type {
170155 case "Election" :
171- realPayload . ElectionPayload = payload . ElectionPayload
156+ err = json . Unmarshal ( marshaled , & realPayload . ElectionPayload )
172157 case "Retire" :
173- realPayload . RetirePayload = payload . RetirePayload
158+ err = json . Unmarshal ( marshaled , & realPayload . RetirePayload )
174159 case "Register" :
175- realPayload .RegisterPayload = RegisterPayload {
176- PublicKey : payload .ElectionPayload .PublicKey ,
177- VrfPublicKey : payload .ElectionPayload .VrfPublicKey ,
178- }
179- // fmt.Printf("realPayload.RegisterPayload: %#v\n\n", realPayload.RegisterPayload)
160+ err = json .Unmarshal (marshaled , & realPayload .RegisterPayload )
180161 case "UpdateVotingPower" :
181- realPayload . UpdateVotingPowerPayload = payload . UpdateVotingPowerPayload
162+ err = json . Unmarshal ( marshaled , & realPayload . UpdateVotingPowerPayload )
182163 case "PivotDecision" :
183- realPayload . PivotBlockDecision = payload . PivotBlockDecision
164+ err = json . Unmarshal ( marshaled , & realPayload . PivotBlockDecision )
184165 case "Dispute" :
185- realPayload .DisputePayload = payload .DisputePayload
166+ err = json .Unmarshal (marshaled , & realPayload .DisputePayload )
167+ }
168+ if err != nil {
169+ return errors .WithStack (err )
186170 }
187171
188- realPayload .SetTransactionType (tmpTx .Type )
189- // fmt.Printf("tmpTxType:%v,payload:%#v, realPayload %#v", tmpTx.Type, payload, realPayload)
190172 b .Payload = & realPayload
191173 }
192174
0 commit comments