stellar-base 0.10.0 → 0.11.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 549ab91d8bfb91e48d75d4b924d398fb85342e36
4
- data.tar.gz: 631468aab5e41d20a439ae4b24a44a136eff1b98
3
+ metadata.gz: efd6646cf6f9777ca99a367c19d7c2fe5703b17a
4
+ data.tar.gz: 1d2615550df2380a7bca084d496eb8766d9517e6
5
5
  SHA512:
6
- metadata.gz: a74bf53ea5b202bfcff75fbcada4e459a185849ec023dbe63613962c424779c82ed66e35f11b483ec68ffc804a76097e66dfade5a93dce3f8eda7364db37c8d4
7
- data.tar.gz: 59b96582bcaf5e9869e0df8736129b5ed841d3633ddf4b0230bd6a16781cfb10d39be49cba12f175a93cd02982155451ab2236b184424bb4cecd8084315ce42e
6
+ metadata.gz: 56bc04654fbff876daa63882fe92b58a50a45cc24221e7fb18eb95ca3cc7d07052b1b1dc3bd61d97d3a391edb482bb225055ce3cd2dddff248d0b0a274462850
7
+ data.tar.gz: a05f4a1019e6c137ce60af272e5a9b8a1bf19bd42dda65c87ea35c4973637aee8605b3721bc24489d4a304c92a66450885e26747837a678267beb58b7839b1fa
@@ -6,8 +6,17 @@ file. This project adheres to [Semantic Versioning](http://semver.org/).
6
6
  As this project is pre 1.0, breaking changes may happen for minor version
7
7
  bumps. A breaking change will get clearly notified in this log.
8
8
 
9
- ## [unreleased](https://github.com/stellar/ruby-stellar-base/compare/v0.10.0...master)
10
- ## [0.10.0](https://github.com/stellar/ruby-stellar-base/compare/v0.0.0...v0.10.0)
9
+ ## [unreleased](https://github.com/stellar/ruby-stellar-base/compare/v0.11.0...master)
10
+
11
+ ## [0.11.0](https://github.com/stellar/ruby-stellar-base/compare/v0.10.0...v0.11.0)
12
+
13
+ ### Added
14
+ - Added support for `manage_data` operations
15
+
16
+ ### Changed
17
+ - `Stellar::Transaction#to_envelope` can now be used without arguments, returning a `Stellar::TransactionEnvelope` with zero signatures.
18
+
19
+ ## [0.10.0](https://github.com/stellar/ruby-stellar-base/compare/v0.9.0...v0.10.0)
11
20
 
12
21
  - Added memo helpers to `Stellar::Transaction.for_account`, allowing any operation builder (such as `Stellar::Transaction.payment) to provide a custom memo using the `:memo` attribute.
13
22
 
@@ -28,7 +28,9 @@ module Stellar
28
28
  AccountID = PublicKey
29
29
  Thresholds = XDR::Opaque[4]
30
30
  String32 = XDR::String[32]
31
+ String64 = XDR::String[64]
31
32
  SequenceNumber = Uint64
33
+ DataValue = XDR::VarOpaque[64]
32
34
  autoload :AssetType
33
35
  autoload :Asset
34
36
  autoload :Price
@@ -41,6 +43,7 @@ module Stellar
41
43
  autoload :TrustLineEntry
42
44
  autoload :OfferEntryFlags
43
45
  autoload :OfferEntry
46
+ autoload :DataEntry
44
47
  autoload :LedgerEntry
45
48
  autoload :EnvelopeType
46
49
  end
@@ -57,6 +60,7 @@ module Stellar
57
60
  autoload :SetOptionsOp
58
61
  autoload :ChangeTrustOp
59
62
  autoload :AllowTrustOp
63
+ autoload :ManageDataOp
60
64
  autoload :Operation
61
65
  autoload :MemoType
62
66
  autoload :Memo
@@ -86,6 +90,8 @@ module Stellar
86
90
  autoload :InflationResultCode
87
91
  autoload :InflationPayout
88
92
  autoload :InflationResult
93
+ autoload :ManageDataResultCode
94
+ autoload :ManageDataResult
89
95
  autoload :OperationResultCode
90
96
  autoload :OperationResult
91
97
  autoload :TransactionResultCode
@@ -0,0 +1,35 @@
1
+ # This code was automatically generated using xdrgen
2
+ # DO NOT EDIT or your changes may be overwritten
3
+
4
+ require 'xdr'
5
+
6
+ # === xdr source ============================================================
7
+ #
8
+ # struct DataEntry
9
+ # {
10
+ # AccountID accountID; // account this data belongs to
11
+ # string64 dataName;
12
+ # DataValue dataValue;
13
+ #
14
+ # // reserved for future use
15
+ # union switch (int v)
16
+ # {
17
+ # case 0:
18
+ # void;
19
+ # }
20
+ # ext;
21
+ # };
22
+ #
23
+ # ===========================================================================
24
+ module Stellar
25
+ class DataEntry < XDR::Struct
26
+ include XDR::Namespace
27
+
28
+ autoload :Ext
29
+
30
+ attribute :account_id, AccountID
31
+ attribute :data_name, String64
32
+ attribute :data_value, DataValue
33
+ attribute :ext, Ext
34
+ end
35
+ end
@@ -0,0 +1,24 @@
1
+ # This code was automatically generated using xdrgen
2
+ # DO NOT EDIT or your changes may be overwritten
3
+
4
+ require 'xdr'
5
+
6
+ # === xdr source ============================================================
7
+ #
8
+ # union switch (int v)
9
+ # {
10
+ # case 0:
11
+ # void;
12
+ # }
13
+ #
14
+ # ===========================================================================
15
+ module Stellar
16
+ class DataEntry
17
+ class Ext < XDR::Union
18
+ switch_on XDR::Int, :v
19
+
20
+ switch 0
21
+
22
+ end
23
+ end
24
+ end
@@ -17,6 +17,8 @@ require 'xdr'
17
17
  # TrustLineEntry trustLine;
18
18
  # case OFFER:
19
19
  # OfferEntry offer;
20
+ # case DATA:
21
+ # DataEntry data;
20
22
  # }
21
23
  # data;
22
24
  #
@@ -13,6 +13,8 @@ require 'xdr'
13
13
  # TrustLineEntry trustLine;
14
14
  # case OFFER:
15
15
  # OfferEntry offer;
16
+ # case DATA:
17
+ # DataEntry data;
16
18
  # }
17
19
  #
18
20
  # ===========================================================================
@@ -24,10 +26,12 @@ module Stellar
24
26
  switch :account, :account
25
27
  switch :trustline, :trust_line
26
28
  switch :offer, :offer
29
+ switch :data, :data
27
30
 
28
31
  attribute :account, AccountEntry
29
32
  attribute :trust_line, TrustLineEntry
30
33
  attribute :offer, OfferEntry
34
+ attribute :data, DataEntry
31
35
  end
32
36
  end
33
37
  end
@@ -9,7 +9,8 @@ require 'xdr'
9
9
  # {
10
10
  # ACCOUNT = 0,
11
11
  # TRUSTLINE = 1,
12
- # OFFER = 2
12
+ # OFFER = 2,
13
+ # DATA = 3
13
14
  # };
14
15
  #
15
16
  # ===========================================================================
@@ -18,6 +19,7 @@ module Stellar
18
19
  member :account, 0
19
20
  member :trustline, 1
20
21
  member :offer, 2
22
+ member :data, 3
21
23
 
22
24
  seal
23
25
  end
@@ -26,6 +26,13 @@ require 'xdr'
26
26
  # AccountID sellerID;
27
27
  # uint64 offerID;
28
28
  # } offer;
29
+ #
30
+ # case DATA:
31
+ # struct
32
+ # {
33
+ # AccountID accountID;
34
+ # string64 dataName;
35
+ # } data;
29
36
  # };
30
37
  #
31
38
  # ===========================================================================
@@ -36,15 +43,18 @@ module Stellar
36
43
  autoload :Account
37
44
  autoload :TrustLine
38
45
  autoload :Offer
46
+ autoload :Data
39
47
 
40
48
  switch_on LedgerEntryType, :type
41
49
 
42
50
  switch :account, :account
43
51
  switch :trustline, :trust_line
44
52
  switch :offer, :offer
53
+ switch :data, :data
45
54
 
46
55
  attribute :account, Account
47
56
  attribute :trust_line, TrustLine
48
57
  attribute :offer, Offer
58
+ attribute :data, Data
49
59
  end
50
60
  end
@@ -0,0 +1,22 @@
1
+ # This code was automatically generated using xdrgen
2
+ # DO NOT EDIT or your changes may be overwritten
3
+
4
+ require 'xdr'
5
+
6
+ # === xdr source ============================================================
7
+ #
8
+ # struct
9
+ # {
10
+ # AccountID accountID;
11
+ # string64 dataName;
12
+ # }
13
+ #
14
+ # ===========================================================================
15
+ module Stellar
16
+ class LedgerKey
17
+ class Data < XDR::Struct
18
+ attribute :account_id, AccountID
19
+ attribute :data_name, String64
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ # This code was automatically generated using xdrgen
2
+ # DO NOT EDIT or your changes may be overwritten
3
+
4
+ require 'xdr'
5
+
6
+ # === xdr source ============================================================
7
+ #
8
+ # struct ManageDataOp
9
+ # {
10
+ # string64 dataName;
11
+ # DataValue* dataValue; // set to null to clear
12
+ # };
13
+ #
14
+ # ===========================================================================
15
+ module Stellar
16
+ class ManageDataOp < XDR::Struct
17
+ attribute :data_name, String64
18
+ attribute :data_value, XDR::Option[DataValue]
19
+ end
20
+ end
@@ -0,0 +1,25 @@
1
+ # This code was automatically generated using xdrgen
2
+ # DO NOT EDIT or your changes may be overwritten
3
+
4
+ require 'xdr'
5
+
6
+ # === xdr source ============================================================
7
+ #
8
+ # union ManageDataResult switch (ManageDataResultCode code)
9
+ # {
10
+ # case MANAGE_DATA_SUCCESS:
11
+ # void;
12
+ # default:
13
+ # void;
14
+ # };
15
+ #
16
+ # ===========================================================================
17
+ module Stellar
18
+ class ManageDataResult < XDR::Union
19
+ switch_on ManageDataResultCode, :code
20
+
21
+ switch :manage_data_success
22
+ switch :default
23
+
24
+ end
25
+ end
@@ -0,0 +1,30 @@
1
+ # This code was automatically generated using xdrgen
2
+ # DO NOT EDIT or your changes may be overwritten
3
+
4
+ require 'xdr'
5
+
6
+ # === xdr source ============================================================
7
+ #
8
+ # enum ManageDataResultCode
9
+ # {
10
+ # // codes considered as "success" for the operation
11
+ # MANAGE_DATA_SUCCESS = 0,
12
+ # // codes considered as "failure" for the operation
13
+ # MANAGE_DATA_NOT_SUPPORTED_YET = -1, // The network hasn't moved to this protocol change yet
14
+ # MANAGE_DATA_NAME_NOT_FOUND = -2, // Trying to remove a Data Entry that isn't there
15
+ # MANAGE_DATA_LOW_RESERVE = -3, // not enough funds to create a new Data Entry
16
+ # MANAGE_DATA_INVALID_NAME = -4 // Name not a valid string
17
+ # };
18
+ #
19
+ # ===========================================================================
20
+ module Stellar
21
+ class ManageDataResultCode < XDR::Enum
22
+ member :manage_data_success, 0
23
+ member :manage_data_not_supported_yet, -1
24
+ member :manage_data_name_not_found, -2
25
+ member :manage_data_low_reserve, -3
26
+ member :manage_data_invalid_name, -4
27
+
28
+ seal
29
+ end
30
+ end
@@ -34,6 +34,8 @@ require 'xdr'
34
34
  # AccountID destination;
35
35
  # case INFLATION:
36
36
  # void;
37
+ # case MANAGE_DATA:
38
+ # ManageDataOp manageDataOp;
37
39
  # }
38
40
  # body;
39
41
  # };
@@ -27,6 +27,8 @@ require 'xdr'
27
27
  # AccountID destination;
28
28
  # case INFLATION:
29
29
  # void;
30
+ # case MANAGE_DATA:
31
+ # ManageDataOp manageDataOp;
30
32
  # }
31
33
  #
32
34
  # ===========================================================================
@@ -45,6 +47,7 @@ module Stellar
45
47
  switch :allow_trust, :allow_trust_op
46
48
  switch :account_merge, :destination
47
49
  switch :inflation
50
+ switch :manage_data, :manage_data_op
48
51
 
49
52
  attribute :create_account_op, CreateAccountOp
50
53
  attribute :payment_op, PaymentOp
@@ -55,6 +58,7 @@ module Stellar
55
58
  attribute :change_trust_op, ChangeTrustOp
56
59
  attribute :allow_trust_op, AllowTrustOp
57
60
  attribute :destination, AccountID
61
+ attribute :manage_data_op, ManageDataOp
58
62
  end
59
63
  end
60
64
  end
@@ -30,6 +30,8 @@ require 'xdr'
30
30
  # AccountMergeResult accountMergeResult;
31
31
  # case INFLATION:
32
32
  # InflationResult inflationResult;
33
+ # case MANAGE_DATA:
34
+ # ManageDataResult manageDataResult;
33
35
  # }
34
36
  # tr;
35
37
  # default:
@@ -27,6 +27,8 @@ require 'xdr'
27
27
  # AccountMergeResult accountMergeResult;
28
28
  # case INFLATION:
29
29
  # InflationResult inflationResult;
30
+ # case MANAGE_DATA:
31
+ # ManageDataResult manageDataResult;
30
32
  # }
31
33
  #
32
34
  # ===========================================================================
@@ -45,6 +47,7 @@ module Stellar
45
47
  switch :allow_trust, :allow_trust_result
46
48
  switch :account_merge, :account_merge_result
47
49
  switch :inflation, :inflation_result
50
+ switch :manage_data, :manage_data_result
48
51
 
49
52
  attribute :create_account_result, CreateAccountResult
50
53
  attribute :payment_result, PaymentResult
@@ -56,6 +59,7 @@ module Stellar
56
59
  attribute :allow_trust_result, AllowTrustResult
57
60
  attribute :account_merge_result, AccountMergeResult
58
61
  attribute :inflation_result, InflationResult
62
+ attribute :manage_data_result, ManageDataResult
59
63
  end
60
64
  end
61
65
  end
@@ -16,7 +16,8 @@ require 'xdr'
16
16
  # CHANGE_TRUST = 6,
17
17
  # ALLOW_TRUST = 7,
18
18
  # ACCOUNT_MERGE = 8,
19
- # INFLATION = 9
19
+ # INFLATION = 9,
20
+ # MANAGE_DATA = 10
20
21
  # };
21
22
  #
22
23
  # ===========================================================================
@@ -32,6 +33,7 @@ module Stellar
32
33
  member :allow_trust, 7
33
34
  member :account_merge, 8
34
35
  member :inflation, 9
36
+ member :manage_data, 10
35
37
 
36
38
  seal
37
39
  end
@@ -30,3 +30,4 @@ require_relative './stellar/util/strkey'
30
30
  require_relative './stellar/util/continued_fraction'
31
31
  require_relative './stellar/convert'
32
32
  require_relative './stellar/networks'
33
+ require_relative './stellar/base/version'
@@ -1,5 +1,5 @@
1
1
  module Stellar
2
2
  module Base
3
- VERSION = "0.10.0"
3
+ VERSION = "0.11.0"
4
4
  end
5
5
  end
@@ -121,7 +121,7 @@ module Stellar
121
121
  # Stellar::ChangeTrustOp body
122
122
  def self.change_trust(attributes={})
123
123
  line = Asset.send(*attributes[:line])
124
- limit =interpret_amount(attributes[:limit])
124
+ limit =interpret_amount(attributes[:limit])
125
125
 
126
126
  raise ArgumentError, "Bad :limit #{limit}" unless limit.is_a?(Integer)
127
127
 
@@ -278,6 +278,34 @@ module Stellar
278
278
  }))
279
279
  end
280
280
 
281
+ #
282
+ # Helper method to create an manage data operation
283
+ #
284
+ # @param [Hash] attributes the attributes to create the operation with
285
+ # @option attributes [Integer] :sequence
286
+ #
287
+ # @return [Stellar::Operation] the built operation
288
+ def self.manage_data(attributes={})
289
+ op = ManageDataOp.new()
290
+
291
+ name = attributes[:name]
292
+ value = attributes[:value]
293
+
294
+ raise ArgumentError, "Invalid :name" unless name.is_a?(String)
295
+ raise ArgumentError, ":name too long" unless name.bytesize <= 64
296
+
297
+ if value.present?
298
+ raise ArgumentError, ":value too long" unless value.bytesize <= 64
299
+ end
300
+
301
+ op.data_name = name
302
+ op.data_value = value
303
+
304
+ return make(attributes.merge({
305
+ body:[:manage_data, op]
306
+ }))
307
+ end
308
+
281
309
  private
282
310
  def self.extract_amount(a)
283
311
  amount = interpret_amount(a.last)
@@ -61,6 +61,12 @@ module Stellar
61
61
  make :inflation, attributes
62
62
  end
63
63
 
64
+ #
65
+ # @see Stellar::Operation.manage_data
66
+ def self.manage_data(attributes={})
67
+ make :manage_data, attributes
68
+ end
69
+
64
70
  #
65
71
  # Helper method to create a transaction with a single
66
72
  # operation of the provided type. See class methods
@@ -94,7 +100,7 @@ module Stellar
94
100
  sequence = attributes[:sequence]
95
101
  fee = attributes[:fee]
96
102
 
97
- raise ArgumentError, "Bad :account" unless account.is_a?(KeyPair) && account.sign?
103
+ raise ArgumentError, "Bad :account" unless account.is_a?(KeyPair)
98
104
  raise ArgumentError, "Bad :sequence #{sequence}" unless sequence.is_a?(Integer)
99
105
  raise ArgumentError, "Bad :fee #{sequence}" if fee.present? && !fee.is_a?(Integer)
100
106
 
@@ -132,7 +138,7 @@ module Stellar
132
138
  end
133
139
 
134
140
  def to_envelope(*key_pairs)
135
- signatures = key_pairs.map(&method(:sign_decorated))
141
+ signatures = (key_pairs || []).map(&method(:sign_decorated))
136
142
 
137
143
  TransactionEnvelope.new({
138
144
  :signatures => signatures,
@@ -5,9 +5,26 @@ describe Stellar::Operation, ".payment" do
5
5
 
6
6
  it "correctly translates the provided amount to the native representation" do
7
7
  op = Stellar::Operation.payment(destination: Stellar::KeyPair.random, amount: [:native, 20])
8
- expect(op.body.value.amount).to eql(20_0000000)
8
+ expect(op.body.value.amount).to eql(20_0000000)
9
9
  op = Stellar::Operation.payment(destination: Stellar::KeyPair.random, amount: [:native, "20"])
10
- expect(op.body.value.amount).to eql(20_0000000)
10
+ expect(op.body.value.amount).to eql(20_0000000)
11
+ end
12
+
13
+ end
14
+
15
+
16
+ describe Stellar::Operation, ".manage_data" do
17
+
18
+ it "works" do
19
+ op = Stellar::Operation.manage_data(name: "my name", value: "hello")
20
+ expect(op.body.manage_data_op!.data_name).to eql("my name")
21
+ expect(op.body.manage_data_op!.data_value).to eql("hello")
22
+ expect{ op.to_xdr }.to_not raise_error
23
+
24
+ op = Stellar::Operation.manage_data(name: "my name")
25
+ expect(op.body.manage_data_op!.data_name).to eql("my name")
26
+ expect(op.body.manage_data_op!.data_value).to be_nil
27
+ expect{ op.to_xdr }.to_not raise_error
11
28
  end
12
29
 
13
30
  end
@@ -26,17 +26,34 @@ describe Stellar::Transaction do
26
26
  end
27
27
 
28
28
  describe "#to_envelope" do
29
- let(:result){ subject.to_envelope(key_pair) }
29
+ let(:result){ subject.to_envelope(*key_pairs) }
30
30
 
31
- it "return a Stellar::TransactionEnvelope" do
32
- expect(result).to be_a(Stellar::TransactionEnvelope)
31
+
32
+ context "with a single key pair as a parameter" do
33
+ let(:key_pairs){ [key_pair] }
34
+
35
+ it "return a Stellar::TransactionEnvelope" do
36
+ expect(result).to be_a(Stellar::TransactionEnvelope)
37
+ end
38
+
39
+ it "correctly signs the transaction" do
40
+ expect(result.signatures.length).to eq(1)
41
+ expect(result.signatures.first).to be_a(Stellar::DecoratedSignature)
42
+ expect(result.signatures.first.hint).to eq(key_pair.signature_hint)
43
+ expect(result.signatures.first.signature).to eq(subject.sign(key_pair))
44
+ end
33
45
  end
34
46
 
35
- it "correctly signs the transaction" do
36
- expect(result.signatures.length).to eq(1)
37
- expect(result.signatures.first).to be_a(Stellar::DecoratedSignature)
38
- expect(result.signatures.first.hint).to eq(key_pair.signature_hint)
39
- expect(result.signatures.first.signature).to eq(subject.sign(key_pair))
47
+ context "with no keypairs provided as parameters" do
48
+ let(:key_pairs){ [] }
49
+
50
+ it "return a Stellar::TransactionEnvelope" do
51
+ expect(result).to be_a(Stellar::TransactionEnvelope)
52
+ end
53
+
54
+ it "adds no signatures" do
55
+ expect(result.signatures.length).to eq(0)
56
+ end
40
57
  end
41
58
  end
42
59
 
@@ -10,7 +10,9 @@ namespace stellar
10
10
  typedef PublicKey AccountID;
11
11
  typedef opaque Thresholds[4];
12
12
  typedef string string32<32>;
13
+ typedef string string64<64>;
13
14
  typedef uint64 SequenceNumber;
15
+ typedef opaque DataValue<64>;
14
16
 
15
17
  enum AssetType
16
18
  {
@@ -62,7 +64,8 @@ enum LedgerEntryType
62
64
  {
63
65
  ACCOUNT = 0,
64
66
  TRUSTLINE = 1,
65
- OFFER = 2
67
+ OFFER = 2,
68
+ DATA = 3
66
69
  };
67
70
 
68
71
  struct Signer
@@ -190,6 +193,25 @@ struct OfferEntry
190
193
  ext;
191
194
  };
192
195
 
196
+ /* DataEntry
197
+ Data can be attached to accounts.
198
+ */
199
+ struct DataEntry
200
+ {
201
+ AccountID accountID; // account this data belongs to
202
+ string64 dataName;
203
+ DataValue dataValue;
204
+
205
+ // reserved for future use
206
+ union switch (int v)
207
+ {
208
+ case 0:
209
+ void;
210
+ }
211
+ ext;
212
+ };
213
+
214
+
193
215
  struct LedgerEntry
194
216
  {
195
217
  uint32 lastModifiedLedgerSeq; // ledger the LedgerEntry was last changed
@@ -202,6 +224,8 @@ struct LedgerEntry
202
224
  TrustLineEntry trustLine;
203
225
  case OFFER:
204
226
  OfferEntry offer;
227
+ case DATA:
228
+ DataEntry data;
205
229
  }
206
230
  data;
207
231
 
@@ -118,6 +118,13 @@ case OFFER:
118
118
  AccountID sellerID;
119
119
  uint64 offerID;
120
120
  } offer;
121
+
122
+ case DATA:
123
+ struct
124
+ {
125
+ AccountID accountID;
126
+ string64 dataName;
127
+ } data;
121
128
  };
122
129
 
123
130
  enum BucketEntryType
@@ -24,7 +24,8 @@ enum OperationType
24
24
  CHANGE_TRUST = 6,
25
25
  ALLOW_TRUST = 7,
26
26
  ACCOUNT_MERGE = 8,
27
- INFLATION = 9
27
+ INFLATION = 9,
28
+ MANAGE_DATA = 10
28
29
  };
29
30
 
30
31
  /* CreateAccount
@@ -205,6 +206,21 @@ Result: InflationResult
205
206
  Result : AccountMergeResult
206
207
  */
207
208
 
209
+ /* ManageData
210
+ Adds, Updates, or Deletes a key value pair associated with a particular
211
+ account.
212
+
213
+ Threshold: med
214
+
215
+ Result: ManageDataResult
216
+ */
217
+
218
+ struct ManageDataOp
219
+ {
220
+ string64 dataName;
221
+ DataValue* dataValue; // set to null to clear
222
+ };
223
+
208
224
  /* An operation is the lowest unit of work that a transaction does */
209
225
  struct Operation
210
226
  {
@@ -235,6 +251,8 @@ struct Operation
235
251
  AccountID destination;
236
252
  case INFLATION:
237
253
  void;
254
+ case MANAGE_DATA:
255
+ ManageDataOp manageDataOp;
238
256
  }
239
257
  body;
240
258
  };
@@ -592,6 +610,27 @@ default:
592
610
  void;
593
611
  };
594
612
 
613
+ /******* ManageData Result ********/
614
+
615
+ enum ManageDataResultCode
616
+ {
617
+ // codes considered as "success" for the operation
618
+ MANAGE_DATA_SUCCESS = 0,
619
+ // codes considered as "failure" for the operation
620
+ MANAGE_DATA_NOT_SUPPORTED_YET = -1, // The network hasn't moved to this protocol change yet
621
+ MANAGE_DATA_NAME_NOT_FOUND = -2, // Trying to remove a Data Entry that isn't there
622
+ MANAGE_DATA_LOW_RESERVE = -3, // not enough funds to create a new Data Entry
623
+ MANAGE_DATA_INVALID_NAME = -4 // Name not a valid string
624
+ };
625
+
626
+ union ManageDataResult switch (ManageDataResultCode code)
627
+ {
628
+ case MANAGE_DATA_SUCCESS:
629
+ void;
630
+ default:
631
+ void;
632
+ };
633
+
595
634
  /* High level Operation Result */
596
635
 
597
636
  enum OperationResultCode
@@ -627,6 +666,8 @@ case opINNER:
627
666
  AccountMergeResult accountMergeResult;
628
667
  case INFLATION:
629
668
  InflationResult inflationResult;
669
+ case MANAGE_DATA:
670
+ ManageDataResult manageDataResult;
630
671
  }
631
672
  tr;
632
673
  default:
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stellar-base
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Fleckenstein
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-08 00:00:00.000000000 Z
11
+ date: 2016-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xdr
@@ -274,6 +274,8 @@ files:
274
274
  - generated/stellar/crypto_key_type.rb
275
275
  - generated/stellar/curve25519_public.rb
276
276
  - generated/stellar/curve25519_secret.rb
277
+ - generated/stellar/data_entry.rb
278
+ - generated/stellar/data_entry/ext.rb
277
279
  - generated/stellar/decorated_signature.rb
278
280
  - generated/stellar/dont_have.rb
279
281
  - generated/stellar/envelope_type.rb
@@ -298,11 +300,15 @@ files:
298
300
  - generated/stellar/ledger_header_history_entry/ext.rb
299
301
  - generated/stellar/ledger_key.rb
300
302
  - generated/stellar/ledger_key/account.rb
303
+ - generated/stellar/ledger_key/data.rb
301
304
  - generated/stellar/ledger_key/offer.rb
302
305
  - generated/stellar/ledger_key/trust_line.rb
303
306
  - generated/stellar/ledger_scp_messages.rb
304
307
  - generated/stellar/ledger_upgrade.rb
305
308
  - generated/stellar/ledger_upgrade_type.rb
309
+ - generated/stellar/manage_data_op.rb
310
+ - generated/stellar/manage_data_result.rb
311
+ - generated/stellar/manage_data_result_code.rb
306
312
  - generated/stellar/manage_offer_effect.rb
307
313
  - generated/stellar/manage_offer_op.rb
308
314
  - generated/stellar/manage_offer_result.rb