-
Notifications
You must be signed in to change notification settings - Fork 0
/
AdaptorFabric_test.go
342 lines (316 loc) · 57.5 KB
/
AdaptorFabric_test.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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
/*
This file is part of go-palletone.
go-palletone is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
go-palletone is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with go-palletone. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* @author PalletOne core developers <[email protected]>
* @date 2018-2020
*/
package fabricadaptor
import (
"encoding/hex"
"fmt"
"testing"
"github.com/palletone/adaptor"
)
func TestHashMessage(t *testing.T) {
fabAdapotr := NewAdaptorFabric("./connection.yaml")
//fabAdapotr.UserName = "User1"
output,err := fabAdapotr.HashMessage(&adaptor.HashMessageInput{Message:[]byte("123456")})
if err != nil {
fmt.Println(err.Error())
return
}
//8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
fmt.Println("output.Hash", hex.EncodeToString(output.Hash))
}
func TestSignMessage(t *testing.T) {
fabAdapotr := NewAdaptorFabric("./connection.yaml")
fabAdapotr.UserName = "User1"//need set
output,err := fabAdapotr.SignMessage(&adaptor.SignMessageInput{Message:[]byte("123456")})
if err != nil {
fmt.Println(err.Error())
return
}
//30440220742c2cc005742c2d378634e1662f6604690879c4c45c107ed8e9f2c8fb594334022042ef319f4b0f6e2931e8f74de08c5edad2392c32c8269c4b7f3c42b5919507af
fmt.Println("output.Signature", hex.EncodeToString(output.Signature))
}
func TestSignTransaction(t *testing.T) {
fabAdapotr := NewAdaptorFabric("./connection.yaml")
fabAdapotr.UserName = "Admin"
//7911a9e6b826c54dcb4b728f4f65eb989ee4de62839c4b1f0e03fdaeb93a4292
txProposalHex := "7b2254786e4944223a2237393131613965366238323663353464636234623732386634663635656239383965653464653632383339633462316630653033666461656239336134323932222c22686561646572223a22436c774941786f4d434d364471664d46454c5438347177424b6b41334f54457859546c6c4e6d49344d6a5a6a4e54526b59324930596a63794f4759305a6a59315a5749354f446c6c5a54526b5a5459794f444d35597a52694d5759775a54417a5a6d52685a5749354d3245304d6a6b794f6767534268494562484e6a59784b374267716542676f4854334a6e4d55315455424b53426930744c533074516b5648535534675130565356456c4753554e42564555744c5330744c51704e53556c4452305244513046694b32644264306c435157644a55555a546547354d5155647a64544130656e4a4761304646643370754e6e704253304a6e5a33466f613270505546465252454671516e704e55584e33436b4e5257555257555646485258644b566c56365256524e516b56485154465652554e43545574524d6b5a7a59566461646d4e744e58425a5645565854554a5252304578565556436545314f56544a4764556c46576e6b4b57566331616d4659546d7069656b566154554a6a523045785655564461453152596a4e4b626b31544e57786c52305a305930643462457874546e5a695645566a54554a7652304578565556426545315557544a46645170694d30707554564d3162475648526e526a523368735447314f646d4a5551575647647a4234546e70424e45313652586450564555775458704b59555a334d486c4f656b453054577072643039555254424e656b7068436b314763336844656b464b516d644f566b4a425756524262465a5554564a4e64305652575552575556464a5258647752466c586548426162546c35596d3173614531535758644751566c45566c4652534556334d56514b575663305a314a75536d686962553577597a4a4f646b31534f48644955566c45566c465252455243576b4a61527a4677596d7443646d4e745933684d625659305756637864324a485658565a4d6a6c3054555a726477704664316c4953323961535870714d454e4255566c4a53323961535870714d45524255574e4555576442525659785a475a745333687a526b7458627a64764e6b524f516b6c6853565a6c596b4e445545464e4f554d76436e4e4d516e513063457053636d5535634664464f54673352477059576d39614d326473597a5172524739515458525562554a5363574a51566e645a5931563263474a5a575468774e6b354f5455567a6430526e5755514b566c49775545465253433943515646455157646c51553142643064424d56566b525864465169393355554e4e515546335333645a52465a534d47704351314633535739425a31467162584645597a45794d6e55324e4170315a33706859304a6f556a4256565555776548463052336b7a5a44493265484657656c706c5531683364304e6e57556c4c6231704a656d6f77525546335355525364304633556b464a5a31684e655449325155565643693948565531515a6b4e4e637939755557705254555578576e68435345465a576e524c52585653556a4d324d55707a51306c465a7a6c435431706b5357397062314a70646b70444b317056656e5a4b565735725748554b627a4a49613164706458684d63326c695233683052516f744c5330744c55564f5243424452564a5553555a4a51304655525330744c5330744368495968324e4173534743732f5761506e54474f6d49366759304c5244534933426a2f222c227061796c6f6164223a224373675443735554434145534268494562484e6a5978713445776f486157357a644746736241717345776f71434145534a676f555a326c30614856694c6d4e766253396d59574a6a59584a666547775343325a68596d4e68636c39346244457847674577477630534834734941414141414141412f39525a335849624e374c4f7256536c642b684d565536524354326b6457796e6f6e4e30515448576d6f6b7461555846727352534a63325a4a676352427067304d4b4b344b622f37566d4f473550424869684e6e4c3159334a414830682b36762f774449635849395654347278334669382b734a6a68506b6e2b2f31366c7338745a3939326c2b76312b75396550456966505a367659335070382b2b667635304d56614e50333378374e6e586e304876452f6639714c2f536565545065702b3831365a782f79562f335338503975464c654b30534d6f355338425a38527441764d4d6b49526e62695a386745703759304b58706c446254366f394d326c43596c426d736f6946754733444a42596f316e4e5336395a6441564a4f4355695849793373554149364b4166335a2b4e52793868496e5346554371584356494b6379557a38426e7973484d3869314d4c414f6d715a4c4e55594d7945387435554356494d6b32525532576d6b4e68697a6d71616562417a512b77795663514156324c4e364853686a7175516c78743743334e62317559304c4b384a366342625969646d4838593961506d736b6f727136616a3966304538787a6b5936364630744d4948756b2b6f384b414d4a44597674454b54564f4b3168637464596f4166617851373971674d594c4147374b5335444e434c6549444976432b4f7574335a62425a6a30446932504f30756a4f792b486735656e6f3165506a6d4d653075524834776d3534447074314978705443654178614656676d4f4e5948476d6267786543754567544977592b57566d5861437546764551744e584b3934574f69713374734161774d705255583845773145454a2f3352634e534264384f72562b632f584d47372f75566c2f2b78712b484945353563774f442f37646e67315044386277666b70394d392b444b4c6644382b2b375141706e78454433526373646c67474a617853326f6972685259534e41746e755949534e56454a6144545445716345553374486243526d43754a634f584777417a5170614a557248344c4c42646b742b32495a37683773482b7a586d535078355441764e49484c6b58325641356a346f454e716b314a6976306f64627775564841577864785731346e65475538584f77346d3279573253696676376c563857515237324b7a43354665567a564b626148345a3559646c586d6a3644306975742f427930476a4f7949686330714c496c754245794e4b6d575863647a543634445442677952797976665133666a6337504f6d46456e47696d6b4b4e5252616c584758653459765456764344576c45364a34525448724a4947323274716a41493367356f625631756c676748514f746a6669344a4f6b58776a6b316a52712f75727379614d544849665070336e784a7137534f7a6669315a3971357574464f6c4f67694c6478444a314135324a54616e724d70554c686b76674477514c74743636626b48453063462b4f334464685739706f6b77565a4f75324345396c346b756d6733302f4c2b72707865785039377065414c386637482f59426b755156776964716a513867344a745165775668614b356d4161505577655367365772456e694e717072796561334859496b73572b2b397756734357486a3146784534696e4b38706567586d6255703661315a47517a544136736c554e656e6b7a415935732b6c346d364b687a497330783832386d566f6c49656366475a547152634a6169313150794f7a69392b6f4f6f7045736c515a35394634686236795835615056336c6a79457650434275646b504e5143494a4b516c6e79466a4b384930417a683964567a43716a76454b742f6c586c707a4c6771454247547a4170545249476e7a774252785357566c4b7464683239736752614472376339486737574e6a71587779644c3863676f526350467045343875563461447a7842424e716730766953334b466c616f6c626d4c794a5a744b5a6c516d43546e584d6b7133643746345a3239706d306430674d446b5375326c6761425a6c506c676a70522f59635a6234504a52767063624357346f45773259677532554d59644d6474504f4c764a65656b6447554342376c5a5261516e436a4b69353439526247564f7463787a33794e46524c397a4545692f462f69654b442f6231754679374a73364b374b676c7255696a6435474b7072525445686e703769346d4f6a446f344f6f5a616c66676635452f727962354a4c3541784a302f734a477a43787262307444686e5953475a7a684c505658556d586d4e496952576979504c495546666268714365482b7a7671636c4b377667596f74394b34766c41736b614361686c5638574a387756796c76366a324155684c2f393441577358394a6c516a49327177523241534a7653305136486c7845647246457a6f617a3141646a764e712b632b5271734d7a565132442f5872703375397064336d67683161686f68717075314c5a73757461476a75554b754851387067546e4730534f7848596e33545a3439466578325037322b71557277722b4e55454e4a6c573042382b5034616e367a6176575a42595a6b6f386d44496679336c2f736b7143474637654635534551385054614d5645677478334a395542342b654e784268353942523266742b3761543951375659414838484e6468442b75584b62494966736658387a51413438794b663079694f4972757a63656f7736454c726a4555515872456f5864614271683063516a58564a5551644364415342334e376136454e6e412b6a556374714165534f58546a4e74416a476c445a7754786e5162356456634c6d4771415852564a6e4a4561754449386430306b4c3554426b5a3268307076726235314d3579473155763730446e30546277356157316e44634133654c384e646b564f4e336b6172584f45795730446f5a2b79516f50624b42645554736e364273356837336b54715369353045322b3336676b4937324e4e4d694935303139446739664e34466d6d664a4e6e443479337531776d384b6d4e68656c3862594a633665734a742f41755542574f396a427453413651374f476f6b797170726142386859317364704230437572307a562f6e5341726732746b733530312f542f4b724565752f56386c714a4a3437306b506b7973552f482b6f4270494837616f51544849665837417958707457704f52674558564153625a7535375963394f49337943354448544465713544586534756b76796a72704938472f63766f712f6f4148772b39785a5a7164324174325466323771647079496f6d726f4a6a55504156504e315a655863636d4236704856757435323875724d382f7662412b627854574f2b5277577a694756556945557672305a686b52346666687a536f677773442f336977444976782b64764e41716435307032792b35636d3666472f3437704d38736174742f396b7a6e6650492f6e75616978305362443235375a464a4730506666504e4e5647737170324d336c4d4f567439774259743756716b376d6c394c2f57777673446c534137637262497658354d52696c482f49304d6466663272556a39314b61454d4f47427646415730657439754a304f69346e736b724a555635753549444d4f412b6e6146546835654b6651746c6c68564948527930554c744c7853666878734c39586a63627657486b616864687452652b6a61716478583244666b4d5267587a4e684f7064316e6f79774d554874714b34546d2f712b516e64473937355631347a66616d324351355a30626770564569474e74386e37592f594366634a4f5030334443316d654934787059706c7166764a67696575414b3476716c556a3578567351544d497253334e6872636b6a4c427766672b65536167313355646d4a567172746d762f394f767165357466525562567531354c72364d47354e56376a4f76496541586c6f746750583053556c6c744f6c4a75454f4a434f4e4b4c506a58796e78485841575a68536568416a515056487541567933533875337145747150366a6f68397259523067506e4e667073677669706a5a313253306d72656a4a57684535756a5a6675477470684c56384c64702b75464c5643304d39432b762b73483038644466346d397649346165336b634f2f656a3658666e4e554e5a784b4f6e53494830792b3668464c73502b7047306143484666765163654c2f72526a342f3977732b6c3277394e466a737173626c7a4b67545636446b796137744345702f6e534b412b656e49666370685444755378514a74466c53696c6b784e566a636e6a424a302b476e4976727342447771674257525873517a684f415947693263657554566c5456784570683653637451375057566c6739304671616f52363858353165784c6e627578334246334a4c496562613752384f39682f342f382b2f415141412f2f386178614e67464978634141674141502f2f73314946305141674141413d227d"
tx,_ := hex.DecodeString(txProposalHex)
output,err := fabAdapotr.SignTransaction(&adaptor.SignTransactionInput{
PrivateKey:[]byte(fabAdapotr.UserName),
Transaction:tx,
Extra:[]byte("proposal"),
})
if err != nil {
fmt.Println(err.Error())
return
}
//7b225369676e656450726f706f73616c223a7b2270726f706f73616c5f6279746573223a2243707748436c774941786f4d434d364471664d46454c5438347177424b6b41334f54457859546c6c4e6d49344d6a5a6a4e54526b59324930596a63794f4759305a6a59315a5749354f446c6c5a54526b5a5459794f444d35597a52694d5759775a54417a5a6d52685a5749354d3245304d6a6b794f6767534268494562484e6a59784b374267716542676f4854334a6e4d55315455424b53426930744c533074516b5648535534675130565356456c4753554e42564555744c5330744c51704e53556c4452305244513046694b32644264306c435157644a55555a546547354d5155647a64544130656e4a4761304646643370754e6e704253304a6e5a33466f613270505546465252454671516e704e55584e33436b4e5257555257555646485258644b566c56365256524e516b56485154465652554e43545574524d6b5a7a59566461646d4e744e58425a5645565854554a5252304578565556436545314f56544a4764556c46576e6b4b57566331616d4659546d7069656b566154554a6a523045785655564461453152596a4e4b626b31544e57786c52305a305930643462457874546e5a695645566a54554a7652304578565556426545315557544a46645170694d30707554564d3162475648526e526a523368735447314f646d4a5551575647647a4234546e70424e45313652586450564555775458704b59555a334d486c4f656b453054577072643039555254424e656b7068436b314763336844656b464b516d644f566b4a425756524262465a5554564a4e64305652575552575556464a5258647752466c586548426162546c35596d3173614531535758644751566c45566c4652534556334d56514b575663305a314a75536d686962553577597a4a4f646b31534f48644955566c45566c465252455243576b4a61527a4677596d7443646d4e745933684d625659305756637864324a485658565a4d6a6c3054555a726477704664316c4953323961535870714d454e4255566c4a53323961535870714d45524255574e4555576442525659785a475a745333687a526b7458627a64764e6b524f516b6c6853565a6c596b4e445545464e4f554d76436e4e4d516e513063457053636d5535634664464f54673352477059576d39614d326473597a5172524739515458525562554a5363574a51566e645a5931563263474a5a575468774e6b354f5455567a6430526e5755514b566c49775545465253433943515646455157646c51553142643064424d56566b525864465169393355554e4e515546335333645a52465a534d47704351314633535739425a31467162584645597a45794d6e55324e4170315a33706859304a6f556a4256565555776548463052336b7a5a44493265484657656c706c5531683364304e6e57556c4c6231704a656d6f77525546335355525364304633556b464a5a31684e655449325155565643693948565531515a6b4e4e637939755557705254555578576e68435345465a576e524c52585653556a4d324d55707a51306c465a7a6c435431706b5357397062314a70646b70444b317056656e5a4b565735725748554b627a4a49613164706458684d63326c695233683052516f744c5330744c55564f5243424452564a5553555a4a51304655525330744c5330744368495968324e4173534743732f5761506e54474f6d49366759304c5244534933426a2f457373544373675443735554434145534268494562484e6a5978713445776f486157357a644746736241717345776f71434145534a676f555a326c30614856694c6d4e766253396d59574a6a59584a666547775343325a68596d4e68636c39346244457847674577477630534834734941414141414141412f39525a335849624e374c4f7256536c642b684d565536524354326b6457796e6f6e4e30515448576d6f6b7461555846727352534a63325a4a676352427067304d4b4b344b622f37566d4f473550424869684e6e4c3159334a414830682b36762f774449635849395654347278334669382b734a6a68506b6e2b2f31366c7338745a3939326c2b76312b75396550456966505a367659335070382b2b667635304d56614e50333378374e6e586e304876452f6639714c2f536565545065702b3831365a782f79562f335338503975464c654b30534d6f355338425a38527441764d4d6b49526e62695a386745703759304b58706c446254366f394d326c43596c426d736f6946754733444a42596f316e4e5336395a6441564a4f4355695849793373554149364b4166335a2b4e52793868496e5346554371584356494b6379557a38426e7973484d3869314d4c414f6d715a4c4e55594d7945387435554356494d6b32525532576d6b4e68697a6d71616562417a512b77795663514156324c4e364853686a7175516c78743743334e62317559304c4b384a366342625969646d4838593961506d736b6f727136616a3966304538787a6b5936364630744d4948756b2b6f384b414d4a44597674454b54564f4b3168637464596f4166617851373971674d594c4147374b5335444e434c6549444976432b4f7574335a62425a6a30446932504f30756a4f792b486735656e6f3165506a6d4d653075524834776d3534447074314978705443654178614656676d4f4e5948476d6267786543754567544977592b57566d5861437546764551744e584b3934574f69713374734161774d705255583845773145454a2f3352634e534264384f72562b632f584d47372f75566c2f2b78712b484945353563774f442f37646e67315044386277666b70394d392b444b4c6644382b2b375141706e78454433526373646c67474a617853326f6972685259534e41746e755949534e56454a6144545445716345553374486243526d43754a634f584777417a5170614a557248344c4c42646b742b32495a37683773482b7a586d535078355441764e49484c6b58325641356a346f454e716b314a6976306f64627775564841577864785731346e65475538584f77346d3279573253696676376c563857515237324b7a43354665567a564b626148345a3559646c586d6a3644306975742f427930476a4f7949686330714c496c754245794e4b6d575863647a543634445442677952797976665133666a6337504f6d46456e47696d6b4b4e5252616c584758653459765456764344576c45364a34525448724a4947323274716a41493367356f625631756c676748514f746a6669344a4f6b58776a6b316a52712f75727379614d544849665070336e784a7137534f7a6669315a3971357574464f6c4f67694c6478444a314135324a54616e724d70554c686b76674477514c74743636626b48453063462b4f334464685739706f6b77565a4f75324345396c346b756d6733302f4c2b72707865785039377065414c386637482f59426b755156776964716a513867344a745165775668614b356d4161505577655367365772456e694e717072796561334859496b73572b2b397756734357486a3146784534696e4b38706567586d6255703661315a47517a544136736c554e656e6b7a415935732b6c346d364b687a497330783832386d566f6c49656366475a547152634a6169313150794f7a69392b6f4f6f7045736c515a35394634686236795835615056336c6a79457650434275646b504e5143494a4b516c6e79466a4b384930417a683964567a43716a76454b742f6c586c707a4c6771454247547a4170545249476e7a774252785357566c4b7464683239736752614472376339486737574e6a71587779644c3863676f526350467045343875563461447a7842424e716730766953334b466c616f6c626d4c794a5a744b5a6c516d43546e584d6b7133643746345a3239706d306430674d446b5375326c6761425a6c506c676a70522f59635a6234504a52767063624357346f45773259677532554d59644d6474504f4c764a65656b6447554342376c5a5261516e436a4b69353439526247564f7463787a33794e46524c397a4545692f462f69654b442f6231754679374a73364b374b676c7255696a6435474b7072525445686e703769346d4f6a446f344f6f5a616c66676635452f727962354a4c3541784a302f734a477a43787262307444686e5953475a7a684c505658556d586d4e496952576979504c495546666268714365482b7a7671636c4b377667596f74394b34766c41736b614361686c5638574a387756796c76366a324155684c2f393441577358394a6c516a49327177523241534a7653305136486c7845647246457a6f617a3141646a764e712b632b5271734d7a565132442f5872703375397064336d67683161686f68717075314c5a73757461476a75554b754851387067546e4730534f7848596e33545a3439466578325037322b71557277722b4e55454e4a6c573042382b5034616e367a6176575a42595a6b6f386d44496679336c2f736b7143474637654635534551385054614d5645677478334a395542342b654e784268353942523266742b3761543951375659414838484e6468442b75584b62494966736658387a51413438794b663079694f4972757a63656f7736454c726a4555515872456f5864614271683063516a58564a5551644364415342334e376136454e6e412b6a556374714165534f58546a4e74416a476c445a7754786e5162356456634c6d4771415852564a6e4a4561754449386430306b4c3554426b5a3268307076726235314d3579473155763730446e30546277356157316e44634133654c384e646b564f4e336b6172584f45795730446f5a2b79516f50624b42645554736e364273356837336b54715369353045322b3336676b4937324e4e4d694935303139446739664e34466d6d664a4e6e443479337531776d384b6d4e68656c3862594a633665734a742f41755542574f396a427453413651374f476f6b797170726142386859317364704230437572307a562f6e5341726732746b733530312f542f4b724565752f56386c714a4a3437306b506b7973552f482b6f4270494837616f51544849665837417958707457704f52674558564153625a7535375963394f49337943354448544465713544586534756b76796a72704938472f63766f712f6f4148772b39785a5a7164324174325466323771647079496f6d726f4a6a55504156504e315a655863636d4236704856757435323875724d382f7662412b627854574f2b5277577a694756556945557672305a686b52346666687a536f677773442f336977444976782b64764e41716435307032792b35636d3666472f3437704d38736174742f396b7a6e6650492f6e75616978305362443235375a464a4730506666504e4e5647737170324d336c4d4f567439774259743756716b376d6c394c2f57777673446c534137637262497658354d52696c482f49304d6466663272556a39314b61454d4f47427646415730657439754a304f69346e736b724a555635753549444d4f412b6e6146546835654b6651746c6c68564948527930554c744c7853666878734c39586a63627657486b616864687452652b6a61716478583244666b4d5267587a4e684f7064316e6f79774d554874714b34546d2f712b516e64473937355631347a66616d324351355a30626770564569474e74386e37592f594366634a4f5030334443316d654934787059706c7166764a67696575414b3476716c556a3578567351544d497253334e6872636b6a4c427766672b65536167313355646d4a567172746d762f394f767165357466525562567531354c72364d47354e56376a4f76496541586c6f746750583053556c6c744f6c4a75454f4a434f4e4b4c506a58796e78485841575a68536568416a515056487541567933533875337145747150366a6f68397259523067506e4e667073677669706a5a313253306d72656a4a57684535756a5a6675477470684c56384c64702b75464c5643304d39432b762b73483038644466346d397649346165336b634f2f656a3658666e4e554e5a784b4f6e53494830792b3668464c73502b7047306143484666765163654c2f72526a342f3977732b6c3277394e466a737173626c7a4b67545636446b796137744345702f6e534b412b656e49666370685444755378514a74466c53696c6b784e566a636e6a424a302b476e4976727342447771674257525873517a684f415947693263657554566c5456784570683653637451375057566c6739304671616f52363858353165784c6e627578334246334a4c496562613752384f39682f342f382b2f415141412f2f386178614e67464978634141674141502f2f73314946305141674141413d222c227369676e6174757265223a224d4551434943504b576b7a4161456538415476646e483636426f4962556e4d5a6c3871674b66734b55574a4d37736168416941384744535a455965506649633435336b77534971314e746e74346d65535a6b4362737171444c6c58442f673d3d227d7d
fmt.Println("output.SignedTx", hex.EncodeToString(output.SignedTx))
}
func TestSendTransaction(t *testing.T) {
fabAdapotr := NewAdaptorFabric("./connection.yaml")
//fabAdapotr.UserName = "Admin"
fabAdapotr.OrgAdmin = "Admin"
fabAdapotr.OrgName = "org1"
//7911a9e6b826c54dcb4b728f4f65eb989ee4de62839c4b1f0e03fdaeb93a4292
txProposalHex := "7b225369676e656450726f706f73616c223a7b2270726f706f73616c5f6279746573223a2243707748436c774941786f4d434d364471664d46454c5438347177424b6b41334f54457859546c6c4e6d49344d6a5a6a4e54526b59324930596a63794f4759305a6a59315a5749354f446c6c5a54526b5a5459794f444d35597a52694d5759775a54417a5a6d52685a5749354d3245304d6a6b794f6767534268494562484e6a59784b374267716542676f4854334a6e4d55315455424b53426930744c533074516b5648535534675130565356456c4753554e42564555744c5330744c51704e53556c4452305244513046694b32644264306c435157644a55555a546547354d5155647a64544130656e4a4761304646643370754e6e704253304a6e5a33466f613270505546465252454671516e704e55584e33436b4e5257555257555646485258644b566c56365256524e516b56485154465652554e43545574524d6b5a7a59566461646d4e744e58425a5645565854554a5252304578565556436545314f56544a4764556c46576e6b4b57566331616d4659546d7069656b566154554a6a523045785655564461453152596a4e4b626b31544e57786c52305a305930643462457874546e5a695645566a54554a7652304578565556426545315557544a46645170694d30707554564d3162475648526e526a523368735447314f646d4a5551575647647a4234546e70424e45313652586450564555775458704b59555a334d486c4f656b453054577072643039555254424e656b7068436b314763336844656b464b516d644f566b4a425756524262465a5554564a4e64305652575552575556464a5258647752466c586548426162546c35596d3173614531535758644751566c45566c4652534556334d56514b575663305a314a75536d686962553577597a4a4f646b31534f48644955566c45566c465252455243576b4a61527a4677596d7443646d4e745933684d625659305756637864324a485658565a4d6a6c3054555a726477704664316c4953323961535870714d454e4255566c4a53323961535870714d45524255574e4555576442525659785a475a745333687a526b7458627a64764e6b524f516b6c6853565a6c596b4e445545464e4f554d76436e4e4d516e513063457053636d5535634664464f54673352477059576d39614d326473597a5172524739515458525562554a5363574a51566e645a5931563263474a5a575468774e6b354f5455567a6430526e5755514b566c49775545465253433943515646455157646c51553142643064424d56566b525864465169393355554e4e515546335333645a52465a534d47704351314633535739425a31467162584645597a45794d6e55324e4170315a33706859304a6f556a4256565555776548463052336b7a5a44493265484657656c706c5531683364304e6e57556c4c6231704a656d6f77525546335355525364304633556b464a5a31684e655449325155565643693948565531515a6b4e4e637939755557705254555578576e68435345465a576e524c52585653556a4d324d55707a51306c465a7a6c435431706b5357397062314a70646b70444b317056656e5a4b565735725748554b627a4a49613164706458684d63326c695233683052516f744c5330744c55564f5243424452564a5553555a4a51304655525330744c5330744368495968324e4173534743732f5761506e54474f6d49366759304c5244534933426a2f457373544373675443735554434145534268494562484e6a5978713445776f486157357a644746736241717345776f71434145534a676f555a326c30614856694c6d4e766253396d59574a6a59584a666547775343325a68596d4e68636c39346244457847674577477630534834734941414141414141412f39525a335849624e374c4f7256536c642b684d565536524354326b6457796e6f6e4e30515448576d6f6b7461555846727352534a63325a4a676352427067304d4b4b344b622f37566d4f473550424869684e6e4c3159334a414830682b36762f774449635849395654347278334669382b734a6a68506b6e2b2f31366c7338745a3939326c2b76312b75396550456966505a367659335070382b2b667635304d56614e50333378374e6e586e304876452f6639714c2f536565545065702b3831365a782f79562f335338503975464c654b30534d6f355338425a38527441764d4d6b49526e62695a386745703759304b58706c446254366f394d326c43596c426d736f6946754733444a42596f316e4e5336395a6441564a4f4355695849793373554149364b4166335a2b4e52793868496e5346554371584356494b6379557a38426e7973484d3869314d4c414f6d715a4c4e55594d7945387435554356494d6b32525532576d6b4e68697a6d71616562417a512b77795663514156324c4e364853686a7175516c78743743334e62317559304c4b384a366342625969646d4838593961506d736b6f727136616a3966304538787a6b5936364630744d4948756b2b6f384b414d4a44597674454b54564f4b3168637464596f4166617851373971674d594c4147374b5335444e434c6549444976432b4f7574335a62425a6a30446932504f30756a4f792b486735656e6f3165506a6d4d653075524834776d3534447074314978705443654178614656676d4f4e5948476d6267786543754567544977592b57566d5861437546764551744e584b3934574f69713374734161774d705255583845773145454a2f3352634e534264384f72562b632f584d47372f75566c2f2b78712b484945353563774f442f37646e67315044386277666b70394d392b444b4c6644382b2b375141706e78454433526373646c67474a617853326f6972685259534e41746e755949534e56454a6144545445716345553374486243526d43754a634f584777417a5170614a557248344c4c42646b742b32495a37683773482b7a586d535078355441764e49484c6b58325641356a346f454e716b314a6976306f64627775564841577864785731346e65475538584f77346d3279573253696676376c563857515237324b7a43354665567a564b626148345a3559646c586d6a3644306975742f427930476a4f7949686330714c496c754245794e4b6d575863647a543634445442677952797976665133666a6337504f6d46456e47696d6b4b4e5252616c584758653459765456764344576c45364a34525448724a4947323274716a41493367356f625631756c676748514f746a6669344a4f6b58776a6b316a52712f75727379614d544849665070336e784a7137534f7a6669315a3971357574464f6c4f67694c6478444a314135324a54616e724d70554c686b76674477514c74743636626b48453063462b4f334464685739706f6b77565a4f75324345396c346b756d6733302f4c2b72707865785039377065414c386637482f59426b755156776964716a513867344a745165775668614b356d4161505577655367365772456e694e717072796561334859496b73572b2b397756734357486a3146784534696e4b38706567586d6255703661315a47517a544136736c554e656e6b7a415935732b6c346d364b687a497330783832386d566f6c49656366475a547152634a6169313150794f7a69392b6f4f6f7045736c515a35394634686236795835615056336c6a79457650434275646b504e5143494a4b516c6e79466a4b384930417a683964567a43716a76454b742f6c586c707a4c6771454247547a4170545249476e7a774252785357566c4b7464683239736752614472376339486737574e6a71587779644c3863676f526350467045343875563461447a7842424e716730766953334b466c616f6c626d4c794a5a744b5a6c516d43546e584d6b7133643746345a3239706d306430674d446b5375326c6761425a6c506c676a70522f59635a6234504a52767063624357346f45773259677532554d59644d6474504f4c764a65656b6447554342376c5a5261516e436a4b69353439526247564f7463787a33794e46524c397a4545692f462f69654b442f6231754679374a73364b374b676c7255696a6435474b7072525445686e703769346d4f6a446f344f6f5a616c66676635452f727962354a4c3541784a302f734a477a43787262307444686e5953475a7a684c505658556d586d4e496952576979504c495546666268714365482b7a7671636c4b377667596f74394b34766c41736b614361686c5638574a387756796c76366a324155684c2f393441577358394a6c516a49327177523241534a7653305136486c7845647246457a6f617a3141646a764e712b632b5271734d7a565132442f5872703375397064336d67683161686f68717075314c5a73757461476a75554b754851387067546e4730534f7848596e33545a3439466578325037322b71557277722b4e55454e4a6c573042382b5034616e367a6176575a42595a6b6f386d44496679336c2f736b7143474637654635534551385054614d5645677478334a395542342b654e784268353942523266742b3761543951375659414838484e6468442b75584b62494966736658387a51413438794b663079694f4972757a63656f7736454c726a4555515872456f5864614271683063516a58564a5551644364415342334e376136454e6e412b6a556374714165534f58546a4e74416a476c445a7754786e5162356456634c6d4771415852564a6e4a4561754449386430306b4c3554426b5a3268307076726235314d3579473155763730446e30546277356157316e44634133654c384e646b564f4e336b6172584f45795730446f5a2b79516f50624b42645554736e364273356837336b54715369353045322b3336676b4937324e4e4d694935303139446739664e34466d6d664a4e6e443479337531776d384b6d4e68656c3862594a633665734a742f41755542574f396a427453413651374f476f6b797170726142386859317364704230437572307a562f6e5341726732746b733530312f542f4b724565752f56386c714a4a3437306b506b7973552f482b6f4270494837616f51544849665837417958707457704f52674558564153625a7535375963394f49337943354448544465713544586534756b76796a72704938472f63766f712f6f4148772b39785a5a7164324174325466323771647079496f6d726f4a6a55504156504e315a655863636d4236704856757435323875724d382f7662412b627854574f2b5277577a694756556945557672305a686b52346666687a536f677773442f336977444976782b64764e41716435307032792b35636d3666472f3437704d38736174742f396b7a6e6650492f6e75616978305362443235375a464a4730506666504e4e5647737170324d336c4d4f567439774259743756716b376d6c394c2f57777673446c534137637262497658354d52696c482f49304d6466663272556a39314b61454d4f47427646415730657439754a304f69346e736b724a555635753549444d4f412b6e6146546835654b6651746c6c68564948527930554c744c7853666878734c39586a63627657486b616864687452652b6a61716478583244666b4d5267587a4e684f7064316e6f79774d554874714b34546d2f712b516e64473937355631347a66616d324351355a30626770564569474e74386e37592f594366634a4f5030334443316d654934787059706c7166764a67696575414b3476716c556a3578567351544d497253334e6872636b6a4c427766672b65536167313355646d4a567172746d762f394f767165357466525562567531354c72364d47354e56376a4f76496541586c6f746750583053556c6c744f6c4a75454f4a434f4e4b4c506a58796e78485841575a68536568416a515056487541567933533875337145747150366a6f68397259523067506e4e667073677669706a5a313253306d72656a4a57684535756a5a6675477470684c56384c64702b75464c5643304d39432b762b73483038644466346d397649346165336b634f2f656a3658666e4e554e5a784b4f6e53494830792b3668464c73502b7047306143484666765163654c2f72526a342f3977732b6c3277394e466a737173626c7a4b67545636446b796137744345702f6e534b412b656e49666370685444755378514a74466c53696c6b784e566a636e6a424a302b476e4976727342447771674257525873517a684f415947693263657554566c5456784570683653637451375057566c6739304671616f52363858353165784c6e627578334246334a4c496562613752384f39682f342f382b2f415141412f2f386178614e67464978634141674141502f2f73314946305141674141413d222c227369676e6174757265223a224d4551434943504b576b7a4161456538415476646e483636426f4962556e4d5a6c3871674b66734b55574a4d37736168416941384744535a455965506649633435336b77534971314e746e74346d65535a6b4362737171444c6c58442f673d3d227d7d"
tx,_ := hex.DecodeString(txProposalHex)
output,err := fabAdapotr.SendTransaction(&adaptor.SendTransactionInput{
Transaction:tx,
Extra:[]byte("install"),
})
if err != nil {
fmt.Println(err.Error())
return
}
//7911a9e6b826c54dcb4b728f4f65eb989ee4de62839c4b1f0e03fdaeb93a4292
fmt.Println("output.TxID", string(output.TxID))
}
func TestVerifySignature(t *testing.T) {
fabAdapotr := NewAdaptorFabric("./connection.yaml")
fabAdapotr.UserName = "User1"
signatureHex := "30440220742c2cc005742c2d378634e1662f6604690879c4c45c107ed8e9f2c8fb594334022042ef319f4b0f6e2931e8f74de08c5edad2392c32c8269c4b7f3c42b5919507af"
signature,_ := hex.DecodeString(signatureHex)
output,err := fabAdapotr.VerifySignature(&adaptor.VerifySignatureInput{Signature:signature,Message:[]byte("123456")})
if err != nil {
fmt.Println(err.Error())
return
}
//30440220066d5ecd29578ec40d9e4351331e6556a67c88317ee04d6f0b8e8c0ab2650b0f02207f94e337bc8665adfb5077d2a3b4caff384edc00faa32d587189085c4095c1da
fmt.Println("output.Pass", output.Pass)
}
func TestGetBlockInfo(t *testing.T) {
fabAdapotr := NewAdaptorFabric("./connection.yaml")
fabAdapotr.UserName = "User1"
fabAdapotr.ChannelID = "mychannel"//sdk check
//output,err := fabAdapotr.GetBlockInfo(&adaptor.GetBlockInfoInput{Latest:true})
output,err := fabAdapotr.GetBlockInfo(&adaptor.GetBlockInfoInput{Height:31})
if err != nil {
fmt.Println(err.Error())
return
}
//30440220066d5ecd29578ec40d9e4351331e6556a67c88317ee04d6f0b8e8c0ab2650b0f02207f94e337bc8665adfb5077d2a3b4caff384edc00faa32d587189085c4095c1da
fmt.Println("output.Block.BlockHeight", output.Block.BlockHeight)
fmt.Println("output.Block.BlockID", hex.EncodeToString(output.Block.BlockID))//todo
}
func TestCreateContractInstallTx(t *testing.T) {
fabAdapotr := NewAdaptorFabric("./connection.yaml")
fabAdapotr.UserName = "Admin"
fabAdapotr.ChannelID = "mychannel"//sdk check
fabAdapotr.OrgAdmin = "Admin"
fabAdapotr.OrgName = "org1"
fabAdapotr.OrgID = "Org1MSP" //不能为空,否则合约实例化后不能调用
output,err := fabAdapotr.CreateContractInstallTx(&adaptor.CreateContractInstallTxInput{
Contract:[]byte("fabcar_xl15"),Extra:[]byte("github.com/fabcar_xl")})
if err != nil {
fmt.Println("fabAdapotr.CreateContractInstallTx", err.Error())
return
}
_=output
fmt.Println("len", len(output.RawTransaction))
fmt.Println(hex.EncodeToString(output.RawTransaction))
}
func TestContractInstall(t *testing.T) {
fabAdapotr := NewAdaptorFabric("./connection.yaml")
fabAdapotr.UserName = "Admin"
fabAdapotr.ChannelID = "mychannel"//sdk check
fabAdapotr.OrgAdmin = "Admin"
fabAdapotr.OrgName = "org1"
fabAdapotr.OrgID = "Org1MSP" //不能为空,否则合约实例化后不能调用
//create tx
outputInstallTx,err := fabAdapotr.CreateContractInstallTx(
&adaptor.CreateContractInstallTxInput{
Contract:[]byte("chaincode_example02xl4"),
Extra:[]byte("github.com/chaincode_example02")})
if err != nil {
fmt.Println("fabAdapotr.CreateContractInstallTx", err.Error())
return
}
fmt.Println("len", len(outputInstallTx.RawTransaction))
fmt.Println(hex.EncodeToString(outputInstallTx.RawTransaction))
//sign tx
outputSign,err := fabAdapotr.SignTransaction(&adaptor.SignTransactionInput{
PrivateKey:[]byte(fabAdapotr.UserName),
Transaction:outputInstallTx.RawTransaction,
Extra:[]byte("proposal"),//Must set
})
if err != nil {
fmt.Println(err.Error())
return
}
//7b225369676e656450726f706f73616c223a7b2270726f706f73616c5f6279746573223a2243707748436c774941786f4d434d364471664d46454c5438347177424b6b41334f54457859546c6c4e6d49344d6a5a6a4e54526b59324930596a63794f4759305a6a59315a5749354f446c6c5a54526b5a5459794f444d35597a52694d5759775a54417a5a6d52685a5749354d3245304d6a6b794f6767534268494562484e6a59784b374267716542676f4854334a6e4d55315455424b53426930744c533074516b5648535534675130565356456c4753554e42564555744c5330744c51704e53556c4452305244513046694b32644264306c435157644a55555a546547354d5155647a64544130656e4a4761304646643370754e6e704253304a6e5a33466f613270505546465252454671516e704e55584e33436b4e5257555257555646485258644b566c56365256524e516b56485154465652554e43545574524d6b5a7a59566461646d4e744e58425a5645565854554a5252304578565556436545314f56544a4764556c46576e6b4b57566331616d4659546d7069656b566154554a6a523045785655564461453152596a4e4b626b31544e57786c52305a305930643462457874546e5a695645566a54554a7652304578565556426545315557544a46645170694d30707554564d3162475648526e526a523368735447314f646d4a5551575647647a4234546e70424e45313652586450564555775458704b59555a334d486c4f656b453054577072643039555254424e656b7068436b314763336844656b464b516d644f566b4a425756524262465a5554564a4e64305652575552575556464a5258647752466c586548426162546c35596d3173614531535758644751566c45566c4652534556334d56514b575663305a314a75536d686962553577597a4a4f646b31534f48644955566c45566c465252455243576b4a61527a4677596d7443646d4e745933684d625659305756637864324a485658565a4d6a6c3054555a726477704664316c4953323961535870714d454e4255566c4a53323961535870714d45524255574e4555576442525659785a475a745333687a526b7458627a64764e6b524f516b6c6853565a6c596b4e445545464e4f554d76436e4e4d516e513063457053636d5535634664464f54673352477059576d39614d326473597a5172524739515458525562554a5363574a51566e645a5931563263474a5a575468774e6b354f5455567a6430526e5755514b566c49775545465253433943515646455157646c51553142643064424d56566b525864465169393355554e4e515546335333645a52465a534d47704351314633535739425a31467162584645597a45794d6e55324e4170315a33706859304a6f556a4256565555776548463052336b7a5a44493265484657656c706c5531683364304e6e57556c4c6231704a656d6f77525546335355525364304633556b464a5a31684e655449325155565643693948565531515a6b4e4e637939755557705254555578576e68435345465a576e524c52585653556a4d324d55707a51306c465a7a6c435431706b5357397062314a70646b70444b317056656e5a4b565735725748554b627a4a49613164706458684d63326c695233683052516f744c5330744c55564f5243424452564a5553555a4a51304655525330744c5330744368495968324e4173534743732f5761506e54474f6d49366759304c5244534933426a2f457373544373675443735554434145534268494562484e6a5978713445776f486157357a644746736241717345776f71434145534a676f555a326c30614856694c6d4e766253396d59574a6a59584a666547775343325a68596d4e68636c39346244457847674577477630534834734941414141414141412f39525a335849624e374c4f7256536c642b684d565536524354326b6457796e6f6e4e30515448576d6f6b7461555846727352534a63325a4a676352427067304d4b4b344b622f37566d4f473550424869684e6e4c3159334a414830682b36762f774449635849395654347278334669382b734a6a68506b6e2b2f31366c7338745a3939326c2b76312b75396550456966505a367659335070382b2b667635304d56614e50333378374e6e586e304876452f6639714c2f536565545065702b3831365a782f79562f335338503975464c654b30534d6f355338425a38527441764d4d6b49526e62695a386745703759304b58706c446254366f394d326c43596c426d736f6946754733444a42596f316e4e5336395a6441564a4f4355695849793373554149364b4166335a2b4e52793868496e5346554371584356494b6379557a38426e7973484d3869314d4c414f6d715a4c4e55594d7945387435554356494d6b32525532576d6b4e68697a6d71616562417a512b77795663514156324c4e364853686a7175516c78743743334e62317559304c4b384a366342625969646d4838593961506d736b6f727136616a3966304538787a6b5936364630744d4948756b2b6f384b414d4a44597674454b54564f4b3168637464596f4166617851373971674d594c4147374b5335444e434c6549444976432b4f7574335a62425a6a30446932504f30756a4f792b486735656e6f3165506a6d4d653075524834776d3534447074314978705443654178614656676d4f4e5948476d6267786543754567544977592b57566d5861437546764551744e584b3934574f69713374734161774d705255583845773145454a2f3352634e534264384f72562b632f584d47372f75566c2f2b78712b484945353563774f442f37646e67315044386277666b70394d392b444b4c6644382b2b375141706e78454433526373646c67474a617853326f6972685259534e41746e755949534e56454a6144545445716345553374486243526d43754a634f584777417a5170614a557248344c4c42646b742b32495a37683773482b7a586d535078355441764e49484c6b58325641356a346f454e716b314a6976306f64627775564841577864785731346e65475538584f77346d3279573253696676376c563857515237324b7a43354665567a564b626148345a3559646c586d6a3644306975742f427930476a4f7949686330714c496c754245794e4b6d575863647a543634445442677952797976665133666a6337504f6d46456e47696d6b4b4e5252616c584758653459765456764344576c45364a34525448724a4947323274716a41493367356f625631756c676748514f746a6669344a4f6b58776a6b316a52712f75727379614d544849665070336e784a7137534f7a6669315a3971357574464f6c4f67694c6478444a314135324a54616e724d70554c686b76674477514c74743636626b48453063462b4f334464685739706f6b77565a4f75324345396c346b756d6733302f4c2b72707865785039377065414c386637482f59426b755156776964716a513867344a745165775668614b356d4161505577655367365772456e694e717072796561334859496b73572b2b397756734357486a3146784534696e4b38706567586d6255703661315a47517a544136736c554e656e6b7a415935732b6c346d364b687a497330783832386d566f6c49656366475a547152634a6169313150794f7a69392b6f4f6f7045736c515a35394634686236795835615056336c6a79457650434275646b504e5143494a4b516c6e79466a4b384930417a683964567a43716a76454b742f6c586c707a4c6771454247547a4170545249476e7a774252785357566c4b7464683239736752614472376339486737574e6a71587779644c3863676f526350467045343875563461447a7842424e716730766953334b466c616f6c626d4c794a5a744b5a6c516d43546e584d6b7133643746345a3239706d306430674d446b5375326c6761425a6c506c676a70522f59635a6234504a52767063624357346f45773259677532554d59644d6474504f4c764a65656b6447554342376c5a5261516e436a4b69353439526247564f7463787a33794e46524c397a4545692f462f69654b442f6231754679374a73364b374b676c7255696a6435474b7072525445686e703769346d4f6a446f344f6f5a616c66676635452f727962354a4c3541784a302f734a477a43787262307444686e5953475a7a684c505658556d586d4e496952576979504c495546666268714365482b7a7671636c4b377667596f74394b34766c41736b614361686c5638574a387756796c76366a324155684c2f393441577358394a6c516a49327177523241534a7653305136486c7845647246457a6f617a3141646a764e712b632b5271734d7a565132442f5872703375397064336d67683161686f68717075314c5a73757461476a75554b754851387067546e4730534f7848596e33545a3439466578325037322b71557277722b4e55454e4a6c573042382b5034616e367a6176575a42595a6b6f386d44496679336c2f736b7143474637654635534551385054614d5645677478334a395542342b654e784268353942523266742b3761543951375659414838484e6468442b75584b62494966736658387a51413438794b663079694f4972757a63656f7736454c726a4555515872456f5864614271683063516a58564a5551644364415342334e376136454e6e412b6a556374714165534f58546a4e74416a476c445a7754786e5162356456634c6d4771415852564a6e4a4561754449386430306b4c3554426b5a3268307076726235314d3579473155763730446e30546277356157316e44634133654c384e646b564f4e336b6172584f45795730446f5a2b79516f50624b42645554736e364273356837336b54715369353045322b3336676b4937324e4e4d694935303139446739664e34466d6d664a4e6e443479337531776d384b6d4e68656c3862594a633665734a742f41755542574f396a427453413651374f476f6b797170726142386859317364704230437572307a562f6e5341726732746b733530312f542f4b724565752f56386c714a4a3437306b506b7973552f482b6f4270494837616f51544849665837417958707457704f52674558564153625a7535375963394f49337943354448544465713544586534756b76796a72704938472f63766f712f6f4148772b39785a5a7164324174325466323771647079496f6d726f4a6a55504156504e315a655863636d4236704856757435323875724d382f7662412b627854574f2b5277577a694756556945557672305a686b52346666687a536f677773442f336977444976782b64764e41716435307032792b35636d3666472f3437704d38736174742f396b7a6e6650492f6e75616978305362443235375a464a4730506666504e4e5647737170324d336c4d4f567439774259743756716b376d6c394c2f57777673446c534137637262497658354d52696c482f49304d6466663272556a39314b61454d4f47427646415730657439754a304f69346e736b724a555635753549444d4f412b6e6146546835654b6651746c6c68564948527930554c744c7853666878734c39586a63627657486b616864687452652b6a61716478583244666b4d5267587a4e684f7064316e6f79774d554874714b34546d2f712b516e64473937355631347a66616d324351355a30626770564569474e74386e37592f594366634a4f5030334443316d654934787059706c7166764a67696575414b3476716c556a3578567351544d497253334e6872636b6a4c427766672b65536167313355646d4a567172746d762f394f767165357466525562567531354c72364d47354e56376a4f76496541586c6f746750583053556c6c744f6c4a75454f4a434f4e4b4c506a58796e78485841575a68536568416a515056487541567933533875337145747150366a6f68397259523067506e4e667073677669706a5a313253306d72656a4a57684535756a5a6675477470684c56384c64702b75464c5643304d39432b762b73483038644466346d397649346165336b634f2f656a3658666e4e554e5a784b4f6e53494830792b3668464c73502b7047306143484666765163654c2f72526a342f3977732b6c3277394e466a737173626c7a4b67545636446b796137744345702f6e534b412b656e49666370685444755378514a74466c53696c6b784e566a636e6a424a302b476e4976727342447771674257525873517a684f415947693263657554566c5456784570683653637451375057566c6739304671616f52363858353165784c6e627578334246334a4c496562613752384f39682f342f382b2f415141412f2f386178614e67464978634141674141502f2f73314946305141674141413d222c227369676e6174757265223a224d4551434943504b576b7a4161456538415476646e483636426f4962556e4d5a6c3871674b66734b55574a4d37736168416941384744535a455965506649633435336b77534971314e746e74346d65535a6b4362737171444c6c58442f673d3d227d7d
fmt.Println("outputSign.SignedTx", hex.EncodeToString(outputSign.SignedTx))
outputSend,err := fabAdapotr.SendTransaction(&adaptor.SendTransactionInput{
Transaction:outputSign.SignedTx,
Extra:[]byte("install"),//Must set
})
if err != nil {
fmt.Println(err.Error())
return
}
//7911a9e6b826c54dcb4b728f4f65eb989ee4de62839c4b1f0e03fdaeb93a4292
fmt.Println("outputSend.TxID", string(outputSend.TxID))
}
func TestContractInitial(t *testing.T) {
fabAdapotr := NewAdaptorFabric("./connection.yaml")
fabAdapotr.UserName = "Admin"
fabAdapotr.ChannelID = "mychannel"//sdk check
fabAdapotr.OrgAdmin = "Admin"
fabAdapotr.OrgName = "org1"
fabAdapotr.OrgID = "Org1MSP" //不能为空,否则合约实例化后不能调用
args := [][]byte{[]byte("init"),[]byte("A"),[]byte("100000"),
[]byte("B"), []byte("1000")}
//Must after ContractInstall success
outputInitialTx,err := fabAdapotr.CreateContractInitialTx(
&adaptor.CreateContractInitialTxInput{
Contract:[]byte("chaincode_example02xl4"),
Extra:[]byte("github.com/chaincode_example02"),
Args:args,
})
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println("len", len(outputInitialTx.RawTransaction))
fmt.Println(hex.EncodeToString(outputInitialTx.RawTransaction))
//sign tx
outputSign,err := fabAdapotr.SignTransaction(&adaptor.SignTransactionInput{
PrivateKey:[]byte(fabAdapotr.UserName),
Transaction:outputInitialTx.RawTransaction,
Extra:[]byte("proposal"),//Must set
})
if err != nil {
fmt.Println(err.Error())
return
}
//7b225369676e656450726f706f73616c223a7b2270726f706f73616c5f6279746573223a2243707748436c774941786f4d434d364471664d46454c5438347177424b6b41334f54457859546c6c4e6d49344d6a5a6a4e54526b59324930596a63794f4759305a6a59315a5749354f446c6c5a54526b5a5459794f444d35597a52694d5759775a54417a5a6d52685a5749354d3245304d6a6b794f6767534268494562484e6a59784b374267716542676f4854334a6e4d55315455424b53426930744c533074516b5648535534675130565356456c4753554e42564555744c5330744c51704e53556c4452305244513046694b32644264306c435157644a55555a546547354d5155647a64544130656e4a4761304646643370754e6e704253304a6e5a33466f613270505546465252454671516e704e55584e33436b4e5257555257555646485258644b566c56365256524e516b56485154465652554e43545574524d6b5a7a59566461646d4e744e58425a5645565854554a5252304578565556436545314f56544a4764556c46576e6b4b57566331616d4659546d7069656b566154554a6a523045785655564461453152596a4e4b626b31544e57786c52305a305930643462457874546e5a695645566a54554a7652304578565556426545315557544a46645170694d30707554564d3162475648526e526a523368735447314f646d4a5551575647647a4234546e70424e45313652586450564555775458704b59555a334d486c4f656b453054577072643039555254424e656b7068436b314763336844656b464b516d644f566b4a425756524262465a5554564a4e64305652575552575556464a5258647752466c586548426162546c35596d3173614531535758644751566c45566c4652534556334d56514b575663305a314a75536d686962553577597a4a4f646b31534f48644955566c45566c465252455243576b4a61527a4677596d7443646d4e745933684d625659305756637864324a485658565a4d6a6c3054555a726477704664316c4953323961535870714d454e4255566c4a53323961535870714d45524255574e4555576442525659785a475a745333687a526b7458627a64764e6b524f516b6c6853565a6c596b4e445545464e4f554d76436e4e4d516e513063457053636d5535634664464f54673352477059576d39614d326473597a5172524739515458525562554a5363574a51566e645a5931563263474a5a575468774e6b354f5455567a6430526e5755514b566c49775545465253433943515646455157646c51553142643064424d56566b525864465169393355554e4e515546335333645a52465a534d47704351314633535739425a31467162584645597a45794d6e55324e4170315a33706859304a6f556a4256565555776548463052336b7a5a44493265484657656c706c5531683364304e6e57556c4c6231704a656d6f77525546335355525364304633556b464a5a31684e655449325155565643693948565531515a6b4e4e637939755557705254555578576e68435345465a576e524c52585653556a4d324d55707a51306c465a7a6c435431706b5357397062314a70646b70444b317056656e5a4b565735725748554b627a4a49613164706458684d63326c695233683052516f744c5330744c55564f5243424452564a5553555a4a51304655525330744c5330744368495968324e4173534743732f5761506e54474f6d49366759304c5244534933426a2f457373544373675443735554434145534268494562484e6a5978713445776f486157357a644746736241717345776f71434145534a676f555a326c30614856694c6d4e766253396d59574a6a59584a666547775343325a68596d4e68636c39346244457847674577477630534834734941414141414141412f39525a335849624e374c4f7256536c642b684d565536524354326b6457796e6f6e4e30515448576d6f6b7461555846727352534a63325a4a676352427067304d4b4b344b622f37566d4f473550424869684e6e4c3159334a414830682b36762f774449635849395654347278334669382b734a6a68506b6e2b2f31366c7338745a3939326c2b76312b75396550456966505a367659335070382b2b667635304d56614e50333378374e6e586e304876452f6639714c2f536565545065702b3831365a782f79562f335338503975464c654b30534d6f355338425a38527441764d4d6b49526e62695a386745703759304b58706c446254366f394d326c43596c426d736f6946754733444a42596f316e4e5336395a6441564a4f4355695849793373554149364b4166335a2b4e52793868496e5346554371584356494b6379557a38426e7973484d3869314d4c414f6d715a4c4e55594d7945387435554356494d6b32525532576d6b4e68697a6d71616562417a512b77795663514156324c4e364853686a7175516c78743743334e62317559304c4b384a366342625969646d4838593961506d736b6f727136616a3966304538787a6b5936364630744d4948756b2b6f384b414d4a44597674454b54564f4b3168637464596f4166617851373971674d594c4147374b5335444e434c6549444976432b4f7574335a62425a6a30446932504f30756a4f792b486735656e6f3165506a6d4d653075524834776d3534447074314978705443654178614656676d4f4e5948476d6267786543754567544977592b57566d5861437546764551744e584b3934574f69713374734161774d705255583845773145454a2f3352634e534264384f72562b632f584d47372f75566c2f2b78712b484945353563774f442f37646e67315044386277666b70394d392b444b4c6644382b2b375141706e78454433526373646c67474a617853326f6972685259534e41746e755949534e56454a6144545445716345553374486243526d43754a634f584777417a5170614a557248344c4c42646b742b32495a37683773482b7a586d535078355441764e49484c6b58325641356a346f454e716b314a6976306f64627775564841577864785731346e65475538584f77346d3279573253696676376c563857515237324b7a43354665567a564b626148345a3559646c586d6a3644306975742f427930476a4f7949686330714c496c754245794e4b6d575863647a543634445442677952797976665133666a6337504f6d46456e47696d6b4b4e5252616c584758653459765456764344576c45364a34525448724a4947323274716a41493367356f625631756c676748514f746a6669344a4f6b58776a6b316a52712f75727379614d544849665070336e784a7137534f7a6669315a3971357574464f6c4f67694c6478444a314135324a54616e724d70554c686b76674477514c74743636626b48453063462b4f334464685739706f6b77565a4f75324345396c346b756d6733302f4c2b72707865785039377065414c386637482f59426b755156776964716a513867344a745165775668614b356d4161505577655367365772456e694e717072796561334859496b73572b2b397756734357486a3146784534696e4b38706567586d6255703661315a47517a544136736c554e656e6b7a415935732b6c346d364b687a497330783832386d566f6c49656366475a547152634a6169313150794f7a69392b6f4f6f7045736c515a35394634686236795835615056336c6a79457650434275646b504e5143494a4b516c6e79466a4b384930417a683964567a43716a76454b742f6c586c707a4c6771454247547a4170545249476e7a774252785357566c4b7464683239736752614472376339486737574e6a71587779644c3863676f526350467045343875563461447a7842424e716730766953334b466c616f6c626d4c794a5a744b5a6c516d43546e584d6b7133643746345a3239706d306430674d446b5375326c6761425a6c506c676a70522f59635a6234504a52767063624357346f45773259677532554d59644d6474504f4c764a65656b6447554342376c5a5261516e436a4b69353439526247564f7463787a33794e46524c397a4545692f462f69654b442f6231754679374a73364b374b676c7255696a6435474b7072525445686e703769346d4f6a446f344f6f5a616c66676635452f727962354a4c3541784a302f734a477a43787262307444686e5953475a7a684c505658556d586d4e496952576979504c495546666268714365482b7a7671636c4b377667596f74394b34766c41736b614361686c5638574a387756796c76366a324155684c2f393441577358394a6c516a49327177523241534a7653305136486c7845647246457a6f617a3141646a764e712b632b5271734d7a565132442f5872703375397064336d67683161686f68717075314c5a73757461476a75554b754851387067546e4730534f7848596e33545a3439466578325037322b71557277722b4e55454e4a6c573042382b5034616e367a6176575a42595a6b6f386d44496679336c2f736b7143474637654635534551385054614d5645677478334a395542342b654e784268353942523266742b3761543951375659414838484e6468442b75584b62494966736658387a51413438794b663079694f4972757a63656f7736454c726a4555515872456f5864614271683063516a58564a5551644364415342334e376136454e6e412b6a556374714165534f58546a4e74416a476c445a7754786e5162356456634c6d4771415852564a6e4a4561754449386430306b4c3554426b5a3268307076726235314d3579473155763730446e30546277356157316e44634133654c384e646b564f4e336b6172584f45795730446f5a2b79516f50624b42645554736e364273356837336b54715369353045322b3336676b4937324e4e4d694935303139446739664e34466d6d664a4e6e443479337531776d384b6d4e68656c3862594a633665734a742f41755542574f396a427453413651374f476f6b797170726142386859317364704230437572307a562f6e5341726732746b733530312f542f4b724565752f56386c714a4a3437306b506b7973552f482b6f4270494837616f51544849665837417958707457704f52674558564153625a7535375963394f49337943354448544465713544586534756b76796a72704938472f63766f712f6f4148772b39785a5a7164324174325466323771647079496f6d726f4a6a55504156504e315a655863636d4236704856757435323875724d382f7662412b627854574f2b5277577a694756556945557672305a686b52346666687a536f677773442f336977444976782b64764e41716435307032792b35636d3666472f3437704d38736174742f396b7a6e6650492f6e75616978305362443235375a464a4730506666504e4e5647737170324d336c4d4f567439774259743756716b376d6c394c2f57777673446c534137637262497658354d52696c482f49304d6466663272556a39314b61454d4f47427646415730657439754a304f69346e736b724a555635753549444d4f412b6e6146546835654b6651746c6c68564948527930554c744c7853666878734c39586a63627657486b616864687452652b6a61716478583244666b4d5267587a4e684f7064316e6f79774d554874714b34546d2f712b516e64473937355631347a66616d324351355a30626770564569474e74386e37592f594366634a4f5030334443316d654934787059706c7166764a67696575414b3476716c556a3578567351544d497253334e6872636b6a4c427766672b65536167313355646d4a567172746d762f394f767165357466525562567531354c72364d47354e56376a4f76496541586c6f746750583053556c6c744f6c4a75454f4a434f4e4b4c506a58796e78485841575a68536568416a515056487541567933533875337145747150366a6f68397259523067506e4e667073677669706a5a313253306d72656a4a57684535756a5a6675477470684c56384c64702b75464c5643304d39432b762b73483038644466346d397649346165336b634f2f656a3658666e4e554e5a784b4f6e53494830792b3668464c73502b7047306143484666765163654c2f72526a342f3977732b6c3277394e466a737173626c7a4b67545636446b796137744345702f6e534b412b656e49666370685444755378514a74466c53696c6b784e566a636e6a424a302b476e4976727342447771674257525873517a684f415947693263657554566c5456784570683653637451375057566c6739304671616f52363858353165784c6e627578334246334a4c496562613752384f39682f342f382b2f415141412f2f386178614e67464978634141674141502f2f73314946305141674141413d222c227369676e6174757265223a224d4551434943504b576b7a4161456538415476646e483636426f4962556e4d5a6c3871674b66734b55574a4d37736168416941384744535a455965506649633435336b77534971314e746e74346d65535a6b4362737171444c6c58442f673d3d227d7d
fmt.Println("outputSign.SignedTx", hex.EncodeToString(outputSign.SignedTx))
outputSend,err := fabAdapotr.SendTransaction(&adaptor.SendTransactionInput{
Transaction:outputSign.SignedTx,
Extra:[]byte("init"),//Must set
})
if err != nil {
fmt.Println(err.Error())
return
}
//7911a9e6b826c54dcb4b728f4f65eb989ee4de62839c4b1f0e03fdaeb93a4292
fmt.Println("outputSend.TxID", string(outputSend.TxID))
}
func TestContractInvoke(t *testing.T) {
fabAdapotr := NewAdaptorFabric("./connection.yaml")
fabAdapotr.UserName = "User1"
fabAdapotr.ChannelID = "mychannel"//sdk check
fabAdapotr.OrgAdmin = "Admin"
fabAdapotr.OrgName = "org1"
args := [][]byte{[]byte("A"),[]byte("B"), []byte("100")}
outputInvokeTx,err := fabAdapotr.CreateContractInvokeTx(
&adaptor.CreateContractInvokeTxInput{
ContractAddress:"chaincode_example02xl4",
Function:"invoke",Args:args})
if err != nil {
fmt.Println("CreateContractInvokeTx", err.Error())
return
}
fmt.Println("len", len(outputInvokeTx.RawTransaction))
fmt.Println(hex.EncodeToString(outputInvokeTx.RawTransaction))
fmt.Println(string(outputInvokeTx.Extra))
//sign tx
outputSign,err := fabAdapotr.SignTransaction(&adaptor.SignTransactionInput{
PrivateKey:[]byte(fabAdapotr.UserName),
Transaction:outputInvokeTx.RawTransaction,
})
if err != nil {
fmt.Println(err.Error())
return
}
//
fmt.Println("outputSign.SignedTx", hex.EncodeToString(outputSign.SignedTx))
outputSend,err := fabAdapotr.SendTransaction(&adaptor.SendTransactionInput{
Transaction:outputSign.SignedTx,
Extra:[]byte("invoke"),//Must set
})
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println("outputSend.TxID", string(outputSend.TxID))
}
func TestCreateContractInitialTx(t *testing.T) {
fabAdapotr := NewAdaptorFabric("./connection.yaml")
fabAdapotr.UserName = "User1"
fabAdapotr.ChannelID = "mychannel"//sdk check
fabAdapotr.OrgAdmin = "Admin"//need set
fabAdapotr.OrgName = "org1"
fabAdapotr.OrgID = "Org1MSP" //不能为空,否则合约实例化后不能调用
output,err := fabAdapotr.CreateContractInitialTx(&adaptor.CreateContractInitialTxInput{
Contract:[]byte("fabcar_xl10"),Extra:[]byte("github.com/fabcar_xl")})
if err != nil {
fmt.Println(err.Error())
return
}
_=output
fmt.Println("len", len(output.RawTransaction))
fmt.Println(hex.EncodeToString(output.RawTransaction))
}
func TestCreateContractInvokeTx(t *testing.T) {
fabAdapotr := NewAdaptorFabric("./connection.yaml")
fabAdapotr.UserName = "User1"
fabAdapotr.ChannelID = "mychannel"//sdk check
args := [][]byte{[]byte("CAR11"),[]byte("zxl"), []byte("xiangli"), []byte("red"), []byte("zhang")}
output,err := fabAdapotr.CreateContractInvokeTx(&adaptor.CreateContractInvokeTxInput{
ContractAddress:"fabcar",Function:"createCar",Args:args})
if err != nil {
fmt.Println(err.Error())
return
}
_=output
fmt.Println("len", len(output.RawTransaction))
fmt.Println(hex.EncodeToString(output.RawTransaction))
}
func TestGetContractInvokeTx(t *testing.T) {
fabAdapotr := NewAdaptorFabric("./connection.yaml")
fabAdapotr.UserName = "User1"
fabAdapotr.ChannelID = "mychannel"//sdk check
txIDHex := "69f0a68e061699bd9828e01a6658e7f6c6eba4ff772df1fc7e098230bbc5383f"//invoke
//txIDHex := "970d37f8095af69e1ddbd8d4d519ff27f18b9674e8cf202eacd02f0b21b3223d"//deploy
//txIDHex := "e0653486b644de14f853f36f0f89801d510864a0079ea68d1551c53315e920dc"//deploy
txID, _ := hex.DecodeString(txIDHex)
output,err := fabAdapotr.GetContractInvokeTx(&adaptor.GetContractInvokeTxInput{TxID:txID})
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(string(output.TxRawData))
fmt.Println(output.IsSuccess)
}
func TestQueryContract(t *testing.T) {
fabAdapotr := NewAdaptorFabric("./connection.yaml")
fabAdapotr.UserName = "User1"
fabAdapotr.ChannelID = "mychannel"//sdk check
output,err := fabAdapotr.QueryContract(
&adaptor.QueryContractInput{
ContractAddress:"chaincode_example02xl4",
Function:"query",
Args:[][]byte{[]byte("B")},
})
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(string(output.QueryResult))
}