nis-ruby 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/lib/nis/endpoint/account/unconfirmed_transactions.rb +1 -1
  3. data/lib/nis/endpoint/node/boot.rb +1 -1
  4. data/lib/nis/struct/boot_node_request.rb +4 -10
  5. data/lib/nis/struct/importance_transfer_transaction.rb +45 -0
  6. data/lib/nis/struct/mosaic_definition.rb +1 -1
  7. data/lib/nis/struct/mosaic_definition_creation_transaction.rb +66 -0
  8. data/lib/nis/struct/mosaic_properties.rb +16 -1
  9. data/lib/nis/struct/mosaic_supply_change_transaction.rb +63 -0
  10. data/lib/nis/struct/multisig_aggregate_modification_transaction.rb +60 -0
  11. data/lib/nis/struct/multisig_cosignatory_modification.rb +19 -0
  12. data/lib/nis/struct/multisig_signature_transaction.rb +45 -0
  13. data/lib/nis/struct/multisig_transaction.rb +63 -0
  14. data/lib/nis/struct/provision_namespace_transaction.rb +67 -0
  15. data/lib/nis/struct/transfer_transaction.rb +79 -0
  16. data/lib/nis/struct/unconfirmed_transaction_meta_data.rb +4 -0
  17. data/lib/nis/unit/address.rb +5 -0
  18. data/lib/nis/util.rb +29 -0
  19. data/lib/nis/version.rb +1 -1
  20. data/samples/request_importance_transfer_transaction.rb +36 -0
  21. data/samples/request_mosaic_definition_creation_transaction.rb +63 -0
  22. data/samples/request_mosaic_supply_change_transaction.rb +38 -0
  23. data/samples/request_multisig_add_cosignatory_transaction.rb +60 -0
  24. data/samples/request_multisig_aggregate_modification_transaction.rb +46 -0
  25. data/samples/request_multisig_signature_transaction.rb +59 -0
  26. data/samples/request_multisig_transaction.rb +56 -0
  27. data/samples/request_node.rb +16 -4
  28. data/samples/request_provision_namespace_transaction.rb +34 -0
  29. data/samples/request_transaction.rb +5 -2
  30. data/samples/request_transfer_transaction.rb +48 -0
  31. metadata +20 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a3cee816f2425c27c2f6c1e0cc6bf4e08a0b8db1
4
- data.tar.gz: 893039b8833f10bcb9802e04d1819c73fd1ee662
3
+ metadata.gz: 4287fd9c5da8d0d63e15449b9aaf58ff283040b8
4
+ data.tar.gz: c0aeef4e827e1161a8868227dd48cde26ab131fb
5
5
  SHA512:
6
- metadata.gz: a3f908e45854fca103743aef337b0f87970922e46c0b7c86165c4aa2ffdff6751528044a524e31820907c780bdb3cf5ce9db346bd9b56f563748925a196c4504
7
- data.tar.gz: 79fe99b46a5c77f8e17998f13a6083716602af36b460a702ce66613126ca9cae1f9d3333e05860cdd569525489c89c079e4ff565b35fc9d742b50b13ecc1cc0c
6
+ metadata.gz: 928f54fe0c8d1013df7efcecd068b386a189a973a5715b54d85057d406c3a04097bb642af3ab718985630587efac8bcde0d6d213b04eb539d2ad6ee4351a1b84
7
+ data.tar.gz: d231b8271bfbb964fe205ade11e8fb9388224255ad1316ff63a3e56a309631d8c75a1facd2cd8e0551ce23a97cae47a364c960347894f0e47777154f5c81d5e7
@@ -8,7 +8,7 @@ module Nis::Endpoint
8
8
  res[:data].map do |utmdp|
9
9
  Nis::Struct::UnconfirmedTransactionMetaDataPair.build(
10
10
  meta: utmdp[:meta],
11
- transaction: utmdp[:data]
11
+ transaction: utmdp[:transaction]
12
12
  )
13
13
  end
14
14
  end
@@ -4,7 +4,7 @@ module Nis::Endpoint
4
4
  # @return [nil]
5
5
  # @see http://bob.nem.ninja/docs/#booting-the-local-node
6
6
  def node_boot(boot_node_request:)
7
- request!(:post, '/node/boot', boot_node_request: boot_node_request)
7
+ request!(:post, '/node/boot', boot_node_request)
8
8
  end
9
9
  end
10
10
  end
@@ -1,17 +1,11 @@
1
1
  class Nis::Struct
2
- # @attr [String] metaData
3
- # @attr [String] application
4
- # @attr [String] endpoint
5
- # @attr [String] protocol
6
- # @attr [String] port
7
- # @attr [String] host
8
- # @attr [String] identity
9
- # @attr [String] private_key
10
- # @attr [String] name
2
+ # @attr [Hash] metaData
3
+ # @attr [Hash] endpoint
4
+ # @attr [Hash] identity
11
5
  # @see http://bob.nem.ninja/docs/#bootNodeRequest
12
6
  class BootNodeRequest
13
7
  include Nis::Util::Assignable
14
- attr_accessor :metaData, :application, :endpoint, :protocol, :port, :host, :identity, :private_key, :name
8
+ attr_accessor :metaData, :endpoint, :identity
15
9
 
16
10
  alias metadata metaData
17
11
  alias metadata= metaData=
@@ -0,0 +1,45 @@
1
+ class Nis::Struct
2
+ # @attr [Integer] timeStamp
3
+ # @attr [String] signature
4
+ # @attr [Integer] fee
5
+ # @attr [Integer] mode
6
+ # @attr [String] remoteAccount
7
+ # @attr [Integer] type
8
+ # @attr [Integer] deadline
9
+ # @attr [Integer] version
10
+ # @attr [String] signer
11
+ # @see http://bob.nem.ninja/docs/#importanceTransferTransaction
12
+ class ImportanceTransferTransaction
13
+ include Nis::Util::Assignable
14
+ attr_accessor :timeStamp, :signature, :fee, :mode, :remoteAccount, :type, :deadline, :version, :signer
15
+
16
+ alias timestamp timeStamp
17
+ alias timestamp= timeStamp=
18
+ alias remote_account remoteAccount
19
+ alias remote_account= remoteAccount=
20
+
21
+ TYPE = 0x0801 # 2049 (importance transfer transaction)
22
+
23
+ ACTIVATE = 0x0001
24
+ DEACTIVATE = 0x0002
25
+
26
+ def self.build(attrs)
27
+ new(attrs)
28
+ end
29
+
30
+ # @return [Integer]
31
+ def _version
32
+ (0xFFFFFFF0 & @version)
33
+ end
34
+
35
+ # @return [Boolean]
36
+ def testnet?
37
+ (0x0000000F & @version) == Nis::Util::TESTNET
38
+ end
39
+
40
+ # @return [Boolean]
41
+ def mainnet?
42
+ (0x0000000F & @version) == Nis::Util::MAINNET
43
+ end
44
+ end
45
+ end
@@ -1,6 +1,6 @@
1
1
  class Nis::Struct
2
2
  # @attr [String] creator
3
- # @attr [String] id
3
+ # @attr [Nis::Struct::MosaicId] id
4
4
  # @attr [String] description
5
5
  # @attr [Nis::Struct::MosaicProperties] properties
6
6
  # @attr [Nis::Struct::MosaicLevy] levy
@@ -0,0 +1,66 @@
1
+ class Nis::Struct
2
+ # @attr [Integer] timeStamp
3
+ # @attr [Integer] signature
4
+ # @attr [Integer] fee
5
+ # @attr [Integer] type
6
+ # @attr [Integer] deadline
7
+ # @attr [Integer] version
8
+ # @attr [String] signer
9
+ # @attr [Integer] creationFee
10
+ # @attr [Integer] creationFeeSink
11
+ # @attr [Nis::Struct::MosaicDefinition] mosaicDefinition
12
+ # @see http://bob.nem.ninja/docs/#mosaicDefinitionCreationTransaction
13
+ class MosaicDefinitionCreationTransaction
14
+ include Nis::Util::Assignable
15
+ attr_accessor :timeStamp, :signature, :fee, :type, :deadline, :version, :signer,
16
+ :creationFee, :creationFeeSink, :mosaicDefinition
17
+
18
+ alias timestamp timeStamp
19
+ alias timestamp= timeStamp=
20
+ alias creation_fee creationFee
21
+ alias creation_fee= creationFee=
22
+ alias creation_feeSink creationFeeSink
23
+ alias creation_feeSink= creationFeeSink=
24
+ alias mosaic_definition mosaicDefinition
25
+ alias mosaic_definition= mosaicDefinition=
26
+
27
+ TYPE = 0x4001 # 16385 (mosaic definition creation transaction)
28
+ FEE = 20_000_000
29
+
30
+ def self.build(attrs)
31
+ new(attrs)
32
+ end
33
+
34
+ # @return [Integer]
35
+ def _version
36
+ (0xFFFFFFF0 & @version)
37
+ end
38
+
39
+ # @return [Boolean]
40
+ def testnet?
41
+ (0x0000000F & @version) == TESTNET
42
+ end
43
+
44
+ # @return [Boolean]
45
+ def mainnet?
46
+ (0x0000000F & @version) == MAINNET
47
+ end
48
+
49
+ # @return [Integer]
50
+ def fee
51
+ @fee ||= calculate_fee
52
+ end
53
+
54
+ alias to_hash_old to_hash
55
+
56
+ def to_hash
57
+ fee
58
+ to_hash_old
59
+ end
60
+
61
+ # @return [Integer]
62
+ def calculate_fee
63
+ FEE
64
+ end
65
+ end
66
+ end
@@ -1,5 +1,4 @@
1
1
  class Nis::Struct
2
- # @attr [Array] properties
3
2
  # @attr [Integer] divisibility
4
3
  # @attr [Integer] initialSupply
5
4
  # @attr [Boolean] supplyMutable
@@ -27,5 +26,21 @@ class Nis::Struct
27
26
  def transferable?
28
27
  @transferable == 'true'
29
28
  end
29
+
30
+ def to_hash
31
+ [{
32
+ name: 'divisibility',
33
+ value: divisibility.to_s
34
+ },{
35
+ name: 'initialSupply',
36
+ value: initial_supply.to_s
37
+ },{
38
+ name: 'supplyMutable',
39
+ value: supply_mutable ? 'true' : 'false'
40
+ },{
41
+ name: 'transferable',
42
+ value: transferable ? 'true' : 'false'
43
+ }]
44
+ end
30
45
  end
31
46
  end
@@ -0,0 +1,63 @@
1
+ class Nis::Struct
2
+ # @attr [Integer] timeStamp
3
+ # @attr [Integer] signature
4
+ # @attr [Integer] fee
5
+ # @attr [Integer] type
6
+ # @attr [Integer] deadline
7
+ # @attr [Integer] version
8
+ # @attr [String] signer
9
+ # @see http://bob.nem.ninja/docs/#mosaicSupplyChangeTransaction
10
+ class MosaicSupplyChangeTransaction
11
+ include Nis::Util::Assignable
12
+ attr_accessor :timeStamp, :signature, :fee, :type, :deadline, :version, :signer,
13
+ :supplyType, :delta, :mosaicId
14
+
15
+ alias timestamp timeStamp
16
+ alias timestamp= timeStamp=
17
+ alias supply_type supplyType
18
+ alias supply_type= supplyType=
19
+ alias mosaid_id mosaicId
20
+ alias mosaid_id= mosaicId=
21
+
22
+ TYPE = 0x4002 # 16386 (mosaic supply change transaction)
23
+ FEE = 20_000_000
24
+ INCREASE = 1
25
+ DECREASE = 2
26
+
27
+ def self.build(attrs)
28
+ new(attrs)
29
+ end
30
+
31
+ # @return [Integer]
32
+ def _version
33
+ (0xFFFFFFF0 & @version)
34
+ end
35
+
36
+ # @return [Boolean]
37
+ def testnet?
38
+ (0x0000000F & @version) == TESTNET
39
+ end
40
+
41
+ # @return [Boolean]
42
+ def mainnet?
43
+ (0x0000000F & @version) == MAINNET
44
+ end
45
+
46
+ # @return [Integer]
47
+ def fee
48
+ @fee ||= calculate_fee
49
+ end
50
+
51
+ alias to_hash_old to_hash
52
+
53
+ def to_hash
54
+ fee
55
+ to_hash_old
56
+ end
57
+
58
+ # @return [Integer]
59
+ def calculate_fee
60
+ FEE
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,60 @@
1
+ class Nis::Struct
2
+ # @attr [Integer] timeStamp
3
+ # @attr [String] signature
4
+ # @attr [Integer] fee
5
+ # @attr [Integer] type
6
+ # @attr [Integer] deadline
7
+ # @attr [Integer] version
8
+ # @attr [String] signer
9
+ # @attr [Array <Nis::Struct::MultisigCosignatoryModification>] modifications
10
+ # @attr [Hash] minCosignatories
11
+ # @see http://bob.nem.ninja/docs/#multisigAggregateModificationTransaction
12
+ class MultisigAggregateModificationTransaction
13
+ include Nis::Util::Assignable
14
+ attr_accessor :timeStamp, :signature, :fee, :type, :deadline, :version, :signer,
15
+ :modifications, :minCosignatories
16
+
17
+ alias timestamp timeStamp
18
+ alias timestamp= timeStamp=
19
+ alias min_cosignatories minCosignatories
20
+ alias min_cosignatories= minCosignatories=
21
+
22
+ TYPE = 0x1001 # 4097 (multisig aggregate modification transfer transaction)
23
+ FEE = 16_000_000
24
+
25
+ def self.build(attrs)
26
+ new(attrs)
27
+ end
28
+
29
+ # @return [Integer]
30
+ def _version
31
+ (0xFFFFFFF0 & @version)
32
+ end
33
+
34
+ # @return [Boolean]
35
+ def testnet?
36
+ (0x0000000F & @version) == Nis::Util::TESTNET
37
+ end
38
+
39
+ # @return [Boolean]
40
+ def mainnet?
41
+ (0x0000000F & @version) == Nis::Util::MAINNET
42
+ end
43
+
44
+ def fee
45
+ @fee ||= calculate_fee
46
+ end
47
+
48
+ alias to_hash_old to_hash
49
+
50
+ def to_hash
51
+ fee
52
+ to_hash_old
53
+ end
54
+
55
+ # @return [Integer]
56
+ def calculate_fee
57
+ FEE
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,19 @@
1
+ class Nis::Struct
2
+ # @attr [Integer] modificationType
3
+ # @attr [String] cosignatoryAccount
4
+ # @see http://bob.nem.ninja/docs/#multisigCosignatoryModification
5
+ class MultisigCosignatoryModification
6
+ include Nis::Util::Assignable
7
+ attr_accessor :modificationType, :cosignatoryAccount
8
+
9
+ alias modification_type modificationType
10
+ alias cosignatory_account cosignatoryAccount
11
+
12
+ TYPE_ADD = 0x0001
13
+ TYPE_DELETE = 0x0002
14
+
15
+ def self.build(attrs)
16
+ new(attrs)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,45 @@
1
+ class Nis::Struct
2
+ # @attr [Integer] timeStamp
3
+ # @attr [String] signature
4
+ # @attr [Integer] fee
5
+ # @attr [Integer] type
6
+ # @attr [Integer] deadline
7
+ # @attr [Integer] version
8
+ # @attr [String] signer
9
+ # @attr [String] otherHash
10
+ # @attr [String] otherAccount
11
+ # @see http://bob.nem.ninja/docs/#multisigSignatureTransaction
12
+ class MultisigSignatureTransaction
13
+ include Nis::Util::Assignable
14
+ attr_accessor :timeStamp, :signature, :fee, :type, :deadline, :version, :signer,
15
+ :otherHash, :otherAccount
16
+
17
+ alias timestamp timeStamp
18
+ alias timestamp= timeStamp=
19
+ alias other_hash otherHash
20
+ alias other_hash= otherHash=
21
+ alias other_account otherAccount
22
+ alias other_account= otherAccount=
23
+
24
+ TYPE = 0x1002 # 4098 (multisig signature transaction)
25
+
26
+ def self.build(attrs)
27
+ new(attrs)
28
+ end
29
+
30
+ # @return [Integer]
31
+ def _version
32
+ (0xFFFFFFF0 & @version)
33
+ end
34
+
35
+ # @return [Boolean]
36
+ def testnet?
37
+ (0x0000000F & @version) == Nis::Util::TESTNET
38
+ end
39
+
40
+ # @return [Boolean]
41
+ def mainnet?
42
+ (0x0000000F & @version) == Nis::Util::MAINNET
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,63 @@
1
+ class Nis::Struct
2
+ # @attr [Integer] timeStamp
3
+ # @attr [Integer] fee
4
+ # @attr [Integer] type
5
+ # @attr [Integer] deadline
6
+ # @attr [Integer] version
7
+ # @attr [String] signer
8
+ # @attr [Nis::Struct::TransferTransaction] otherTrans
9
+ # @see http://bob.nem.ninja/docs/#multisigTransaction
10
+ class MultisigTransaction
11
+ include Nis::Util::Assignable
12
+ attr_accessor :timeStamp, :fee, :type, :deadline, :version, :signer,
13
+ :otherTrans
14
+
15
+ alias timestamp timeStamp
16
+ alias timestamp= timeStamp=
17
+ alias other_trans otherTrans
18
+ alias other_trans= otherTrans=
19
+
20
+ TYPE = 0x1004 # 4099 (multisig transaction)
21
+ FEE = 6_000_000
22
+
23
+ def self.build(attrs)
24
+ new(attrs)
25
+ end
26
+
27
+ # @return [Integer]
28
+ def _version
29
+ (0xFFFFFFF0 & @version)
30
+ end
31
+
32
+ # @return [Boolean]
33
+ def testnet?
34
+ (0x0000000F & @version) == TESTNET
35
+ end
36
+
37
+ # @return [Boolean]
38
+ def mainnet?
39
+ (0x0000000F & @version) == MAINNET
40
+ end
41
+
42
+ # @return [Integer]
43
+ def fee
44
+ @fee ||= calculate_fee
45
+ end
46
+
47
+ def mosaics
48
+ @mosaics ||= []
49
+ end
50
+
51
+ alias to_hash_old to_hash
52
+
53
+ def to_hash
54
+ fee
55
+ to_hash_old
56
+ end
57
+
58
+ # @return [Integer]
59
+ def calculate_fee
60
+ FEE
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,67 @@
1
+ class Nis::Struct
2
+ # @attr [Integer] timeStamp
3
+ # @attr [String] signature
4
+ # @attr [Integer] fee
5
+ # @attr [Integer] type
6
+ # @attr [Integer] deadline
7
+ # @attr [Integer] version
8
+ # @attr [String] signer
9
+ # @attr [String] rentalFeeSink
10
+ # @attr [Integer] rentalFee
11
+ # @attr [String] newPart
12
+ # @attr [String] parent
13
+ # @see http://bob.nem.ninja/docs/#provisionNamespaceTransaction
14
+ class ProvisionNamespaceTransaction
15
+ include Nis::Util::Assignable
16
+ attr_accessor :timeStamp, :signature, :fee, :type, :deadline, :version, :signer,
17
+ :rentalFeeSink, :rentalFee, :newPart, :parent
18
+
19
+ alias timestamp timeStamp
20
+ alias timestamp= timeStamp=
21
+ alias rental_fee_sink rentalFeeSink
22
+ alias rental_fee_sink= rentalFeeSink=
23
+ alias rental_fee rentalFee
24
+ alias rental_fee= rentalFee=
25
+ alias new_part newPart
26
+ alias new_part= newPart=
27
+
28
+ TYPE = 0x2001 # 8193 (provision namespace transaction)
29
+ FEE = 20_000_000
30
+
31
+ def self.build(attrs)
32
+ new(attrs)
33
+ end
34
+
35
+ # @return [Integer]
36
+ def _version
37
+ (0xFFFFFFF0 & @version)
38
+ end
39
+
40
+ # @return [Boolean]
41
+ def testnet?
42
+ (0x0000000F & @version) == Nis::Util::TESTNET
43
+ end
44
+
45
+ # @return [Boolean]
46
+ def mainnet?
47
+ (0x0000000F & @version) == Nis::Util::MAINNET
48
+ end
49
+
50
+ # @return [Integer]
51
+ def fee
52
+ @fee ||= calculate_fee
53
+ end
54
+
55
+ alias to_hash_old to_hash
56
+
57
+ def to_hash
58
+ fee
59
+ to_hash_old
60
+ end
61
+
62
+ # @return [Integer]
63
+ def calculate_fee
64
+ FEE
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,79 @@
1
+ class Nis::Struct
2
+ # @attr [Integer] timestamp
3
+ # @attr [Integer] amount
4
+ # @attr [Integer] fee
5
+ # @attr [String] recipient
6
+ # @attr [Integer] type
7
+ # @attr [Integer] deadline
8
+ # @attr [Nis::Struct::Message] message
9
+ # @attr [Integer] version
10
+ # @attr [String] signer
11
+ # @attr [Array <Nis::Struct::MosaicId>] mosaics
12
+ # @see http://bob.nem.ninja/docs/#transferTransaction
13
+ # @see http://bob.nem.ninja/docs/#initiating-a-transfer-transaction
14
+ # @see http://bob.nem.ninja/docs/#version-1-transfer-transactions
15
+ # @see http://bob.nem.ninja/docs/#version-2-transfer-transactions
16
+ class TransferTransaction
17
+ include Nis::Util::Assignable
18
+ attr_accessor :timeStamp, :amount, :fee, :recipient, :type, :deadline, :message, :version, :signer,
19
+ :mosaics
20
+
21
+ alias :timestamp :timeStamp
22
+ alias :timestamp= :timeStamp=
23
+
24
+ TYPE = 0x0101 # 257 (transfer transaction)
25
+
26
+ def self.build(attrs)
27
+ new(attrs)
28
+ end
29
+
30
+ # @return [Integer]
31
+ def _version
32
+ (0xFFFFFFF0 & @version)
33
+ end
34
+
35
+ # @return [Boolean]
36
+ def testnet?
37
+ (0x0000000F & @version) == Nis::Util::TESTNET
38
+ end
39
+
40
+ # @return [Boolean]
41
+ def mainnet?
42
+ (0x0000000F & @version) == Nis::Util::MAINNET
43
+ end
44
+
45
+ # @return [Integer]
46
+ def fee
47
+ @fee ||= calculate_fee
48
+ end
49
+
50
+ def mosaics
51
+ @mosaics ||= []
52
+ end
53
+
54
+ alias to_hash_old to_hash
55
+
56
+ def to_hash
57
+ fee
58
+ to_hash_old
59
+ end
60
+
61
+ # @return [Integer]
62
+ def calculate_fee
63
+ if mosaics.empty?
64
+ tmp_fee = [1, amount / 1_000_000 / 10_000].max
65
+ fee = (tmp_fee > 25 ? 25 : tmp_fee)
66
+ else
67
+ # TODO: calc mosaics fee
68
+ raise NotImplementedError, 'not implemented calculation mosaic fee.'
69
+ fee = 25
70
+ end
71
+
72
+ if message.bytesize > 0
73
+ fee += [1, (message.bytesize / 2 / 32) + 1].max
74
+ end
75
+
76
+ fee * 1_000_000
77
+ end
78
+ end
79
+ end
@@ -8,5 +8,9 @@ class Nis::Struct
8
8
  def self.build(attrs)
9
9
  new(attrs)
10
10
  end
11
+
12
+ def to_s
13
+ @data
14
+ end
11
15
  end
12
16
  end
@@ -28,6 +28,11 @@ module Nis::Unit
28
28
  @value
29
29
  end
30
30
 
31
+ # @return [String]
32
+ def to_hexadecimal
33
+ @value.each_byte.map { |b| b.to_s(16) }.join
34
+ end
35
+
31
36
  # @return [Boolean]
32
37
  def ==(other)
33
38
  @value == other.value
data/lib/nis/util.rb CHANGED
@@ -1,6 +1,35 @@
1
1
  module Nis::Util
2
+ TESTNET = 0x98000000 # -1744830464
3
+ MAINNET = 0x68000000 # 1744830464
4
+
5
+ VERSION_1 = 0x00000001 # 1
6
+ VERSION_2 = 0x00000002 # 2
7
+
8
+ TESTNET_VERSION_1 = TESTNET | VERSION_1 # 0x98000001 = -1744830463
9
+ TESTNET_VERSION_2 = TESTNET | VERSION_2 # 0x98000002 = -1744830462
10
+ MAINNET_VERSION_1 = MAINNET | VERSION_1 # 0x68000001 = 1744830465
11
+ MAINNET_VERSION_2 = MAINNET | VERSION_2 # 0x68000002 = 1744830466
12
+
2
13
  NEM_EPOCH = Time.utc(2015, 3, 29, 0, 6, 25, 0)
3
14
 
15
+ #
16
+ # @see http://www.nem.ninja/docs/#namespaces
17
+ NAMESPACE_SINK = {
18
+ testnet: 'TAMESPACEWH4MKFMBCVFERDPOOP4FK7MTDJEYP35',
19
+ mainnet: 'NAMESPACEWH4MKFMBCVFERDPOOP4FK7MTBXDPZZA'
20
+ }
21
+
22
+ # @see http://www.nem.ninja/docs/#mosaics
23
+ MOSAIC_SINK = {
24
+ testnet: 'TBMOSAICOD4F54EE5CDMR23CCBGOAM2XSJBR5OLC',
25
+ mainnet: 'NBMOSAICOD4F54EE5CDMR23CCBGOAM2XSIUX6TRS'
26
+ }
27
+
28
+ APOSTILLE_SINK = {
29
+ testnet: 'TC7MCY5AGJQXZQ4BN3BOPNXUVIGDJCOHBPGUM2GE',
30
+ mainnet: 'NCZSJHLTIMESERVBVKOW6US64YDZG2PFGQCSV23J'
31
+ }
32
+
4
33
  def self.timestamp
5
34
  (Time.now - NEM_EPOCH).to_i
6
35
  end
data/lib/nis/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Nis
2
- VERSION = '0.0.9'.freeze
2
+ VERSION = '0.0.10'.freeze
3
3
  end
@@ -0,0 +1,36 @@
1
+ require 'nis'
2
+ hr = '-' * 64
3
+
4
+ # Account A (Source)
5
+ A_ADDRESS = 'TAH4MBR6MNLZKJAVW5ZJCMFAL7RS5U2YODUQKLCT'.freeze
6
+ A_PRIVATE_KEY = '00b4a68d16dc505302e9631b860664ba43a8183f0903bc5782a2403b2f9eb3c8a1'.freeze
7
+ A_PUBLIC_KEY = '5aff2e991f85d44eed8f449ede365a920abbefc22f1a2f731d4a002258673519'.freeze
8
+
9
+ # Remote Account B (Dist)
10
+ B_PUBLIC_KEY = 'cc6c9485d15b992501e57fe3799487e99de272f79c5442de94eeb998b45e0144'.freeze
11
+
12
+ # build Transaction Object
13
+ tx = Nis::Struct::ImportanceTransferTransaction.new(
14
+ timeStamp: Nis::Util.timestamp,
15
+ fee: 6_000_000,
16
+ mode: Nis::Struct::ImportanceTransferTransaction::ACTIVATE,
17
+ remoteAccount: B_PUBLIC_KEY,
18
+ type: Nis::Struct::ImportanceTransferTransaction::TYPE,
19
+ deadline: Nis::Util.timestamp + 43_200,
20
+ version: Nis::Util::TESTNET_VERSION_1,
21
+ signer: A_PUBLIC_KEY
22
+ )
23
+
24
+ # build RequestPrepareAnnounce Object
25
+ rpa = Nis::Struct::RequestPrepareAnnounce.new(
26
+ transaction: tx,
27
+ privateKey: A_PRIVATE_KEY
28
+ )
29
+
30
+ # Create NIS instance
31
+ nis = Nis.new
32
+
33
+ # Send XEM request.
34
+ res = nis.transaction_prepare_announce(request_prepare_announce: rpa)
35
+ puts res.message
36
+ puts hr
@@ -0,0 +1,63 @@
1
+ require 'nis'
2
+ hr = '-' * 64
3
+
4
+ # Account A
5
+ A_ADDRESS = 'TDPP2C4XQLMESBMCYGWN4NRAJAKZEYRV75KGYSOB'.freeze
6
+ A_PRIVATE_KEY = '4ce5c8f9fce571db0d9ac1adf00b8d3ba0f078ed40835fd3d730a2f24b834214'.freeze
7
+ A_PUBLIC_KEY = 'be2ba9cb15a547110d511a4d43c0482fbb584d78781abac01fb053d18f4a0033'.freeze
8
+
9
+ mosaic_id = Nis::Struct::MosaicId.new(
10
+ namespaceId: 'kon',
11
+ name: "teas"
12
+ )
13
+
14
+ properties = Nis::Struct::MosaicProperties.new(
15
+ divisibility: 0,
16
+ initialSupply: 10_000,
17
+ supplyMutable: true,
18
+ transferable: true
19
+ )
20
+
21
+ levy = Nis::Struct::MosaicLevy.new(
22
+ type: 1,
23
+ recipient: A_ADDRESS,
24
+ mosaicId: {
25
+ namespaceId: 'nem',
26
+ name: 'xem'
27
+ },
28
+ fee: 1_000
29
+ )
30
+
31
+ definition = Nis::Struct::MosaicDefinition.new(
32
+ creator: A_PUBLIC_KEY,
33
+ id: mosaic_id,
34
+ description: 'Ho-kago Tea Time',
35
+ properties: properties,
36
+ levy: levy
37
+ )
38
+
39
+ # build Transaction Object
40
+ tx = Nis::Struct::MosaicDefinitionCreationTransaction.new(
41
+ timeStamp: Nis::Util.timestamp,
42
+ type: Nis::Struct::MosaicDefinitionCreationTransaction::TYPE,
43
+ deadline: Nis::Util.timestamp + 43_200,
44
+ version: Nis::Util::TESTNET_VERSION_1,
45
+ signer: A_PUBLIC_KEY,
46
+ creationFee: 500_000_000,
47
+ creationFeeSink: Nis::Util::MOSAIC_SINK[:testnet],
48
+ mosaicDefinition: definition
49
+ )
50
+
51
+ # build RequestPrepareAnnounce Object
52
+ rpa = Nis::Struct::RequestPrepareAnnounce.new(
53
+ transaction: tx,
54
+ privateKey: A_PRIVATE_KEY
55
+ )
56
+
57
+ # Create NIS instance
58
+ nis = Nis.new
59
+
60
+ # Send XEM request.
61
+ res = nis.transaction_prepare_announce(request_prepare_announce: rpa)
62
+ puts res.message
63
+ puts hr
@@ -0,0 +1,38 @@
1
+ require 'nis'
2
+ hr = '-' * 64
3
+
4
+ # Account A
5
+ A_ADDRESS = 'TDPP2C4XQLMESBMCYGWN4NRAJAKZEYRV75KGYSOB'.freeze
6
+ A_PRIVATE_KEY = '4ce5c8f9fce571db0d9ac1adf00b8d3ba0f078ed40835fd3d730a2f24b834214'.freeze
7
+ A_PUBLIC_KEY = 'be2ba9cb15a547110d511a4d43c0482fbb584d78781abac01fb053d18f4a0033'.freeze
8
+
9
+ mosaic_id = Nis::Struct::MosaicId.new(
10
+ namespaceId: 'kon',
11
+ name: "teas"
12
+ )
13
+
14
+ # build Transaction Object
15
+ tx = Nis::Struct::MosaicSupplyChangeTransaction.new(
16
+ timeStamp: Nis::Util.timestamp,
17
+ type: Nis::Struct::MosaicSupplyChangeTransaction::TYPE,
18
+ deadline: Nis::Util.timestamp + 43_200,
19
+ version: Nis::Util::TESTNET_VERSION_1,
20
+ signer: A_PUBLIC_KEY,
21
+ supplyType: Nis::Struct::MosaicSupplyChangeTransaction::INCREASE,
22
+ delta: 1_000,
23
+ mosaicId: mosaic_id
24
+ )
25
+
26
+ # build RequestPrepareAnnounce Object
27
+ rpa = Nis::Struct::RequestPrepareAnnounce.new(
28
+ transaction: tx,
29
+ privateKey: A_PRIVATE_KEY
30
+ )
31
+
32
+ # Create NIS instance
33
+ nis = Nis.new
34
+
35
+ # Send XEM request.
36
+ res = nis.transaction_prepare_announce(request_prepare_announce: rpa)
37
+ puts res.inspect
38
+ puts hr
@@ -0,0 +1,60 @@
1
+ require 'nis'
2
+ hr = '-' * 64
3
+
4
+ # Account A (multisig)
5
+ A_ADDRESS = 'TDJNDAQ7F7AQRXKP2YVTH67QYCWWKE6QLSJFWN64'.freeze
6
+ A_PRIVATE_KEY = '00f077782658ae91b77f238ba5fcd7ef110564b5c189072e4d4590d9b17f9d76f3'.freeze
7
+ A_PUBLIC_KEY = '6d72b57d2bc199d328e7ea3e24775f7f614760bc18f3f8501cd3daa9870cc40c'.freeze
8
+
9
+ # Account B (cosignatory)
10
+ B_ADDRESS = 'TDPP2C4XQLMESBMCYGWN4NRAJAKZEYRV75KGYSOB'.freeze
11
+ B_PRIVATE_KEY = '4ce5c8f9fce571db0d9ac1adf00b8d3ba0f078ed40835fd3d730a2f24b834214'.freeze
12
+ B_PUBLIC_KEY = 'be2ba9cb15a547110d511a4d43c0482fbb584d78781abac01fb053d18f4a0033'.freeze
13
+
14
+ # Account C (cosignatory)
15
+ C_ADDRESS = 'TA4TX6U5HG2MROAESH2JE5524T4ZOY2EQKQ6ELHF'.freeze
16
+ C_PRIVATE_KEY = '1d13af2c31ee6fb0c3c7aaaea818d9b305dcadba130ba663fc42d9f25b24ded1'.freeze
17
+ C_PUBLIC_KEY = '9e7ab2924cd1a3482df784db190614cfc8a33671f5d80a5b15a9c9e8b4d13933'.freeze
18
+
19
+ mcm = Nis::Struct::MultisigCosignatoryModification.new(
20
+ modificationType: 1, # Add
21
+ cosignatoryAccount: C_PUBLIC_KEY
22
+ )
23
+
24
+ # build Transaction Object
25
+ tx = Nis::Struct::MultisigAggregateModificationTransaction.new(
26
+ timeStamp: Nis::Util.timestamp,
27
+ type: Nis::Struct::MultisigAggregateModificationTransaction::TYPE,
28
+ deadline: Nis::Util.timestamp + 43_200,
29
+ version: Nis::Util::TESTNET_VERSION_1,
30
+ signer: A_PUBLIC_KEY,
31
+ modifications: [
32
+ mcm
33
+ ],
34
+ minCosignatories: {
35
+ relativeChange: 2
36
+ }
37
+ )
38
+
39
+ mtx = Nis::Struct::MultisigTransaction.new(
40
+ timeStamp: Nis::Util.timestamp,
41
+ signer: B_PUBLIC_KEY,
42
+ type: Nis::Struct::MultisigTransaction::TYPE,
43
+ deadline: Nis::Util.timestamp + 43_200,
44
+ version: Nis::Struct::Transaction::TESTNET_VERSION_1,
45
+ otherTrans: tx
46
+ )
47
+
48
+ # build RequestPrepareAnnounce Object
49
+ rpa = Nis::Struct::RequestPrepareAnnounce.new(
50
+ transaction: mtx,
51
+ privateKey: B_PRIVATE_KEY
52
+ )
53
+
54
+ # Create NIS instance
55
+ nis = Nis.new
56
+
57
+ # Send XEM request.
58
+ res = nis.transaction_prepare_announce(request_prepare_announce: rpa)
59
+ puts res.message
60
+ puts hr
@@ -0,0 +1,46 @@
1
+ require 'nis'
2
+ hr = '-' * 64
3
+
4
+ # Account A (change to multisig)
5
+ A_ADDRESS = 'TDJNDAQ7F7AQRXKP2YVTH67QYCWWKE6QLSJFWN64'.freeze
6
+ A_PRIVATE_KEY = '00f077782658ae91b77f238ba5fcd7ef110564b5c189072e4d4590d9b17f9d76f3'.freeze
7
+ A_PUBLIC_KEY = '6d72b57d2bc199d328e7ea3e24775f7f614760bc18f3f8501cd3daa9870cc40c'.freeze
8
+
9
+ # Account B (cosignatory)
10
+ B_ADDRESS = 'TDPP2C4XQLMESBMCYGWN4NRAJAKZEYRV75KGYSOB'.freeze
11
+ B_PRIVATE_KEY = '4ce5c8f9fce571db0d9ac1adf00b8d3ba0f078ed40835fd3d730a2f24b834214'.freeze
12
+ B_PUBLIC_KEY = 'be2ba9cb15a547110d511a4d43c0482fbb584d78781abac01fb053d18f4a0033'.freeze
13
+
14
+ mcm = Nis::Struct::MultisigCosignatoryModification.new(
15
+ modificationType: 1, # Add
16
+ cosignatoryAccount: B_PUBLIC_KEY
17
+ )
18
+
19
+ # build Transaction Object
20
+ tx = Nis::Struct::MultisigAggregateModificationTransaction.new(
21
+ timeStamp: Nis::Util.timestamp,
22
+ type: Nis::Struct::MultisigAggregateModificationTransaction::TYPE,
23
+ deadline: Nis::Util.timestamp + 43_200,
24
+ version: Nis::Util::TESTNET_VERSION_1,
25
+ signer: A_PUBLIC_KEY,
26
+ modifications: [
27
+ mcm
28
+ ],
29
+ minCosignatories: {
30
+ relativeChange: 1
31
+ }
32
+ )
33
+
34
+ # build RequestPrepareAnnounce Object
35
+ rpa = Nis::Struct::RequestPrepareAnnounce.new(
36
+ transaction: tx,
37
+ privateKey: A_PRIVATE_KEY
38
+ )
39
+
40
+ # Create NIS instance
41
+ nis = Nis.new
42
+
43
+ # Send XEM request.
44
+ res = nis.transaction_prepare_announce(request_prepare_announce: rpa)
45
+ puts res.message
46
+ puts hr
@@ -0,0 +1,59 @@
1
+ require 'nis'
2
+ hr = '-' * 64
3
+
4
+ # Account A (change to multisig)
5
+ A_ADDRESS = 'TDJNDAQ7F7AQRXKP2YVTH67QYCWWKE6QLSJFWN64'.freeze
6
+ A_PRIVATE_KEY = '00f077782658ae91b77f238ba5fcd7ef110564b5c189072e4d4590d9b17f9d76f3'.freeze
7
+ A_PUBLIC_KEY = '6d72b57d2bc199d328e7ea3e24775f7f614760bc18f3f8501cd3daa9870cc40c'.freeze
8
+
9
+ # Account B (cosignatory)
10
+ B_ADDRESS = 'TDPP2C4XQLMESBMCYGWN4NRAJAKZEYRV75KGYSOB'.freeze
11
+ B_PRIVATE_KEY = '4ce5c8f9fce571db0d9ac1adf00b8d3ba0f078ed40835fd3d730a2f24b834214'.freeze
12
+ B_PUBLIC_KEY = 'be2ba9cb15a547110d511a4d43c0482fbb584d78781abac01fb053d18f4a0033'.freeze
13
+
14
+ # Account C (cosignatory)
15
+ C_ADDRESS = 'TA4TX6U5HG2MROAESH2JE5524T4ZOY2EQKQ6ELHF'.freeze
16
+ C_PRIVATE_KEY = '1d13af2c31ee6fb0c3c7aaaea818d9b305dcadba130ba663fc42d9f25b24ded1'.freeze
17
+ C_PUBLIC_KEY = '9e7ab2924cd1a3482df784db190614cfc8a33671f5d80a5b15a9c9e8b4d13933'.freeze
18
+
19
+ require 'pry'
20
+
21
+ nis = Nis.new
22
+ txes = nis.account_unconfirmed_transactions(address: C_ADDRESS)
23
+
24
+ unless txes.size > 0
25
+ puts 'There are no transactions to sign.'
26
+ exit
27
+ end
28
+
29
+ hash = txes.first.meta.data
30
+
31
+ puts "Unconfirmed Transaction Hash: #{hash}"
32
+ puts hr
33
+
34
+ # build Transaction Object
35
+ tx = Nis::Struct::MultisigSignatureTransaction.new(
36
+ timeStamp: Nis::Util.timestamp,
37
+ type: Nis::Struct::MultisigSignatureTransaction::TYPE,
38
+ deadline: Nis::Util.timestamp + 43_200,
39
+ version: Nis::Util::TESTNET_VERSION_1,
40
+ signer: C_PUBLIC_KEY,
41
+ fee: 6_000_000,
42
+ otherHash: {
43
+ data: hash
44
+ },
45
+ otherAccount: A_ADDRESS
46
+ )
47
+
48
+ # build RequestPrepareAnnounce Object
49
+ rpa = Nis::Struct::RequestPrepareAnnounce.new(
50
+ transaction: tx,
51
+ privateKey: C_PRIVATE_KEY
52
+ )
53
+
54
+ # Create NIS instance
55
+ nis = Nis.new
56
+
57
+ # Send XEM request.
58
+ res = nis.transaction_prepare_announce(request_prepare_announce: rpa)
59
+ puts res.message
@@ -0,0 +1,56 @@
1
+ require 'nis'
2
+ hr = '-' * 64
3
+
4
+ # Account A (multisig)
5
+ A_ADDRESS = 'TDJNDAQ7F7AQRXKP2YVTH67QYCWWKE6QLSJFWN64'.freeze
6
+ A_PRIVATE_KEY = '00f077782658ae91b77f238ba5fcd7ef110564b5c189072e4d4590d9b17f9d76f3'.freeze
7
+ A_PUBLIC_KEY = '6d72b57d2bc199d328e7ea3e24775f7f614760bc18f3f8501cd3daa9870cc40c'.freeze
8
+
9
+ # Account B (cosignatory)
10
+ B_ADDRESS = 'TDPP2C4XQLMESBMCYGWN4NRAJAKZEYRV75KGYSOB'.freeze
11
+ B_PRIVATE_KEY = '4ce5c8f9fce571db0d9ac1adf00b8d3ba0f078ed40835fd3d730a2f24b834214'.freeze
12
+ B_PUBLIC_KEY = 'be2ba9cb15a547110d511a4d43c0482fbb584d78781abac01fb053d18f4a0033'.freeze
13
+
14
+ # build Transaction Object
15
+ tx = Nis::Struct::Transaction.new(
16
+ amount: 10_000_000,
17
+ recipient: B_ADDRESS,
18
+ signer: A_PUBLIC_KEY,
19
+ message: Nis::Struct::Message.new('Hello'),
20
+ type: Nis::Struct::Transaction::TRANSFER,
21
+ timeStamp: Nis::Util.timestamp,
22
+ deadline: Nis::Util.timestamp + 43_200,
23
+ version: Nis::Struct::Transaction::TESTNET_VERSION_1
24
+ )
25
+
26
+ mtx = Nis::Struct::MultisigTransaction.new(
27
+ timeStamp: Nis::Util.timestamp,
28
+ signer: B_PUBLIC_KEY,
29
+ type: Nis::Struct::MultisigTransaction::TYPE,
30
+ deadline: Nis::Util.timestamp + 43_200,
31
+ version: Nis::Struct::Transaction::TESTNET_VERSION_1,
32
+ otherTrans: tx
33
+ )
34
+
35
+ # automatically calculate minimum fee if fee is not set.
36
+ puts 'Fee: %d' % tx.fee
37
+
38
+ # build RequestPrepareAnnounce Object
39
+ rpa = Nis::Struct::RequestPrepareAnnounce.new(
40
+ transaction: mtx,
41
+ privateKey: B_PRIVATE_KEY
42
+ )
43
+
44
+ # Create NIS instance
45
+ nis = Nis.new
46
+
47
+ # check banalces before sending XEM.
48
+ puts 'Account A => balance: %d' %
49
+ (nis.account_get address: A_ADDRESS)[:account][:balance]
50
+ puts 'Account B => balance: %d' %
51
+ (nis.account_get address: B_ADDRESS)[:account][:balance]
52
+ puts hr
53
+
54
+ # Send XEM request.
55
+ res = nis.transaction_prepare_announce(request_prepare_announce: rpa)
56
+ puts res.message
@@ -25,7 +25,19 @@ puts hr
25
25
  puts nis.node_active_peers_max_chain_height
26
26
  puts hr
27
27
 
28
- # bnr = Nis::Struct::BootNodeRequest.new(
29
- # )
30
- # puts nis.node_boot(boot_node_request: bnr)
31
- # puts hr
28
+ bnr = Nis::Struct::BootNodeRequest.new(
29
+ metaData: {
30
+ application: 'NIS'
31
+ },
32
+ endpoint: {
33
+ protocol: 'http',
34
+ port: 7890,
35
+ host: 'localhost'
36
+ },
37
+ identity: {
38
+ 'private-key': 'a6cbd01d04edecfaef51df9486c111abb6299c764a00206eb1d01f4587491b3f',
39
+ name: 'Alice'
40
+ }
41
+ )
42
+ puts nis.node_boot(boot_node_request: bnr)
43
+ puts hr
@@ -0,0 +1,34 @@
1
+ require 'nis'
2
+ hr = '-' * 64
3
+
4
+ # Account A
5
+ A_ADDRESS = 'TDPP2C4XQLMESBMCYGWN4NRAJAKZEYRV75KGYSOB'.freeze
6
+ A_PRIVATE_KEY = '4ce5c8f9fce571db0d9ac1adf00b8d3ba0f078ed40835fd3d730a2f24b834214'.freeze
7
+ A_PUBLIC_KEY = 'be2ba9cb15a547110d511a4d43c0482fbb584d78781abac01fb053d18f4a0033'.freeze
8
+
9
+ # build Transaction Object
10
+ tx = Nis::Struct::ProvisionNamespaceTransaction.new(
11
+ timeStamp: Nis::Util.timestamp,
12
+ type: Nis::Struct::ProvisionNamespaceTransaction::TYPE,
13
+ deadline: Nis::Util.timestamp + 43_200,
14
+ version: Nis::Util::TESTNET_VERSION_1,
15
+ signer: A_PUBLIC_KEY,
16
+ rentalFeeSink: Nis::Util::NAMESPACE_SINK[:testnet],
17
+ rentalFee: 5_000_000_000,
18
+ newPart: 'kon',
19
+ parent: nil
20
+ )
21
+
22
+ # build RequestPrepareAnnounce Object
23
+ rpa = Nis::Struct::RequestPrepareAnnounce.new(
24
+ transaction: tx,
25
+ privateKey: A_PRIVATE_KEY
26
+ )
27
+
28
+ # Create NIS instance
29
+ nis = Nis.new
30
+
31
+ # Send XEM request.
32
+ res = nis.transaction_prepare_announce(request_prepare_announce: rpa)
33
+ puts res.message
34
+ puts hr
@@ -12,7 +12,7 @@ B_ADDRESS = 'TA4TX6U5HG2MROAESH2JE5524T4ZOY2EQKQ6ELHF'.freeze
12
12
  # build Transaction Object
13
13
  tx = Nis::Struct::Transaction.new(
14
14
  amount: 1_000_000,
15
- fee: 3_000_000,
15
+ # fee: 3_000_000, # see below.
16
16
  recipient: B_ADDRESS,
17
17
  signer: A_PUBLIC_KEY,
18
18
  message: Nis::Struct::Message.new('Hello'),
@@ -22,6 +22,9 @@ tx = Nis::Struct::Transaction.new(
22
22
  version: Nis::Struct::Transaction::TESTNET_VERSION_1
23
23
  )
24
24
 
25
+ # automatically calculate minimum fee if fee is not set.
26
+ puts 'Fee: %d' % tx.fee
27
+
25
28
  # build RequestPrepareAnnounce Object
26
29
  rpa = Nis::Struct::RequestPrepareAnnounce.new(
27
30
  transaction: tx,
@@ -42,4 +45,4 @@ puts hr
42
45
  res = nis.transaction_prepare_announce(request_prepare_announce: rpa)
43
46
  puts res.message
44
47
 
45
- # After several minutes, check to see Account B received XEM.
48
+ # After several minutes, check Account A and B Balance.
@@ -0,0 +1,48 @@
1
+ require 'nis'
2
+ hr = '-' * 64
3
+
4
+ # Account A (Source)
5
+ A_ADDRESS = 'TAH4MBR6MNLZKJAVW5ZJCMFAL7RS5U2YODUQKLCT'.freeze
6
+ A_PRIVATE_KEY = '00b4a68d16dc505302e9631b860664ba43a8183f0903bc5782a2403b2f9eb3c8a1'.freeze
7
+ A_PUBLIC_KEY = '5aff2e991f85d44eed8f449ede365a920abbefc22f1a2f731d4a002258673519'.freeze
8
+
9
+ # Account B (Dist)
10
+ B_ADDRESS = 'TA4TX6U5HG2MROAESH2JE5524T4ZOY2EQKQ6ELHF'.freeze
11
+
12
+ # build Transaction Object
13
+ tx = Nis::Struct::TransferTransaction.new(
14
+ amount: 1_000_000,
15
+ # fee: 3_000_000, # see below.
16
+ recipient: B_ADDRESS,
17
+ type: Nis::Struct::TransferTransaction::TYPE,
18
+ signer: A_PUBLIC_KEY,
19
+ message: Nis::Struct::Message.new('Hello'),
20
+ timeStamp: Nis::Util.timestamp,
21
+ deadline: Nis::Util.timestamp + 43_200,
22
+ version: Nis::Util::TESTNET_VERSION_1
23
+ )
24
+
25
+ # automatically calculate minimum fee if fee is not set.
26
+ puts 'Fee: %d' % tx.fee
27
+
28
+ # build RequestPrepareAnnounce Object
29
+ rpa = Nis::Struct::RequestPrepareAnnounce.new(
30
+ transaction: tx,
31
+ privateKey: A_PRIVATE_KEY
32
+ )
33
+
34
+ # Create NIS instance
35
+ nis = Nis.new
36
+
37
+ # check banalces before sending XEM.
38
+ puts 'Account A => balance: %d' %
39
+ (nis.account_get address: A_ADDRESS)[:account][:balance]
40
+ puts 'Account B => balance: %d' %
41
+ (nis.account_get address: B_ADDRESS)[:account][:balance]
42
+ puts hr
43
+
44
+ # Send XEM request.
45
+ res = nis.transaction_prepare_announce(request_prepare_announce: rpa)
46
+ puts res.message
47
+
48
+ # After several minutes, check Account A and B Balance.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nis-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yoshiyuki Ieyama
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-24 00:00:00.000000000 Z
11
+ date: 2017-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -230,15 +230,22 @@ files:
230
230
  - lib/nis/struct/explorer_view_model_transaction.rb
231
231
  - lib/nis/struct/extended_node_experience_pair.rb
232
232
  - lib/nis/struct/harvest_info.rb
233
+ - lib/nis/struct/importance_transfer_transaction.rb
233
234
  - lib/nis/struct/key_pair_view_model.rb
234
235
  - lib/nis/struct/message.rb
235
236
  - lib/nis/struct/mosaic.rb
236
237
  - lib/nis/struct/mosaic_definition.rb
238
+ - lib/nis/struct/mosaic_definition_creation_transaction.rb
237
239
  - lib/nis/struct/mosaic_definition_meta_data.rb
238
240
  - lib/nis/struct/mosaic_definition_meta_data_pair.rb
239
241
  - lib/nis/struct/mosaic_id.rb
240
242
  - lib/nis/struct/mosaic_levy.rb
241
243
  - lib/nis/struct/mosaic_properties.rb
244
+ - lib/nis/struct/mosaic_supply_change_transaction.rb
245
+ - lib/nis/struct/multisig_aggregate_modification_transaction.rb
246
+ - lib/nis/struct/multisig_cosignatory_modification.rb
247
+ - lib/nis/struct/multisig_signature_transaction.rb
248
+ - lib/nis/struct/multisig_transaction.rb
242
249
  - lib/nis/struct/namespace.rb
243
250
  - lib/nis/struct/namespace_meta_data.rb
244
251
  - lib/nis/struct/namespace_meta_data_pair.rb
@@ -249,12 +256,14 @@ files:
249
256
  - lib/nis/struct/node.rb
250
257
  - lib/nis/struct/node_collection.rb
251
258
  - lib/nis/struct/node_experience.rb
259
+ - lib/nis/struct/provision_namespace_transaction.rb
252
260
  - lib/nis/struct/request_announce.rb
253
261
  - lib/nis/struct/request_prepare_announce.rb
254
262
  - lib/nis/struct/time_synchronization_result.rb
255
263
  - lib/nis/struct/transaction.rb
256
264
  - lib/nis/struct/transaction_meta_data.rb
257
265
  - lib/nis/struct/transaction_meta_data_pair.rb
266
+ - lib/nis/struct/transfer_transaction.rb
258
267
  - lib/nis/struct/unconfirmed_transaction_meta_data.rb
259
268
  - lib/nis/struct/unconfirmed_transaction_meta_data_pair.rb
260
269
  - lib/nis/unit.rb
@@ -272,11 +281,20 @@ files:
272
281
  - samples/request_account.rb
273
282
  - samples/request_block.rb
274
283
  - samples/request_debug.rb
284
+ - samples/request_importance_transfer_transaction.rb
275
285
  - samples/request_local.rb
286
+ - samples/request_mosaic_definition_creation_transaction.rb
287
+ - samples/request_mosaic_supply_change_transaction.rb
288
+ - samples/request_multisig_add_cosignatory_transaction.rb
289
+ - samples/request_multisig_aggregate_modification_transaction.rb
290
+ - samples/request_multisig_signature_transaction.rb
291
+ - samples/request_multisig_transaction.rb
276
292
  - samples/request_namespace.rb
277
293
  - samples/request_nis.rb
278
294
  - samples/request_node.rb
295
+ - samples/request_provision_namespace_transaction.rb
279
296
  - samples/request_transaction.rb
297
+ - samples/request_transfer_transaction.rb
280
298
  homepage: https://github.com/44uk/nis-ruby
281
299
  licenses:
282
300
  - MIT