abidump 0.1.0
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 +7 -0
- data/CHANGELOG.md +3 -0
- data/Manifest.txt +6 -0
- data/README.md +284 -0
- data/Rakefile +38 -0
- data/bin/abidump +17 -0
- data/lib/abidump.rb +196 -0
- metadata +104 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d4ffdb9017adf411045359acd07b66756f48f58339604ef43354e59b46430e27
|
4
|
+
data.tar.gz: 4b405724f017886a0fedb5662125358a068b916ae39b721abe476ed73e3b9c35
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7624386685f09523f23dc64b53cdecde1e88dae0b7c2c7e2ace3d8cc75b92f720ca1e49f50960b011538f84711ccc5380237803909f1cc2a748e50cfefadc0c5
|
7
|
+
data.tar.gz: 9f76dad3a9f5d83ae5db4ab1ce935c719edcbc9f7e5132567760dfefc8202841dd27b97e3b430207b4aeed5c22ea396ccfa0d590715c84c381f686d77aef5b14
|
data/CHANGELOG.md
ADDED
data/Manifest.txt
ADDED
data/README.md
ADDED
@@ -0,0 +1,284 @@
|
|
1
|
+
# abidump
|
2
|
+
|
3
|
+
|
4
|
+
abidump gem - command-line tool to dump / pretty print or (re)format application binary interfaces (abi) for Ethereum & Co.
|
5
|
+
|
6
|
+
|
7
|
+
* home :: [github.com/rubycocos/blockchain](https://github.com/rubycocos/blockchain)
|
8
|
+
* bugs :: [github.com/rubycocos/blockchain/issues](https://github.com/rubycocos/blockchain/issues)
|
9
|
+
* gem :: [rubygems.org/gems/abidump](https://rubygems.org/gems/abidump)
|
10
|
+
* rdoc :: [rubydoc.info/gems/abidump](http://rubydoc.info/gems/abidump)
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
## New to the Solidity (Contract) Programming Language?
|
15
|
+
|
16
|
+
See [**Awesome Solidity @ Open Blockchains »**](https://github.com/openblockchains/awesome-solidity)
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
|
24
|
+
Let's try a dry run:
|
25
|
+
|
26
|
+
```
|
27
|
+
$ abidump --help
|
28
|
+
```
|
29
|
+
|
30
|
+
resulting in:
|
31
|
+
|
32
|
+
```
|
33
|
+
==> welcome to the abidump tool
|
34
|
+
|
35
|
+
Usage: abidump [options]
|
36
|
+
-j, --json use json format (default: false)
|
37
|
+
-y, --yaml use yaml format (default: false)
|
38
|
+
-h, --help Prints this help
|
39
|
+
```
|
40
|
+
|
41
|
+
|
42
|
+
Let's pretty print (dump) the application binary interface (abi)
|
43
|
+
for punks v1 (anno 2017):
|
44
|
+
|
45
|
+
```
|
46
|
+
$ abidump ./address/0x6ba6f2207e343923ba692e5cae646fb0f566db8d/abi.json
|
47
|
+
```
|
48
|
+
|
49
|
+
resulting in:
|
50
|
+
|
51
|
+
|
52
|
+
```
|
53
|
+
==> summary:
|
54
|
+
29 abi item(s):
|
55
|
+
1 constructor
|
56
|
+
6 events
|
57
|
+
Assign, Transfer, PunkTransfer, PunkOffered, PunkBought, PunkNoLongerForSale
|
58
|
+
22 functions
|
59
|
+
name, reservePunksForOwner, punksOfferedForSale, totalSupply, decimals, withdraw, imageHash, nextPunkIndexToAssign, punkIndexToAddress, standard, balanceOf, buyPunk, transferPunk, symbol, numberOfPunksToReserve, numberOfPunksReserved, offerPunkForSaleToAddress, punksRemainingToAssign, offerPunkForSale, getPunk, pendingWithdrawals, punkNoLongerForSale
|
60
|
+
|
61
|
+
==> constructor:
|
62
|
+
payable: true
|
63
|
+
inputs (0):
|
64
|
+
[]
|
65
|
+
|
66
|
+
==> event Assign:
|
67
|
+
anonymous: false
|
68
|
+
inputs (2):
|
69
|
+
- type: address
|
70
|
+
indexed: true
|
71
|
+
name: to
|
72
|
+
- type: uint256
|
73
|
+
indexed: false
|
74
|
+
name: punkIndex
|
75
|
+
|
76
|
+
==> event Transfer:
|
77
|
+
anonymous: false
|
78
|
+
inputs (3):
|
79
|
+
- type: address
|
80
|
+
indexed: true
|
81
|
+
name: from
|
82
|
+
- type: address
|
83
|
+
indexed: true
|
84
|
+
name: to
|
85
|
+
- type: uint256
|
86
|
+
indexed: false
|
87
|
+
name: value
|
88
|
+
|
89
|
+
==> event PunkTransfer:
|
90
|
+
anonymous: false
|
91
|
+
inputs (3):
|
92
|
+
- type: address
|
93
|
+
indexed: true
|
94
|
+
name: from
|
95
|
+
- type: address
|
96
|
+
indexed: true
|
97
|
+
name: to
|
98
|
+
- type: uint256
|
99
|
+
indexed: false
|
100
|
+
name: punkIndex
|
101
|
+
|
102
|
+
...
|
103
|
+
|
104
|
+
==> function name:
|
105
|
+
constant: true
|
106
|
+
payable: false
|
107
|
+
inputs (0):
|
108
|
+
[]
|
109
|
+
outputs (1):
|
110
|
+
- type: string
|
111
|
+
name: _
|
112
|
+
|
113
|
+
==> function reservePunksForOwner:
|
114
|
+
constant: false
|
115
|
+
payable: false
|
116
|
+
inputs (1):
|
117
|
+
- type: uint256
|
118
|
+
name: maxForThisRun
|
119
|
+
outputs (0):
|
120
|
+
[]
|
121
|
+
|
122
|
+
==> function punksOfferedForSale:
|
123
|
+
constant: true
|
124
|
+
payable: false
|
125
|
+
inputs (1):
|
126
|
+
- type: uint256
|
127
|
+
name: _
|
128
|
+
outputs (5):
|
129
|
+
- type: bool
|
130
|
+
name: isForSale
|
131
|
+
- type: uint256
|
132
|
+
name: punkIndex
|
133
|
+
- type: address
|
134
|
+
name: seller
|
135
|
+
- type: uint256
|
136
|
+
name: minValue
|
137
|
+
- type: address
|
138
|
+
name: onlySellTo
|
139
|
+
|
140
|
+
...
|
141
|
+
```
|
142
|
+
|
143
|
+
|
144
|
+
Let's try to dump (pretty print) the
|
145
|
+
application binary interface (abi)
|
146
|
+
for punk blocks (anno 2022):
|
147
|
+
|
148
|
+
```
|
149
|
+
$ abidump ./address/0x58e90596c2065befd3060767736c829c18f3474c/abi.json
|
150
|
+
```
|
151
|
+
|
152
|
+
resulting in:
|
153
|
+
|
154
|
+
```
|
155
|
+
==> summary:
|
156
|
+
11 abi item(s):
|
157
|
+
1 constructor
|
158
|
+
1 event
|
159
|
+
NewBlock
|
160
|
+
9 functions
|
161
|
+
blocks, getBlocks, index, nextId, registerBlock, svgFromIDs, svgFromKeys, svgFromNames, svgFromPunkID
|
162
|
+
|
163
|
+
==> constructor:
|
164
|
+
stateMutability: nonpayable
|
165
|
+
inputs (0):
|
166
|
+
[]
|
167
|
+
|
168
|
+
==> event NewBlock:
|
169
|
+
anonymous: false
|
170
|
+
inputs (3):
|
171
|
+
- type: address
|
172
|
+
indexed: false
|
173
|
+
name: _
|
174
|
+
- type: uint256
|
175
|
+
indexed: false
|
176
|
+
name: _
|
177
|
+
- type: string
|
178
|
+
indexed: false
|
179
|
+
name: _
|
180
|
+
|
181
|
+
==> function blocks:
|
182
|
+
stateMutability: view
|
183
|
+
inputs (1):
|
184
|
+
- type: bytes32
|
185
|
+
name: _
|
186
|
+
outputs (3):
|
187
|
+
- type: uint8 (enum PunkBlocks.Layer)
|
188
|
+
name: layer
|
189
|
+
- type: bytes
|
190
|
+
name: dataMale
|
191
|
+
- type: bytes
|
192
|
+
name: dataFemale
|
193
|
+
|
194
|
+
==> function getBlocks:
|
195
|
+
stateMutability: view
|
196
|
+
inputs (2):
|
197
|
+
- type: uint256
|
198
|
+
name: _fromID
|
199
|
+
- type: uint256
|
200
|
+
name: _count
|
201
|
+
outputs (2):
|
202
|
+
- type: tuple[] (struct PunkBlocks.Block[])
|
203
|
+
name: _
|
204
|
+
components:
|
205
|
+
- type: uint8 (enum PunkBlocks.Layer)
|
206
|
+
name: layer
|
207
|
+
- type: bytes
|
208
|
+
name: dataMale
|
209
|
+
- type: bytes
|
210
|
+
name: dataFemale
|
211
|
+
- type: uint256
|
212
|
+
name: _
|
213
|
+
|
214
|
+
==> function index:
|
215
|
+
stateMutability: view
|
216
|
+
inputs (1):
|
217
|
+
- type: uint256
|
218
|
+
name: _
|
219
|
+
outputs (1):
|
220
|
+
- type: bytes32
|
221
|
+
name: _
|
222
|
+
|
223
|
+
==> function nextId:
|
224
|
+
stateMutability: view
|
225
|
+
inputs (0):
|
226
|
+
[]
|
227
|
+
outputs (1):
|
228
|
+
- type: uint256
|
229
|
+
name: _
|
230
|
+
|
231
|
+
==> function registerBlock:
|
232
|
+
stateMutability: nonpayable
|
233
|
+
inputs (4):
|
234
|
+
- type: bytes
|
235
|
+
name: _dataMale
|
236
|
+
- type: bytes
|
237
|
+
name: _dataFemale
|
238
|
+
- type: uint8
|
239
|
+
name: _layer
|
240
|
+
- type: string
|
241
|
+
name: _name
|
242
|
+
outputs (0):
|
243
|
+
[]
|
244
|
+
|
245
|
+
==> function svgFromIDs:
|
246
|
+
stateMutability: view
|
247
|
+
inputs (1):
|
248
|
+
- type: uint256[]
|
249
|
+
name: _ids
|
250
|
+
outputs (1):
|
251
|
+
- type: string
|
252
|
+
name: _
|
253
|
+
|
254
|
+
...
|
255
|
+
```
|
256
|
+
|
257
|
+
|
258
|
+
and so on.
|
259
|
+
|
260
|
+
|
261
|
+
Bonus - Using the `-j / --json` switch / flag
|
262
|
+
or `-y / --yaml` you can (re)export or (re)format
|
263
|
+
the application binary interface (abi)
|
264
|
+
to pretty printed json or yaml. Example.
|
265
|
+
|
266
|
+
|
267
|
+
```
|
268
|
+
$ abidump --json ./address/0x58e90596c2065befd3060767736c829c18f3474c/abi.json
|
269
|
+
$ abidump --yaml ./address/0x58e90596c2065befd3060767736c829c18f3474c/abi.json
|
270
|
+
```
|
271
|
+
|
272
|
+
|
273
|
+
|
274
|
+
## License
|
275
|
+
|
276
|
+
The scripts are dedicated to the public domain.
|
277
|
+
Use it as you please with no restrictions whatsoever.
|
278
|
+
|
279
|
+
|
280
|
+
## Questions? Comments?
|
281
|
+
|
282
|
+
|
283
|
+
Post them on the [D.I.Y. Punk (Pixel) Art reddit](https://old.reddit.com/r/DIYPunkArt). Thanks.
|
284
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'hoe'
|
2
|
+
|
3
|
+
|
4
|
+
###
|
5
|
+
# hack/ quick fix for broken intuit_values - overwrite with dummy
|
6
|
+
class Hoe
|
7
|
+
def intuit_values( input ); end
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
Hoe.spec 'abidump' do
|
12
|
+
|
13
|
+
self.version = '0.1.0'
|
14
|
+
|
15
|
+
self.summary = "abidump gem - command-line tool to dump / pretty print or (re)format application binary interfaces (abi) for Ethereum & Co."
|
16
|
+
self.description = summary
|
17
|
+
|
18
|
+
self.urls = { home: 'https://github.com/rubycocos/blockchain' }
|
19
|
+
|
20
|
+
self.author = 'Gerald Bauer'
|
21
|
+
self.email = 'wwwmake@googlegroups.com'
|
22
|
+
|
23
|
+
# switch extension to .markdown for gihub formatting
|
24
|
+
self.readme_file = 'README.md'
|
25
|
+
self.history_file = 'CHANGELOG.md'
|
26
|
+
|
27
|
+
self.extra_deps = [
|
28
|
+
['cocos'],
|
29
|
+
]
|
30
|
+
|
31
|
+
self.licenses = ['Public Domain']
|
32
|
+
|
33
|
+
self.spec_extras = {
|
34
|
+
required_ruby_version: '>= 2.3'
|
35
|
+
}
|
36
|
+
|
37
|
+
end
|
38
|
+
|
data/bin/abidump
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
###################
|
4
|
+
# == DEV TIPS:
|
5
|
+
#
|
6
|
+
# For local testing run like:
|
7
|
+
#
|
8
|
+
# ruby -Ilib bin/abidump
|
9
|
+
#
|
10
|
+
# Set the executable bit in Linux. Example:
|
11
|
+
#
|
12
|
+
# % chmod a+x bin/abidump
|
13
|
+
#
|
14
|
+
|
15
|
+
require 'abidump'
|
16
|
+
|
17
|
+
ABIDump::Tool.main
|
data/lib/abidump.rb
ADDED
@@ -0,0 +1,196 @@
|
|
1
|
+
require 'cocos'
|
2
|
+
require 'optparse'
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
module ABIDump
|
7
|
+
|
8
|
+
class Tool
|
9
|
+
|
10
|
+
def self.main( args=ARGV )
|
11
|
+
puts "==> welcome to abidump tool with args:"
|
12
|
+
pp args
|
13
|
+
|
14
|
+
options = {
|
15
|
+
}
|
16
|
+
|
17
|
+
parser = OptionParser.new do |opts|
|
18
|
+
|
19
|
+
opts.on("-j", "--json", "use json format (default: false)") do |value|
|
20
|
+
options[ :json] = true
|
21
|
+
end
|
22
|
+
|
23
|
+
opts.on("-y", "--yaml", "use yaml format (default: false)") do |value|
|
24
|
+
options[ :yaml] = true
|
25
|
+
end
|
26
|
+
|
27
|
+
opts.on("-h", "--help", "Prints this help") do
|
28
|
+
puts opts
|
29
|
+
exit
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
parser.parse!( args )
|
34
|
+
puts "options:"
|
35
|
+
pp options
|
36
|
+
|
37
|
+
puts "args:"
|
38
|
+
pp args
|
39
|
+
|
40
|
+
if args.size < 1
|
41
|
+
puts "!! ERROR - no abi contract path found - use $ abidump <path>"
|
42
|
+
puts ""
|
43
|
+
exit
|
44
|
+
end
|
45
|
+
|
46
|
+
path = args[0]
|
47
|
+
|
48
|
+
## read data
|
49
|
+
data = read_json( path )
|
50
|
+
|
51
|
+
if options[ :yaml ]
|
52
|
+
do_dump_yaml( data )
|
53
|
+
elsif options[ :json ]
|
54
|
+
do_dump_json( data )
|
55
|
+
else
|
56
|
+
do_dump( data )
|
57
|
+
end
|
58
|
+
|
59
|
+
puts "bye"
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
def self.do_dump_yaml( data )
|
66
|
+
buf = YAML.dump( data )
|
67
|
+
puts buf
|
68
|
+
end
|
69
|
+
|
70
|
+
def self.do_dump_json( data )
|
71
|
+
buf = JSON.pretty_generate( data )
|
72
|
+
puts buf
|
73
|
+
end
|
74
|
+
|
75
|
+
def self._norm_types( data )
|
76
|
+
## hack: remove items and re-add to sort key order!!!
|
77
|
+
##
|
78
|
+
## clean-up / normalize type
|
79
|
+
## if type && internalType is the same
|
80
|
+
## than delete internalType for now - why? why not?
|
81
|
+
data.each do |h|
|
82
|
+
name = h.delete('name')
|
83
|
+
type = h.delete('type')
|
84
|
+
internal_type = h.delete('internalType')
|
85
|
+
indexed = h.delete('indexed')
|
86
|
+
components = h.delete('components')
|
87
|
+
|
88
|
+
unless h.empty?
|
89
|
+
puts "!! ERROR - found unknown props in abi inputs/outpus:"
|
90
|
+
pp h
|
91
|
+
exit 1
|
92
|
+
end
|
93
|
+
|
94
|
+
h['type'] = type if type
|
95
|
+
if type && internal_type && type != internal_type
|
96
|
+
h['type'] += " (#{internal_type})"
|
97
|
+
end
|
98
|
+
|
99
|
+
h['indexed'] = indexed unless indexed.nil? ## note: indexed is a true/false prop
|
100
|
+
|
101
|
+
## note: change empty name e.g. '' to _ - why? why not?
|
102
|
+
if name
|
103
|
+
h['name'] = name.empty? ? "_" : name
|
104
|
+
end
|
105
|
+
|
106
|
+
if components
|
107
|
+
h['components'] = components
|
108
|
+
_norm_types( components)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
|
114
|
+
def self._dump( data, indent: 2 )
|
115
|
+
buf = YAML.dump( data )
|
116
|
+
buf = buf.sub( /^---\n?/, '' ) ## remove leading --- if present
|
117
|
+
|
118
|
+
# puts "---> debug:"
|
119
|
+
# pp buf
|
120
|
+
# puts "<---"
|
121
|
+
|
122
|
+
buf.each_line do |line|
|
123
|
+
print ' ' * indent
|
124
|
+
puts line
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
|
129
|
+
def self.do_dump( data )
|
130
|
+
|
131
|
+
## calc summary stats
|
132
|
+
counter = {}
|
133
|
+
data.each do |h|
|
134
|
+
type = h['type']
|
135
|
+
stat = counter[ type ] ||= { count: 0, names: [] }
|
136
|
+
stat[:count] += 1
|
137
|
+
|
138
|
+
name = h['name']
|
139
|
+
stat[:names] << name if name
|
140
|
+
end
|
141
|
+
|
142
|
+
|
143
|
+
data.each do |h|
|
144
|
+
type = h.delete('type')
|
145
|
+
name = h.delete('name')
|
146
|
+
inputs = h.delete('inputs')
|
147
|
+
outputs = h.delete('outputs')
|
148
|
+
|
149
|
+
puts
|
150
|
+
print "==> #{type}"
|
151
|
+
print " #{name}" if name
|
152
|
+
puts ":"
|
153
|
+
_dump( h, indent: 6 )
|
154
|
+
|
155
|
+
if inputs
|
156
|
+
puts " inputs (#{inputs.size}):"
|
157
|
+
_norm_types( inputs )
|
158
|
+
_dump( inputs, indent: 6 )
|
159
|
+
end
|
160
|
+
|
161
|
+
if outputs
|
162
|
+
puts " outputs (#{outputs.size}):"
|
163
|
+
_norm_types( outputs )
|
164
|
+
_dump( outputs, indent: 6 )
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
## always dump stats at the end - why? why not?
|
169
|
+
puts
|
170
|
+
puts "==> summary: "
|
171
|
+
puts " #{data.size} abi item(s):"
|
172
|
+
counter.each do |(type, h)|
|
173
|
+
count = h[:count]
|
174
|
+
print " #{count}"
|
175
|
+
print " #{type}"
|
176
|
+
print "s" if count > 1
|
177
|
+
print "\n"
|
178
|
+
|
179
|
+
names = h[:names]
|
180
|
+
if names.size > 0
|
181
|
+
print " "
|
182
|
+
print names.join( ', ' )
|
183
|
+
print "\n"
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end # class Tool
|
188
|
+
end # module ABIDump
|
189
|
+
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
##############
|
194
|
+
# add alternate spellings - why? why not?
|
195
|
+
AbiDump = ABIDump
|
196
|
+
Abidump = ABIDump
|
metadata
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: abidump
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Gerald Bauer
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-02-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: cocos
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rdoc
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4.0'
|
34
|
+
- - "<"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '7'
|
37
|
+
type: :development
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '4.0'
|
44
|
+
- - "<"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '7'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: hoe
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '3.23'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '3.23'
|
61
|
+
description: abidump gem - command-line tool to dump / pretty print or (re)format
|
62
|
+
application binary interfaces (abi) for Ethereum & Co.
|
63
|
+
email: wwwmake@googlegroups.com
|
64
|
+
executables:
|
65
|
+
- abidump
|
66
|
+
extensions: []
|
67
|
+
extra_rdoc_files:
|
68
|
+
- CHANGELOG.md
|
69
|
+
- Manifest.txt
|
70
|
+
- README.md
|
71
|
+
files:
|
72
|
+
- CHANGELOG.md
|
73
|
+
- Manifest.txt
|
74
|
+
- README.md
|
75
|
+
- Rakefile
|
76
|
+
- bin/abidump
|
77
|
+
- lib/abidump.rb
|
78
|
+
homepage: https://github.com/rubycocos/blockchain
|
79
|
+
licenses:
|
80
|
+
- Public Domain
|
81
|
+
metadata: {}
|
82
|
+
post_install_message:
|
83
|
+
rdoc_options:
|
84
|
+
- "--main"
|
85
|
+
- README.md
|
86
|
+
require_paths:
|
87
|
+
- lib
|
88
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '2.3'
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
requirements: []
|
99
|
+
rubygems_version: 3.3.7
|
100
|
+
signing_key:
|
101
|
+
specification_version: 4
|
102
|
+
summary: abidump gem - command-line tool to dump / pretty print or (re)format application
|
103
|
+
binary interfaces (abi) for Ethereum & Co.
|
104
|
+
test_files: []
|