minter 0.1.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +80 -8
- data/lib/ffi/{go → sign}/compile.rb +6 -4
- data/lib/ffi/sign/go.mod +5 -0
- data/lib/ffi/sign/go.sum +520 -0
- data/lib/ffi/{transaction-darwin-10.6-amd64.dylib → sign/sign-darwin-10.6-amd64.dylib} +0 -0
- data/lib/ffi/{wallet.h → sign/sign-darwin-10.6-amd64.h} +3 -11
- data/lib/ffi/sign/sign-linux-amd64.h +78 -0
- data/lib/ffi/sign/sign-linux-amd64.so +0 -0
- data/lib/ffi/sign/sign.go +84 -0
- data/lib/ffi/sign/sign_ffi.rb +12 -0
- data/lib/ffi/tx_hash/compile.rb +16 -0
- data/lib/ffi/tx_hash/go.mod +5 -0
- data/lib/ffi/tx_hash/go.sum +525 -0
- data/lib/ffi/tx_hash/tx-hash-darwin-10.6-amd64.dylib +0 -0
- data/lib/ffi/{transaction-linux-amd64.h → tx_hash/tx-hash-darwin-10.6-amd64.h} +13 -17
- data/lib/ffi/tx_hash/tx-hash-linux-amd64.h +100 -0
- data/lib/ffi/{transaction-linux-amd64.so → tx_hash/tx-hash-linux-amd64.so} +0 -0
- data/lib/ffi/tx_hash/tx_hash.go +618 -0
- data/lib/ffi/tx_hash/tx_hash_ffi.rb +25 -0
- data/lib/ffi/wallet/compile.rb +16 -0
- data/lib/ffi/wallet/go.mod +5 -0
- data/lib/ffi/wallet/go.sum +525 -0
- data/lib/ffi/{wallet-darwin-10.6-amd64.dylib → wallet/wallet-darwin-10.6-amd64.dylib} +0 -0
- data/lib/ffi/{wallet-darwin-10.6-amd64.h → wallet/wallet-darwin-10.6-amd64.h} +0 -0
- data/lib/ffi/{wallet-linux-amd64.h → wallet/wallet-linux-amd64.h} +0 -0
- data/lib/ffi/{wallet-linux-amd64.so → wallet/wallet-linux-amd64.so} +0 -0
- data/lib/ffi/wallet/wallet.go +50 -0
- data/lib/ffi/{wallet_ffi.rb → wallet/wallet_ffi.rb} +1 -1
- data/lib/minter.rb +4 -2
- data/lib/minter/api/resources/estimate_resource.rb +1 -1
- data/lib/minter/transactions/buy_coin_tx.rb +1 -8
- data/lib/minter/transactions/create_coin_tx.rb +1 -8
- data/lib/minter/transactions/create_multisig_address_tx.rb +38 -0
- data/lib/minter/transactions/declare_candidacy_tx.rb +1 -8
- data/lib/minter/transactions/delegate_tx.rb +1 -8
- data/lib/minter/transactions/edit_candidate_tx.rb +5 -10
- data/lib/minter/transactions/multi_send_tx.rb +29 -0
- data/lib/minter/transactions/redeem_check_tx.rb +1 -8
- data/lib/minter/transactions/sell_all_coin_tx.rb +1 -8
- data/lib/minter/transactions/sell_coin_tx.rb +1 -8
- data/lib/minter/transactions/send_coin_tx.rb +1 -8
- data/lib/minter/transactions/set_candidate_off_tx.rb +1 -8
- data/lib/minter/transactions/set_candidate_on_tx.rb +1 -8
- data/lib/minter/transactions/signed_tx.rb +3 -3
- data/lib/minter/transactions/transaction.rb +41 -0
- data/lib/minter/transactions/unbond_tx.rb +1 -8
- data/lib/minter/version.rb +1 -1
- data/lib/minter/wallet.rb +3 -2
- metadata +36 -18
- data/lib/ffi/transaction-darwin-10.6-amd64.h +0 -104
- data/lib/ffi/transaction_ffi.rb +0 -94
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Minter
|
4
|
+
class TransactionError < StandardError; end
|
5
|
+
class SignError < StandardError; end
|
6
|
+
|
7
|
+
class Transaction
|
8
|
+
def sign(private_key)
|
9
|
+
sign_params = {}
|
10
|
+
sign_params[:PrivateKey] = private_key
|
11
|
+
sign_params[:TxHash] = tx_hash
|
12
|
+
|
13
|
+
result = JSON.parse(Minter::SignFfi.Sign(sign_params.to_json))
|
14
|
+
raise SignError, result["error"] unless result["success"] == "true"
|
15
|
+
|
16
|
+
SignedTx.new(tx_hash: result["tx_hash"], transaction: self)
|
17
|
+
end
|
18
|
+
|
19
|
+
def multisign(multisig_address, *private_keys)
|
20
|
+
multisign_params = {}
|
21
|
+
multisign_params[:PrivateKeys] = private_keys
|
22
|
+
multisign_params[:TxHash] = tx_hash(multisign: true)
|
23
|
+
multisign_params[:MultiSigAddress] = multisig_address
|
24
|
+
|
25
|
+
result = JSON.parse(Minter::SignFfi.MultiSign(multisign_params.to_json))
|
26
|
+
raise SignError, result["error"] unless result["success"] == "true"
|
27
|
+
|
28
|
+
SignedTx.new(tx_hash: result["tx_hash"], transaction: self)
|
29
|
+
end
|
30
|
+
|
31
|
+
def tx_hash(multisign: false)
|
32
|
+
transaction_params = to_params
|
33
|
+
transaction_params[:SignatureType] = multisign ? 2 : 1
|
34
|
+
|
35
|
+
result = JSON.parse(Minter::TxHashFfi.send(self.class.to_s.split("::")[1], transaction_params.to_json))
|
36
|
+
raise TransactionError, result["error"] unless result["success"] == "true"
|
37
|
+
|
38
|
+
result["tx_hash"]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Minter
|
4
|
-
class UnbondTx
|
4
|
+
class UnbondTx < Transaction
|
5
5
|
attr_accessor :pubkey, :coin, :value, :nonce, :chain_id, :gas_coin, :gas_price
|
6
6
|
|
7
7
|
def initialize(pubkey:, coin:, value:, nonce:, chain_id:, gas_coin:, gas_price:) # rubocop:disable Metrics/ParameterLists
|
@@ -14,13 +14,6 @@ module Minter
|
|
14
14
|
@gas_price = gas_price
|
15
15
|
end
|
16
16
|
|
17
|
-
def sign(private_key)
|
18
|
-
params = to_params
|
19
|
-
params[:PrivateKey] = private_key
|
20
|
-
tx_hash = Minter::TransactionFfi.SignUnbondTransaction(params.to_json)
|
21
|
-
SignedTx.new(tx_hash)
|
22
|
-
end
|
23
|
-
|
24
17
|
def to_params
|
25
18
|
{ PubKey: pubkey,
|
26
19
|
Coin: coin,
|
data/lib/minter/version.rb
CHANGED
data/lib/minter/wallet.rb
CHANGED
@@ -3,8 +3,9 @@
|
|
3
3
|
module Minter
|
4
4
|
class Wallet
|
5
5
|
attr_reader :seed, :private_key, :public_key, :mnemonic, :address
|
6
|
-
def initialize(
|
7
|
-
@mnemonic =
|
6
|
+
def initialize(mnemonic = nil)
|
7
|
+
@mnemonic = mnemonic
|
8
|
+
@mnemonic ||= Minter::WalletFfi.NewMnemonic
|
8
9
|
@private_key = Minter::WalletFfi.PrivateKeyFromMnemonic(@mnemonic)
|
9
10
|
@public_key = Minter::WalletFfi.PublicKeyFromPrivateKey(@private_key)
|
10
11
|
@address = Minter::WalletFfi.AddressFromMnemonic(@mnemonic)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Nikolaev
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dotenv
|
@@ -131,7 +131,7 @@ dependencies:
|
|
131
131
|
- !ruby/object:Gem::Version
|
132
132
|
version: '3.9'
|
133
133
|
description: This is a Ruby SDK based on Golang SDK for working with Minter blockchain
|
134
|
-
email:
|
134
|
+
email:
|
135
135
|
executables: []
|
136
136
|
extensions: []
|
137
137
|
extra_rdoc_files: []
|
@@ -141,18 +141,33 @@ files:
|
|
141
141
|
- README.md
|
142
142
|
- bin/console
|
143
143
|
- bin/setup
|
144
|
-
- lib/ffi/
|
145
|
-
- lib/ffi/
|
146
|
-
- lib/ffi/
|
147
|
-
- lib/ffi/
|
148
|
-
- lib/ffi/
|
149
|
-
- lib/ffi/
|
150
|
-
- lib/ffi/
|
151
|
-
- lib/ffi/
|
152
|
-
- lib/ffi/
|
153
|
-
- lib/ffi/
|
154
|
-
- lib/ffi/
|
155
|
-
- lib/ffi/
|
144
|
+
- lib/ffi/sign/compile.rb
|
145
|
+
- lib/ffi/sign/go.mod
|
146
|
+
- lib/ffi/sign/go.sum
|
147
|
+
- lib/ffi/sign/sign-darwin-10.6-amd64.dylib
|
148
|
+
- lib/ffi/sign/sign-darwin-10.6-amd64.h
|
149
|
+
- lib/ffi/sign/sign-linux-amd64.h
|
150
|
+
- lib/ffi/sign/sign-linux-amd64.so
|
151
|
+
- lib/ffi/sign/sign.go
|
152
|
+
- lib/ffi/sign/sign_ffi.rb
|
153
|
+
- lib/ffi/tx_hash/compile.rb
|
154
|
+
- lib/ffi/tx_hash/go.mod
|
155
|
+
- lib/ffi/tx_hash/go.sum
|
156
|
+
- lib/ffi/tx_hash/tx-hash-darwin-10.6-amd64.dylib
|
157
|
+
- lib/ffi/tx_hash/tx-hash-darwin-10.6-amd64.h
|
158
|
+
- lib/ffi/tx_hash/tx-hash-linux-amd64.h
|
159
|
+
- lib/ffi/tx_hash/tx-hash-linux-amd64.so
|
160
|
+
- lib/ffi/tx_hash/tx_hash.go
|
161
|
+
- lib/ffi/tx_hash/tx_hash_ffi.rb
|
162
|
+
- lib/ffi/wallet/compile.rb
|
163
|
+
- lib/ffi/wallet/go.mod
|
164
|
+
- lib/ffi/wallet/go.sum
|
165
|
+
- lib/ffi/wallet/wallet-darwin-10.6-amd64.dylib
|
166
|
+
- lib/ffi/wallet/wallet-darwin-10.6-amd64.h
|
167
|
+
- lib/ffi/wallet/wallet-linux-amd64.h
|
168
|
+
- lib/ffi/wallet/wallet-linux-amd64.so
|
169
|
+
- lib/ffi/wallet/wallet.go
|
170
|
+
- lib/ffi/wallet/wallet_ffi.rb
|
156
171
|
- lib/minter.rb
|
157
172
|
- lib/minter/api/client.rb
|
158
173
|
- lib/minter/api/connection.rb
|
@@ -175,9 +190,11 @@ files:
|
|
175
190
|
- lib/minter/key.rb
|
176
191
|
- lib/minter/transactions/buy_coin_tx.rb
|
177
192
|
- lib/minter/transactions/create_coin_tx.rb
|
193
|
+
- lib/minter/transactions/create_multisig_address_tx.rb
|
178
194
|
- lib/minter/transactions/declare_candidacy_tx.rb
|
179
195
|
- lib/minter/transactions/delegate_tx.rb
|
180
196
|
- lib/minter/transactions/edit_candidate_tx.rb
|
197
|
+
- lib/minter/transactions/multi_send_tx.rb
|
181
198
|
- lib/minter/transactions/redeem_check_tx.rb
|
182
199
|
- lib/minter/transactions/sell_all_coin_tx.rb
|
183
200
|
- lib/minter/transactions/sell_coin_tx.rb
|
@@ -185,6 +202,7 @@ files:
|
|
185
202
|
- lib/minter/transactions/set_candidate_off_tx.rb
|
186
203
|
- lib/minter/transactions/set_candidate_on_tx.rb
|
187
204
|
- lib/minter/transactions/signed_tx.rb
|
205
|
+
- lib/minter/transactions/transaction.rb
|
188
206
|
- lib/minter/transactions/unbond_tx.rb
|
189
207
|
- lib/minter/version.rb
|
190
208
|
- lib/minter/wallet.rb
|
@@ -195,7 +213,7 @@ metadata:
|
|
195
213
|
homepage_uri: https://github.com/rubyroid-team/minter
|
196
214
|
source_code_uri: https://github.com/rubyroid-team/minter
|
197
215
|
changelog_uri: https://github.com/rubyroid-team/minter/blob/master/CHANGELOG.md
|
198
|
-
post_install_message:
|
216
|
+
post_install_message:
|
199
217
|
rdoc_options: []
|
200
218
|
require_paths:
|
201
219
|
- lib
|
@@ -211,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
211
229
|
version: '0'
|
212
230
|
requirements: []
|
213
231
|
rubygems_version: 3.0.8
|
214
|
-
signing_key:
|
232
|
+
signing_key:
|
215
233
|
specification_version: 4
|
216
234
|
summary: This is a Ruby SDK based on Golang SDK for working with Minter blockchain
|
217
235
|
test_files: []
|
@@ -1,104 +0,0 @@
|
|
1
|
-
/* Code generated by cmd/cgo; DO NOT EDIT. */
|
2
|
-
|
3
|
-
/* package mod */
|
4
|
-
|
5
|
-
|
6
|
-
#line 1 "cgo-builtin-export-prolog"
|
7
|
-
|
8
|
-
#include <stddef.h> /* for ptrdiff_t below */
|
9
|
-
|
10
|
-
#ifndef GO_CGO_EXPORT_PROLOGUE_H
|
11
|
-
#define GO_CGO_EXPORT_PROLOGUE_H
|
12
|
-
|
13
|
-
#ifndef GO_CGO_GOSTRING_TYPEDEF
|
14
|
-
typedef struct { const char *p; ptrdiff_t n; } _GoString_;
|
15
|
-
#endif
|
16
|
-
|
17
|
-
#endif
|
18
|
-
|
19
|
-
/* Start of preamble from import "C" comments. */
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
/* End of preamble from import "C" comments. */
|
25
|
-
|
26
|
-
|
27
|
-
/* Start of boilerplate cgo prologue. */
|
28
|
-
#line 1 "cgo-gcc-export-header-prolog"
|
29
|
-
|
30
|
-
#ifndef GO_CGO_PROLOGUE_H
|
31
|
-
#define GO_CGO_PROLOGUE_H
|
32
|
-
|
33
|
-
typedef signed char GoInt8;
|
34
|
-
typedef unsigned char GoUint8;
|
35
|
-
typedef short GoInt16;
|
36
|
-
typedef unsigned short GoUint16;
|
37
|
-
typedef int GoInt32;
|
38
|
-
typedef unsigned int GoUint32;
|
39
|
-
typedef long long GoInt64;
|
40
|
-
typedef unsigned long long GoUint64;
|
41
|
-
typedef GoInt64 GoInt;
|
42
|
-
typedef GoUint64 GoUint;
|
43
|
-
typedef __SIZE_TYPE__ GoUintptr;
|
44
|
-
typedef float GoFloat32;
|
45
|
-
typedef double GoFloat64;
|
46
|
-
typedef float _Complex GoComplex64;
|
47
|
-
typedef double _Complex GoComplex128;
|
48
|
-
|
49
|
-
/*
|
50
|
-
static assertion to make sure the file is being used on architecture
|
51
|
-
at least with matching size of GoInt.
|
52
|
-
*/
|
53
|
-
typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1];
|
54
|
-
|
55
|
-
#ifndef GO_CGO_GOSTRING_TYPEDEF
|
56
|
-
typedef _GoString_ GoString;
|
57
|
-
#endif
|
58
|
-
typedef void *GoMap;
|
59
|
-
typedef void *GoChan;
|
60
|
-
typedef struct { void *t; void *v; } GoInterface;
|
61
|
-
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;
|
62
|
-
|
63
|
-
#endif
|
64
|
-
|
65
|
-
/* End of boilerplate cgo prologue. */
|
66
|
-
|
67
|
-
#ifdef __cplusplus
|
68
|
-
extern "C" {
|
69
|
-
#endif
|
70
|
-
|
71
|
-
|
72
|
-
extern char* SignTransaction(char* p0);
|
73
|
-
|
74
|
-
extern char* TransactionHash(char* p0);
|
75
|
-
|
76
|
-
extern char* DecodeTransaction(char* p0);
|
77
|
-
|
78
|
-
extern char* SignCreateCoinTransaction(char* p0);
|
79
|
-
|
80
|
-
extern char* SignSellCoinTransaction(char* p0);
|
81
|
-
|
82
|
-
extern char* SignBuyCoinTransaction(char* p0);
|
83
|
-
|
84
|
-
extern char* SignSellAllCoinTransaction(char* p0);
|
85
|
-
|
86
|
-
extern char* SignDeclareCandidacyTransaction(char* p0);
|
87
|
-
|
88
|
-
extern char* SignDelegateTransaction(char* p0);
|
89
|
-
|
90
|
-
extern char* SignUnbondTransaction(char* p0);
|
91
|
-
|
92
|
-
extern char* SignSetCandidateOffTransaction(char* p0);
|
93
|
-
|
94
|
-
extern char* SignSetCandidateOnTransaction(char* p0);
|
95
|
-
|
96
|
-
extern char* SignRedeemCheckTransaction(char* p0);
|
97
|
-
|
98
|
-
extern char* SignEditCandidateTransaction(char* p0);
|
99
|
-
|
100
|
-
extern char* SignMultiSendTransaction(char* p0);
|
101
|
-
|
102
|
-
#ifdef __cplusplus
|
103
|
-
}
|
104
|
-
#endif
|
data/lib/ffi/transaction_ffi.rb
DELETED
@@ -1,94 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "ffi"
|
4
|
-
module Minter
|
5
|
-
module TransactionFfi
|
6
|
-
extend FFI::Library
|
7
|
-
filename = RUBY_PLATFORM.match('darwin') ? "/transaction-darwin-10.6-amd64.dylib" : "/transaction-linux-amd64.so"
|
8
|
-
ffi_lib File.join(File.dirname(__FILE__), filename)
|
9
|
-
attach_function :SignTransaction, [:string], :string
|
10
|
-
attach_function :TransactionHash, [:string], :string
|
11
|
-
attach_function :DecodeTransaction, [:string], :string
|
12
|
-
attach_function :SignCreateCoinTransaction, [:string], :string
|
13
|
-
attach_function :SignSellCoinTransaction, [:string], :string
|
14
|
-
attach_function :SignBuyCoinTransaction, [:string], :string
|
15
|
-
attach_function :SignSellAllCoinTransaction, [:string], :string
|
16
|
-
attach_function :SignDeclareCandidacyTransaction, [:string], :string
|
17
|
-
attach_function :SignDelegateTransaction, [:string], :string
|
18
|
-
attach_function :SignUnbondTransaction, [:string], :string
|
19
|
-
attach_function :SignSetCandidateOffTransaction, [:string], :string
|
20
|
-
attach_function :SignSetCandidateOnTransaction, [:string], :string
|
21
|
-
attach_function :SignRedeemCheckTransaction, [:string], :string
|
22
|
-
attach_function :SignEditCandidateTransaction, [:string], :string
|
23
|
-
# attach_function :SignMultisendTransaction, [:string], :string
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
# Examples of USAGE FFI
|
28
|
-
# ===SEND MNT===
|
29
|
-
# tx_params = {
|
30
|
-
# Nonce: 27,
|
31
|
-
# ChainId: 2,
|
32
|
-
# Type: 1,
|
33
|
-
# AddressTo: "Mx7633980c000139dd3bd24a3f54e06474fa941e16",
|
34
|
-
# Value: 24_000_000_000_000_000_000,
|
35
|
-
# Coin: "MNT",
|
36
|
-
# GasCoin: "MNT",
|
37
|
-
# GasPrice: 10,
|
38
|
-
# PrivateKey: "290cd647206bea71ec06d8dfacce30c872aea3fb1ea333b7f475b70467250ca0"
|
39
|
-
# }
|
40
|
-
# tx = Minter::TransactionFfi.SignTransaction(tx_params.to_json)
|
41
|
-
# Minter::Api::Client.new.send_transaction(transaction: tx)
|
42
|
-
|
43
|
-
# ==CREATE COIN==
|
44
|
-
# tx_params = {
|
45
|
-
# Name: "DEVTWO",
|
46
|
-
# Symbol: "DEVTWO",
|
47
|
-
# InitialAmount: 1000000000000000000,
|
48
|
-
# MaxSupply: 10000000000000000000,
|
49
|
-
# InitialReserve: 10000,
|
50
|
-
# ReserveRation: 10,
|
51
|
-
#
|
52
|
-
# Nonce: 29,
|
53
|
-
# ChainId: 2,
|
54
|
-
# GasCoin: "MNT",
|
55
|
-
# GasPrice: 1,
|
56
|
-
# PrivateKey: "290cd647206bea71ec06d8dfacce30c872aea3fb1ea333b7f475b70467250ca0"
|
57
|
-
# }
|
58
|
-
#
|
59
|
-
# tx = Minter::TransactionFfi.SignCreateCoinTransaction(tx_params.to_json)
|
60
|
-
# Minter::Api::Client.new.send_transaction(transaction: tx)
|
61
|
-
|
62
|
-
# ===SELL_COIN===
|
63
|
-
# tx_params = {
|
64
|
-
# CoinToSell: "DEVDEV",
|
65
|
-
# ValueToSell: 1000,
|
66
|
-
# CoinToBuy: "MNT",
|
67
|
-
# MinimumValueToBuy: 100000000,
|
68
|
-
#
|
69
|
-
# Nonce: 31,
|
70
|
-
# ChainId: 2,
|
71
|
-
# GasCoin: "MNT",
|
72
|
-
# GasPrice: 1,
|
73
|
-
# PrivateKey: "290cd647206bea71ec06d8dfacce30c872aea3fb1ea333b7f475b70467250ca0"
|
74
|
-
# }
|
75
|
-
#
|
76
|
-
# tx = Minter::TransactionFfi.SignSellCoinTransaction(tx_params.to_json)
|
77
|
-
# Minter::Api::Client.new.send_transaction(transaction: tx)
|
78
|
-
|
79
|
-
# ===BUY_COIN===
|
80
|
-
# tx_params = {
|
81
|
-
# CoinToBuy: "DEVDEV",
|
82
|
-
# ValueToBuy: 1000,
|
83
|
-
# CoinToSell: "MNT",
|
84
|
-
# MaximumValueToSell: 100000000,
|
85
|
-
#
|
86
|
-
# Nonce: 31,
|
87
|
-
# ChainId: 2,
|
88
|
-
# GasCoin: "MNT",
|
89
|
-
# GasPrice: 1,
|
90
|
-
# PrivateKey: "290cd647206bea71ec06d8dfacce30c872aea3fb1ea333b7f475b70467250ca0"
|
91
|
-
# }
|
92
|
-
#
|
93
|
-
# tx = Minter::TransactionFfi.SignBuyCoinTransaction(tx_params.to_json)
|
94
|
-
# Minter::Api::Client.new.send_transaction(transaction: tx)
|