nanocurrency 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/.gitignore +11 -0
- data/.rspec +3 -0
- data/.travis.yml +7 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +40 -0
- data/LICENSE.txt +21 -0
- data/README.md +43 -0
- data/Rakefile +16 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/ext/.DS_Store +0 -0
- data/ext/nanocurrency_ext/blake2-config.h +72 -0
- data/ext/nanocurrency_ext/blake2-impl.h +160 -0
- data/ext/nanocurrency_ext/blake2.h +195 -0
- data/ext/nanocurrency_ext/blake2b-load-sse2.h +68 -0
- data/ext/nanocurrency_ext/blake2b-load-sse41.h +402 -0
- data/ext/nanocurrency_ext/blake2b-ref.c +373 -0
- data/ext/nanocurrency_ext/blake2b-round.h +157 -0
- data/ext/nanocurrency_ext/curve25519-donna-32bit.h +579 -0
- data/ext/nanocurrency_ext/curve25519-donna-64bit.h +413 -0
- data/ext/nanocurrency_ext/curve25519-donna-helpers.h +67 -0
- data/ext/nanocurrency_ext/curve25519-donna-sse2.h +1112 -0
- data/ext/nanocurrency_ext/ed25519-donna-32bit-sse2.h +513 -0
- data/ext/nanocurrency_ext/ed25519-donna-32bit-tables.h +61 -0
- data/ext/nanocurrency_ext/ed25519-donna-64bit-sse2.h +436 -0
- data/ext/nanocurrency_ext/ed25519-donna-64bit-tables.h +53 -0
- data/ext/nanocurrency_ext/ed25519-donna-64bit-x86-32bit.h +435 -0
- data/ext/nanocurrency_ext/ed25519-donna-64bit-x86.h +351 -0
- data/ext/nanocurrency_ext/ed25519-donna-basepoint-table.h +259 -0
- data/ext/nanocurrency_ext/ed25519-donna-batchverify.h +275 -0
- data/ext/nanocurrency_ext/ed25519-donna-impl-base.h +364 -0
- data/ext/nanocurrency_ext/ed25519-donna-impl-sse2.h +390 -0
- data/ext/nanocurrency_ext/ed25519-donna-portable-identify.h +103 -0
- data/ext/nanocurrency_ext/ed25519-donna-portable.h +135 -0
- data/ext/nanocurrency_ext/ed25519-donna.h +115 -0
- data/ext/nanocurrency_ext/ed25519-hash-custom.c +28 -0
- data/ext/nanocurrency_ext/ed25519-hash-custom.h +30 -0
- data/ext/nanocurrency_ext/ed25519-hash.h +219 -0
- data/ext/nanocurrency_ext/ed25519-randombytes-custom.h +10 -0
- data/ext/nanocurrency_ext/ed25519-randombytes.h +91 -0
- data/ext/nanocurrency_ext/ed25519.c +150 -0
- data/ext/nanocurrency_ext/ed25519.h +30 -0
- data/ext/nanocurrency_ext/extconf.rb +3 -0
- data/ext/nanocurrency_ext/fuzz/README.md +173 -0
- data/ext/nanocurrency_ext/fuzz/build-nix.php +134 -0
- data/ext/nanocurrency_ext/fuzz/curve25519-ref10.c +1272 -0
- data/ext/nanocurrency_ext/fuzz/curve25519-ref10.h +8 -0
- data/ext/nanocurrency_ext/fuzz/ed25519-donna-sse2.c +3 -0
- data/ext/nanocurrency_ext/fuzz/ed25519-donna.c +1 -0
- data/ext/nanocurrency_ext/fuzz/ed25519-donna.h +34 -0
- data/ext/nanocurrency_ext/fuzz/ed25519-ref10.c +4647 -0
- data/ext/nanocurrency_ext/fuzz/ed25519-ref10.h +9 -0
- data/ext/nanocurrency_ext/fuzz/fuzz-curve25519.c +172 -0
- data/ext/nanocurrency_ext/fuzz/fuzz-ed25519.c +219 -0
- data/ext/nanocurrency_ext/modm-donna-32bit.h +469 -0
- data/ext/nanocurrency_ext/modm-donna-64bit.h +361 -0
- data/ext/nanocurrency_ext/rbext.c +164 -0
- data/ext/nanocurrency_ext/regression.h +1024 -0
- data/lib/nano/account.rb +59 -0
- data/lib/nano/base32.rb +87 -0
- data/lib/nano/block.rb +142 -0
- data/lib/nano/check.rb +65 -0
- data/lib/nano/conversion.rb +102 -0
- data/lib/nano/hash.rb +43 -0
- data/lib/nano/key.rb +69 -0
- data/lib/nano/utils.rb +45 -0
- data/lib/nano/work.rb +51 -0
- data/lib/nanocurrency.rb +7 -0
- data/lib/nanocurrency/version.rb +3 -0
- data/lib/nanocurrency_ext.bundle +0 -0
- data/nanocurrency.gemspec +44 -0
- metadata +192 -0
data/lib/nano/hash.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
require "blake2b"
|
2
|
+
require_relative "./conversion"
|
3
|
+
require_relative "./utils"
|
4
|
+
|
5
|
+
module Nano
|
6
|
+
##
|
7
|
+
# The Hash module is responsible for producing a block hash given a
|
8
|
+
# Block object.
|
9
|
+
module Hash
|
10
|
+
extend self
|
11
|
+
|
12
|
+
STATE_BLOCK_PREAMBLE_BITS = Nano::Utils.bytes_to_bin(
|
13
|
+
Array.new(32) {|i| i == 31 ? 6 : 0}
|
14
|
+
).freeze
|
15
|
+
|
16
|
+
##
|
17
|
+
# This method will produce a hash for the given block
|
18
|
+
#
|
19
|
+
# @param block [Nano::Block] The block to derive a hash from
|
20
|
+
#
|
21
|
+
# @return [String] The hash in a hexadecimal formatted string.
|
22
|
+
def hash_block(block)
|
23
|
+
account_bits = Nano::Utils.hex_to_bin(
|
24
|
+
Nano::Key.derive_public_key(block.account)
|
25
|
+
)
|
26
|
+
previous_bits = Nano::Utils.hex_to_bin(
|
27
|
+
block.previous
|
28
|
+
)
|
29
|
+
representative_bits = Nano::Utils.hex_to_bin(
|
30
|
+
Nano::Key.derive_public_key(block.representative)
|
31
|
+
)
|
32
|
+
balance_bits = Nano::Utils.hex_to_bin(
|
33
|
+
Nano::Unit.convert(block.balance, :raw, :hex)
|
34
|
+
)
|
35
|
+
link_bits = Nano::Utils.hex_to_bin(
|
36
|
+
block.link
|
37
|
+
)
|
38
|
+
bits = STATE_BLOCK_PREAMBLE_BITS + account_bits + previous_bits +
|
39
|
+
representative_bits + balance_bits + link_bits;
|
40
|
+
Blake2b.hex(bits).upcase
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/nano/key.rb
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
require "securerandom"
|
2
|
+
require "blake2b"
|
3
|
+
require "nanocurrency_ext"
|
4
|
+
require_relative "./account"
|
5
|
+
require_relative "./check"
|
6
|
+
|
7
|
+
module Nano
|
8
|
+
##
|
9
|
+
# The key module is responsible for handling the key and seed based
|
10
|
+
# operations in the Nano module.
|
11
|
+
module Key
|
12
|
+
extend self
|
13
|
+
|
14
|
+
##
|
15
|
+
# Generates a 32 byte seed as a hexidecimal string. Cryptographically
|
16
|
+
# secure.
|
17
|
+
# return [String] A 64 length string of hexidecimal.
|
18
|
+
def generate_seed
|
19
|
+
SecureRandom.hex(32)
|
20
|
+
end
|
21
|
+
|
22
|
+
##
|
23
|
+
# Derive a secret key from a seed, given an index.
|
24
|
+
# @param seed [String] The seed to generate the secret key from,
|
25
|
+
# in hexadecimal format
|
26
|
+
# @param index [Integer] The index to generate the secret key from
|
27
|
+
def derive_secret_key(seed, index)
|
28
|
+
raise(
|
29
|
+
ArgumentError, "Seed is invalid"
|
30
|
+
) unless Nano::Check.is_seed_valid?(seed)
|
31
|
+
raise(
|
32
|
+
ArgumentError, "Index is invalid"
|
33
|
+
) unless Nano::Check.is_index_valid?(index)
|
34
|
+
|
35
|
+
seed_bin = Nano::Utils.hex_to_bin(seed)
|
36
|
+
Blake2b.hex(seed_bin + [index].pack('L>'), Blake2b::Key.none, 32).upcase
|
37
|
+
end
|
38
|
+
|
39
|
+
def derive_public_key(input)
|
40
|
+
is_secret_key = Nano::Check.is_key?(input)
|
41
|
+
account = Nano::Account.from_address(input)
|
42
|
+
is_address = !account.nil?
|
43
|
+
raise ArgumentError, "Incorrect input" unless is_secret_key || is_address
|
44
|
+
|
45
|
+
if is_secret_key
|
46
|
+
res = NanocurrencyExt.public_key(Nano::Utils.hex_to_bin(input))
|
47
|
+
Nano::Utils.bin_to_hex(res).upcase
|
48
|
+
else
|
49
|
+
account.public_key
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def derive_address(public_key, prefix = "nano_")
|
54
|
+
is_public_key = Nano::Check.is_key?(public_key)
|
55
|
+
raise ArgumentError, "Incorrect key type" unless is_public_key
|
56
|
+
|
57
|
+
is_valid_prefix = prefix == "nano_" || prefix == "xrb_"
|
58
|
+
raise ArgumentError, "Invalid prefix" unless is_valid_prefix
|
59
|
+
|
60
|
+
public_key_bytes = Nano::Utils.hex_to_bytes public_key
|
61
|
+
public_key_enc = Nano::Base32.encode public_key_bytes
|
62
|
+
pk_bin = Nano::Utils.hex_to_bin(public_key)
|
63
|
+
checksum = Blake2b.hex(pk_bin, Blake2b::Key.none, 5)
|
64
|
+
checksum_bytes = Nano::Utils.hex_to_bytes(checksum).reverse
|
65
|
+
enc_chk = Nano::Base32.encode(checksum_bytes)
|
66
|
+
"#{prefix}#{public_key_enc}#{enc_chk}"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/nano/utils.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
module Nano
|
2
|
+
module Utils
|
3
|
+
extend self
|
4
|
+
|
5
|
+
##
|
6
|
+
# Converts a byte array into hexidecimal string
|
7
|
+
# @param bytes [Array<Int8>] An array of integers representing bytes.
|
8
|
+
# @return [String] A hexidecimal byte string.
|
9
|
+
def bytes_to_hex(bytes)
|
10
|
+
bytes.map { |x| "%02X" % x }.join
|
11
|
+
end
|
12
|
+
|
13
|
+
##
|
14
|
+
# Converts a hexidecimal string into a byte array.
|
15
|
+
# @param hex [String] A hexidecimal string of arbitrary length.
|
16
|
+
# @return [Array<Int8>] An array of integers representing the hex string.
|
17
|
+
def hex_to_bytes(hex)
|
18
|
+
hex.scan(/../).map { |x| x.hex }
|
19
|
+
end
|
20
|
+
|
21
|
+
##
|
22
|
+
# Converts a hex string into a binary.
|
23
|
+
# @param hex [String] A hexidecimal string of arbitrary length.
|
24
|
+
# @return [Binary] A binary representing the hex string
|
25
|
+
def hex_to_bin(hex)
|
26
|
+
bytes_to_bin(hex_to_bytes(hex))
|
27
|
+
end
|
28
|
+
|
29
|
+
##
|
30
|
+
# Converts a binary into a hexidecimal string
|
31
|
+
# @param bin [Binary] The binary value.
|
32
|
+
# @return [String] The hexidecimal string representing the binary value.
|
33
|
+
def bin_to_hex(bin)
|
34
|
+
bin.unpack('H*').first
|
35
|
+
end
|
36
|
+
|
37
|
+
##
|
38
|
+
# Converts a byte array into a binary value.
|
39
|
+
# @param bytes [Array<Int8>] The byte array of integers.
|
40
|
+
# @return [Binary] The binary value representing the byte array.
|
41
|
+
def bytes_to_bin(bytes)
|
42
|
+
bytes.pack("C*")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/nano/work.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require "blake2b"
|
2
|
+
require "nanocurrency_ext"
|
3
|
+
require_relative "./check"
|
4
|
+
|
5
|
+
module Nano
|
6
|
+
|
7
|
+
##
|
8
|
+
# This module is responsible for generating and validating the proof
|
9
|
+
# of work for a block hash
|
10
|
+
module Work
|
11
|
+
extend self
|
12
|
+
|
13
|
+
##
|
14
|
+
# The maximum value a nonce can be
|
15
|
+
MAX_NONCE = 0xffffffffffffffff
|
16
|
+
|
17
|
+
##
|
18
|
+
# The minimum threshold a proof of work needs to meet to be valid.
|
19
|
+
WORK_THRESHOLD = Integer(0xffffffc000000000)
|
20
|
+
|
21
|
+
##
|
22
|
+
# Compute the proof of work for the hash.
|
23
|
+
# @param hash [String] the previous block hash to compute the work for.
|
24
|
+
# @return [String] the computed work as an 8 byte hex string.
|
25
|
+
def compute_work(hash)
|
26
|
+
NanocurrencyExt.compute_work(hash)
|
27
|
+
end
|
28
|
+
|
29
|
+
##
|
30
|
+
# Checks if a proof of work is valid for the hash
|
31
|
+
# @param hash [String] The block hash the work was calculated for.
|
32
|
+
# @param work [String] The block work that was calculated for the hash.
|
33
|
+
# @return [Boolean] true if the work is valid and fits for the block hash.
|
34
|
+
def is_work_valid?(hash, work)
|
35
|
+
hash_valid = Nano::Check.is_hash_valid?(hash)
|
36
|
+
work_valid = Nano::Check.is_work_valid?(work)
|
37
|
+
throw ArgumentError, "Invalid block hash" unless hash_valid
|
38
|
+
throw ArgumentError, "Invalid work" unless work_valid
|
39
|
+
|
40
|
+
hash_bin = Nano::Utils.hex_to_bin(hash)
|
41
|
+
work_bin = Nano::Utils.hex_to_bin(work).reverse
|
42
|
+
|
43
|
+
input = work_bin + hash_bin
|
44
|
+
output_hex = Nano::Utils.bytes_to_hex(
|
45
|
+
Blake2b.bytes(input, Blake2b::Key.none, 8).reverse
|
46
|
+
)
|
47
|
+
|
48
|
+
output_hex.to_i(16) >= WORK_THRESHOLD
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/nanocurrency.rb
ADDED
Binary file
|
@@ -0,0 +1,44 @@
|
|
1
|
+
lib = File.expand_path("../lib", __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require "nanocurrency/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "nanocurrency"
|
7
|
+
spec.version = Nanocurrency::VERSION
|
8
|
+
spec.authors = ["Elliott Minns"]
|
9
|
+
spec.email = ["elliott@nanotify.io"]
|
10
|
+
|
11
|
+
spec.summary = "A toolkit for the Nano cryptocurrency, allowing you to derive keys, generate seeds, hashes, signatures, proofs of work and blocks."
|
12
|
+
spec.description = "A toolkit for the Nano cryptocurrency, allowing you to derive keys, generate seeds, hashes, signatures, proofs of work and blocks."
|
13
|
+
spec.homepage = "https://github.com/nanotify/nanocurrency"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
17
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
18
|
+
if spec.respond_to?(:metadata)
|
19
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
20
|
+
|
21
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
22
|
+
spec.metadata["source_code_uri"] = "https://github.com/nanotify/nanocurrency.git"
|
23
|
+
spec.metadata["changelog_uri"] = "https://github.com/nanotify/nanocurrency"
|
24
|
+
else
|
25
|
+
raise "RubyGems 2.0 or newer is required to protect against " \
|
26
|
+
"public gem pushes."
|
27
|
+
end
|
28
|
+
|
29
|
+
# Specify which files should be added to the gem when it is released.
|
30
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
31
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
32
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
33
|
+
end
|
34
|
+
spec.bindir = "exe"
|
35
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
36
|
+
spec.require_paths = ["lib"]
|
37
|
+
|
38
|
+
spec.add_dependency "blake2b"
|
39
|
+
|
40
|
+
spec.add_development_dependency "bundler", "~> 1.16"
|
41
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
42
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
43
|
+
spec.add_development_dependency "rake-compiler", "~> 1.0"
|
44
|
+
end
|
metadata
ADDED
@@ -0,0 +1,192 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nanocurrency
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Elliott Minns
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-05-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: blake2b
|
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: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.16'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.16'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake-compiler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.0'
|
83
|
+
description: A toolkit for the Nano cryptocurrency, allowing you to derive keys, generate
|
84
|
+
seeds, hashes, signatures, proofs of work and blocks.
|
85
|
+
email:
|
86
|
+
- elliott@nanotify.io
|
87
|
+
executables: []
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- ".gitignore"
|
92
|
+
- ".rspec"
|
93
|
+
- ".travis.yml"
|
94
|
+
- CODE_OF_CONDUCT.md
|
95
|
+
- Gemfile
|
96
|
+
- Gemfile.lock
|
97
|
+
- LICENSE.txt
|
98
|
+
- README.md
|
99
|
+
- Rakefile
|
100
|
+
- bin/console
|
101
|
+
- bin/setup
|
102
|
+
- ext/.DS_Store
|
103
|
+
- ext/nanocurrency_ext/blake2-config.h
|
104
|
+
- ext/nanocurrency_ext/blake2-impl.h
|
105
|
+
- ext/nanocurrency_ext/blake2.h
|
106
|
+
- ext/nanocurrency_ext/blake2b-load-sse2.h
|
107
|
+
- ext/nanocurrency_ext/blake2b-load-sse41.h
|
108
|
+
- ext/nanocurrency_ext/blake2b-ref.c
|
109
|
+
- ext/nanocurrency_ext/blake2b-round.h
|
110
|
+
- ext/nanocurrency_ext/curve25519-donna-32bit.h
|
111
|
+
- ext/nanocurrency_ext/curve25519-donna-64bit.h
|
112
|
+
- ext/nanocurrency_ext/curve25519-donna-helpers.h
|
113
|
+
- ext/nanocurrency_ext/curve25519-donna-sse2.h
|
114
|
+
- ext/nanocurrency_ext/ed25519-donna-32bit-sse2.h
|
115
|
+
- ext/nanocurrency_ext/ed25519-donna-32bit-tables.h
|
116
|
+
- ext/nanocurrency_ext/ed25519-donna-64bit-sse2.h
|
117
|
+
- ext/nanocurrency_ext/ed25519-donna-64bit-tables.h
|
118
|
+
- ext/nanocurrency_ext/ed25519-donna-64bit-x86-32bit.h
|
119
|
+
- ext/nanocurrency_ext/ed25519-donna-64bit-x86.h
|
120
|
+
- ext/nanocurrency_ext/ed25519-donna-basepoint-table.h
|
121
|
+
- ext/nanocurrency_ext/ed25519-donna-batchverify.h
|
122
|
+
- ext/nanocurrency_ext/ed25519-donna-impl-base.h
|
123
|
+
- ext/nanocurrency_ext/ed25519-donna-impl-sse2.h
|
124
|
+
- ext/nanocurrency_ext/ed25519-donna-portable-identify.h
|
125
|
+
- ext/nanocurrency_ext/ed25519-donna-portable.h
|
126
|
+
- ext/nanocurrency_ext/ed25519-donna.h
|
127
|
+
- ext/nanocurrency_ext/ed25519-hash-custom.c
|
128
|
+
- ext/nanocurrency_ext/ed25519-hash-custom.h
|
129
|
+
- ext/nanocurrency_ext/ed25519-hash.h
|
130
|
+
- ext/nanocurrency_ext/ed25519-randombytes-custom.h
|
131
|
+
- ext/nanocurrency_ext/ed25519-randombytes.h
|
132
|
+
- ext/nanocurrency_ext/ed25519.c
|
133
|
+
- ext/nanocurrency_ext/ed25519.h
|
134
|
+
- ext/nanocurrency_ext/extconf.rb
|
135
|
+
- ext/nanocurrency_ext/fuzz/README.md
|
136
|
+
- ext/nanocurrency_ext/fuzz/build-nix.php
|
137
|
+
- ext/nanocurrency_ext/fuzz/curve25519-ref10.c
|
138
|
+
- ext/nanocurrency_ext/fuzz/curve25519-ref10.h
|
139
|
+
- ext/nanocurrency_ext/fuzz/ed25519-donna-sse2.c
|
140
|
+
- ext/nanocurrency_ext/fuzz/ed25519-donna.c
|
141
|
+
- ext/nanocurrency_ext/fuzz/ed25519-donna.h
|
142
|
+
- ext/nanocurrency_ext/fuzz/ed25519-ref10.c
|
143
|
+
- ext/nanocurrency_ext/fuzz/ed25519-ref10.h
|
144
|
+
- ext/nanocurrency_ext/fuzz/fuzz-curve25519.c
|
145
|
+
- ext/nanocurrency_ext/fuzz/fuzz-ed25519.c
|
146
|
+
- ext/nanocurrency_ext/modm-donna-32bit.h
|
147
|
+
- ext/nanocurrency_ext/modm-donna-64bit.h
|
148
|
+
- ext/nanocurrency_ext/rbext.c
|
149
|
+
- ext/nanocurrency_ext/regression.h
|
150
|
+
- lib/nano/account.rb
|
151
|
+
- lib/nano/base32.rb
|
152
|
+
- lib/nano/block.rb
|
153
|
+
- lib/nano/check.rb
|
154
|
+
- lib/nano/conversion.rb
|
155
|
+
- lib/nano/hash.rb
|
156
|
+
- lib/nano/key.rb
|
157
|
+
- lib/nano/utils.rb
|
158
|
+
- lib/nano/work.rb
|
159
|
+
- lib/nanocurrency.rb
|
160
|
+
- lib/nanocurrency/version.rb
|
161
|
+
- lib/nanocurrency_ext.bundle
|
162
|
+
- nanocurrency.gemspec
|
163
|
+
homepage: https://github.com/nanotify/nanocurrency
|
164
|
+
licenses:
|
165
|
+
- MIT
|
166
|
+
metadata:
|
167
|
+
allowed_push_host: https://rubygems.org
|
168
|
+
homepage_uri: https://github.com/nanotify/nanocurrency
|
169
|
+
source_code_uri: https://github.com/nanotify/nanocurrency.git
|
170
|
+
changelog_uri: https://github.com/nanotify/nanocurrency
|
171
|
+
post_install_message:
|
172
|
+
rdoc_options: []
|
173
|
+
require_paths:
|
174
|
+
- lib
|
175
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - ">="
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0'
|
180
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - ">="
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '0'
|
185
|
+
requirements: []
|
186
|
+
rubyforge_project:
|
187
|
+
rubygems_version: 2.7.9
|
188
|
+
signing_key:
|
189
|
+
specification_version: 4
|
190
|
+
summary: A toolkit for the Nano cryptocurrency, allowing you to derive keys, generate
|
191
|
+
seeds, hashes, signatures, proofs of work and blocks.
|
192
|
+
test_files: []
|