minter 0.1.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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() {}