stellar-base 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
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