trident_assistant 0.1.0 → 0.1.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.
- checksums.yaml +4 -4
- data/README.md +70 -5
- data/lib/trident_assistant/api/order.rb +4 -2
- data/lib/trident_assistant/cli/base.rb +2 -10
- data/lib/trident_assistant/cli/collectible.rb +7 -7
- data/lib/trident_assistant/cli/nfo.rb +25 -13
- data/lib/trident_assistant/cli/order.rb +5 -24
- data/lib/trident_assistant/cli.rb +1 -2
- data/lib/trident_assistant/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83a47a5a2a8383565a259f1fb9017d257f0eb2c4d52c2dfb80e7d46fab64ed70
|
4
|
+
data.tar.gz: 631300add4c04e26e00c235e8c9157c7d95334cb264432caac0c3edcf05873b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a082212e1eecb460dad1baa94f7fe48c7795f6e9631b8cefae1b8053970f2afc09b2386ad607e3cf1d7991641e1360534a5c7274820e9538f9d43dc143adc17a
|
7
|
+
data.tar.gz: b87d7fa6949c0532a74cf9a0ecdcd4eb492eeae15fffe466e1c0acf00c48aff776c65bdbf0b405cb4681a7ec8adbf44ed6df726ae7f597fda588d25e09118be1
|
data/README.md
CHANGED
@@ -21,11 +21,76 @@ Commands:
|
|
21
21
|
ta version # Display TridentAssistant version
|
22
22
|
|
23
23
|
Options:
|
24
|
-
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
-E, [--endpoint=ENDPOINT] # Specify an endpoint
|
25
|
+
-P, [--pretty], [--no-pretty] # Print output in pretty
|
26
|
+
# Default: true
|
27
|
+
```
|
28
|
+
|
29
|
+
### Collectible
|
30
|
+
|
31
|
+
$ ta collectible
|
32
|
+
|
33
|
+
```
|
34
|
+
Commands:
|
35
|
+
ta collectible airdrop COLLECTION, TOKEN k, --keystore=KEYSTORE # airdrop NFT
|
36
|
+
ta collectible bulkairdrop DIR k, --keystore=KEYSTORE # Airdrop NFT in bulk
|
37
|
+
ta collectible deposit COLLECTION TOKEN k, --keystore=KEYSTORE # deposit NFT
|
38
|
+
ta collectible help [COMMAND] # Describe subcommands or one specific subcommand
|
39
|
+
ta collectible index k, --keystore=KEYSTORE # query collectibles in wallet
|
40
|
+
ta collectible show COLLECTION TOKEN k, --keystore=KEYSTORE # query collectible
|
41
|
+
ta collectible withdraw COLLECTION TOKEN k, --keystore=KEYSTORE # withdraw NFT
|
42
|
+
```
|
43
|
+
|
44
|
+
### collection
|
45
|
+
|
46
|
+
$ ta collection
|
47
|
+
|
48
|
+
```
|
49
|
+
Commands:
|
50
|
+
ta collection create k, --keystore=KEYSTORE # create a new collection
|
51
|
+
ta collection help [COMMAND] # Describe subcommands or one specific subcommand
|
52
|
+
ta collection index k, --keystore=KEYSTORE # query all collections
|
53
|
+
ta collection show ID k, --keystore=KEYSTORE # query a collection
|
54
|
+
ta collection update ID k, --keystore=KEYSTORE # update collection
|
55
|
+
```
|
56
|
+
|
57
|
+
### metadata
|
58
|
+
|
59
|
+
$ ta metadata
|
60
|
+
|
61
|
+
```
|
62
|
+
Commands:
|
63
|
+
ta metadata help [COMMAND] # Describe subcommands or one specific subcommand
|
64
|
+
ta metadata new k, --keystore=KEYSTORE # generate a new metadata
|
65
|
+
ta metadata show METAHASH k, --keystore=KEYSTORE # query metadata via metahash
|
66
|
+
ta metadata upload k, --keystore=KEYSTORE m, --metadata=METADATA # upload metadata to Trident
|
67
|
+
```
|
68
|
+
|
69
|
+
### nfo
|
70
|
+
|
71
|
+
$ ta nfo
|
72
|
+
|
73
|
+
```
|
74
|
+
Commands:
|
75
|
+
ta nfo bulkmint DIR k, --keystore=KEYSTORE # Mint NFT in bulk
|
76
|
+
ta nfo help [COMMAND] # Describe subcommands or one specific subcommand
|
77
|
+
ta nfo mint k, --keystore=KEYSTORE m, --metadata=METADATA # Mint NFT from NFO
|
78
|
+
```
|
79
|
+
|
80
|
+
### order
|
81
|
+
|
82
|
+
$ ta order
|
83
|
+
|
84
|
+
```
|
85
|
+
Commands:
|
86
|
+
ta order auction # auction NFT
|
87
|
+
ta order bid # bid NFT
|
88
|
+
ta order cancel ID k, --keystore=KEYSTORE # cancel order
|
89
|
+
ta order fill ID k, --keystore=KEYSTORE # fill order
|
90
|
+
ta order help [COMMAND] # Describe subcommands or one specific subcommand
|
91
|
+
ta order index k, --keystore=KEYSTORE # list orders
|
92
|
+
ta order sell # sell NFT at fixed price
|
93
|
+
ta order show ID k, --keystore=KEYSTORE # query order
|
29
94
|
```
|
30
95
|
|
31
96
|
## Development
|
@@ -8,16 +8,18 @@ module TridentAssistant
|
|
8
8
|
MINIMUM_AMOUNT = 0.000_000_01
|
9
9
|
|
10
10
|
def orders(**kwargs)
|
11
|
+
authorization = mixin_bot ? mixin_bot.access_token("GET", "/me") : ""
|
11
12
|
client.get(
|
12
13
|
"api/orders",
|
13
14
|
headers: {
|
14
|
-
Authorization: "Bearer #{
|
15
|
+
Authorization: "Bearer #{authorization}"
|
15
16
|
},
|
16
17
|
params: {
|
17
18
|
collection_id: kwargs[:collection_id],
|
18
19
|
metahash: kwargs[:metahash],
|
19
20
|
state: kwargs[:state],
|
20
|
-
type: kwargs[:type]
|
21
|
+
type: kwargs[:type],
|
22
|
+
page: kwargs[:page]
|
21
23
|
}
|
22
24
|
)
|
23
25
|
end
|
@@ -14,16 +14,8 @@ module TridentAssistant
|
|
14
14
|
def initialize(*args)
|
15
15
|
super
|
16
16
|
|
17
|
-
endpoint =
|
18
|
-
|
19
|
-
options[:endpoint]
|
20
|
-
else
|
21
|
-
{
|
22
|
-
prod: "https://thetrident.one",
|
23
|
-
test: "https://trident-test.onrender.com",
|
24
|
-
dev: "http://localhost:3000"
|
25
|
-
}[options[:environment].to_sym]
|
26
|
-
end
|
17
|
+
endpoint = options[:endpoint] || "https://thetrident.one"
|
18
|
+
|
27
19
|
@api =
|
28
20
|
begin
|
29
21
|
TridentAssistant::API.new(
|
@@ -60,18 +60,19 @@ module TridentAssistant
|
|
60
60
|
raise "#{dir} is not a directory" unless Dir.exist?(dir)
|
61
61
|
|
62
62
|
Dir.glob("#{dir}/*.json").each do |file|
|
63
|
+
log "-" * 80
|
63
64
|
log UI.fmt("{{v}} found #{file}")
|
64
65
|
data = TridentAssistant::Utils.parse_json file
|
65
|
-
metadata = TridentAssistant::Utils.parse_metadata data
|
66
|
-
log UI.fmt("{{v}} metadata parsed")
|
67
|
-
metadata.validate!
|
68
|
-
log UI.fmt("{{v}} metadata validated")
|
69
|
-
|
70
66
|
if data.dig("_airdrop", "hash").present?
|
71
67
|
log UI.fmt("{{v}} NFT already transferred")
|
72
68
|
next
|
73
69
|
end
|
74
70
|
|
71
|
+
metadata = TridentAssistant::Utils.parse_metadata data
|
72
|
+
log UI.fmt("{{v}} metadata parsed")
|
73
|
+
metadata.validate!
|
74
|
+
log UI.fmt("{{v}} metadata validated")
|
75
|
+
|
75
76
|
receiver_id = data.dig("_airdrop", "receiver_id")
|
76
77
|
start_at = data.dig("_airdrop", "start_at")
|
77
78
|
log UI.fmt("{{v}} airdrop receiver_id: #{receiver_id}")
|
@@ -93,8 +94,7 @@ module TridentAssistant
|
|
93
94
|
|
94
95
|
private
|
95
96
|
|
96
|
-
def _airdrop
|
97
|
-
end
|
97
|
+
def _airdrop; end
|
98
98
|
end
|
99
99
|
end
|
100
100
|
end
|
@@ -22,6 +22,7 @@ module TridentAssistant
|
|
22
22
|
raise "#{dir} is not a directory" unless Dir.exist?(dir)
|
23
23
|
|
24
24
|
Dir.glob("#{dir}/*.json").each do |file|
|
25
|
+
log "-" * 80
|
25
26
|
log UI.fmt("{{v}} found #{file}")
|
26
27
|
_mint file
|
27
28
|
rescue TridentAssistant::Utils::Metadata::InvalidFormatError, JSON::ParserError, Client::RequestError,
|
@@ -69,23 +70,34 @@ module TridentAssistant
|
|
69
70
|
# pay to NFO
|
70
71
|
trace_id = data.dig("_mint", "trace_id") || SecureRandom.uuid
|
71
72
|
memo = api.mixin_bot.nft_memo metadata.collection[:id], metadata.token[:id].to_i, metadata.metahash
|
72
|
-
payment =
|
73
|
-
api.mixin_bot.create_multisig_transaction(
|
74
|
-
api.keystore[:pin],
|
75
|
-
{
|
76
|
-
asset_id: TridentAssistant::Utils::MINT_ASSET_ID,
|
77
|
-
trace_id: trace_id,
|
78
|
-
amount: TridentAssistant::Utils::MINT_AMOUNT,
|
79
|
-
memo: memo,
|
80
|
-
receivers: TridentAssistant::Utils::NFO_MTG[:members],
|
81
|
-
threshold: TridentAssistant::Utils::NFO_MTG[:threshold]
|
82
|
-
}
|
83
|
-
)
|
84
73
|
|
85
74
|
data["_mint"]["trace_id"] = trace_id
|
86
|
-
|
75
|
+
10.times do
|
76
|
+
payment =
|
77
|
+
begin
|
78
|
+
api.mixin_bot.create_multisig_transaction(
|
79
|
+
api.keystore[:pin],
|
80
|
+
{
|
81
|
+
asset_id: TridentAssistant::Utils::MINT_ASSET_ID,
|
82
|
+
trace_id: trace_id,
|
83
|
+
amount: TridentAssistant::Utils::MINT_AMOUNT,
|
84
|
+
memo: memo,
|
85
|
+
receivers: TridentAssistant::Utils::NFO_MTG[:members],
|
86
|
+
threshold: TridentAssistant::Utils::NFO_MTG[:threshold]
|
87
|
+
}
|
88
|
+
)
|
89
|
+
rescue MixinBot::InsufficientPoolError => e
|
90
|
+
log UI.fmt("{{x}} #{e.inspect}")
|
91
|
+
log "Retrying to pay..."
|
92
|
+
sleep 0.5
|
93
|
+
nil
|
94
|
+
end
|
95
|
+
|
96
|
+
next if payment.blank? || payment["errors"].present?
|
97
|
+
|
87
98
|
log UI.fmt("{{v}} NFT mint payment paid: #{payment["data"]}")
|
88
99
|
data["_mint"]["token_id"] = token_id
|
100
|
+
break
|
89
101
|
end
|
90
102
|
|
91
103
|
log UI.fmt("{{v}} NFT successfully minted")
|
@@ -10,17 +10,20 @@ module TridentAssistant
|
|
10
10
|
MINIMUM_AMOUNT = 0.000_000_01
|
11
11
|
|
12
12
|
desc "index", "list orders"
|
13
|
-
option :keystore, type: :string, aliases: "k", required:
|
13
|
+
option :keystore, type: :string, aliases: "k", required: false,
|
14
|
+
desc: "keystore or keystore.json file of Mixin bot"
|
14
15
|
option :collection, type: :string, aliases: "c", required: false, desc: "collection ID"
|
15
16
|
option :metahash, type: :string, aliases: "m", required: false, desc: "metahash"
|
16
17
|
option :type, type: :string, aliases: "t", required: false, desc: "ask | bid | auction"
|
17
18
|
option :state, type: :string, aliases: "s", required: false, desc: "open | completed"
|
19
|
+
option :page, type: :numeric, aliases: "p", required: false, desc: "page"
|
18
20
|
def index
|
19
21
|
log api.orders(
|
20
22
|
collection_id: options[:collection],
|
21
23
|
metahash: options[:metahash],
|
22
24
|
state: options[:state],
|
23
|
-
type: options[:type]
|
25
|
+
type: options[:type],
|
26
|
+
page: options[:page]
|
24
27
|
)
|
25
28
|
end
|
26
29
|
|
@@ -50,28 +53,6 @@ module TridentAssistant
|
|
50
53
|
def cancel(id)
|
51
54
|
log api.cancel_order id
|
52
55
|
end
|
53
|
-
|
54
|
-
desc "deposit TOKEN", "deposit NFT"
|
55
|
-
def deposit(token)
|
56
|
-
log api.deposit_nft token
|
57
|
-
end
|
58
|
-
|
59
|
-
desc "withdraw TOKEN", "withdraw NFT"
|
60
|
-
option :keystore, type: :string, aliases: "k", required: true, desc: "keystore or keystore.json file of Mixin bot"
|
61
|
-
def withdraw(token)
|
62
|
-
payment =
|
63
|
-
api.mixin_bot.create_multisig_transaction(
|
64
|
-
keystore[:pin],
|
65
|
-
asset_id: EXCHANGE_ASSET_ID,
|
66
|
-
amount: MINIMUM_AMOUNT,
|
67
|
-
receivers: TridentAssistant::Utils::TRIDENT_MTG[:members],
|
68
|
-
threshold: TridentAssistant::Utils::TRIDENT_MTG[:threshold],
|
69
|
-
memo: TridentAssistant::Utils::Memo.new(type: "W", token_id: token).encode,
|
70
|
-
trace_id: SecureRandom.uuid
|
71
|
-
)
|
72
|
-
|
73
|
-
log UI.fmt("{{v}} payment: #{payment}")
|
74
|
-
end
|
75
56
|
end
|
76
57
|
end
|
77
58
|
end
|
@@ -13,9 +13,8 @@ module TridentAssistant
|
|
13
13
|
module CLI
|
14
14
|
# Main commands of CLI
|
15
15
|
class Command < TridentAssistant::CLI::Base
|
16
|
-
class_option :pretty, type: :boolean, aliases: "-p", default: true, desc: "Print output in pretty"
|
17
|
-
class_option :environment, type: :string, aliases: "-e", default: "prod", desc: "prod | test | dev"
|
18
16
|
class_option :endpoint, type: :string, aliases: "-E", desc: "Specify an endpoint"
|
17
|
+
class_option :pretty, type: :boolean, aliases: "-P", default: true, desc: "Print output in pretty"
|
19
18
|
|
20
19
|
desc "version", "Display TridentAssistant version"
|
21
20
|
def version
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trident_assistant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- an-lee
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-04-
|
11
|
+
date: 2022-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mixin_bot
|