minter 0.1.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +80 -8
  3. data/lib/ffi/{go → sign}/compile.rb +6 -4
  4. data/lib/ffi/sign/go.mod +5 -0
  5. data/lib/ffi/sign/go.sum +185 -0
  6. data/lib/ffi/sign/sign-darwin-10.6-amd64.dylib +0 -0
  7. data/lib/ffi/{wallet.h → sign/sign-darwin-10.6-amd64.h} +3 -11
  8. data/lib/ffi/sign/sign-linux-amd64.h +78 -0
  9. data/lib/ffi/sign/sign-linux-amd64.so +0 -0
  10. data/lib/ffi/sign/sign.go +84 -0
  11. data/lib/ffi/sign/sign_ffi.rb +12 -0
  12. data/lib/ffi/tx_hash/compile.rb +16 -0
  13. data/lib/ffi/tx_hash/go.mod +5 -0
  14. data/lib/ffi/tx_hash/go.sum +185 -0
  15. data/lib/ffi/{transaction-darwin-10.6-amd64.dylib → tx_hash/tx-hash-darwin-10.6-amd64.dylib} +0 -0
  16. data/lib/ffi/{transaction-linux-amd64.h → tx_hash/tx-hash-darwin-10.6-amd64.h} +15 -15
  17. data/lib/ffi/tx_hash/tx-hash-linux-amd64.h +104 -0
  18. data/lib/ffi/{transaction-linux-amd64.so → tx_hash/tx-hash-linux-amd64.so} +0 -0
  19. data/lib/ffi/tx_hash/tx_hash.go +616 -0
  20. data/lib/ffi/tx_hash/tx_hash_ffi.rb +25 -0
  21. data/lib/ffi/wallet/compile.rb +16 -0
  22. data/lib/ffi/wallet/go.mod +5 -0
  23. data/lib/ffi/wallet/go.sum +185 -0
  24. data/lib/ffi/{wallet-darwin-10.6-amd64.dylib → wallet/wallet-darwin-10.6-amd64.dylib} +0 -0
  25. data/lib/ffi/{wallet-darwin-10.6-amd64.h → wallet/wallet-darwin-10.6-amd64.h} +0 -0
  26. data/lib/ffi/{wallet-linux-amd64.h → wallet/wallet-linux-amd64.h} +0 -0
  27. data/lib/ffi/{wallet-linux-amd64.so → wallet/wallet-linux-amd64.so} +0 -0
  28. data/lib/ffi/wallet/wallet.go +49 -0
  29. data/lib/ffi/{wallet_ffi.rb → wallet/wallet_ffi.rb} +1 -1
  30. data/lib/minter.rb +4 -2
  31. data/lib/minter/transactions/buy_coin_tx.rb +1 -8
  32. data/lib/minter/transactions/create_coin_tx.rb +1 -8
  33. data/lib/minter/transactions/create_multisig_address_tx.rb +38 -0
  34. data/lib/minter/transactions/declare_candidacy_tx.rb +1 -8
  35. data/lib/minter/transactions/delegate_tx.rb +1 -8
  36. data/lib/minter/transactions/edit_candidate_tx.rb +1 -8
  37. data/lib/minter/transactions/multi_send_tx.rb +29 -0
  38. data/lib/minter/transactions/redeem_check_tx.rb +1 -8
  39. data/lib/minter/transactions/sell_all_coin_tx.rb +1 -8
  40. data/lib/minter/transactions/sell_coin_tx.rb +1 -8
  41. data/lib/minter/transactions/send_coin_tx.rb +1 -8
  42. data/lib/minter/transactions/set_candidate_off_tx.rb +1 -8
  43. data/lib/minter/transactions/set_candidate_on_tx.rb +1 -8
  44. data/lib/minter/transactions/signed_tx.rb +3 -3
  45. data/lib/minter/transactions/transaction.rb +41 -0
  46. data/lib/minter/transactions/unbond_tx.rb +1 -8
  47. data/lib/minter/version.rb +1 -1
  48. data/lib/minter/wallet.rb +3 -2
  49. metadata +81 -27
  50. data/lib/ffi/transaction-darwin-10.6-amd64.h +0 -104
  51. data/lib/ffi/transaction_ffi.rb +0 -94
@@ -0,0 +1,616 @@
1
+ package main
2
+
3
+ import (
4
+ "C"
5
+ "encoding/json"
6
+ "github.com/MinterTeam/minter-go-sdk/transaction"
7
+ "math/big"
8
+ )
9
+
10
+ type CommonParams struct {
11
+ SignatureType transaction.SignatureType
12
+ ChainId byte
13
+ Nonce uint64
14
+ GasPrice uint8
15
+ GasCoin string
16
+ }
17
+
18
+ //BuyCoinTx
19
+ type BuyCoinParams struct {
20
+ CoinToBuy string
21
+ ValueToBuy *big.Int
22
+ CoinToSell string
23
+ MaximumValueToSell *big.Int
24
+ CommonParams
25
+ }
26
+
27
+ //export BuyCoinTx
28
+ func BuyCoinTx(paramsJson *C.char) *C.char {
29
+ var params BuyCoinParams
30
+ jsonBytes := []byte(C.GoString(paramsJson))
31
+ err := json.Unmarshal(jsonBytes, &params)
32
+ if err != nil {
33
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
34
+ return C.CString(string(resultJson))
35
+ }
36
+
37
+ data := transaction.NewBuyCoinData().
38
+ SetCoinToBuy(params.CoinToBuy).
39
+ SetValueToBuy(params.ValueToBuy).
40
+ SetCoinToSell(params.CoinToSell).
41
+ SetMaximumValueToSell(params.MaximumValueToSell)
42
+
43
+ tx, err := transaction.NewBuilder(transaction.ChainID(params.ChainId)).NewTransaction(data)
44
+ if err != nil {
45
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
46
+ return C.CString(string(resultJson))
47
+ }
48
+
49
+ tx.SetNonce(params.Nonce).SetGasPrice(params.GasPrice).SetGasCoin(params.GasCoin).SetSignatureType(params.SignatureType)
50
+
51
+ encode, err := tx.Encode()
52
+ if err != nil {
53
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
54
+ return C.CString(string(resultJson))
55
+ }
56
+ resultJson, _ := json.Marshal(map[string]string{"success": "true", "tx_hash": encode})
57
+ return C.CString(string(resultJson))
58
+ }
59
+
60
+ // CreateCoinTX
61
+ type CreateCoinParams struct {
62
+ Name string
63
+ Symbol string
64
+ InitialAmount *big.Int
65
+ InitialReserve *big.Int
66
+ ReserveRation uint
67
+ MaxSupply *big.Int
68
+ CommonParams
69
+ }
70
+
71
+ //export CreateCoinTx
72
+ func CreateCoinTx(paramsJson *C.char) *C.char {
73
+ var params CreateCoinParams
74
+ jsonBytes := []byte(C.GoString(paramsJson))
75
+ err := json.Unmarshal(jsonBytes, &params)
76
+ if err != nil {
77
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
78
+ return C.CString(string(resultJson))
79
+ }
80
+
81
+ data := transaction.NewCreateCoinData().
82
+ SetName(params.Name).
83
+ SetSymbol(params.Symbol).
84
+ SetInitialAmount(params.InitialAmount).
85
+ SetInitialReserve(params.InitialReserve).
86
+ SetConstantReserveRatio(params.ReserveRation).
87
+ SetMaxSupply(params.MaxSupply)
88
+
89
+ tx, err := transaction.NewBuilder(transaction.ChainID(params.ChainId)).NewTransaction(data)
90
+ if err != nil {
91
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
92
+ return C.CString(string(resultJson))
93
+ }
94
+
95
+ tx.SetNonce(params.Nonce).SetGasPrice(params.GasPrice).SetGasCoin(params.GasCoin).SetSignatureType(params.SignatureType)
96
+
97
+ encode, err := tx.Encode()
98
+ if err != nil {
99
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
100
+ return C.CString(string(resultJson))
101
+ }
102
+
103
+ resultJson, _ := json.Marshal(map[string]string{"success": "true", "tx_hash": encode})
104
+ return C.CString(string(resultJson))
105
+ }
106
+
107
+ // SendCoinTx
108
+ type SendCoinParams struct {
109
+ AddressTo string
110
+ Value *big.Int
111
+ Coin string
112
+ CommonParams
113
+ }
114
+
115
+ //export SendCoinTx
116
+ func SendCoinTx(paramsJson *C.char) *C.char {
117
+ var params SendCoinParams
118
+ jsonBytes := []byte(C.GoString(paramsJson))
119
+ err := json.Unmarshal(jsonBytes, &params)
120
+ if err != nil {
121
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
122
+ return C.CString(string(resultJson))
123
+ }
124
+
125
+ data, err := transaction.NewSendData().SetCoin(params.Coin).SetValue(params.Value).SetTo(params.AddressTo)
126
+ if err != nil {
127
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
128
+ return C.CString(string(resultJson))
129
+ }
130
+
131
+ tx, err := transaction.NewBuilder(transaction.ChainID(params.ChainId)).NewTransaction(data)
132
+ if err != nil {
133
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
134
+ return C.CString(string(resultJson))
135
+ }
136
+
137
+ tx.SetNonce(params.Nonce).SetGasPrice(params.GasPrice).SetGasCoin(params.GasCoin).SetSignatureType(params.SignatureType)
138
+
139
+ encode, err := tx.Encode()
140
+ if err != nil {
141
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
142
+ return C.CString(string(resultJson))
143
+ }
144
+
145
+ resultJson, _ := json.Marshal(map[string]string{"success": "true", "tx_hash": encode})
146
+ return C.CString(string(resultJson))
147
+ }
148
+
149
+ type SellCoinParams struct {
150
+ CoinToSell string
151
+ ValueToSell *big.Int
152
+ CoinToBuy string
153
+ MinimumValueToBuy *big.Int
154
+ CommonParams
155
+ }
156
+
157
+ //export SellCoinTx
158
+ func SellCoinTx(paramsJson *C.char) *C.char {
159
+ var params SellCoinParams
160
+ jsonBytes := []byte(C.GoString(paramsJson))
161
+ err := json.Unmarshal(jsonBytes, &params)
162
+ if err != nil {
163
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
164
+ return C.CString(string(resultJson))
165
+ }
166
+
167
+ data := transaction.NewSellCoinData().
168
+ SetCoinToSell(params.CoinToSell).
169
+ SetValueToSell(params.ValueToSell).
170
+ SetCoinToBuy(params.CoinToBuy).
171
+ SetMinimumValueToBuy(params.MinimumValueToBuy)
172
+
173
+ tx, err := transaction.NewBuilder(transaction.ChainID(params.ChainId)).NewTransaction(data)
174
+ if err != nil {
175
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
176
+ return C.CString(string(resultJson))
177
+ }
178
+
179
+ tx.SetNonce(params.Nonce).SetGasPrice(params.GasPrice).SetGasCoin(params.GasCoin).SetSignatureType(params.SignatureType)
180
+
181
+ encode, err := tx.Encode()
182
+ if err != nil {
183
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
184
+ return C.CString(string(resultJson))
185
+ }
186
+ resultJson, _ := json.Marshal(map[string]string{"success": "true", "tx_hash": encode})
187
+ return C.CString(string(resultJson))
188
+ }
189
+
190
+ type SellAllCoinParams struct {
191
+ CoinToSell string
192
+ CoinToBuy string
193
+ ValueToBuy *big.Int
194
+ MinimumValueToBuy *big.Int
195
+ CommonParams
196
+ }
197
+
198
+ //export SellAllCoinTx
199
+ func SellAllCoinTx(paramsJson *C.char) *C.char {
200
+ var params SellAllCoinParams
201
+ jsonBytes := []byte(C.GoString(paramsJson))
202
+ err := json.Unmarshal(jsonBytes, &params)
203
+ if err != nil {
204
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
205
+ return C.CString(string(resultJson))
206
+ }
207
+
208
+ data := transaction.NewSellAllCoinData().
209
+ SetCoinToSell(params.CoinToSell).
210
+ SetCoinToBuy(params.CoinToBuy).
211
+ SetMinimumValueToBuy(params.MinimumValueToBuy)
212
+
213
+ tx, err := transaction.NewBuilder(transaction.ChainID(params.ChainId)).NewTransaction(data)
214
+ if err != nil {
215
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
216
+ return C.CString(string(resultJson))
217
+ }
218
+
219
+ tx.SetNonce(params.Nonce).SetGasPrice(params.GasPrice).SetGasCoin(params.GasCoin).SetSignatureType(params.SignatureType)
220
+
221
+ encode, err := tx.Encode()
222
+ if err != nil {
223
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
224
+ return C.CString(string(resultJson))
225
+ }
226
+
227
+ resultJson, _ := json.Marshal(map[string]string{"success": "true", "tx_hash": encode})
228
+ return C.CString(string(resultJson))
229
+ }
230
+
231
+ type DeclareCandidacyParams struct {
232
+ Address string
233
+ PubKey string
234
+ Commission uint
235
+ Coin string
236
+ Stake *big.Int
237
+ CommonParams
238
+ }
239
+
240
+ //export DeclareCandidacyTx
241
+ func DeclareCandidacyTx(paramsJson *C.char) *C.char {
242
+ var params DeclareCandidacyParams
243
+ jsonBytes := []byte(C.GoString(paramsJson))
244
+ err := json.Unmarshal(jsonBytes, &params)
245
+
246
+ data, err := transaction.NewDeclareCandidacyData().
247
+ MustSetPubKey(params.PubKey).
248
+ SetCommission(params.Commission).
249
+ SetCoin(params.Coin).
250
+ SetStake(params.Stake).
251
+ SetAddress(params.Address)
252
+ if err != nil {
253
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
254
+ return C.CString(string(resultJson))
255
+ }
256
+
257
+ tx, err := transaction.NewBuilder(transaction.ChainID(params.ChainId)).NewTransaction(data)
258
+ if err != nil {
259
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
260
+ return C.CString(string(resultJson))
261
+ }
262
+
263
+ tx.SetNonce(params.Nonce).SetGasPrice(params.GasPrice).SetGasCoin(params.GasCoin).SetSignatureType(params.SignatureType)
264
+
265
+ encode, err := tx.Encode()
266
+ if err != nil {
267
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
268
+ return C.CString(string(resultJson))
269
+ }
270
+
271
+ resultJson, _ := json.Marshal(map[string]string{"success": "true", "tx_hash": encode})
272
+ return C.CString(string(resultJson))
273
+ }
274
+
275
+ type DelegateParams struct {
276
+ PubKey string
277
+ Coin string
278
+ Value *big.Int
279
+ CommonParams
280
+ }
281
+
282
+ //export DelegateTx
283
+ func DelegateTx(paramsJson *C.char) *C.char {
284
+ var params DelegateParams
285
+ jsonBytes := []byte(C.GoString(paramsJson))
286
+ err := json.Unmarshal(jsonBytes, &params)
287
+ if err != nil {
288
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
289
+ return C.CString(string(resultJson))
290
+ }
291
+
292
+ data := transaction.NewDelegateData().
293
+ MustSetPubKey(params.PubKey).
294
+ SetCoin(params.Coin).
295
+ SetValue(params.Value)
296
+
297
+ tx, err := transaction.NewBuilder(transaction.ChainID(params.ChainId)).NewTransaction(data)
298
+ if err != nil {
299
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
300
+ return C.CString(string(resultJson))
301
+ }
302
+
303
+ tx.SetNonce(params.Nonce).SetGasPrice(params.GasPrice).SetGasCoin(params.GasCoin).SetSignatureType(params.SignatureType)
304
+
305
+ encode, err := tx.Encode()
306
+ if err != nil {
307
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
308
+ return C.CString(string(resultJson))
309
+ }
310
+
311
+ resultJson, _ := json.Marshal(map[string]string{"success": "true", "tx_hash": encode})
312
+ return C.CString(string(resultJson))
313
+ }
314
+
315
+ type UnbondParams struct {
316
+ PubKey string
317
+ Coin string
318
+ Value *big.Int
319
+ CommonParams
320
+ }
321
+
322
+ //export UnbondTx
323
+ func UnbondTx(paramsJson *C.char) *C.char {
324
+ var params UnbondParams
325
+ jsonBytes := []byte(C.GoString(paramsJson))
326
+ err := json.Unmarshal(jsonBytes, &params)
327
+ if err != nil {
328
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
329
+ return C.CString(string(resultJson))
330
+ }
331
+
332
+ data := transaction.NewUnbondData().
333
+ MustSetPubKey(params.PubKey).
334
+ SetCoin(params.Coin).
335
+ SetValue(params.Value)
336
+
337
+ tx, err := transaction.NewBuilder(transaction.ChainID(params.ChainId)).NewTransaction(data)
338
+ if err != nil {
339
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
340
+ return C.CString(string(resultJson))
341
+ }
342
+
343
+ tx.SetNonce(params.Nonce).SetGasPrice(params.GasPrice).SetGasCoin(params.GasCoin).SetSignatureType(params.SignatureType)
344
+
345
+ encode, err := tx.Encode()
346
+ if err != nil {
347
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
348
+ return C.CString(string(resultJson))
349
+ }
350
+
351
+ resultJson, _ := json.Marshal(map[string]string{"success": "true", "tx_hash": encode})
352
+ return C.CString(string(resultJson))
353
+ }
354
+
355
+ type SetCandidateParams struct {
356
+ PubKey string
357
+ CommonParams
358
+ }
359
+
360
+ //export SetCandidateOffTx
361
+ func SetCandidateOffTx(paramsJson *C.char) *C.char {
362
+ var params SetCandidateParams
363
+ jsonBytes := []byte(C.GoString(paramsJson))
364
+ err := json.Unmarshal(jsonBytes, &params)
365
+ if err != nil {
366
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
367
+ return C.CString(string(resultJson))
368
+ }
369
+
370
+ data := transaction.NewSetCandidateOffData().
371
+ MustSetPubKey(params.PubKey)
372
+
373
+ tx, err := transaction.NewBuilder(transaction.ChainID(params.ChainId)).NewTransaction(data)
374
+ if err != nil {
375
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
376
+ return C.CString(string(resultJson))
377
+ }
378
+
379
+ tx.SetNonce(params.Nonce).SetGasPrice(params.GasPrice).SetGasCoin(params.GasCoin).SetSignatureType(params.SignatureType)
380
+
381
+ encode, err := tx.Encode()
382
+ if err != nil {
383
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
384
+ return C.CString(string(resultJson))
385
+ }
386
+
387
+ resultJson, _ := json.Marshal(map[string]string{"success": "true", "tx_hash": encode})
388
+ return C.CString(string(resultJson))
389
+ }
390
+
391
+ //export SetCandidateOnTx
392
+ func SetCandidateOnTx(paramsJson *C.char) *C.char {
393
+ var params SetCandidateParams
394
+ jsonBytes := []byte(C.GoString(paramsJson))
395
+ err := json.Unmarshal(jsonBytes, &params)
396
+ if err != nil {
397
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
398
+ return C.CString(string(resultJson))
399
+ }
400
+
401
+ data := transaction.NewSetCandidateOnData().
402
+ MustSetPubKey(params.PubKey)
403
+
404
+ tx, err := transaction.NewBuilder(transaction.ChainID(params.ChainId)).NewTransaction(data)
405
+ if err != nil {
406
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
407
+ return C.CString(string(resultJson))
408
+ }
409
+
410
+ tx.SetNonce(params.Nonce).SetGasPrice(params.GasPrice).SetGasCoin(params.GasCoin).SetSignatureType(params.SignatureType)
411
+
412
+ encode, err := tx.Encode()
413
+ if err != nil {
414
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
415
+ return C.CString(string(resultJson))
416
+ }
417
+
418
+ resultJson, _ := json.Marshal(map[string]string{"success": "true", "tx_hash": encode})
419
+ return C.CString(string(resultJson))
420
+ }
421
+
422
+ type RedeemCheckParams struct {
423
+ Check string
424
+ Proof string
425
+ CommonParams
426
+ }
427
+
428
+ //export RedeemCheckTx
429
+ func RedeemCheckTx(paramsJson *C.char) *C.char {
430
+ var params RedeemCheckParams
431
+ jsonBytes := []byte(C.GoString(paramsJson))
432
+ err := json.Unmarshal(jsonBytes, &params)
433
+ if err != nil {
434
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
435
+ return C.CString(string(resultJson))
436
+ }
437
+
438
+ data := transaction.NewRedeemCheckData().
439
+ MustSetProof(params.Proof).
440
+ MustSetRawCheck(params.Check)
441
+
442
+ tx, err := transaction.NewBuilder(transaction.ChainID(params.ChainId)).NewTransaction(data)
443
+ if err != nil {
444
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
445
+ return C.CString(string(resultJson))
446
+ }
447
+
448
+ tx.SetNonce(params.Nonce).SetGasPrice(params.GasPrice).SetGasCoin(params.GasCoin).SetSignatureType(params.SignatureType)
449
+
450
+ encode, err := tx.Encode()
451
+ if err != nil {
452
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
453
+ return C.CString(string(resultJson))
454
+ }
455
+
456
+ resultJson, _ := json.Marshal(map[string]string{"success": "true", "tx_hash": encode})
457
+ return C.CString(string(resultJson))
458
+ }
459
+
460
+ type EditCandidateParams struct {
461
+ PubKey string
462
+ RewardAddress string
463
+ OwnerAddress string
464
+ CommonParams
465
+ }
466
+
467
+ //export EditCandidateTx
468
+ func EditCandidateTx(paramsJson *C.char) *C.char {
469
+ var params EditCandidateParams
470
+ jsonBytes := []byte(C.GoString(paramsJson))
471
+ err := json.Unmarshal(jsonBytes, &params)
472
+ if err != nil {
473
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
474
+ return C.CString(string(resultJson))
475
+ }
476
+
477
+ data := transaction.NewEditCandidateData().
478
+ MustSetPubKey(params.PubKey).
479
+ MustSetOwnerAddress(params.OwnerAddress).
480
+ MustSetRewardAddress(params.RewardAddress)
481
+
482
+ tx, err := transaction.NewBuilder(transaction.ChainID(params.ChainId)).NewTransaction(data)
483
+ if err != nil {
484
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
485
+ return C.CString(string(resultJson))
486
+ }
487
+
488
+ tx.SetNonce(params.Nonce).SetGasPrice(params.GasPrice).SetGasCoin(params.GasCoin).SetSignatureType(params.SignatureType)
489
+
490
+ encode, err := tx.Encode()
491
+ if err != nil {
492
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
493
+ return C.CString(string(resultJson))
494
+ }
495
+
496
+ resultJson, _ := json.Marshal(map[string]string{"success": "true", "tx_hash": encode})
497
+ return C.CString(string(resultJson))
498
+ }
499
+
500
+ type MultiSendItem struct {
501
+ AddressTo string
502
+ Symbol string
503
+ Value *big.Int
504
+ }
505
+
506
+ type MultiSendParams struct {
507
+ Items []MultiSendItem
508
+ CommonParams
509
+ }
510
+
511
+ //export MultiSendTx
512
+ func MultiSendTx(paramsJson *C.char) *C.char {
513
+ var params MultiSendParams
514
+ jsonBytes := []byte(C.GoString(paramsJson))
515
+ err := json.Unmarshal(jsonBytes, &params)
516
+ if err != nil {
517
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
518
+ return C.CString(string(resultJson))
519
+ }
520
+
521
+ data := transaction.NewMultisendData()
522
+
523
+ for _, item := range params.Items {
524
+ data.AddItem(
525
+ *transaction.NewMultisendDataItem().
526
+ SetCoin(item.Symbol).
527
+ SetValue(item.Value).
528
+ MustSetTo(item.AddressTo),
529
+ )
530
+ }
531
+ tx, err := transaction.NewBuilder(transaction.ChainID(params.ChainId)).NewTransaction(data)
532
+ if err != nil {
533
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
534
+ return C.CString(string(resultJson))
535
+ }
536
+ tx.SetNonce(params.Nonce).SetGasPrice(params.GasPrice).SetGasCoin(params.GasCoin).SetSignatureType(params.SignatureType)
537
+
538
+ encode, err := tx.Encode()
539
+ if err != nil {
540
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
541
+ return C.CString(string(resultJson))
542
+ }
543
+
544
+ resultJson, _ := json.Marshal(map[string]string{"success": "true", "tx_hash": encode})
545
+ return C.CString(string(resultJson))
546
+ }
547
+
548
+ type MultisigAddressItem struct {
549
+ Address string
550
+ Weight uint
551
+ }
552
+
553
+ type MultisigAddressParams struct {
554
+ Addresses []MultisigAddressItem
555
+ Threshold uint
556
+ CommonParams
557
+ }
558
+
559
+ //export CreateMultisigAddressTx
560
+ func CreateMultisigAddressTx(paramsJson *C.char) *C.char {
561
+ var params MultisigAddressParams
562
+ jsonBytes := []byte(C.GoString(paramsJson))
563
+ err := json.Unmarshal(jsonBytes, &params)
564
+ if err != nil {
565
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
566
+ return C.CString(string(resultJson))
567
+ }
568
+
569
+ data := transaction.NewCreateMultisigData()
570
+
571
+ for _, address := range params.Addresses {
572
+ data.MustAddSigData(address.Address, address.Weight)
573
+ }
574
+ tx, err := transaction.NewBuilder(transaction.ChainID(params.ChainId)).NewTransaction(data)
575
+ if err != nil {
576
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
577
+ return C.CString(string(resultJson))
578
+ }
579
+ tx.SetNonce(params.Nonce).SetGasPrice(params.GasPrice).SetGasCoin(params.GasCoin).SetSignatureType(params.SignatureType)
580
+
581
+ encode, err := tx.Encode()
582
+ if err != nil {
583
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
584
+ return C.CString(string(resultJson))
585
+ }
586
+
587
+ result := map[string]string{
588
+ "success": "true",
589
+ "tx_hash": encode,
590
+ "multisig_address": data.AddressString(),
591
+ }
592
+ resultJson, _ := json.Marshal(result)
593
+ return C.CString(string(resultJson))
594
+ }
595
+
596
+ //export GetMultisigAddress
597
+ func GetMultisigAddress(paramsJson *C.char) *C.char {
598
+ var params MultisigAddressParams
599
+ jsonBytes := []byte(C.GoString(paramsJson))
600
+ err := json.Unmarshal(jsonBytes, &params)
601
+ if err != nil {
602
+ resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()})
603
+ return C.CString(string(resultJson))
604
+ }
605
+
606
+ data := transaction.NewCreateMultisigData()
607
+
608
+ for _, address := range params.Addresses {
609
+ data.MustAddSigData(address.Address, address.Weight)
610
+ }
611
+
612
+ resultJson, _ := json.Marshal(map[string]string{"success": "true", "multisig_address": data.AddressString()})
613
+ return C.CString(string(resultJson))
614
+ }
615
+
616
+ func main() {}